← retour aux outils back to tools

# 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/SharpHound

## Overview

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