NMAP
Come al solito parto con una scansione nmap di tutte le porte:
nmap -T5 --open -sS -vvv --min-rate=1000 --max-retries=2 -p- -oA full-ports 10.10.10.175
Successivamente ho lanciato una scansione con i flag -sC -sV sulle porte aperte rilevate dalla scansione precedente. Dai risultati della scansione risulta essere attivo il servizio kerberos, si tratta quindi di un domain controller.
OSINT
Visitando il sito web della macchina http://10.10.10.175 nella sezione About Us è possibile trovare una lista di possibili utenti dell’azienda Egotistical-Bank.
Con i nomi e cognomi degli utenti è possibile stilare una lista di username papabili utilizzati nel dominio ActiveDirectory. Solitamente gli amministratori di sistema utilizzano username del tipo fsmith, f.smith, fergussmith ecc. Fsmith è l’utente corretto.
AES-REP ROASTING
Questo attacco è possibile solo nel momento in cui nel domain controller è abilitata l’opzione “Do not require kerberos preauthentication”. C’è da dire che questa opzione NON è abilitata di default nei domain controller. In generale, vale la pena fare un tentativo.
Se l’opzione è abilitata kerberos emetterà un ticket TGT per l’utente senza l’utilizzo della password. Nel momento in cui viene richiesta la password, premere invio.
GetNPUsers.py egotistical-bank.local/fsmith -dc-ip 10.10.10.175
A questo punto è possibile decifrare il ticket offline:
hashcat -m18200 tgt.txt /usr/share/wordlists/rockyou.txt --force
Reference: https://blog.stealthbits.com/cracking-active-directory-passwords-with-as-rep-roasting/
USER FLAG
Avendo a disposizione la password è possibile accedere al controller utilizzando evil-winrm dal momento che la porta 5985 è aperta.
Nota: non è possibile utilizzare psexec in quanto l’utente non dispone dei diritti necessari per scrivere negli share smb.
Evil-winrm permette di eseguire sulla macchina target degli script o dei file eseguibili che vengono posizionati in una cartella della macchina locale.
evil-winrm -i 10.10.10.175 -u fsmith -p 'Thestrokes23' -s './ps1dir' -e './exedir'
ps1dir ed exedir sono delle cartelle locali in cui è possibile salvare script powershell o file exe da lanciare attraverso evil-winrm. All’interno della cartella ps1dir sono stati salvati PowerView.ps1 e PowerUp.ps1
Con l’accesso alla macchina come utente fsmith è stato possibile prendere il flag user.txt:
A questo punto si può tentare una privilege escalation sul domain controller caricando PowerUp.ps1 e lanciando il comando Invoke-AllChecks per enumerare eventuali attacchi. Digitare PowerUp.ps1 nella shell di evil-winnrm.
Invoke-AllChecks
E’ possibile vedere come siano presenti delle credenziali di Autologon per l’utenza svc_loanmanager:
Lo stesso risultato può essere ottenuto manualmente con l’ausilio di powershell come segue:
Get-ItemProperty -Path "HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
A questo punto è possible accedere alla nuova utenza come fatto in precedenza con evil-winrm.
Il primo tentativo non è andato a buon fine ricevendo un auth error. Eseguendo il comando net user sulla macchina con l’utenza di fsmith è emerso che il nome utente fosse svc_loanmgr:
DCSYNC
Consiste nel mimare la funzionalità di replica di un domain controller, inviando una richiesta di replica delle informazioni contenute all’interno del domain controller tramite il protocollo MS-DRSR Directory Replication Service Remote Protocol. Tra le info replicate ci sono anche gli account degli utenti.
È possibile rendersi conto della fattibilità di questo attacco caricando PowerView.ps1 all’interno di evil-winrm e verificando gli ACL dell’utente svc_loanmgr.
Com’è visibile dall’immagine seguente l’utenza ha i permessi di DS-Replication-Get-Changes e DS-Replication-Get-Changes-All, requisito fondamentale per eseguire DCSync.
Invoke-ACLScanner -ResolveGUIDs | ?{$_.IdentityReference -match "sac_loanmgr"}
secretsdump.py 'egotistical-bank/svc_loanmgr:Moneymakestheworldgoround!@10.10.10.175'
Reference: https://blog.stealthbits.com/what-is-dcsync-an-introduction/
PASS THE HASH
Con l’hash NTLM dell’account Administrator è possibile accedere al domain controller con psexec utilizzando l’hash invece che la password.
psexec.py Administrator:@10.10.10.175 -hashes ad3b435b51404eeaad3b435b51404ee:d9485863c1e9e05851aa40cbb4ab9dff