Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.bytejmp.com/llms.txt

Use this file to discover all available pages before exploring further.

Query File Location

# BloodHound CE (web app — stored in browser localStorage)
# Legacy BloodHound (Electron app)
~/.config/bloodhound/customqueries.json
# Windows
%APPDATA%\bloodhound\customqueries.json

Import Community Query Lists

Download and apply Hausec’s BloodHound Custom Queries.
curl -o ~/.config/bloodhound/customqueries.json \
  https://raw.githubusercontent.com/ZephrFish/Bloodhound-CustomQueries/main/customqueries.json
Download and apply ly4k’s queries.
curl -o ~/.config/bloodhound/customqueries.json \
  https://raw.githubusercontent.com/ly4k/BloodHound/main/customqueries.json
Merge multiple query files with jq.
jq -s 'map(.queries) | add | {queries: .}' file1.json file2.json > merged.json

BloodHound CE — Import via UI API

Upload custom queries to BloodHound CE via API.
curl -X PUT http://localhost:8080/api/v2/saved-queries \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d @customqueries.json
List saved queries.
curl http://localhost:8080/api/v2/saved-queries \
  -H "Authorization: Bearer <token>"
Delete a saved query by ID.
curl -X DELETE http://localhost:8080/api/v2/saved-queries/<query-id> \
  -H "Authorization: Bearer <token>"

Custom Query File Format

{
  "queries": [
    {
      "name": "Find Kerberoastable Admins",
      "queryList": [
        {
          "final": true,
          "query": "MATCH (u:User {hasspn: true})-[:MemberOf*1..]->(g:Group) WHERE g.name =~ '(?i).*admin.*' RETURN u.name"
        }
      ]
    }
  ]
}

Useful Community Lists

RepositoryFocus
ZephrFish/Bloodhound-CustomQueriesGeneral purpose
ly4k/BloodHoundExtended queries
mgeeky/Penetration-Testing-ToolsOffensive focused
CompassSecurity/BloodHoundQueriesCompass Security

References