Skip to content

Guide de l’outil BloodHound par @SadProcessor

Je vous présente dans cet article une ressource très utile sur l’utilisation et le fonctionnement de BloodHound, un guide au format PDF écrit par @SadProcessor.

Il s’agit donc d’un PDF titré « THE DOG WHISPERER’S HANDBOOK  – A Hacker’s Guide to the BloodHound Galaxy » et écrit par @SadPorcessor (Walter Legowski). Son objectif est de décrire le fonctionnement de BloodHound, son utilisation basique et avancée et surtout ses apports en matière de sécurité.

Pour rappel, BloodHound a été créé par @harmj0y, @_Wald0 et @CptJesus, l’auteur rappel d’ailleurs que l’outil a été inspiré de l’outil AD Control Path de l’ANSSI (la classe ! :p).

Dans la Cyber Kill Chain de l’attaquant, BloodHound se positionne dans l’étape Situational Awarness (Reconnaissance), celle où il explore les environs afin de savoir où il est et quelles seront les prochaines étapes de son attaque. Il s’agit en effet d’un outil utilisé après une première exploitation dans le réseau car celui-ci nécessite a minima un accès réseau à l’Active Directory et les droits d’un utilisateur standard (non privilégié) sur le domaine AD. En cela, Bloodhound n’est pas un outil d’attaque, il n’exploite pas de vulnérabilité, il ne fait que récupérer des données par un vecteur légitime et les affiche afin de mettre en avant des faiblesses exploitables. Il facilite aussi l’exploration et le « requêtage » de ces données. L’objectif final étant de créer une cartographie de l’environnement Active Directory afin d’identifier des chemins d’attaques.

Le document détaille notamment les différents types d’attaque sur les environnements Windows est contient un grand nombre de référence vers des sites tels que attack.mitro.org, blog.cobaltstrike.com, blackhillinfosec.com, blog.gentilkiwi.com ou encore adsecurity.org. Bien plus qu’un tuto d’utilisation de Bloohound, il s’agit d’une ressource très intéressante pour l’attaque et la défense d’environnements Windows (autrement dit les tests d’intrusion internes). Pour chaque type de relation que BloodHound peut relever, un chapitre décrit la nature de la relation, pourquoi il est important de s’y intéresser, quels sont les impacts, méthodologies d’exploitation associés et les protections/corrections à mettre en place. Le document s’articule autour de 6 chapitres :

A – BloodHound Concept & Tool Evolution 

Ce chapitre parle des auteurs de BloodHound et de leur inspirations, il décrit brièvement l’objectif initial de l’outil et son concept global, notamment celui de la théorie des graphs (https://en.wikipedia.org/wiki/Graph_theory). Ce chapitre contient également les définitions nécessaires à l’utilisation de l’outil comme les nodes (noeuds, objets), edges (liens, relations) et paths (chemins).

Document à lire sur la théorie des graphs dans le domaine de la cybersécurité :  Defenders think in lists. Attackers think in graphs. As long as this is true, attackers win.

B – BloodHound Install & User Interface :

Il s’agit de la procédure d’installation de l’outil, de l’interface utilisateur et de ses options (tri, affichage, chargement des données, etc.). Pour rappel, Bloodhound se base sur une base de données Neo4j, qui requiert elle même java. Les outils Bloodhound sont eux des exécutables Windows et existent aussi pour Linux/Mac.

C – Data Collection & Ingestion :

Décrit le processus de récupération des données via Powershell ou plus récemment l’exécutable C# Sharphound, leur importation en base de données ainsi que leur traitements à partir de la base de données Neo4j. Sharphoundeffectue en effet un ensemble de requête LDAP vers l’AD et stocke les résultats dans une archive ZIP contenant un ensemble de fichiers JSON, qui sont eux ensuite insérés en base de données pour une analyse sans interaction avec l’AD.

D – Basic Cypher & Common Queries :

Introduction au langage des requêtes Neo4j (appelé Cypher) qui permet de personnaliser et modifier les requêtes dans BloodHound. Différents exemples de requêtes sont données, un avant gout :

MATCH (U:User)
MATCH (G:Group {name: "ADMINISTRATORS@DOMAIN.LOCAL"})
MATCH (U)-[MemberOf]->(G)
RETURN User

Cette requête permet de retourner tous les utilisateurs appartenant au groupe « ADMINISTRATORS@DOMAIN.LOCAL ».

E – Advanced Cypher & DB Manipulation :

Contient un ensemble de requêtes plus complexe avec lesquelles jouer dans l’interface BloodHound. L’auteur indique également comment modifier les requêtes pré-enregistrées et comment en enregistrer des nouvelles (les customs queries).

F – REST API & Other Cool Stuff :

Décrit comment requêter les données depuis une API et propose également d’aller plus loin dans l’exploration de BloodHound au travers différents outils/projets tiers.

Comme telnet ou nmap, BloodHound fait partie de ces outils qui ont autant (voir plus) d’intérêts à être utilisé par les attaquants que par les défenseurs. Comprendre ce qu’il fait et les problèmes de sécurité qu’il peut mettre en avant est donc toujours utile.

En plus du document en lui même, l’auteur partage une archive contenant des données de test sur lesquelles s’entraîner, pas besoin de monter une infrastructure de test pour commencer à jouer avec BloodHound. Pour aller plus loin, sachez que les auteurs de BloodHound ont publié récemment un outil permettant de faire de la génération de données aléatoires pour BloodHound, notamment afin de faciliter l’entraînement aux personnes n’ayant pas une vraie infrastructure AD sous la main : https://github.com/BloodHoundAD/BloodHound-Tools

L’article de l’auteur introduisant le PDF :

https://insinuator.net/2018/11/the-dog-whisperers-handbook/

Le PDF lui même :

https://www.ernw.de/download/BloodHoundWorkshop/ERNW_DogWhispererHandbook.pdf

Le lien vers une archive contenant des données de test :

https://www.ernw.de/download/BloodHoundWorkshop/sample.graph.db.zip

Bonne lecture 🙂

Partager :
Published inRessources

One Comment

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *