sharphound
Collecteur de données BloodHound pour Active Directory. Énumère les objets AD, les permissions, les appartenances de groupes, les trusts et les données de session : alimente BloodHound pour la visualisation des chemins d'attaque. BloodHound data collector for Active Directory. Enumerates AD objects, permissions, group memberships, trusts, and session data — feeds into BloodHound for attack path visualization.
↗ https://github.com/BloodHoundAD/SharpHoundOverview
SharpHound is the official BloodHound data collector. It enumerates Active Directory using LDAP and SMB to collect users, groups, computers, ACLs, sessions, and trusts — then outputs JSON files that BloodHound uses to visualize attack paths to Domain Admin.
Basic Usage
# Run all collection methods (recommended)
.\SharpHound.exe --CollectionMethods All
# Stealth collection (less noisy)
.\SharpHound.exe --CollectionMethods DCOnly
# Zip output for easy transfer
.\SharpHound.exe --CollectionMethods All --ZipFilename bloodhound_data.zip
# Specify domain
.\SharpHound.exe --CollectionMethods All --Domain target.local
Collection Methods
# DCOnly — only queries the DC via LDAP (least noisy)
.\SharpHound.exe --CollectionMethods DCOnly
# Default — LDAP + session enumeration
.\SharpHound.exe --CollectionMethods Default
# All — everything (LDAP, sessions, ACLs, trusts)
.\SharpHound.exe --CollectionMethods All
# Specific methods:
# Group — group memberships
# LocalAdmin — local admin rights
# Session — active user sessions
# ACL — object permission edges
# Trusts — domain trusts
# Container — OU/container objects
# GPOLocalGroup — GPO-applied admin rights
Stealth Options
# Loop collection (periodic, for session data)
.\SharpHound.exe --CollectionMethods Session --Loop --LoopDuration 02:00:00
# Delay between requests
.\SharpHound.exe --CollectionMethods All --Throttle 1000 --Jitter 25
# Exclude domain controllers from session enum (less noisy)
.\SharpHound.exe --CollectionMethods All --ExcludeDCs
# Custom LDAP port
.\SharpHound.exe --CollectionMethods DCOnly --LdapPort 636 --SecureLDAP
From Kali (bloodhound-python)
Python alternative — no Windows needed
pip3 install bloodhound
Collect from Linux with valid creds
bloodhound-python -u user -p password -d domain.local -dc 10.10.10.1 -c All
With hash
bloodhound-python -u user --hashes :NT_HASH -d domain.local -dc 10.10.10.1 -c All
Specific collection
bloodhound-python -u user -p pass -d domain.local -ns 10.10.10.1 -c DCOnly
Importing into BloodHound
# Start Neo4j and BloodHound
sudo neo4j start
bloodhound
# In BloodHound:
# Upload Data → select .zip or JSON files
# Or via bloodhound-ce (BloodHound Community Edition):
# ./bhe import --zip bloodhound_data.zip
Key BloodHound Queries
# Shortest path to Domain Admin from owned user
# (In BloodHound UI: Analysis → Shortest Paths to Domain Admins)
# Find all Kerberoastable paths to DA
MATCH p=shortestPath((u:User {hasspn:true})-[*1..]->(g:Group {name:"DOMAIN ADMINS@DOMAIN.LOCAL"})) RETURN p
# Find users with DCSync rights
MATCH (u)-[:GetChanges|GetChangesAll]->(d:Domain) RETURN u.name
Tips
- DCOnly is the least noisy — start with this, then do full collection if needed
- Session enumeration requires touching each computer — detected by some EDRs
- Loop mode collects sessions over time — more accurate who is logged in where
- Prioritize: check for immediate paths before running All collection
- bloodhound-python is convenient for Linux but may miss some Windows-specific data
Help / Man page
SharpHound.exe [options]
--CollectionMethods M All, DCOnly, Default, Session, ACL, LocalAdmin, Trusts
--Domain D Target domain
--ZipFilename F Output zip file name
--OutputDirectory D Output directory
--Loop Loop collection
--LoopDuration T Loop duration (hh:mm:ss)
--Throttle N MS between requests
--Jitter N Jitter percentage
--ExcludeDCs Skip DC session enumeration
--SecureLDAP Use LDAPS
--LdapPort N Custom LDAP port
--LdapUsername U Explicit LDAP username
--LdapPassword P Explicit LDAP password
Vue d’ensemble
SharpHound est le collecteur de données officiel de BloodHound. Il énumère Active Directory via LDAP et SMB pour collecter les utilisateurs, groupes, ordinateurs, ACL, sessions et trusts, puis génère des fichiers JSON que BloodHound utilise pour visualiser les chemins d’attaque vers Domain Admin.
Utilisation de base
# Lancer toutes les méthodes de collecte (recommandé)
.\SharpHound.exe --CollectionMethods All
# Collecte discrète (moins bruyante)
.\SharpHound.exe --CollectionMethods DCOnly
# Sortie zippée pour un transfert facile
.\SharpHound.exe --CollectionMethods All --ZipFilename bloodhound_data.zip
# Spécifier le domaine
.\SharpHound.exe --CollectionMethods All --Domain target.local
Méthodes de collecte
# DCOnly : interroge uniquement le DC via LDAP (la moins bruyante)
.\SharpHound.exe --CollectionMethods DCOnly
# Default : LDAP + énumération des sessions
.\SharpHound.exe --CollectionMethods Default
# All : tout (LDAP, sessions, ACL, trusts)
.\SharpHound.exe --CollectionMethods All
# Méthodes spécifiques :
# Group : appartenances de groupes
# LocalAdmin : droits admin local
# Session : sessions utilisateur actives
# ACL : arêtes de permissions sur les objets
# Trusts : trusts de domaine
# Container : objets OU/conteneurs
# GPOLocalGroup : droits admin appliqués par GPO
Options de discrétion
# Collecte en boucle (périodique, pour les données de session)
.\SharpHound.exe --CollectionMethods Session --Loop --LoopDuration 02:00:00
# Délai entre les requêtes
.\SharpHound.exe --CollectionMethods All --Throttle 1000 --Jitter 25
# Exclure les contrôleurs de domaine de l'énumération de session (moins bruyant)
.\SharpHound.exe --CollectionMethods All --ExcludeDCs
# Port LDAP personnalisé
.\SharpHound.exe --CollectionMethods DCOnly --LdapPort 636 --SecureLDAP
Depuis Kali (bloodhound-python)
# Alternative Python : pas besoin de Windows
pip3 install bloodhound
# Collecter depuis Linux avec des identifiants valides
bloodhound-python -u user -p password -d domain.local -dc 10.10.10.1 -c All
# Avec un hash
bloodhound-python -u user --hashes :NT_HASH -d domain.local -dc 10.10.10.1 -c All
# Collecte spécifique
bloodhound-python -u user -p pass -d domain.local -ns 10.10.10.1 -c DCOnly
Importer dans BloodHound
# Démarrer Neo4j et BloodHound
sudo neo4j start
bloodhound
# Dans BloodHound :
# Upload Data → sélectionner les fichiers .zip ou JSON
# Ou via bloodhound-ce (BloodHound Community Edition) :
# ./bhe import --zip bloodhound_data.zip
Requêtes BloodHound clés
# Chemin le plus court vers Domain Admin depuis un utilisateur compromis
# (Dans l'UI BloodHound : Analysis → Shortest Paths to Domain Admins)
# Trouver tous les chemins kerberoastables vers DA
MATCH p=shortestPath((u:User {hasspn:true})-[*1..]->(g:Group {name:"DOMAIN ADMINS@DOMAIN.LOCAL"})) RETURN p
# Trouver les utilisateurs disposant de droits DCSync
MATCH (u)-[:GetChanges|GetChangesAll]->(d:Domain) RETURN u.name
Conseils
- DCOnly est la méthode la moins bruyante : commencer par celle-ci, puis faire une collecte complète si nécessaire
- L’énumération de session touche chaque ordinateur : détectée par certains EDR
- Le mode boucle collecte les sessions dans le temps : donne une image plus fidèle de qui est connecté où
- Prioriser : vérifier les chemins immédiats avant de lancer une collecte All
- bloodhound-python est pratique sous Linux mais peut manquer certaines données spécifiques à Windows
Aide / Page de manuel
SharpHound.exe [options]
--CollectionMethods M All, DCOnly, Default, Session, ACL, LocalAdmin, Trusts
--Domain D Target domain
--ZipFilename F Output zip file name
--OutputDirectory D Output directory
--Loop Loop collection
--LoopDuration T Loop duration (hh:mm:ss)
--Throttle N MS between requests
--Jitter N Jitter percentage
--ExcludeDCs Skip DC session enumeration
--SecureLDAP Use LDAPS
--LdapPort N Custom LDAP port
--LdapUsername U Explicit LDAP username
--LdapPassword P Explicit LDAP password