§ 2.1
Architettura di Active Directory
Active Directory Domain Services (AD DS) è il servizio di directory Microsoft che fornisce autenticazione e autorizzazione centralizzata in ambienti Windows. La struttura gerarchica si compone di Forest → Domain → Organizational Unit (OU).
Per il penetration tester, comprendere questa struttura è fondamentale perché: i trust relationship tra domini possono essere sfruttati per movimento laterale tra foreste; le GPO (Group Policy Objects) contengono spesso configurazioni errate; le ACL (Access Control Lists) su oggetti AD permettono privilege escalation senza exploit kernel.
Componenti chiave: LDAP (porta 389/636) per query alla directory, Kerberos (porta 88) per autenticazione, DNS (porta 53) integrato con AD, RPC/DCOM per amministrazione remota.
§ 2.2
GOAD: Game of Active Directory
GOAD (Game of Active Directory) è un progetto open source creato da Orange-Cyberdefense che permette di deployare un laboratorio Active Directory vulnerabile e realistico tramite Vagrant + Ansible. Il lab simula un'infrastruttura ispirata ai personaggi di "Game of Thrones" con più domini, trust relationship e vulnerabilità intenzionali.
GOAD include: 5 macchine virtuali Windows (2 DC, 3 workstation), 2 domain + forest trust, multipli vettori di attacco pre-configurati (Kerberoasting, ASREPRoasting, Pass-the-Hash, PrintNightmare, zerologon, ecc.).
Il repository ufficiale include walkthrough dettagliati per ogni vettore di attacco. Ogni vulnerabilità è documentata con la sua contromisura difensiva corrispondente.
§ 2.3
Domain Controller e LDAP
Il Domain Controller (DC) è il server che ospita AD DS e gestisce l'autenticazione. Il Primary DC Emulator (PDC) gestisce il cambio password e la sincronizzazione NTP. LDAP è il protocollo usato per interrogare e modificare la directory.
Dal punto di vista offensivo, le query LDAP anonime (se permesse) o autenticate con credenziali di un utente di dominio standard possono rivelare l'intera struttura AD. Tool come ldapsearch, ldapdomaindump e BloodHound/SharpHound automatizzano la raccolta.
§ 2.4
SYSVOL, NETLOGON e GPO
SYSVOL è una condivisione replicata tra tutti i DC che contiene GPO, script di logon e file di policy. È accessibile in lettura a tutti gli utenti autenticati del dominio e storicamente è stata fonte di credenziali in chiaro (cPassword in GPP).
Group Policy Preferences (GPP) permettevano agli amministratori di distribuire password via GPO fino a Windows Server 2012. Queste password erano cifrate con una chiave AES pubblicata da Microsoft sul MSDN — rendendo la decrittazione triviale. Il tool Get-GPPPassword automatizza il processo.
Microsoft ha corretto la vulnerabilità GPP con MS14-025 (maggio 2014) eliminando la possibilità di impostare password via GPP nell'interfaccia grafica. Tuttavia i file XML con cPassword esistenti prima della patch rimangono nel SYSVOL fino a rimozione manuale.
§ 2.5
Kerberos: Autenticazione e Attacchi
Kerberos è il protocollo di autenticazione primario in AD. Funziona con un sistema di ticket emessi dal KDC (Key Distribution Center) che risiede sul DC. Il flusso base: il client richiede un TGT (Ticket Granting Ticket) al KDC, poi usa il TGT per richiedere TGS (Service Tickets) per accedere a servizi specifici.
I principali vettori di attacco Kerberos nel pentest moderno includono:
§ 2.6
NTLM e Attacchi Pass-the-Hash
NTLM (NT LAN Manager) è il protocollo di autenticazione legacy ancora ampiamente usato in ambienti Windows, in particolare per autenticazioni verso IP address (non FQDN), workgroup e sistemi pre-Windows 2000.
L'attacco Pass-the-Hash (PtH) sfrutta il fatto che NTLM non richiede la password in chiaro ma solo l'hash NTLM. Un attaccante con l'hash può autenticarsi come quell'utente senza conoscere la password. Tool come Mimikatz, CrackMapExec e Impacket implementano questa tecnica.
NTLM Relay è un attacco complementare: l'attaccante intercetta una challenge NTLM e la rilancia verso un altro sistema, autenticandosi al posto della vittima. Responder + ntlmrelayx sono la combinazione standard.
Mitigazioni: abilitare SMB Signing obbligatorio, disabilitare NTLMv1, implementare Protected Users Security Group, abilitare Credential Guard (Virtualization Based Security), e dove possibile disabilitare NTLM completamente preferendo Kerberos.