Auditer l’Active Directory
Méthodologie
Avant de plonger dans les aspects techniques de l’audit d’un Active Directory, il est essentiel de replacer la démarche dans un cadre méthodologique clair. Un audit sérieux ne se résume pas à l’exécution de quelques outils ou à la recherche opportuniste de vulnérabilités ; il s’agit d’un processus structuré, pensé pour être à la fois exhaustif, reproductible et compréhensible par toutes les parties prenantes, qu’il s’agisse d’équipes techniques ou de directions stratégiques.
C’est pourquoi nous allons, dans un premier temps, présenter les principales méthodologies qui servent de fil conducteur aux tests d’intrusion et aux audits de sécurité. Ces cadres donnent une logique à l’évaluation, d’en tracer les étapes et d’établir un langage commun entre auditeurs et audités.
1. Le PTES : un standard de référence
Le PTES (Penetration Testing Execution Standard) est sans doute l’un des cadres les plus connus dans le domaine du pentest. Il définit un ensemble d’étapes qui structurent la réalisation d’un audit de sécurité, de la préparation à la restitution.
Le PTES s’articule en plusieurs phases :...
Collecte d’informations
Dans toute démarche d’audit, la reconnaissance constitue la première étape, et sans doute l’une des plus décisives. Elle est au cœur des méthodologies présentées précédemment : c’est la phase initiale du PTES et de la Cyber Kill Chain. À ce stade, l’auditeur ne cherche pas encore à exploiter de vulnérabilités, mais à collecter le maximum d’informations sur l’environnement cible. Ces données brutes, souvent obtenues de manière passive ou anonyme, serviront de base à toutes les étapes ultérieures. Plus la reconnaissance est rigoureuse et complète, plus l’audit gagne en efficacité.
1. Découverte du réseau et identification des services
a. Découverte
La première tâche consiste généralement à cartographier le réseau afin d’identifier les systèmes en ligne et les services exposés. Des outils open source tels que Nmap, Masscan ou encore Rustscan permettent de scanner les plages d’adresses IP fournies dans le périmètre d’audit. L’objectif est de détecter les serveurs critiques, et en particulier les contrôleurs de domaine Active Directory, reconnaissables par la présence de services caractéristiques comme LDAP (389/TCP, 636/TCP), Kerberos (88/TCP, 88/UDP), DNS (53/TCP, 53/UDP), Global Catalog (3268/TCP, 3269/TCP) ou encore ADWS (9389/TCP).
Ces outils peuvent également aider à repérer des services inattendus ou mal protégés, qui constituent souvent des points d’entrée intéressants.
Parmi les nombreux outils de cartographie réseau, Nmap s’impose comme une référence incontournable. Sa popularité ne tient pas seulement à son ancienneté, mais à la richesse de ses fonctionnalités, sa portabilité (Linux, Windows, macOS) et sa communauté active. Il permet à la fois de découvrir des hôtes, d’identifier les services en écoute, de reconnaître les versions logicielles, voire d’exécuter des scripts d’audit automatisés.
Parmi ses nombreuses options, certaines méritent une attention particulière car elles couvrent la majorité des besoins en reconnaissance :
-n : désactive la résolution DNS afin d’accélérer le scan et éviter des requêtes parasites.
-sn : exécute uniquement une détection d’hôtes (ping scan), sans scanner les ports.
-Pn : considère l’hôte comme actif sans envoi de ping préalable, utile lorsque l’ICMP est filtré.
-T5 : règle le niveau d’agressivité du scan (T3 est le comportement par défaut ; T5 est beaucoup plus rapide mais plus détectable).
Pour le scan des ports :
-sS : effectue un SYN scan furtif, rapide et discret, très utilisé en audit.
-p- : scanne l’ensemble des 65 535 ports TCP, pour une couverture complète.
--top-ports <N> : se limite aux N ports les plus fréquemment utilisés (par défaut 1 000).
--open : affiche uniquement les ports ouverts, simplifiant la lecture des résultats.
Pour l’identification des services :
-sV : active la détection de versions logicielles.
--version-intensity <0-9> : ajuste la profondeur de cette détection (7 par défaut, 9 étant le plus agressif).
-sC : lance les scripts par défaut de Nmap (NSE), qui testent des configurations ou vulnérabilités courantes.
--script <nom> : permet d’exécuter des scripts spécifiques (par ex. liés à SMB, LDAP ou DNS).
Enfin, pour les rapports :
-oG <fichier> : exporte les résultats au format grepable, un format pratique pour être réutilisé par d’autres outils.
-oX <fichier> : exporte les résultats en XML, un format pratique pour être intégré dans un rapport.
Ces options, combinées judicieusement...
Exploitation
Après avoir mené la phase de reconnaissance et identifié des comptes utilisateurs, des services exposés et d’éventuelles vulnérabilités, vient l’étape de l’exploitation. L’objectif est ici de transformer ces informations en accès concrets au système, que ce soit en s’authentifiant avec des identifiants valides, en exploitant une mauvaise configuration ou en tirant parti d’une faille logicielle. Cette phase marque le passage de la théorie à la pratique : elle permet de vérifier la faisabilité des attaques et d’obtenir un premier point d’appui dans l’environnement cible.
1. À la recherche d’un mot de passe
Si aucun mot de passe n’a été obtenu directement lors de la phase de reconnaissance, l’étape suivante consiste naturellement à tenter d’en découvrir un. La solidité d’un mot de passe repose sur sa complexité et sa longueur, qui déterminent le temps nécessaire pour qu’un attaquant puisse le deviner ou l’extraire par force brute. Il est toutefois important de rappeler qu’un mot de passe, aussi robuste soit-il, ne représente pas une barrière absolue : il vise avant tout à ralentir l’attaquant. Comme l’explique la CNIL dans ses recommandations (https://www.cnil.fr/fr/mots-de-passe-une-nouvelle-recommandation-pour-maitriser-sa-securite), la gestion des mots de passe reste un enjeu central de sécurité.
Dans le cadre d’un test d’intrusion, si l’on ne dispose pas d’un mot de passe valide, plusieurs approches sont possibles pour tenter de l’obtenir. On distingue généralement trois méthodes :
-
Bruteuser : tester un grand nombre de mots de passe pour un seul utilisateur.
-
Bruteforce : tester des combinaisons utilisateur/mot de passe issues d’un fichier.
-
Password spray : tester un mot de passe unique sur une liste d’utilisateurs.
Bien que des outils généralistes comme hydra, medusa, ncrack, patator permettent d’automatiser ces approches sur de nombreux protocoles (FTP, SSH, HTTP, etc.), ils ne sont pas les mieux adaptés au contexte Windows. En pratique, on privilégiera des solutions conçues pour l’Active Directory, comme kerbrute ou encore NetExec.
Choisir et mémoriser un mot de passe représente souvent un vrai casse-tête pour les utilisateurs, partagé entre le stockage sur des Post-its, la réutilisation sur plusieurs applications et de nombreuses autres mauvaises pratiques. C’est pour cette raison que Microsoft, entre autres, cherche à s’en débarrasser au profit de solutions plus sécurisées comme la biométrie ou les codes à usage unique. Dans ce contexte, le password spraying est particulièrement efficace car il permet de rester sous le seuil de verrouillage des comptes tout en exploitant des pratiques courantes mais risquées dans les environnements professionnels. En effet, beaucoup d’utilisateurs réutilisent des mots de passe ou appliquent des schémas prévisibles comme l’utilisation d’un même mot de passe pour plusieurs comptes au sein d’un service. Dans les environnements où il était recommandé de changer régulièrement les mots de passe, les utilisateurs appliquaient souvent des itérations simples comme Password1, Password2, Password3 ou Password2024, Password2025, Password2026. D’autres motifs très fréquents incluent des combinaisons du nom de l’entreprise avec une année ou un code postal.
nxc smb <ip> -u users.txt -p <password> --continue-on-success

Password spraying
Si NetExec est particulièrement efficace pour le password spraying, il montre des limites lorsqu’il s’agit de mettre en œuvre des attaques plus ciblées comme le bruteuser ou le bruteforce.
Dans ce contexte, un outil particulièrement efficace est Kerbrute, développé en Go. Il se distingue des autres par plusieurs fonctionnalités intéressantes :
-
Il indique pour chaque utilisateur...
Escalade de privilèges
L’escalade de privilèges verticale sous Windows correspond à la situation où un utilisateur parvient à obtenir des droits supérieurs à ceux qui lui sont initialement attribués, par exemple en passant d’un compte standard à un compte administrateur ou à un niveau SYSTEM. Ce type d’élévation de privilèges repose généralement sur l’exploitation de vulnérabilités logicielles, de configurations inappropriées ou de mécanismes de contrôle d’accès mal conçus. Lorsqu’un système ne respecte pas le principe de moindre privilège, il offre un terrain favorable à ce genre d’abus. La maîtrise de ces concepts est essentielle pour comprendre comment une compromission locale limitée peut se transformer en un contrôle total du système.
Après obtention d’un accès sur la machine cible, une phase de reconnaissance locale doit permettre de dresser rapidement un état des lieux général : qui sont les utilisateurs et groupes, quelles ressources réseau et partages sont accessibles, quelles politiques et mesures de sécurité s’appliquent, et où se trouvent des données sensibles ou des comptes de service potentiellement intéressants. L’objectif est d’obtenir un inventaire synthétique et priorisé d’éléments exploitables pour orienter les actions suivantes (mouvement latéral, exfiltration).
1. Utilisateurs et groupes
Nous avons déjà abordé en détail la nature et le rôle des groupes (section Les groupes du chapitre Le gestionnaire d’annuaire) et des comptes utilisateur (section Les utilisateurs dans le chapitre Le gestionnaire d’annuaire). Ici, dans le cadre offensif, l’objectif est d’extraire rapidement une vue d’ensemble des comptes présents et de leurs appartenances afin d’identifier des cibles pour l’escalade, le pivot ou l’exfiltration.
Concrètement, la reconnaissance relative aux utilisateurs et aux groupes se concentre sur quelques points clés :
-
obtenir la liste des comptes locaux et des comptes de domaine visibles depuis la machine ;
-
identifier les membres des groupes à privilèges (administrateurs, opérateurs) ;
-
repérer les comptes désactivés, expirés ou avec des mots de passe potentiellement faibles ;
-
détecter les comptes de service et les tâches planifiées liées à des comptes spécifiques ;
-
relever les indices d’utilisateurs authentifiés récemment ou de sessions actives.
Les commandes classiques de l’invite de commandes Windows (cmd) offrent un premier niveau d’exploration utile pour identifier les utilisateurs, les groupes et les sessions actives sur une machine locale ou dans un domaine Active Directory. La commande whoami permet d’afficher le compte actuellement utilisé ainsi que les groupes auxquels il appartient.

whoami
La commande net user dresse la liste des comptes locaux présents sur le système. En précisant un nom d’utilisateur, il est possible d’obtenir des informations détaillées sur ce compte, telles que son statut, ses dernières connexions ou son appartenance aux groupes locaux.

net user
La commande net localgroup énumère les groupes définis localement, et net localgroup Administrators révèle les membres du groupe d’administrateurs locaux, point souvent critique pour l’analyse des privilèges.
Par ailleurs, la commande query user permet d’afficher la liste des sessions interactives actives ou distantes. Ces informations sont particulièrement utiles pour identifier les comptes actuellement connectés à la machine, repérer d’éventuels utilisateurs administrateurs en session ou encore détecter la présence de connexions RDP.
De son côté, la commande schtasks /query /fo list -v recense l’ensemble des tâches planifiées locales. L’analyse...
Mouvements latéraux
Les attaques réseau regroupent, outre les dénis de service, principalement des attaques de type Man-in-the-Middle, que nous avons déjà évoquées en section À la recherche d’un mot de passe, notamment via l’usurpation ARP pour la capture d’identifiants. Ces attaques MITM, qui peuvent s’appliquer à plusieurs couches du modèle OSI, sont particulièrement efficaces pour récolter des mots de passe, des hash ou des tickets et ainsi faciliter les mouvements latéraux dans un domaine. Pour explorer les techniques de MITM organisées par couche du modèle OSI, consultez la cheat-sheet GitHub : https://github.com/frostbits-security/MITM-cheatsheet. Plusieurs composants et configurations par défaut de Windows rendent certains protocoles plus exposés. Pour l’analyse et la démonstration de ces vecteurs, la littérature technique s’appuie souvent sur des bibliothèques Python comme Scapy, un cadre puissant pour forger, capturer et inspecter des paquets. De même, Impacket fournit une collection de bibliothèques Python largement utilisée en recherche et audit de sécurité pour implémenter et manipuler au niveau applicatif de nombreux protocoles Windows : SMB, NetBIOS, MS-RPC, LDAP, Kerberos, HTTP, DNS, et autres primitives réseau. La boîte à outils qui l’accompagne (par ex. secretsdump.py, smbclient.py) expose des fonctions pratiques pour extraire des éléments d’authentification (hash, secrets LSA) ou automatiser l’interrogation de services Windows. C’est notamment secretsdump.py (et les modules Impacket associés) que nous avons utilisés pour extraire le contenu de NTDS dans la concrétisation de l’attaque Zerologon évoquée précédemment.
Déclarer le domaine avec search <domain> et l’adresse du contrôleur de domaine avec nameserver <dc_ip> dans /etc/resolv.conf permet de s’assurer que les résolutions DNS internes (SRV, KDC, LDAP) ciblent le serveur correct, garantissant à la fois la fiabilité des découvertes de services et la reproductibilité des tests.
1. Les protocoles réseau
a. IPv6
Par défaut, les systèmes Windows activent la pile IPv6. Les postes construisent au minimum une adresse link-local (préfixe fe80::/64) et sont capables de s’auto-configurer via les mécanismes IPv6 (RA/SLAAC et/ou DHCPv6) lorsqu’un routeur ou serveur leur fournit des informations. Lorsque la configuration IPv6 est activée, Windows peut favoriser les connexions utilisant IPv6 (comme la résolution de noms vers des enregistrements AAAA). Cela signifie qu’un simple vecteur d’attaque au niveau de la couche liaison peut suffire à rediriger le trafic d’un poste vers une configuration malveillante.
C’est précisément cette caractéristique, la persistance et la préférence potentielles pour IPv6, et la façon dont Windows accepte des paramètres réseau via RA/DHCPv6, que mitm6 (https://github.com/dirkjanm/mitm6), outil développé par Dirk-jan Mollema, exploite. En émettant des annonces IPv6 malveillantes sur le LAN, l’outil fournit aux victimes une configuration IPv6 contrôlée (notamment un serveur DNS), ce qui force les hôtes à résoudre certains noms via l’infrastructure de l’attaquant. La conséquence pratique est la capacité de rediriger des services Windows (LDAP, SMB, etc.), de provoquer des authentifications ou des relais, et donc de faciliter la capture d’identifiants et les mouvements latéraux.
Depuis la machine de l’attaquant :
pipx install mitm6
mitm6 -d <domain>

Résultat du mitm6 sur la machine cliente
L’image précédente montre que l’adresse IP par défaut du DNS est 192.168.2.10, qui répond lorsqu’on essaie de résoudre SRV-DC01.serval.int. Après avoir lancé mitm6 sur la machine de l’attaquant, une adresse IPv6 est apparue dans les serveurs DNS interrogés...
Post-exploitation
La post-exploitation représente une phase importante d’un test d’intrusion, mais elle ne doit jamais être perçue comme un objectif en soi. Contrairement à certaines idées reçues, un pentest n’a pas pour vocation de pousser un système à sa limite ou de prouver la capacité du consultant à prendre le contrôle total de l’environnement. Son rôle est avant tout d’analyser les conséquences potentielles d’un accès non autorisé et de mettre en évidence les risques réels pour l’organisation.
Une fois certains privilèges obtenus, la démarche consiste à évaluer ce que représenterait une telle compromission pour l’entreprise. L’objectif n’est pas d’explorer chaque système ni de manipuler les données de manière intrusive, mais d’illustrer de façon mesurée ce qu’un attaquant réellement malveillant pourrait accomplir. Cette mise en perspective permet de comprendre, par exemple, comment l’accès à une application métier critique, à une base de données sensible ou à un service essentiel pourrait affecter le fonctionnement global de l’organisation.
Cette approche transforme une découverte technique en un enjeu compréhensible pour la direction et les équipes métiers. Une vulnérabilité ne se limite pas à un score ou à un vecteur d’attaque : elle peut se traduire par des pertes financières, des conséquences juridiques, une atteinte à la réputation ou une interruption d’activité. La post-exploitation sert précisément à relier le constat technique à ces impacts concrets, afin de fournir une vision claire et réaliste des risques encourus.
Ainsi, cette phase ne vise pas à...
Persistance
Les techniques de persistance utilisées par les attaquants au sein d’une infrastructure Active Directory sont à la fois variées et particulièrement élaborées. Une compromission initiale ne constitue généralement qu’une étape : l’objectif véritable d’un acteur malveillant consiste à instaurer un accès durable et discret au cœur du domaine. Une fois les contrôleurs de domaine ou des comptes privilégiés compromis, l’attaquant met en place différents mécanismes lui garantissant la possibilité de revenir ultérieurement dans l’environnement, sans avoir à reproduire les vecteurs d’attaque initiaux ni à déclencher de nouveaux signaux d’alerte. Cette notion de persistance devient alors centrale, car elle conditionne la capacité du pirate à exercer un contrôle continu, furtif et souvent difficile à éradiquer.
Dans ce contexte, Mimikatz demeure l’un des outils les plus emblématiques et les plus utilisés par les attaquants. Grâce à ses modules dédiés, il facilite la mise en place ou l’exploitation de mécanismes de persistance, notamment via la manipulation des tickets Kerberos ou encore l’abus de fonctionnalités internes de Windows et d’Active Directory.
1. Skeleton Key
La Skeleton Key est une technique d’attaque contre Active Directory découverte par le chercheur français Benjamin Delpy en 2014. Elle consiste à patcher le processus LSASS en mémoire d’un contrôleur de domaine pour qu’il accepte, en plus du véritable mot de passe de chaque compte, un mot de passe maître universel (défini par défaut comme « mimikatz »). Concrètement, l’attaquant injecte un patch binaire qui remplace la fonction de comparaison des hash NTLM dans msv1_0.dll ou kerberos.dll par une routine appliquant une condition de type OU logique. Cette modification permet à l’authentification de réussir si le hash fourni correspond soit au vrai hash, soit à celui du mot de passe maître.
Ce vecteur d’attaque reste actif tant que le contrôleur de domaine n’est pas redémarré ou que Credential Guard n’est pas activé, limitant l’accès en écriture à LSASS. Cette méthode met en lumière la nécessité de protéger LSASS et les enjeux associés aux injections en mémoire. Pour activer cette porte dérobée (backdoor), il suffit de lancer Mimikatz et d’exécuter le module :
misc::skeleton
2. SSP personnalisés
Pour rappel, les SSP sont des bibliothèques chargées dans LSASS dès le démarrage du système d’exploitation pour gérer les mécanismes d’authentification (NTLM, Kerberos, etc.). Windows charge automatiquement tous les providers listés dans les clés de registre Security Packages sous HKLM\SYSTEM\CurrentControlSet\Control\Lsa. Un attaquant disposant des privilèges suffisants peut ajouter à ces listes le chemin d’une DLL malveillante qu’il a téléversée dans C:\Windows\System32. Au prochain redémarrage du contrôleur de domaine, cette DLL est chargée dans le processus LSASS avec les privilèges SYSTEM et s’enregistre comme fournisseur SSP. Elle peut alors intercepter les échanges d’authentification qui transitent par LSASS via SSPI, et selon le mécanisme utilisé (NTLM, Kerberos, etc.), récupérer des éléments d’authentification tels que des secrets, des hashes ou des données de session. Contrairement à la Skeleton Key, l’attaque SSP est persistante après redémarrage, totalement silencieuse (aucun événement d’audit par défaut), et extrêmement flexible. La DLL peut enregistrer les mots de passe, injecter des tickets Kerberos, modifier les PAC, ou même refuser certaines authentifications pour du déni...
Relations de confiance
Les relations de confiance (trusts) dans Active Directory permettent aux utilisateurs d’un domaine d’accéder aux ressources d’un autre domaine ou d’une autre forêt. Comme détaillé dans la section Les relations d’approbations du chapitre Le gestionnaire d’annuaire, les relations de confiance facilitent la collaboration entre domaines et forêts Active Directory, mais elles introduisent également des risques majeurs une fois qu’un domaine est compromis. Un attaquant peut exploiter ces relations de confiance pour étendre sa compromission à d’autres domaines ou forêts entières. Ces vulnérabilités transforment les frontières logiques en vecteurs d’escalade, particulièrement lorsque les configurations par défaut sont conservées ou lorsque les relations sont mal administrées.
1. Intra
Au sein d’une même forêt Active Directory, les relations de confiance automatiques et transitives, qu’il s’agisse des relations parent-child, tree-root ou shortcut ne constituent pas de véritables barrières de sécurité. La compromission d’un seul domaine peut ainsi servir de point d’appui à un attaquant pour étendre ses actions à l’ensemble de la forêt, en abusant de ces mécanismes de confiance. De nombreux chemins d’attaque exploitant ces relations ont été documentés, notamment par SpecterOps (https://specterops.io/blog/2025/06/25/good-fences-make-good-neighbors-new-ad-trusts-attack-paths-in-bloodhound/), mettant en évidence l’absence d’isolation réelle entre domaines intra-forêt.
Plusieurs techniques permettent de tirer parti de cette transitivité :
-
SID History Spoofing : sans filtrage SID activé (rarement appliqué intra-forêt), un attaquant peut injecter des SID privilégiés (par exemple Enterprise Admins) pour usurper des identités et escalader les privilèges.
-
Coercion et délégation TGT : forcer des ordinateurs privilégiés (comme des contrôleurs de domaine avec délégation non contrainte) à fournir des TGT, pouvant ouvrir la voie à des attaques comme DCSync pour extraire des hash NT, selon les droits obtenus. Cela exploite la transitivité...
Conclusion
Ce chapitre a permis de retracer l’ensemble de la chaîne de compromission d’un environnement Active Directory, depuis un point d’entrée initial apparemment anodin jusqu’à la prise de contrôle complète d’une forêt, voire de plusieurs forêts interconnectées.
Tout commence par la compromission d’un poste utilisateur, souvent facilitée par des facteurs classiques mais toujours efficaces : erreurs de configuration, manque de durcissement, hygiène des mots de passe insuffisante ou ingénierie sociale. Ce premier accès, bien que limité, constitue le socle sur lequel l’attaquant va construire méthodiquement son élévation de privilèges.
À partir du poste compromis, l’attaquant énumère les comptes, les groupes et les permissions du domaine. Il repère des droits trop larges, des comptes de service mal protégés et des configurations Kerberos ou NTLM exploitables. Ces éléments lui permettent de récupérer des identifiants valides, d’accéder à d’autres machines et de remonter progressivement vers des comptes administrateurs. Les mouvements latéraux lui permettent alors d’élargir progressivement son périmètre de contrôle, d’identifier des comptes à privilèges et de remonter...
Ressources complémentaires
Pour approfondir les concepts abordés et disposer de supports visuels, techniques et opérationnels de grande qualité, les ressources suivantes constituent d’excellents compléments :
Labs et exercices pratiques :
Cartes mentales complètes des attaques Active Directory :
Référentiels et pense-bêtes :
https://swisskyrepo.github.io/InternalAllTheThings/
Documentation offensive et pédagogique :
https://www.thehacker.recipes/
https://hideandsec.sh/books/cheatsheets-82c/page/active-directory
https://book.hacktricks.wiki/en/index.html
Dépôts GitHub utiles :
https://github.com/S1ckB0y1337/Active-Directory-Exploitation-Cheat-Sheet