bloodhound.py
Collecteur de données BloodHound en Python. Énumère Active Directory depuis Linux sans machine Windows : collecte utilisateurs, groupes, ordinateurs, sessions, ACL et trusts pour analyse dans BloodHound. Python-based BloodHound data collector. Enumerates Active Directory from Linux without needing a Windows machine — collects users, groups, computers, sessions, ACLs, and trusts for BloodHound analysis.
↗ https://github.com/dirkjanm/BloodHound.pyOverview
bloodhound.py is a Python alternative to SharpHound for collecting BloodHound data from Active Directory. It runs on Linux/macOS, requiring only valid AD credentials — essential for pentests where you don’t have Windows access or can’t run executables on Windows targets.
Installation
pip3 install bloodhound
# or
sudo apt install bloodhound.py
Basic Usage
Full collection
bloodhound-python -u user -p password -d domain.local -ns 10.10.10.1 -c All
DCOnly collection (less noisy)
bloodhound-python -u user -p password -d domain.local -ns 10.10.10.1 -c DCOnly
With hash authentication
bloodhound-python -u user --hashes :NT_HASH -d domain.local -ns 10.10.10.1 -c All
Collection Methods
DCOnly — LDAP only (least noisy, fastest)
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c DCOnly
Default — LDAP + session enumeration
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c Default
All — everything
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c All
Specific collections: Group, LocalAdmin, Session, Trusts, Default, DCOnly, DCOM, RDP, PSRemote, LoggedOn
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c Group,Session,Trusts
Options
Specify output directory
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c All --zip -o /tmp/bh/
ZIP output (for easy import)
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c All --zip
LDAPS instead of LDAP
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c DCOnly --ldap-port 636
# Kerberos authentication (with TGT)
export KRB5CCNAME=user.ccache
bloodhound-python -u user -k -d domain.local -ns DC_IP -c All --no-pass
Specify domain controller explicitly
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -dc DC01.domain.local -c All
Importing to BloodHound
# Start BloodHound
sudo neo4j start
bloodhound &
# Upload JSON files via UI:
# Click Upload Data → select all .json files (or .zip)
# Files created:
# users.json, groups.json, computers.json,
# sessions.json, ous.json, trusts.json, gpos.json
Tips
- bloodhound-python may miss some data that SharpHound captures (Windows-specific APIs)
- Use
-c DCOnlyfor lowest noise — gets most useful data (group memberships, ACLs) - If session enumeration fails, try
-c DCOnly,Group,Trustsfor core AD structure - The
--zipflag creates a single archive ready for BloodHound import - For Kerberos auth (PTT): set KRB5CCNAME and use
-k --no-pass
Help / Man page
bloodhound-python [options]
-u USER Username
-p PASS Password
-H HASH NT hash (LM:NT or :NT)
-k Kerberos authentication
-d DOMAIN Domain name (FQDN)
-ns DNS Name server (DC IP)
-dc DC Domain controller hostname
-c COLL Collection methods (All, DCOnly, Default, ...)
-o DIR Output directory
--zip Create zip file
--no-pass No password (use with -k)
Vue d’ensemble
bloodhound.py est une alternative Python à SharpHound pour collecter les données BloodHound depuis Active Directory. Il tourne sous Linux/macOS et ne nécessite que des identifiants AD valides : essentiel pour les pentests où vous n’avez pas d’accès Windows ou ne pouvez pas exécuter d’exécutables sur les cibles Windows.
Installation
pip3 install bloodhound
# ou
sudo apt install bloodhound.py
Utilisation de base
# Collecte complète
bloodhound-python -u user -p password -d domain.local -ns 10.10.10.1 -c All
# Collecte DCOnly (moins bruyante)
bloodhound-python -u user -p password -d domain.local -ns 10.10.10.1 -c DCOnly
# Avec authentification par empreinte
bloodhound-python -u user --hashes :NT_HASH -d domain.local -ns 10.10.10.1 -c All
Méthodes de collecte
# DCOnly : LDAP uniquement (le moins bruyant, le plus rapide)
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c DCOnly
# Default : LDAP + énumération des sessions
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c Default
# All : tout
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c All
# Collectes spécifiques : Group, LocalAdmin, Session, Trusts, Default, DCOnly, DCOM, RDP, PSRemote, LoggedOn
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c Group,Session,Trusts
Options
# Spécifier le répertoire de sortie
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c All --zip -o /tmp/bh/
# Sortie ZIP (pour un import facile)
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c All --zip
# LDAPS au lieu de LDAP
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -c DCOnly --ldap-port 636
# Authentification Kerberos (avec TGT)
export KRB5CCNAME=user.ccache
bloodhound-python -u user -k -d domain.local -ns DC_IP -c All --no-pass
# Spécifier explicitement le contrôleur de domaine
bloodhound-python -u user -p pass -d domain.local -ns DC_IP -dc DC01.domain.local -c All
Import dans BloodHound
# Démarrer BloodHound
sudo neo4j start
bloodhound &
# Uploader les fichiers JSON via l'UI :
# Cliquer sur Upload Data → sélectionner tous les fichiers .json (ou le .zip)
# Fichiers créés :
# users.json, groups.json, computers.json,
# sessions.json, ous.json, trusts.json, gpos.json
Conseils
- bloodhound-python peut rater certaines données que SharpHound capture (APIs propres à Windows)
- Utilisez
-c DCOnlypour le moins de bruit : il récupère les données les plus utiles (appartenances de groupe, ACL) - Si l’énumération des sessions échoue, essayez
-c DCOnly,Group,Trustspour la structure AD de base - Le flag
--zipcrée une archive unique prête pour l’import BloodHound - Pour l’authentification Kerberos (PTT) : définissez KRB5CCNAME et utilisez
-k --no-pass
Aide / Page de manuel
bloodhound-python [options]
-u USER Username
-p PASS Password
-H HASH NT hash (LM:NT or :NT)
-k Kerberos authentication
-d DOMAIN Domain name (FQDN)
-ns DNS Name server (DC IP)
-dc DC Domain controller hostname
-c COLL Collection methods (All, DCOnly, Default, ...)
-o DIR Output directory
--zip Create zip file
--no-pass No password (use with -k)