Introduction : Comprendre l'Attaquant pour Mieux se Défendre
La meilleure défense est une défense informée. Pour un professionnel de la cybersécurité, comprendre la mécanique d'une attaque n'est pas une option, c'est une nécessité. Ce guide a pour objectif de vous montrer comment construire un laboratoire de test d'intrusion (pentesting) simple mais réaliste, afin de simuler une chaîne d'attaque commune en environnement Active Directory.
AVERTISSEMENT : Les outils et techniques décrits ici doivent être utilisés UNIQUEMENT dans un environnement de laboratoire contrôlé et complètement isolé. Leur utilisation sur des systèmes sans autorisation explicite est illégale. L'objectif est éducatif, pour renforcer les stratégies de défense.
Note : Ce tutoriel s'inspire de scénarios réels (ex : ransomware, APT) et suit le modèle MITRE ATT&CK (T1003 - OS Credential Dumping, T1550.002 - Pass the Hash). Il est conçu pour les étudiants, administrateurs système et analystes SOC qui souhaitent comprendre la vulnérabilité des environnements AD.
Section 1 : Architecture et Prérequis du Laboratoire
La première étape est de construire notre terrain de jeu, en s'assurant qu'il est hermétiquement isolé de tout réseau de production ou domestique.
- Composants requis :
- Hyperviseur : VirtualBox (gratuit) ou VMware Workstation Player.
- Windows Server Evaluation : Téléchargeable sur le site de Microsoft (ex: Windows Server 2022, 180 jours d'essai).
- Windows 10/11 ISO : Version d'évaluation ou licence valide.
- Kali Linux : Téléchargez l'appliance officielle ou installez-la depuis kali.org.
- Espace disque : Minimum 80 Go (30 Go pour chaque VM).
- Mémoire RAM : 16 Go minimum recommandé (8 Go pour le lab, 8 Go pour l’hôte).
- Configuration Réseau (Cruciale) : Nous utiliserons un réseau "Host-Only" (ou "Privé Hôte"). Ce type de réseau crée un switch virtuel isolé qui ne communique qu'entre les machines virtuelles et la machine hôte, sans aucun accès à Internet ou au réseau local. C'est notre bulle de sécurité.
📌 VirtualBox : Allez dans File > Host Network Manager et créez un réseauvboxnet0(ex: 192.168.56.1/24). Associez cette interface à chaque VM. - Plan d'adressage :
- DC (Contrôleur de Domaine) : 192.168.56.10
- Poste Windows 10 : 192.168.56.20
- Kali Linux : 192.168.56.30
Section 2 : Montage du Contrôleur de Domaine (La Cible)
Nous allons créer une infrastructure Active Directory minimale mais fonctionnelle.
- Installez Windows Server sur une nouvelle VM connectée à votre réseau isolé.
- Ouvrez le Gestionnaire de serveur, puis Ajouter des rôles et fonctionnalités.
- Sélectionnez le rôle Services de domaine Active Directory (AD DS).
- Promouvez le serveur en Contrôleur de Domaine pour un nouveau domaine fictif (ex:
za.corp). Nom du site :Lab. - Redémarrez le serveur. Il devient le Domain Controller (DC) de
za.corp. - Ouvrez la console Utilisateurs et ordinateurs Active Directory et créez deux utilisateurs :
j.doe(utilisateur standard, membre de "Utilisateurs du domaine")adm.bruno(administrateur, membre de "Admins du domaine")
- Important : Pour simuler la mauvaise pratique, connectez-vous au moins une fois avec
adm.brunosur le poste Windows 10 (voir section 3).
Section 3 : Simulation d'une Attaque "Pass-the-Hash"
Nous allons maintenant simuler l'une des attaques de mouvement latéral les plus classiques.
Phase 1 : Le Point d'Entrée (Postulat)
Notre scénario part du principe qu'un poste de travail Windows 10, joint au domaine za.corp, a été compromis par phishing. L'attaquant a donc un accès initial sur cette machine en tant que l'utilisateur standard j.doe. Pour les besoins du lab, nous nous connectons simplement sur cette machine avec j.doe.
💡 Pour aller plus loin : Vous pouvez simuler un accès initial via un reverse shell (ex: avec msfvenom et Metasploit), mais ici, nous nous concentrons sur le mouvement latéral.
Phase 2 : "Credential Dumping" avec Mimikatz
Le postulat continue : un administrateur (adm.bruno) s'est connecté récemment à ce poste pour une opération de maintenance, laissant des traces de ses identifiants en mémoire. L'attaquant va utiliser Mimikatz pour extraire ces informations.
⚠️ Note : Mimikatz nécessite des privilèges élevés et peut être bloqué par Windows Defender. Désactivez temporairement l’AV pour le lab, ou utilisez une version obfusquée (à vos risques).
# Depuis une session avec les droits administrateur local sur le poste compromis
.\mimikatz.exe
privilege::debug
sekurlsa::logonpasswords
Mimikatz va lister les sessions ouvertes. Dans la session de adm.bruno, nous cherchons le hash NTLM de son mot de passe. Il ressemble à quelque chose comme 8846f7eaee8fb117ad06bdd830b7586c.
📌 Explication : Ce hash est stocké dans le processus LSASS (Local Security Authority Subsystem Service). Quand un utilisateur se connecte, ses identifiants sont conservés en mémoire pour éviter de retaper le mot de passe à chaque accès réseau.
Phase 3 : Mouvement Latéral avec Impacket
L'attaquant, depuis sa machine Kali Linux, a récupéré ce hash. Il n'a pas le mot de passe en clair, mais le hash lui suffit. Il va utiliser la suite Impacket pour se connecter au Contrôleur de Domaine.
# Sur la machine Kali Linux
pth-winexe -U 'adm.bruno' --hashes :8846f7eaee8fb117ad06bdd830b7586c //192.168.56.10 cmd.exe
Cette commande ouvre un shell cmd.exe sur le Contrôleur de Domaine (192.168.56.10) avec les privilèges de adm.bruno, sans jamais avoir eu besoin de son mot de passe. L'attaquant a maintenant le contrôle total du domaine.
🛠️ Alternative moderne : Utilisez secretsdump.py pour extraire la base SAM ou wmiexec.py --hashes pour exécuter des commandes à distance sans shell interactif.
Section 4 : Le Point de Vue du Défenseur - Bloquer et Détecter
Cette simulation, bien que simple, démontre l'importance critique des mesures de durcissement. Comment aurions-nous pu l'empêcher ?
-
Prévention :
- Modèle d'Administration à Paliers (Tiering) : Comme vu dans le guide GPO, un administrateur de Tier 0 (Admin du Domaine) n'aurait jamais dû se connecter à un poste de Tier 2 (poste utilisateur). C'est la violation de ce principe qui a permis le vol du hash. Appliquez une politique stricte : « Un admin ne se connecte jamais sur une machine non administrée. »
- Microsoft LAPS (Local Administrator Password Solution) : Pour les comptes administrateurs locaux, LAPS génère des mots de passe uniques par machine, empêchant le mouvement latéral via des comptes admin locaux.
- Credential Guard : Sur les postes compatibles (Windows 10 1607+, Windows Server 2016+), cette fonctionnalité utilise la virtualisation pour isoler le processus LSASS. Mimikatz ne peut plus lire la mémoire du compte.
- Renforcement du SAM : Activez
RestrictAnonymouset désactivezLMCompatibilityLevelpour forcer l’authentification NTLMv2.
-
Détection :
- Journaux d'événements Windows : L'attaque génère des événements de connexion spécifiques, notamment l'événement ID 4624 avec un Type de Connexion (Logon Type) 9 (NewCredentials). Une augmentation de ces événements est suspecte.
- SIEM (ex: Microsoft Sentinel) : Créez une règle de détection KQL pour alerter sur les connexions anormales :
SecurityEvent | where EventID == 4624 | where LogonType == 9 | where AccountType == "User" | where User_Name endswith "$" or User_Name has "adm" | project TimeGenerated, Computer, Account, User_Name, LogonType | extend Reason = "Connexion NewCredentials suspecte (Pass-the-Hash possible)" - EDR (Endpoint Detection & Response) : Des solutions comme Defender for Endpoint, CrowdStrike ou SentinelOne détectent les comportements suspects de Mimikatz (lecture de LSASS, appels API sensibles).
💡 Conseil : Testez vos règles de détection en reproduisant l’attaque et en vérifiant que l’alerte est bien générée.
Conclusion : De la Simulation à la Stratégie de Défense
Ce laboratoire n'est pas qu'un simple exercice technique. C'est un outil stratégique qui vous permet de visualiser concrètement l'impact d'une mauvaise pratique d'administration et de valider l'efficacité de vos stratégies de défense (GPO, SIEM, EDR). En vous mettant, l'espace d'un instant, dans la peau de l'attaquant, vous devenez un défenseur bien plus lucide et efficace.
📚 Pour aller plus loin :