← Tutti i tutorial
Active Directory — Lezione 1: Cos'è e Come Funziona
Active Directory — Cos'è e Come Funziona
Active Directory (AD) è il sistema di gestione delle identità di Microsoft, usato nel 90% delle aziende enterprise. Se conosci AD, conosci la superficie d'attacco più grande dell'IT aziendale. Questa lezione costruisce le fondamenta teoriche indispensabili prima di qualsiasi attacco o difesa.
Concetti fondamentali
- Domain Controller (DC): il server che gestisce l'intera autenticazione e autorizzazione del dominio. Se compromettiamo il DC, controlliamo tutto.
- Domain: un gruppo di oggetti (utenti, computer, gruppi) sotto una singola amministrazione. Es:
azienda.local - Forest: una o più domini con relazioni di trust. Il confine di sicurezza più alto.
- Organizational Unit (OU): container per organizzare oggetti e applicare Group Policy.
- Group Policy Object (GPO): configurazioni applicate automaticamente a utenti/computer. Può distribuire software, impostare password policy, bloccare USB.
Protocolli chiave — dove avvengono gli attacchi
# Kerberos (porta 88) — autenticazione principale in AD
# LDAP (porta 389) e LDAPS (636) — directory queries
# SMB (porta 445) — condivisione file, autenticazione NTLM
# DNS (porta 53) — risoluzione nomi nel dominio
# WINRM (porta 5985/5986) — remote management PowerShell
# RPC (porta 135+) — Remote Procedure Calls
Come funziona Kerberos
Kerberos è il protocollo di autenticazione principale in AD. Capirlo è essenziale per capire Kerberoasting, Pass-the-Ticket e altri attacchi.
- AS-REQ: il client chiede al DC (KDC) un TGT (Ticket Granting Ticket) fornendo username
- AS-REP: il KDC risponde con il TGT cifrato con la chiave dell'utente (hash NTLM della password)
- TGS-REQ: il client usa il TGT per richiedere un Service Ticket per un servizio specifico
- TGS-REP: il KDC risponde con il Service Ticket cifrato con la chiave del service account
- AP-REQ: il client presenta il Service Ticket al servizio per l'accesso
NTLM — il protocollo legacy
# NTLM è più vecchio di Kerberos, ancora usato come fallback
# Challenge-Response:
# 1. Client → Server: "voglio autenticarmi"
# 2. Server → Client: challenge (numero random)
# 3. Client → Server: HMAC-MD5(hash_password, challenge)
# Il server verifica confrontando con il proprio calcolo
# Debolezze NTLM:
# - Hash può essere usato direttamente senza la password (Pass-the-Hash)
# - Hash può essere catturato con Responder su rete locale
# - Relay attacks: NTLM relay da un servizio a un altro
Setup lab — Active Directory in VirtualBox/VMware
# Opzione 1: Windows Server 2019 trial (180 giorni gratuiti)
# Scarica ISO da microsoft.com/evalcenter
# Installa in VirtualBox, promuovi a Domain Controller
# Opzione 2: Vulnerable-AD (lab preconfigurato)
git clone https://github.com/WazeHell/vulnerable-AD
# Segui le istruzioni per setup automatico con PowerShell
# Opzione 3: GOAD (Game of Active Directory)
git clone https://github.com/Orange-Cyberdefense/GOAD
# Lab completo con più domini e vulnerabilità realistiche
# Per i test avremo bisogno di:
# - Windows Server 2019 (Domain Controller)
# - Windows 10 (macchina membro del dominio — vittima)
# - Kali Linux (macchina attaccante — stessa rete)
Enumerazione base con comandi Windows
# Sulla macchina Windows membro del dominio:
# Info sul dominio
systeminfo | findstr /B /C:"Domain"
echo %USERDOMAIN%
echo %LOGONSERVER%
# Utenti e gruppi del dominio
net user /domain
net group /domain
net group "Domain Admins" /domain # chi è Domain Admin?
# Controller del dominio
nltest /dclist:NOMDOMINIO
nslookup -type=SRV _ldap._tcp.NOMDOMINIO # via DNS
Struttura LDAP — capire il database AD
# AD usa LDAP per le query. Ogni oggetto ha un DN (Distinguished Name)
# Esempio: CN=John Doe,OU=Users,DC=azienda,DC=local
# Query LDAP con ldapsearch (da Kali)
ldapsearch -x -H ldap://DC_IP -D "[email protected]" -w password \
-b "DC=azienda,DC=local" "(objectClass=user)" cn sAMAccountName
# Lista tutti gli utenti
ldapsearch -x -H ldap://DC_IP -D "user@domain" -w pass \
-b "DC=domain,DC=local" "(&(objectClass=user)(objectCategory=person))" \
sAMAccountName displayName mail
# Lista computer nel dominio
ldapsearch -x -H ldap://DC_IP -D "user@domain" -w pass \
-b "DC=domain,DC=local" "(objectClass=computer)" name operatingSystem