WindowsActiveDirectoryHackTheBox

Voleur

VOLEUR is a Windows AD DC box chaining WriteSPN Kerberoasting, AD object restoration, DPAPI credential decryption, and offline ntds.dit dumping to achieve full domain compromise.

Difficulty: Hard OS: Windows (Active Directory / Domain Controller) IP: 10.129.232.130


Summary

VOLEUR is a Windows Active Directory Domain Controller machine. The attack chain involves exploiting Kerberos Pre-Authentication being disabled for an initial user, enumerating SMB shares to recover a password-protected Excel file containing credentials and AD access notes, then chaining a series of AD privilege abuse techniques: WriteSPN → Kerberoasting → GenericWrite → AD Object Restore → DPAPI credential decryption → SSH access to a backup account with ntds.dit on disk, ultimately yielding a full domain compromise via impacket-secretsdump.


Enumeration

Nmap

The scan reveals a Domain Controller for voleur.htb. Notably, there is an SSH service on port 2222 running on a Linux kernel — suggesting a Linux subsystem or container co-hosted on the DC. The clock skew of nearly 8 hours also indicates the attacker's clock needs syncing for Kerberos to work.

Clock Sync

Kerberos is time-sensitive (±5 minutes tolerance), so the first step is syncing the local clock:

Foothold — ryan.naylor (Kerberos Pre-Auth Disabled)

With credentials ryan.naylor:HollowOct31Nyt (presumably obtained from a prior step or initial hint), and noting from the Access Review spreadsheet later that Ryan has Kerberos Pre-Authentication disabled, authentication is performed using Kerberos rather than NTLM. A Kerberos config file is generated and installed:

SMB Share Enumeration

The IT share is the most interesting. Connecting via smbclient:

A file Access_Review.xlsx is retrieved from the share.

Access_Review.xlsx — Credential Intelligence

The Excel file is password-protected. The password hash is extracted with office2john and cracked with john:

The spreadsheet reveals a wealth of information about domain users and service accounts:

User Accounts

User
Job Title
Permissions
Notes

Ryan.Naylor

First-Line Support Technician

SMB

Kerberos Pre-Auth disabled temporarily to test legacy systems

Marie.Bryant

First-Line Support Technician

SMB

Lacey.Miller

Second-Line Support Technician

Remote Management Users

Todd.Wolfe

Second-Line Support Technician

Remote Management Users

Leaver. Password reset to NightT1meP1dg3on14 and account deleted

Jeremy.Combs

Third-Line Support Technician

Remote Management Users

Administrator

Administrator

Domain Admin

Not to be used for daily tasks!

Service Accounts

Account
Permissions
Notes

svc_backup

Windows Backup

Speak to Jeremy!

svc_ldap

LDAP Services

P/W: M1XyC9pW7qT5Vn

svc_iis

IIS Administration

P/W: N5pXyW1VqM?CZ8

svc_winrm

Remote Management

Need to ask Lacey as she reset this recently

This single file gives us plaintext passwords for svc_ldap and svc_iis, a deleted account with its reset password (todd.wolfe), and critical context about the AD environment. the Access-Review.xlsx had these entries in it

AD Enumeration — svc_ldap

With svc_ldap:M1XyC9pW7qT5Vn, LDAP can be queried directly. An ldapsearch confirms that svc_ldap is a member of the Restore_Users group:

svc_ldap is part of Restore_Users group

BloodHound Graph

Running BloodHound reveals two critical edges

Two attack paths are immediately clear:

  1. WriteSPN on svc_winrm → Set a fake SPN → Kerberoast the hash → Crack the password

  2. GenericWrite on lacey.miller → Set a fake SPN → Kerberoast her hash

Lateral Movement 1 — Kerberoasting svc_winrm via WriteSPN

Since svc_ldap has WriteSPN rights over svc_winrm, a fake SPN can be written to make svc_winrm Kerberoastable:

Now request the TGS ticket for svc_winrm:

The hash is cracked with hashcat (mode 13100):

Credentials: svc_winrm:AFireInsidedeOzarctica980219afi

Shell as svc_winrm (+user flag)

couldnt crack lacey.miller hash, wouldn't matter anyways, i think

Lateral Movement 2 — Restoring the Deleted todd.wolfe Account

The Access_Review spreadsheet noted that todd.wolfe was a leaver whose password was reset to NightT1meP1dg3on14 before the account was deleted. The Restore_Users group membership on svc_ldap implies the ability to restore deleted AD objects.

Locating the Deleted Object

The deleted object GUID is returned:

Restoring via RunasCs

RunasCs.exe is uploaded to the Evil-WinRM session as svc_winrm and used to run Restore-ADObject in the context of svc_ldap, which has the required group membership:

After a short delay (the account needs time to propagate back into the directory), todd.wolfe can authenticate:

DPAPI Credential Decryption — Recovering jeremy.combs

todd.wolfe has READ access to the IT share. Under the archived user profile path, his DPAPI master key and a credential blob are found:

Both files are downloaded via smbclient.

Step 1 — Decrypt the DPAPI Master Key

Step 2 — Decrypt the Credential Blob

Credentials: jeremy.combs:qT3V9pLXyN7W4m

The Access_Review spreadsheet noted Jeremy has a connection to svc_backup ("Speak to Jeremy!")


Lateral Movement 3 — jeremy.combs → svc_backup → ntds.dit

Shell as jeremy.combs

now we've got the password of jeremy.combs and in excel file we saw that he has connection with svc_backup so we will access his account using an Evil-WinRM shell

SSH Key for svc_backup

Inside C:\IT\Third-Line Support\, an id_rsa private key is found alongside a Note.txt. This key grants SSH access to svc_backup on port 2222 (the Linux subsystem):

Locating ntds.dit

The svc_backup account (Windows Backup Operators) has access to a pre-staged backup directory:

All three files are exfiltrated via scp: then we'll get these files and use impacket-secretsdump to get the hashes

Privilege Escalation — Domain Admin via secretsdump

With ntds.dit, SYSTEM, and SECURITY hive files in hand, all domain hashes are extracted offline:

The Administrator NTLM hash is recovered. A TGT is obtained via Pass-the-Hash:

Attack Chain Summary

Key Techniques

  • Kerberos-only auth (NTLM disabled on target) — all lateral movement uses -k Kerberos flags

  • WriteSPN abuse — assigning a fake SPN to a user account to make it Kerberoastable

  • AD Object Restore — using Restore-ADObject via RunasCs under a group-privileged context

  • DPAPI offline decryption — master key derived from user password + SID, applied to a credential blob to recover plaintext secrets

  • Offline ntds.dit dumping — extracting the AD database from a backup rather than running LSASS tools in memory

Last updated