← Tutti i tutorial

Active Directory — Lezione 1: Cos'è e Come Funziona

hacking Medio 🕐 40 min 👁 395 views kr0r1s

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.

  1. AS-REQ: il client chiede al DC (KDC) un TGT (Ticket Granting Ticket) fornendo username
  2. AS-REP: il KDC risponde con il TGT cifrato con la chiave dell'utente (hash NTLM della password)
  3. TGS-REQ: il client usa il TGT per richiedere un Service Ticket per un servizio specifico
  4. TGS-REP: il KDC risponde con il Service Ticket cifrato con la chiave del service account
  5. 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