Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Aller au contenu Aller au quiz
Lu

BloodHound et chemins d'attaque

En route — chaque ligne compte.

~30 min
Programme complet

BloodHound et chemins d'attaque

Collecte des données Active Directory avec SharpHound, modélisation en graphe et calcul des chemins d'attaque les plus courts vers Domain Admins, avec une méthode de restitution du risque adaptée à l'IT comme au COMEX.

Ch. 8/12 Intermédiaire
Table des matières

    Pourquoi BloodHound change la posture offensive

    Sur un domaine Active Directory de taille réelle — quelques milliers d'objets, une dizaine de groupes imbriqués les uns dans les autres, des délégations Kerberos oubliées depuis des années — il est illusoire de reconstruire à la main les chemins de compromission. Un consultant qui énumère les ACL objet par objet avec dsacls ou PowerView finit par noyer la relation intéressante dans des centaines de lignes de bruit. BloodHound résout ce problème en changeant de modèle : au lieu de raisonner objet par objet, on raisonne en graphe de relations, et on pose une question simple au moteur — quel est le chemin le plus court entre ce compte que je contrôle et Domain Admins ?

    Ce chapitre couvre la chaîne complète : collecte des donnéesdonnéesIAEnsemble d'informations structurées ou non utilisées pour entraîner, évaluer ou alimenter un modèle. La qualité, la quantité et la représentativité des données sont les facteurs décisifs pour les performances en apprentissage automatique.Voir dans le glossaire, modélisation du graphe, requêtes d'analyse, construction d'un chemin exploitable de bout en bout, puis restitution du risque à des publics très différents — l'équipe IT qui doit corriger, et le COMEX qui doit arbitrer un budget de remédiation.

    Chemin d'attaque type dans BloodHound Six nœuds reliés par des relations MemberOf, GenericAll, AdminTo, HasSession et MemberOf, illustrant comment un compte utilisateur banal atteint Domain Admins en cinq sauts. j.martin (user) Groupe Support-IT Compte SVC-SQL Serveur SQL01 Domain Admins MemberOf GenericAll AdminTo + HasSession
    Chemin le plus court calculé par BloodHound : un utilisateur standard atteint Domain Admins en quatre relations exploitables.

    Le modèle de données : un graphe, pas une liste

    BloodHound modélise Active Directory (et Azure AD / Entra ID depuis les versions récentes) sous forme de graphe orienté stocké dans une base Neo4j. Les nœuds représentent les objets du domaine : utilisateurs, groupes, ordinateurs, GPO, unités d'organisation, domaines, comptes de service. Les arêtes représentent des relations, et chaque type d'arête correspond à une primitive d'attaque potentielle :

    Relation Signification Exploitation typique
    MemberOf Appartenance à un groupe Hérite des droits du groupe
    AdminTo Administrateur local sur une machine Dump LSASS, pass-the-hash
    HasSession Session ouverte sur une machine Vol de credentials en mémoire
    GenericAll / GenericWrite Contrôle total ou partiel sur l'objet Reset de mot de passe, ajout SPN
    WriteDacl / WriteOwner Capacité à modifier les permissions Auto-attribution de droits
    ForceChangePassword Changement de mot de passe sans connaître l'ancien Prise de contrôle du compte
    AddMember Ajout de membres à un groupe Auto-ajout dans un groupe privilégié
    DCSync (via droits de réplication) Extraction des hashs via réplication Compromission de tout le domaine

    Cette représentation transforme un problème d'énumération manuelle en un problème de théorie des graphes : trouver le plus court chemin entre un nœud source et un nœud cible devient une requête Cypher standard, résolue en millisecondes même sur des dizaines de milliers de nœuds.

    BloodHound Community Edition (CE) a remplacé l'architecture Legacy (Neo4j + interface Electron autonome) par une stack conteneurisée (API REST, PostgreSQL, Neo4j, interface web). Les concepts de graphe restent identiques, mais les commandes de déploiement et le format d'ingestion diffèrent. Vérifiez systématiquement la version ciblée avant de choisir votre collecteur.

    Collecte : SharpHound et ses méthodes

    Le collecteur officiel, SharpHound (C#) ou son équivalent Python bloodhound.py, s'exécute avec le contextefenêtre de contexteIAQuantité de texte qu'un modèle peut prendre en compte simultanément : question, documents fournis et historique. Au-delà, les éléments les plus anciens sortent du champ.Voir dans le glossaire d'un utilisateur du domaine — authentifié, pas nécessairement privilégié. Il interroge LDAP pour la structure de l'annuaire (utilisateurs, groupes, ACL, GPO) et utilise des appels SMB/RPC (comme NetSessionEnum ou l'accès au registre distant) pour recenser les sessions actives et les administrateurs locaux.

    Les méthodes de collecte les plus courantes :

    • Default : combine Group, LocalAdmin, Session, Trusts — un bon compromis pour une première passe.
    • All : ajoute ACL, ObjectProps, ComputerOnly, ce qui inclut la collecte des permissions détaillées et déclenche davantage de requêtes réseau.
    • Session seul : utile pour rafraîchir uniquement les données de session sans re-scanner toute l'ACL, par exemple lors d'un test qui dure plusieurs jours.
    • DCOnly : collecte via LDAP uniquement, sans toucher les postes de travail — beaucoup plus discret, mais sans les sessions ni les administrateurs locaux détectés par énumération directe.
    SharpHound.exe -c All,GPOLocalGroup --domain corp.local --outputdirectory C:\temp
    

    La collecte All génère un volume de trafic réseau et d'événements (4624, 5145, appels RPC vers chaque poste) qui est trivialement détectable par un EDR ou un SOC correctement instrumenté. En mission red team avec objectif de furtivité, préférez DCOnly complété par une collecte de sessions ciblée uniquement sur le sous-ensemble de machines pertinent, et étalez la collecte dans le temps plutôt que de lancer un scan massif en une passe.

    La collecte BloodHound touche l'intégralité de l'annuaire, y compris des objets et attributs hors du périmètre technique strictement nécessaire à la mission. Assurez-vous que l'autorisation écrite (ROE) couvre explicitement l'énumération LDAP complète et la lecture des ACL, et clarifiez avec le client les modalités de destruction des données collectées en fin de mission.

    Analyse : requêtes intégrées et Cypher sur mesure

    Une fois les fichiers JSON ingérés dans l'interface, l'onglet Cheat Sheet propose des requêtes préconstruites : "Find all Domain Admins", "Shortest Paths to Domain Admins", "Find Computers where Domain Users are Local Admin", "Shortest Paths from Kerberoastable Users". Ces requêtes couvrent l'essentiel d'une première passe d'analyse et suffisent souvent à identifier un ou deux chemins exploitables dès la première heure.

    Pour aller plus loin, le langage Cypher permet d'écrire des requêtes personnalisées directement contre le graphe Neo4j sous-jacent :

    MATCH p = shortestPath(
      (u:User {name:"J.MARTIN@CORP.LOCAL"})-[*1..]->(g:Group {name:"DOMAIN ADMINS@CORP.LOCAL"})
    )
    RETURN p
    

    Pour prioriser la remédiation, cherchez les nœuds "goulots d'étranglement" — ceux qui apparaissent sur un grand nombre de chemins distincts vers des cibles à haute valeur. Une requête du type MATCH (n) WHERE n.highvalue = false RETURN n, count(*) AS chemins ORDER BY chemins DESC (adaptée à votre schéma de données) fait souvent ressortir un unique groupe mal configuré responsable de dizaines de chemins simultanés — corriger ce point unique a un effet de levier bien supérieur à corriger chaque chemin individuellement.

    Des primitives ACL à l'exploitation concrète

    Le graphe ne remplace pas l'exploitation, il la guide. Chaque relation identifiée doit être traduite en action outillée :

    • GenericAll sur un utilisateur → reset direct du mot de passe via RPC (net rpc password ou un module dédié), ou ajout d'un SPN pour forcer un Kerberoasting ciblé.
    • WriteDacl sur un objet → ajout d'un droit GenericAll supplémentaire pour soi-même, puis pivot comme ci-dessus.
    • AddMember sur un groupe → auto-ajout, effectif immédiatement si le groupe est utilisé pour des droits d'administration locale via GPO.
    • AdminTo + HasSession → dump LSASS ou lecture du SAM local une fois l'accès administrateur local confirmé, puis extraction des credentials en cache de la session active.
    • Droits de réplication (DS-Replication-Get-Changes + DS-Replication-Get-Changes-All) → attaque DCSync, extraction de tous les hashs du domaine sans toucher le contrôleur de domaine physiquement.

    Lors d'un test, le compte J.MARTIN (helpdesk) est membre du groupe SUPPORT-IT, qui dispose d'un droit GenericAll hérité sur le compte de service SVC-SQL — une délégation posée trois ans plus tôt pour permettre à l'équipe support de réinitialiser ce compte en cas de blocage, jamais retirée depuis. SVC-SQL est administrateur local du serveur SQL01 via un GPO de déploiement applicatif. Un administrateur du domaine a ouvert une session RDP sur SQL01 deux jours plus tôt pour une opération de maintenance et ne s'est pas déconnecté proprement. BloodHound relie ces quatre faits, dispersés dans quatre systèmes différents et jamais corrélés par les équipes IT, en un chemin unique : reset du mot de passe de SVC-SQL, authentification, dump LSASS sur SQL01, récupération du hash de l'administrateur du domaine, compromission totale.

    Restituer le risque : storytelling pour COMEX et IT

    Un graphe Neo4j n'a aucune valeur en soi pour un décideur non technique. Le travail de restitution est aussi important que la découverte technique, et il se fait à deux niveaux distincts :

    Pour l'équipe IT / Tier 0 : exportez le chemin retenu avec les identifiants précis des objets (SamAccountName, SID, nom de machine), les relations exactes impliquées, et une recommandation de correction ciblée — retirer le droit GenericAll obsolète, déplacer SVC-SQL hors du groupe d'administration locale, imposer une politique de déconnexion des sessions privilégiées. Une capture d'écran du graphe annotée vaut mieux qu'un paragraphe de description.

    Pour le COMEX : traduisez le chemin technique en risque métier. Ne dites pas "GenericAll sur SVC-SQL" mais "un compte helpdesk sans privilège particulier peut, en quatre étapes automatisables, obtenir un accès équivalent à celui d'un administrateur système sur l'ensemble du système d'information, sans qu'aucune alerte ne se déclenche avec la configuration actuelle". Chiffrez l'effort d'exploitation (quelques minutes, un seul outil) face à l'effort de remédiation (un ticket, une revue de groupe) — ce contraste est ce qui débloque un budget.

    Gardez une slide "avant / après" : le graphe complet avec des dizaines de chemins convergents vers Domain Admins avant remédiation, puis le même graphe après application des correctifs prioritaires, montrant la disparition des chemins courts. Cette visualisation comparative est souvent l'argument le plus efficace en comité de pilotage.

    Détection et durcissement côté défense

    Une équipe purple team doit connaître les traces laissées par la collecte et par l'exploitation des chemins identifiés :

    • Les requêtes LDAP massives et répétitives depuis un poste utilisateur, hors comportement applicatif connu, sont détectables par une baseline sur les contrôleurs de domaine.
    • NetSessionEnum appelé en boucle contre un grand nombre de machines depuis un même poste est un indicateur fort de reconnaissance BloodHound-like.
    • Côté durcissement, l'ajout du groupe Protected Users, la limitation des délégations Kerberos non contraintes, et un audit périodique des ACL avec BloodHound lui-même (utilisé en mode défensif) permettent de réduire drastiquement la surface de chemins courts vers Tier 0.
    • La mise en quarantaine des comptes de service avec des mots de passe non tournés depuis plus d'un an, combinée à une revue trimestrielle des groupes imbriqués, élimine la majorité des chemins "hérités" comme celui de l'exemple ci-dessus.

    Pièges courants et erreurs à éviter

    • Confondre "chemin trouvé" et "chemin réellement exploitable" : certaines relations affichées dans le graphe (notamment issues d'une collecte incomplète ou d'objets désactivés) ne sont pas exploitables en pratique. Validez chaque saut manuellement avant de le présenter comme confirmé.
    • Négliger la fraîcheur des données : les sessions changent en continu ; un chemin basé sur HasSession peut être obsolète quelques heures après la collecte. Horodatez systématiquement vos exports.
    • Se limiter aux requêtes préconstruites : les chemins les plus dangereux impliquent souvent des combinaisons de relations non couvertes par le Cheat Sheet par défaut. La maîtrise de Cypher est ce qui distingue une analyse superficielle d'une analyse exhaustive.
    • Oublier les objets "High Value" personnalisés : par défaut, seuls certains groupes bien connus sont marqués comme cibles de valeur. Ajoutez manuellement vos comptes de service critiques, vos comptes de sauvegarde et vos comptes applicatifs sensibles pour que les calculs de chemins les intègrent.
    • Ignorer les tiers de confiance inter-domaines : dans une forêt multi-domaines, un chemin peut traverser une relation d'approbation (trust) mal configurée. Ne limitez jamais l'analyse à un seul domaine si la forêt en compte plusieurs.

    Checklist opérationnelle

    • ROE couvrant explicitement la collecte LDAP complète et la lecture des ACL
    • Choix de la méthode de collecte adapté au besoin de discrétion (DCOnly vs All)
    • Collecte étalée dans le temps si contrainte de furtivité
    • Marquage manuel des objets "High Value" pertinents pour le client
    • Vérification manuelle de chaque saut du chemin retenu avant exploitation
    • Export horodaté du graphe et des chemins identifiés
    • Deux livrables de restitution distincts : technique (IT/Tier 0) et exécutif (COMEX)
    • Recommandations de durcissement priorisées par effet de levier (nœuds goulots d'étranglement)
    • Modalités de destruction des données de collecte actées avec le client en fin de mission

    BloodHound ne remplace pas la compréhension fine d'Active Directory ; il l'accélère et la rend visible. La valeur d'un pentester expérimenté ne se mesure plus à sa capacité à retrouver un chemin à la main, mais à sa capacité à trier les chemins trouvés, à distinguer le bruit du risque réel, et à transformerTransformerIAArchitecture introduite en 2017, fondée sur le mécanisme d'attention, qui traite une séquence entière en parallèle. Elle sert de base à tous les grands modèles de langage actuels.Voir dans le glossaire un graphe technique en décision business actionnable.

    L'essentiel à retenir

    Ce chapitre présente BloodHound comme outil de modélisation des relations Active Directory sous forme de graphe, de la collecte via SharpHound jusqu'au calcul des chemins d'attaque les plus courts vers Domain Admins. Il détaille les primitives ACL exploitables (GenericAll, WriteDacl, AdminTo, HasSession, DCSync) et leur traduction en actions d'exploitation concrètes. Une attention particulière est portée à la discrétion de la collecte, aux pièges d'analyse courants, et à la restitution du risque à deux publics distincts : les équipes IT en charge de la remédiation technique, et le COMEX qui doit arbitrer les priorités.

    Questions fréquentes

    Faut-il des droits d'administrateur du domaine pour lancer une collecte SharpHound ?
    Non. SharpHound s'exécute avec un compte utilisateur du domaine authentifié classique, sans privilège particulier. C'est précisément ce qui rend l'outil dangereux entre de mauvaises mains : la lecture LDAP standard et les appels SMB/RPC de base suffisent à révéler des chemins vers des comptes à haut privilège.
    Quelle est la différence entre BloodHound Legacy et BloodHound Community Edition ?
    BloodHound Legacy reposait sur une interface Electron autonome connectée à une base Neo4j locale. BloodHound CE utilise une architecture conteneurisée avec une API REST, PostgreSQL pour la gestion applicative et Neo4j pour le graphe, accessible via une interface web. Les concepts de graphe et les types de relations restent globalement identiques, mais le déploiement, l'authentification et le format d'ingestion des données diffèrent, il faut donc vérifier la version ciblée avant de préparer sa collecte.
    Cypher est-il indispensable ou les requêtes préconstruites suffisent-elles ?
    Les requêtes du Cheat Sheet couvrent une bonne partie des cas courants et permettent une première analyse rapide. Mais les chemins les plus subtils, impliquant des combinaisons spécifiques de relations ou des filtres propres à l'environnement du client, nécessitent d'écrire ses propres requêtes Cypher. La maîtrise de ce langage de requête sur graphe est ce qui distingue une analyse exhaustive d'une analyse de surface.
    Comment limiter le bruit détecté par un EDR lors d'une collecte en mission red team ?
    Privilégier une collecte DCOnly pour éviter les appels SMB/RPC massifs vers chaque poste, étaler la collecte dans le temps plutôt que de lancer un scan en une seule passe, et ne cibler la collecte de sessions que sur le sous-ensemble de machines réellement pertinent pour le scénario d'attaque en cours.
    Un chemin trouvé dans BloodHound est-il toujours exploitable en pratique ?
    Non. Le graphe reflète l'état de l'annuaire au moment de la collecte, qui peut inclure des relations issues d'objets désactivés, de données obsolètes ou de sessions qui n'existent plus. Chaque saut d'un chemin retenu doit être validé manuellement avant d'être exploité ou présenté comme confirmé au client.
    Comment BloodHound gère-t-il les environnements multi-domaines ou hybrides avec Azure AD / Entra ID ?
    Les versions récentes de BloodHound intègrent la collecte et la modélisation des objets Azure AD / Entra ID en plus d'Active Directory on-premise, avec des types de relations spécifiques au cloud (rôles Azure, appartenances de groupes cloud, applications). Dans une forêt multi-domaines classique, il faut aussi veiller à collecter et analyser les relations d'approbation (trusts) entre domaines, car un chemin d'attaque peut très bien traverser plusieurs domaines de la forêt.
    Quelles données faut-il détruire après une mission utilisant BloodHound ?
    L'ensemble des fichiers de collecte SharpHound, la base Neo4j/PostgreSQL générée et tout export de graphe contenant des identifiants réels, noms de comptes, SID ou structures de groupes du client. Ces éléments doivent être traités comme des données sensibles au même titre que des identifiants ou des captures réseau, et leur destruction doit être actée contractuellement avec le client en fin de mission.

    Progression sauvegardée dans votre navigateur.

    Quiz de validation

    Quiz de validation

    Quiz indisponible (données invalides).

    Prêt à passer à la pratique ? Audit ou pentest de votre infrastructure — devis gratuit, résultat en 48h.
    Devis gratuit
    Ch. 8/12 BloodHound et chemins d'attaque 66% ~30 min Mode lecture v2.7.9