Teknik - BloodHound et OpenGraph - Parce que... c'est l'épisode 0x640!
Description
Parce que… c’est l’épisode 0x640!
Shameless plug
- 12 au 17 octobre 2025 - Objective by the sea v8
- 14 et 15 octobre 2025 - ATT&CKcon 6.0
- 14 et 15 octobre 2025 - Forum inCyber Canada
- Code rabais de 30% - CA25KDUX92
- 4 et 5 novembre 2025 - FAIRCON 2025
- 8 et 9 novembre 2025 - DEATHcon
- 17 au 20 novembre 2025 - European Cyber Week
- 25 et 26 février 2026 - SéQCure 2026
Description
Introduction et parcours professionnel
Mathieu Saulnier, connu sous le pseudonyme “Scooby” dans la communauté de cybersécurité, possède une vingtaine d’années d’expérience dans le domaine. Son parcours l’a mené d’un grand fournisseur internet et de télécommunications vers la gestion d’un SOC (Security Operations Center), puis vers des rôles de recherche sur les menaces pour des vendeurs de SIEM et d’EDR. Aujourd’hui, il occupe le poste de product manager pour BloodHound Community Edition chez SpecterOps, une position qu’il a obtenue grâce à ses nombreuses présentations sur BloodHound au fil des années.
BloodHound version 8 et la révolution OpenGraph
La version 8 de BloodHound représente une évolution majeure de l’outil. La fonctionnalité phare est OpenGraph, qui permet d’ingérer n’importe quel type de données dans le graphe et de créer ses propres chemins d’attaque pour différentes technologies. Historiquement, BloodHound se concentrait exclusivement sur Active Directory et Azure/Entra ID, mais cette limitation appartient désormais au passé.
Avec le lancement d’OpenGraph, SpecterOps a publié plusieurs nouveaux collecteurs pour diverses technologies : One Password, Snowflake, et Jamf (pour la gestion des postes de travail Mac). La communauté a réagi avec enthousiasme, puisqu’en seulement 48 heures après l’annonce, un contributeur externe a créé un collecteur pour Ansible. Plus récemment, un collecteur pour VMware vCenter et ESXi a également vu le jour, démontrant l’adoption rapide de cette nouvelle capacité.
La distinction fondamentale : access path versus attack path
Mathieu utilise une analogie éclairante avec Google Maps pour expliquer la différence entre un chemin d’accès et un chemin d’attaque. Google Maps montre les chemins autorisés selon différents modes de transport (voiture, vélo, transport en commun), chacun ayant ses propres règles et restrictions. C’est l’équivalent d’un graphe d’accès qui indique où on a le droit d’aller.
Un chemin d’attaque, en revanche, représente la perspective d’un adversaire qui ne se préoccupe pas des règlements. L’exemple donné est celui d’une voiture roulant sur une piste cyclable à Montréal : c’est interdit, on sait qu’on risque une contravention, mais c’est techniquement possible. Dans le monde numérique, les conséquences sont souvent moins immédiates et moins visibles, ce qui explique pourquoi les attaquants exploitent régulièrement ces chemins non conventionnels.
L’évolution du modèle de données
BloodHound a commencé modestement avec seulement trois types d’objets (utilisateurs, groupes et ordinateurs) et trois types de relations (member of, admin et session). Depuis, le modèle s’est considérablement enrichi grâce aux recherches menées par SpecterOps et d’autres organisations. Des propriétés comme le Kerberoasting ont été ajoutées, permettant d’identifier les objets vulnérables à ce type d’attaque et d’élever ses privilèges.
La vraie puissance d’OpenGraph réside dans la capacité de relier différents systèmes entre eux. Par exemple, si un attaquant compromet le poste d’un utilisateur ayant accès à un dépôt GitHub, il peut voler les tokens et sessions pour effectuer des commits au nom de cet utilisateur, potentiellement dans une bibliothèque largement utilisée, ouvrant ainsi la voie à une attaque de la chaîne d’approvisionnement (supply chain attack). Cette interconnexion multi-dimensionnelle des systèmes était difficile à visualiser mentalement, mais le graphe la rend évidente.
Créer des collecteurs OpenGraph : exigences et bonnes pratiques
Pour qu’un collecteur soit accepté dans la liste officielle des projets communautaires, certains standards doivent être respectés. Il faut créer le connecteur avec une documentation détaillant les permissions minimales nécessaires (principe du moindre privilège), expliquer son fonctionnement, les systèmes d’exploitation supportés, et les dépendances requises.
La documentation devrait également inclure des références sur comment exploiter ou défendre contre les vulnérabilités identifiées. Bien que non obligatoires, des éléments visuels personnalisés (icônes et couleurs) sont fortement recommandés pour assurer une cohérence visuelle dans la communauté. Le projet étant open source, les utilisateurs peuvent toujours modifier ces éléments selon leurs préférences.
Un aspect crucial est la fourniture de requêtes Cypher pré-construites. Sans ces requêtes, un utilisateur qui ne connaît pas Cypher pourrait importer toutes les données mais se retrouver bloqué pour les exploiter efficacement.
Le langage Cypher et l’accès aux données
BloodHound fonctionne sur une base de données graphique, historiquement Neo4j, mais maintenant également PostgreSQL grâce à un module de conversion. Le langage de requête utilisé est Cypher, qui possède une syntaxe particulière. Pour rendre l’outil plus accessible, SpecterOps maintient une bibliothèque Cypher contenant de nombreuses requêtes créées par l’équipe et la communauté. Ces requêtes peuvent être exécutées directement depuis le portail BloodHound.
L’entreprise explore également l’utilisation de LLM (Large Language Models) pour générer des requêtes Cypher automatiquement, bien que le corpus public de données spécifiques à BloodHound soit encore limité. Les pistes futures incluent l’utilisation de MCP (Model Context Protocol) et d’approches agentiques pour améliorer la génération de requêtes.
Usage défensif et offensif : deux faces d’une même médaille
Mathieu souligne que les mêmes requêtes Cypher peuvent servir tant aux équipes bleues (défensives) qu’aux équipes rouges (offensives). La différence réside dans l’intention et l’utilisation des résultats, pas dans les outils eux-mêmes. C’est l’équivalent du marteau qui peut construire ou détruire selon l’utilisateur.
Pour l’usage défensif, BloodHound Enterprise offre des fonctionnalités avancées comme le scan quasi-continu, l’identification automatique des points de contrôle critiques (choke points), et des outils de remédiation. Même la version communautaire gratuite permet de découvrir des vulnérabilités majeures lors de la première exécution.
Exemples concrets et cas d’usage
Mathieu partage des exemples frappants de découvertes faites avec BloodHound. Dans une entreprise de plus de 60 000 employés, il a identifié un serveur où tous les utilisateurs du domaine (domain users) avaient été accidentellement configurés comme administrateurs locaux. Comme un compte administrateur de domaine se connectait régulièrement à ce serveur, n’importe quel utilisateur pouvait devenir administrateur du domaine en seulement trois étapes : RDP vers le serveur, dump de la mémoire pour récupérer le token, puis attaque pass-the-hash.
Un autre cas récent impliquait le script de login d’un administrateur de domaine stocké dans un répertoire accessible en écriture à tous. En y plaçant un simple script affichant un popup, l’équipe de sécurité a rapidement reçu une notification prouvant la vulnérabilité.
Nouvelles fonctionnalités : la vue tableau
Bien que moins spectaculaire qu’OpenGraph, la fonctionnalité “table view” répond à un besoin important. La célèbre citation de John Lambert de Microsoft (2015) dit : “Les attaquants pensent en graphe, les défenseurs pensent en liste. Tant que ce sera vrai, les attaquants gagneront.” Bien que la visualisation graphique soit le paradigme central de BloodHound, certaines analyses nécessitent une vue tabulaire.
Par exemple, une requête identifiant tous les comptes Kerberoastables retourne de nombreux points à l’écran, mais sans informations détaillées sur les privilèges ou l’appartenance aux groupes. La vue tableau permet de choisir les colonnes à afficher et d’exporter les données en JSON (et bientôt en CSV), facilitant l’analyse et le partage d’informations.
Deathcon Montréal : la conférence pour les défenseurs
En complément à son travail sur BloodHound, Mathieu est le site leader de Montréal pour Deathcon (Detection Engineering and Threat Hunting Conference). Cette conférence unique, entièrement axée sur les ateliers pratiques (hands-on), se déroule sur deux jours en novembre. Contrairement aux conférences traditionnelles, tous les ateliers sont pré-enregistrés, permettant aux participants de tr