📋 Fiche Outil : BloodHound


[!Important]

BloodHound est « Bruyant » Lancer un collecteur (SharpHound/BloodHound.py) génère énormément de trafic LDAP et SMB sur le réseau. Dans un environnement surveillé (SOC/EDR), c’est souvent détecté immédiatement.

📋 Note

Voir ici pour la version bloodhound-python


🎯 Objectif Principal

BloodHound utilise la théorie des graphes pour révéler les relations cachées dans un Active Directory. Il ne cherche pas de « failles » logicielles, mais des erreurs de logique et de permissions (ex: « L’utilisateur A peut réinitialiser le mot de passe de B, qui est Admin du serveur C, où l’Admin de Domaine est connecté »). Son but est de trouver le chemin le plus court vers l’Administrateur de Domaine.


Syntaxe Générale
bash
Syntaxe de base ici

Description

acces au donée « user » et « pass » de bloodhound sur kali : etc/bhapi/bhapi.json

Installation et mise en place

Depuis 2023, la version standard est BloodHound CE. Elle ne s’installe plus via apt install (qui installe la version Legacy obsolète), mais via Docker.

1. Pré-requis (Sur ton Kali/Serveur d’attaque) Tu as besoin de Docker et Docker Compose.

Tu as besoin de Docker et Docker Compose.

bash
sudo apt update
sudo apt install docker.io docker-compose-plugin

2. Installation de BloodHound CE

bash
# Créer un dossier pour BloodHound
mkdir bloodhound-ce && cd bloodhound-ce

# Télécharger le fichier de configuration Docker officiel
curl -L https://ghst.ly/getbhce -o docker-compose.yml

# Lancer le serveur (récupère les images et lance les conteneurs)
sudo docker compose up -d

# Récupérer le mot de passe initial généré aléatoirement
sudo docker compose logs | grep "Initial Password"

3. Accès

  • Ouvre ton navigateur sur : http://127.0.0.1:8080
  • Login : admin
  • Mot de passe : (Celui récupéré dans les logs)
  • Tu devras changer le mot de passe à la première connexion.

Extraction des Données (Les Collecteurs)

Pour que BloodHound fonctionne, il a besoin de « manger » des données. Ces données sont exportées sous forme de fichiers .json (ex: users.json, computers.json).

Tu as deux méthodes pour les obtenir :

Depuis ton Kali (BloodHound.py) :

Quand l’utiliser ? Tu es sur ton PC d’attaquant, tu as un accès réseau au domaine, et tu as récupéré un couple identifiant/mot de passe valide.

La Commande (Pour avoir les JSON) : _Cette commande va créer les fichiers .json directement dans ton dossier actuel.

bash
bloodhound-python -d <DOMAINE> -u <USER> -p <PASSWORD> -ns <IP_DC> -c All

# Exemple Concret :
bloodhound-python -d marvel.local -u 'peter.parker' -p 'Spiderman123!' -ns 192.168.1.10 -c All
  • -d : Le nom du domaine (FQDN).
  • -u : Nom d’utilisateur.
  • -p : Mot de passe.
  • -ns : L’adresse IP du Contrôleur de Domaine (Name Server).
  • -c All : Collecte TOUT (Groupes, Sessions, Trusts, ACLs, etc.).

Résultat : Tu verras apparaître plusieurs fichiers dans ton dossier : users.json, groups.json, computers.json, domains.json.

  • users.json : Infos sur les utilisateurs.
  • groups.json : Infos sur les groupes et leurs membres.
  • computers.json : Infos sur les machines.
  • domains.json : Infos sur le domaine lui-même.
  • gpos.json : Infos sur les stratégies de groupe.

On peut aussi extraire les donnée avec SharpHound

Exploitation des donnée

Les catégories

Catégorie Signification & Utilité pour l’Attaquant
Sessions « Où cet utilisateur est-il connecté ? »

Indique les ordinateurs où l’utilisateur a une session active.

_Utilité :_ Si tu es Admin de l’ordinateur où la session est active, tu peux voler les identifiants de cet utilisateur (via Mimikatz/LSASS).

Member Of « À quels groupes appartient-il ? »

Montre les groupes dont cet objet est membre (directement ou via des groupes imbriqués).

_Utilité :_ Vérifier si l’utilisateur fait partie d’un groupe à privilèges (ex: « Domain Admins », « Backup Operators »).

Local Admin Rights « Sur quelles machines est-il Dieu ? »

Liste les ordinateurs sur lesquels cet utilisateur a les droits Administrateur Local.

_Utilité :_ Si tu as le mot de passe de cet utilisateur, tu peux prendre le contrôle total de ces machines (via psexec ou evil-winrm).

Outbound Object Control « Quels pouvoirs ai-je sur les AUTRES ? » (Contrôle Sortant)

C’est la section la plus importante. Elle liste les objets (utilisateurs, groupes, ordis) que _ton_ objet peut manipuler.

_Exemples :_ « Je peux changer le mot de passe de X », « Je peux m’ajouter au groupe Y ».

Inbound Object Control « Qui a des pouvoirs sur MOI ? » (Contrôle Entrant)

Liste les objets qui peuvent manipuler _ton_ objet cible.

_Utilité :_ Si tu veux pirater cet utilisateur précis, cette liste te dit qui tu dois pirater en premier pour y arriver.

Execution Privileges « Où puis-je exécuter des commandes ? »

Liste les machines où l’utilisateur a des droits spécifiques comme RDP, DCOM ou PSRemoting sans forcément être admin complet.

Utilisation & Méthodologie d’Analyse

BloodHound ne sert pas juste à regarder des points, c’est un GPS. Voici comment l’utiliser en mission :

1. La technique du « Mark as Owned » (Marquer comme possédé)

C’est la fonction vitale de BloodHound.

  • Dès que tu trouves un mot de passe ou que tu compromets un utilisateur/ordinateur :

1. Cherche le nœud dans BloodHound.

2. Fais un Clic-Droit ➡️ Mark User as Owned (Une icône de crâne apparaît 💀).

3. Va dans l’onglet Analysis et clique sur « Shortest Paths to High Value Targets from Owned Principals ».

  • Résultat : BloodHound va te tracer un chemin rouge direct entre _ce que tu as déjà_ et l’Administrateur de Domaine.

2. Comprendre les « Edges » (Les lignes fléchées)

Si tu vois une flèche entre deux objets mais que tu ne sais pas comment l’exploiter :

  1. Clique sur la flèche (le lien), pas sur le nœud.
  1. Un panneau d’aide va s’ouvrir.
  1. Va dans l’onglet « Help ».
  1. BloodHound t’expliquera exactement quelle commande taper pour abuser de ce lien (souvent des commandes PowerView ou net user).

3. Casser les « Sessions » (Chasse à l’homme)

Si ton chemin d’attaque est bloqué, regarde les sessions :

  • _Scénario :_ Tu es Admin sur PC-COMPTA. BloodHound te dit que Admin-Domaine a une session active sur PC-COMPTA.
  • _Action :_ Utilise mimikatz sur PC-COMPTA pour dumper la mémoire. Tu récupéreras le mot de passe ou le hash de Admin-Domaine.
  • _Note :_ Les sessions sont volatiles. Si le scan date d’il y a 3 jours, l’utilisateur s’est probablement déconnecté depuis.

Exemple

Les étapes d’Exploitation Windows avec BloodHound

Suivi & Recommandation

OLD

BloodHound (GUI)

bash
# Lancer neo4j et BloodHound
sudo neo4j start
bloodhound

# Import des données collectées
# Via l'interface : Upload Data → Sélectionner les .json

bloodhound-python (Collecteur)

bash
# Collection complète (all)
bloodhound-python -d domain.local -u user -p password -c all -ns 192.168.1.100

# Collection spécifique
bloodhound-python -d domain.local -u user -p password 
    -c Group,LocalAdmin,Session,Trusts 
    -ns 192.168.1.100

# Avec Kerberos
bloodhound-python -d domain.local -u user -p password -k -dc dc01.domain.local

# Output
# Génère des fichiers .json à importer dans BloodHound GUI