Skip to content

Reflection -- Vulnlab (write-up)

Difficulty: Hard Box: Reflection (Vulnlab) Author: dsec Date: 2025-10-12


TL;DR

Multi-machine chain. MSSQL creds from SMB, NTLM relay via dirtree to get more creds, BloodHound showed GenericAll over machines -> LAPS password -> DPAPI loot -> RBCD to final workstation.


Target info

  • Hosts: DC01 (10.10.245.101), MS01 (10.10.245.102), WS01
  • Domain: reflection.vl

Enumeration

Nmap DC01

DC01:

DC01 services

DC01 enum

SMB signing

SMB signing not required.

MS01:

MS01 nmap

MS01 enum

MS01 shares

MSSQL

MSSQL enum


Initial access

Found MSSQL creds:

MSSQL creds

web_staging:Washroom510

Access

Enum

More enum


NTLM relay

Set up Responder and ntlmrelayx, then used dirtree command on MSSQL to trigger authentication:

Responder setup

Relay

dirtree

ntlmrelayx opened an interactive SMB client shell, connected via nc:

Found more creds: web_prod:Tribesman201

web_prod

MSSQL access

Dumped from database:

  • abbie.smith:CMe1x+nlRaaWEw
  • dorothy.rose:hC_fny3OK9glSJ

Lateral movement

BloodHound showed abbie.smith has GenericAll over MS01, and GPO LAPS is in use:

BloodHound GenericAll

LAPS GPO

Read LAPS password:

LAPS password

Got: H447.++h6g5}xi

Admin access

Enum MS01

Found: svc_web_staging:DivinelyPacifism98

Used DPAPI with local admin on MS01:

netexec smb 10.10.245.246 -u administrator -p 'H447.++h6g5}xi' --dpapi --local-auth

DPAPI loot

Found: Georgia.Price:DBl+5MPkpJg5id


Privilege escalation

Georgia.Price

Georgia.Price has GenericAll over WS01. Since we control svc_web_staging (which has an SPN), used RBCD:

rbcd.py -delegate-from 'svc_web_staging' -delegate-to 'WS01$' -action 'write' 'reflection.vl/Georgia.Price:DBl+5MPkpJg5id'

RBCD setup

getST.py -spn 'cifs/WS01.reflection.vl' -impersonate 'dom_rgarner' 'reflection.vl/svc_web_staging:DivinelyPacifism98'

Silver ticket

WS01 access

Found: Rhys.Garner:knh1gJ8Xmeq+uP

Root flag


Lessons & takeaways

  • NTLM relay via MSSQL dirtree is powerful when SMB signing is disabled
  • DPAPI looting with netexec --dpapi --local-auth extracts Credential Manager secrets without touching LSASS
  • RBCD attack requires: GenericAll over target machine + control of an account with an SPN
  • Chain: MSSQL creds -> relay -> LAPS -> DPAPI -> RBCD is a clean multi-hop path