Prerequisites
- Target system, dependencies and environment configured.
Usage
Purpose
Active Directory is a graph: users, groups, computers, and the permissions between them. Attackers win by finding a path of legitimate permissions from where they are to Domain Admin. BloodHound draws that graph so both sides can see it. This skill covers collecting the data, reading the paths, and cutting them.
When to use it
After you've authenticated to a domain (any user, however low) on an authorised engagement, or when auditing your own AD for hidden escalation routes. It's the map that makes Kerberoasting, delegation abuse, and ACL attacks targeted instead of blind.
Domain-authenticated engagements only. Collection generates a lot of LDAP traffic and is itself detectable — expect it to show up in logs.
Procedure
- Collect the graph data from a domain-joined context with any valid credentials.
All gathers sessions, ACLs, group membership, and trust:SharpHound.exe -c All
# or the python collector, off-host:
bloodhound-python -u user -p 'pass' -d domain.local -c All -ns <dc-ip>
- Load the resulting JSON/zip into BloodHound and let it build the graph.
- Run the built-in queries that matter first — they answer "how do I get to the top from here":
- Shortest paths to Domain Admins from owned or low-priv principals.
- Kerberoastable users (service accounts with SPNs) — feeds the Kerberoasting skill.
- AS-REP roastable users (no pre-auth required).
- Dangerous ACLs:
GenericAll, WriteDACL, WriteOwner, ForceChangePassword over users/groups you can reach.
- Mark what you actually control as "Owned" and re-query paths from those nodes — the realistic paths, not the theoretical ones.
- Read each edge as an action:
MemberOf, AdminTo, HasSession, CanRDP, GenericAll. The path is a recipe — each hop is a technique to execute (and, for defenders, to break).
Cheatsheet
SharpHound.exe -c All --zipfilename loot
bloodhound-python -u U -p P -d dom.local -c All -ns 10.0.0.1
- Shortest Paths to Domain Admins
- Find Principals with DCSync Rights
- Kerberoastable Users
- AS-REP Roastable Users
- Shortest Path from Owned Principals
ldapsearch -x -H ldap://dc -D 'user@dom' -w pass -b 'dc=dom,dc=local' '(servicePrincipalName=*)'
Reading the output
- A short path from your foothold to Domain Admins is the headline finding — report the exact edges, because each is a fixable misconfiguration.
DCSync rights (GetChanges/GetChangesAll) on a non-DC principal means that account can pull every hash in the domain. Critical.
GenericAll/WriteDACL over a privileged group is a one-step escalation (add yourself, or reset a member's password).
- Kerberoastable admins — an SPN on a Domain Admin account is an offline-crack path straight to the top.
- Unconstrained delegation on a computer is a high-value target for the delegation-abuse skill.
The fix
The paths are permissions, so remediation is tightening permissions:
- Prune ACLs. Remove
GenericAll/WriteDACL/WriteOwner grants that aren't justified; these are usually leftovers nobody meant to leave.
- Tier your admins. Domain Admins should never log on to workstations — that's what creates the
HasSession edges attackers hop through. Implement a tiered administration model.
- Kill unnecessary SPNs and give service accounts long, managed passwords (gMSA) so Kerberoasting yields nothing crackable.
- Remove unconstrained delegation; use constrained/resource-based delegation with tight scope.
- Restrict DCSync rights to actual domain controllers.
- Re-run collection after changes — the graph is the verification that a path is truly gone.
Pitfalls
- Collecting once and trusting it. AD changes daily; a path closed last month may be back. Re-collect.
- Chasing theoretical paths. Filter to paths from principals you actually control — those are the real risk.
- Forgetting collection is loud. SharpHound is detectable; on a defensive audit that's fine, on a red-team plan for it.
- Fixing a node, missing the edge. Removing a user from a group doesn't help if a
WriteDACL lets them re-add themselves. Fix the permission, not just the symptom.
References
- BloodHound documentation (SpecterOps)
- MITRE ATT&CK — T1069 (Permission Groups Discovery), T1482 (Domain Trust Discovery)
- Microsoft — Securing privileged access / tiered administration model
Inputs
- Relevant source code, logs, network traces, or system specifications.
Outputs
- Analysis findings, security audit report, or generated code artifacts.
1---2name: ad-enumeration-bloodhound3description: Use when you have a domain foothold and need to map Active Directory attack paths — collecting data with SharpHound and analysing it in BloodHound — plus what to fix.4---5678## Prerequisites9- Target system, dependencies and environment configured.1011## Usage12### Purpose1314Active Directory is a graph: users, groups, computers, and the permissions between them. Attackers win by finding a path of legitimate permissions from where they are to Domain Admin. BloodHound draws that graph so both sides can see it. This skill covers collecting the data, reading the paths, and cutting them.1516### When to use it1718After you've authenticated to a domain (any user, however low) on an authorised engagement, or when auditing your own AD for hidden escalation routes. It's the map that makes Kerberoasting, delegation abuse, and ACL attacks targeted instead of blind.1920Domain-authenticated engagements only. Collection generates a lot of LDAP traffic and is itself detectable — expect it to show up in logs.2122### Procedure23241. Collect the graph data from a domain-joined context with any valid credentials. `All` gathers sessions, ACLs, group membership, and trust:25 ```26 SharpHound.exe -c All27 # or the python collector, off-host:28 bloodhound-python -u user -p 'pass' -d domain.local -c All -ns <dc-ip>29 ```302. Load the resulting JSON/zip into BloodHound and let it build the graph.313. Run the built-in queries that matter first — they answer "how do I get to the top from here":32 - **Shortest paths to Domain Admins** from owned or low-priv principals.33 - **Kerberoastable users** (service accounts with SPNs) — feeds the Kerberoasting skill.34 - **AS-REP roastable users** (no pre-auth required).35 - **Dangerous ACLs**: `GenericAll`, `WriteDACL`, `WriteOwner`, `ForceChangePassword` over users/groups you can reach.364. Mark what you actually control as "Owned" and re-query paths from those nodes — the realistic paths, not the theoretical ones.375. Read each edge as an action: `MemberOf`, `AdminTo`, `HasSession`, `CanRDP`, `GenericAll`. The path is a recipe — each hop is a technique to execute (and, for defenders, to break).3839### Cheatsheet4041```42SharpHound.exe -c All --zipfilename loot43bloodhound-python -u U -p P -d dom.local -c All -ns 10.0.0.14445- Shortest Paths to Domain Admins46- Find Principals with DCSync Rights47- Kerberoastable Users48- AS-REP Roastable Users49- Shortest Path from Owned Principals5051ldapsearch -x -H ldap://dc -D 'user@dom' -w pass -b 'dc=dom,dc=local' '(servicePrincipalName=*)'52```5354### Reading the output5556- **A short path from your foothold to Domain Admins** is the headline finding — report the exact edges, because each is a fixable misconfiguration.57- **`DCSync` rights (`GetChanges`/`GetChangesAll`) on a non-DC principal** means that account can pull every hash in the domain. Critical.58- **`GenericAll`/`WriteDACL` over a privileged group** is a one-step escalation (add yourself, or reset a member's password).59- **Kerberoastable admins** — an SPN on a Domain Admin account is an offline-crack path straight to the top.60- **Unconstrained delegation on a computer** is a high-value target for the delegation-abuse skill.6162### The fix6364The paths are permissions, so remediation is tightening permissions:6566- **Prune ACLs.** Remove `GenericAll`/`WriteDACL`/`WriteOwner` grants that aren't justified; these are usually leftovers nobody meant to leave.67- **Tier your admins.** Domain Admins should never log on to workstations — that's what creates the `HasSession` edges attackers hop through. Implement a tiered administration model.68- **Kill unnecessary SPNs** and give service accounts long, managed passwords (gMSA) so Kerberoasting yields nothing crackable.69- **Remove unconstrained delegation**; use constrained/resource-based delegation with tight scope.70- **Restrict DCSync rights** to actual domain controllers.71- Re-run collection after changes — the graph is the verification that a path is truly gone.7273### Pitfalls7475- **Collecting once and trusting it.** AD changes daily; a path closed last month may be back. Re-collect.76- **Chasing theoretical paths.** Filter to paths from principals you actually control — those are the real risk.77- **Forgetting collection is loud.** SharpHound is detectable; on a defensive audit that's fine, on a red-team plan for it.78- **Fixing a node, missing the edge.** Removing a user from a group doesn't help if a `WriteDACL` lets them re-add themselves. Fix the permission, not just the symptom.7980### References8182- BloodHound documentation (SpecterOps)83- MITRE ATT&CK — T1069 (Permission Groups Discovery), T1482 (Domain Trust Discovery)84- Microsoft — Securing privileged access / tiered administration model8586## Inputs87- Relevant source code, logs, network traces, or system specifications.8889## Outputs90- Analysis findings, security audit report, or generated code artifacts.