BloodHound and SharpHound Collection
BloodHound maps attack paths through Active Directory by collecting relationships between users, computers, groups, and ACLs and visualising the shortest path to Domain Admin. SharpHound is the Windows-based collector. BloodHound.py and other tools handle collection from Linux. The output is a ZIP of JSON files that loads directly into BloodHound.
SharpHound: Windows collection
SharpHound runs on a domain-joined host or from any host with domain credentials. It contacts the DC and domain hosts directly to collect session, trust, ACL, and object data. On Kali: /usr/share/sharphound/SharpHound.exe
[+] Creating randomized filenames [+] Resolved Collection Methods: Group, LocalAdmin, Session, Trusts, ACL, Container, RDP, ObjectProps, DCOM, SPNTargets, PSRemote [+] Initializing SharpHound at 14:23:01 on 04/05/2026 [+] Flags: Group, LocalAdmin, Session, Trusts, ACL, Container, RDP, ObjectProps, DCOM, SPNTargets, PSRemote [+] Finished enumeration for CORP.LOCAL in 00:00:14.1337 [+] Zipping files to C:\Windows\Temp\bh\20260405142315_BloodHound.zip
Collection methods explained:
All: everything, queries domain hosts for local admins and sessions (noisy)DCOnly: only queries the DC via LDAP, no host-to-host traffic (stealthy, misses session data)ACL: ACL relationships only: the most valuable for privilege escalation path findingSession: where users are currently logged in (requires connecting to each host)ObjectProps: user and computer properties from LDAP
Transfer the ZIP to your attack box
BloodHound.py: collection from Linux
BloodHound.py collects from Linux without needing a Windows foothold. It communicates directly with the DC over LDAP and SMB using any valid domain credentials.
INFO: Found AD domain: corp.local INFO: Connecting to LDAP server: 10.10.10.10 INFO: Found 1 domains INFO: Found 3 computers INFO: Found 24 users INFO: Found 15 groups INFO: Done in 00M 12S
nxc BloodHound collection
nxc runs its own built-in BloodHound ingestor over LDAP from the attacker machine using valid domain credentials: no shell on the target host is required.
LDAP 10.10.10.10 389 DC01 [*] Compressing output into 20260405_BloodHound.zip LDAP 10.10.10.10 389 DC01 [+] 20260405_BloodHound.zip written to current directory
BloodyAD: targeted collection without ZIP
BloodyAD does not produce BloodHound ZIPs but its get writable and get search queries cover the most actionable enumeration (writable objects and delegation targets) without the overhead of a full BloodHound run.
BloodHound Community Edition (CE)
BloodHound CE is the current maintained version. It replaces the legacy Electron app and neo4j-only setup with a containerised stack and a web UI.
Starting BloodHound CE
On Kali, CE ships via Docker Compose:
First-run credentials are printed to stdout: look for Initial Password Set To:. The web UI opens at http://localhost:8080.
If you have the standalone bloodhound package installed (legacy), start it with:
CE and legacy are separate installs. CE is the default going forward.
Collecting for CE
SharpHound output (ZIP) is CE-compatible since v2.0: no changes needed. bloodhound-ce-python produces CE-compatible output (install via pipx install bloodhound-ce). The default bloodhound-python command targets legacy BloodHound 4.x only:
Without --zip, bloodhound-python writes individual JSON files. CE accepts both: drag the ZIP or folder into the web UI upload at http://localhost:8080.
Uploading to CE
In the CE web UI: Administration → File Ingest → Upload Files. Drag the ZIP or individual JSON files. CE processes them in the background: check status under Administration → File Ingest Status.
Loading and analysing in BloodHound
After collection, load the ZIP into BloodHound and run these queries first to identify the most direct attack paths.
Shortest Paths to Domain Admins: fewest hops from your current account to DA
Find Principals with DCSync Rights: accounts that can dump all domain hashes without being DA
Shortest Path from Owned Principals: mark your account as owned first, then run this
Find Computers with Unconstrained Delegation: coercion targets for TGT theft: see Unconstrained Delegation Abuse
Find AS-REP Roastable Users: accounts with pre-auth disabled: see AS-REP Roasting
Find Kerberoastable Users in High Value Groups: high-impact SPN accounts: see Kerberoasting
For acting on what BloodHound finds see Active Directory ACL Enumeration and ACL Abuse Privilege Escalation.
Related
References
-
Collection methods, flags, and output format reference
-
BloodHound.py: GitHubREPO: BloodHound.py: GitHub, github.com/dirkjanm/BloodHound.py (opens in new tab)
Linux-based collection, authentication options
-
NetExec (nxc): GitHubREPO: NetExec (nxc): GitHub, github.com/Pennyw0rth/NetExec (opens in new tab)
Remote BloodHound collection via --bloodhound flag