Skip to content
Live feed Loading threat feed…

Active Directory Hacking Cheat Sheet

Active Directory Hacking Cheat Sheet
Anthony Russell, SquidSec

Written by

Anthony Russell

☣️ Mr. The Plague ☣️

Founder & Lead Penetration Tester OSCP+ | GWAPT

Anthony Russell is a Senior Cyber Security Engineer specializing in Application Security, with 13+ years of professional experience blending deep full-stack software engineering expertise and offensive security skills.

Full bio on the team page

Active Directory Hacking Cheat Sheet

Active Directory is still the main target in most enterprise networks. SharpHound pulls the data into JSON files, but the real value comes from turning that raw output into clear attack paths and spotting the misconfigurations that actually matter. BloodBash is a lightweight Python tool that reads SharpHound and AzureHound JSON files, builds an in-memory graph, and surfaces the important findings without needing Neo4j or any web interface. It runs completely offline and gives you terminal output with context on why each issue is useful to an attacker plus suggestions on how to abuse it.

Quick Start

Grab the standalone binary so you do not need Python or a venv.

On Linux:

curl -sL -o bloodbash https://github.com/DotNetRussell/BloodBash/releases/latest/download/bloodbash-linux-x64
chmod +x bloodbash
./bloodbash /path/to/json --all

On Windows use the .exe from the same releases page and run it the same way.

If you prefer source:

pipx install git+https://github.com/DotNetRussell/BloodBash

Or clone it and install the small set of requirements. The repo includes sample SharpHound and AzureHound data you can test against right away.

Basic run against a collection folder or zip:

python3 BloodBash.py /path/to/sharpout --all --verbose

Add --fast when you want quicker results limited to the highest value targets. Use --domain to focus on one domain or tenant when the collection contains more than one.

Kerberos Attacks

Kerberoastable accounts have a Service Principal Name. Any authenticated user can request a ticket for that service and crack it offline with hashcat or similar tools. Service accounts often have weak or static passwords that never rotate, so one cracked ticket can give long-term access for lateral movement.

python3 BloodBash.py sharpout --kerberoastable

AS-REP roastable accounts have the DoNotRequirePreauth flag set. You can request an AS-REP without any user interaction and crack it offline. These show up frequently on legacy service accounts.

python3 BloodBash.py sharpout --as-rep-roastable

Delegation Abuses

Unconstrained delegation appears on computers or users with the TrustedForDelegation flag. When a user authenticates to that system their TGT gets cached. Compromise the machine and coerce authentication to steal tickets for high-value accounts including Domain Admins.

python3 BloodBash.py sharpout --unconstrained-delegation

Constrained delegation limits the target services via the msDS-AllowedToDelegateTo attribute. If you control the delegating account you can impersonate users to those specific services.

python3 BloodBash.py sharpout --constrained-delegation

Resource-based constrained delegation (RBCD) uses the msDS-AllowedToActOnBehalfOfOtherIdentity attribute on the target computer. You only need write access to that attribute on the target. This lets you impersonate any user to the machine and is one of the more common modern escalation paths from a regular user foothold.

python3 BloodBash.py sharpout --rbcd

AD Certificate Services

ADCS misconfigurations in templates and permissions (ESC1 through ESC8) let low-privileged users request certificates that specify arbitrary identities or gain enrollment agent rights. A single vulnerable template can produce a certificate equivalent to a golden ticket.

python3 BloodBash.py sharpout --adcs

Replication and Credential Dumping

DCSync rights come from the Replicating Directory Changes and Replicating Directory Changes All permissions. Any principal with those rights can pull password hashes for the entire domain, including krbtgt, without touching a domain controller directly.

python3 BloodBash.py sharpout --dcsync

Dangerous Permissions and ACLs

GenericAll, WriteDacl, WriteOwner, ResetPassword, and similar rights on Domain Admins groups, high-value users, computers, or OUs let an attacker take control quickly. BloodBash highlights these especially when they apply to high-value targets.

python3 BloodBash.py sharpout --dangerous-permissions --high-value

Group Policy Abuse

Weak permissions on GPOs combined with the ability to edit scheduled tasks, startup scripts, or legacy cPassword fields in the XML let you push code that runs as SYSTEM across many systems. Point the tool at the GPO backup folder to parse the actual content.

python3 BloodBash.py sharpout --gpo-abuse --gpo-content-dir /path/to/gpo/backups

Additional Credential and Persistence Issues

Shadow credentials use the KeyCredentialLink attribute. An attacker with write access can register a public key and authenticate as that principal without knowing the password.

python3 BloodBash.py sharpout --shadow-credentials

SID history abuse adds SIDs from previous domains or trusted domains to an account. Adding a Domain Admins SID from a trusted domain instantly grants those rights.

python3 BloodBash.py sharpout --sid-history

Accounts with passwords stored in the description field, PasswordNeverExpires, or PasswordNotRequired are low-hanging fruit. These often belong to service accounts that never get cleaned up.

python3 BloodBash.py sharpout --password-descriptions --password-never-expires --password-not-required

Local Admin, Sessions, and LAPS

BloodBash reports on LAPS deployment status and maps LocalAdmin, RDP, and DCOM rights along with current sessions. This tells you exactly which machines a compromised account can reach and who is logged in where for targeted follow-up.

python3 BloodBash.py sharpout --laps --sessions

Shortest Path and Compromise Analysis

The tool calculates shortest attack paths to high-value targets such as Domain Admins, Enterprise Admins, and krbtgt. Mark principals you already control with --owned or use --from-user to generate a full compromise dossier for a specific foothold account. The dossier shows nested group memberships, AdminTo and RDP counts, ACL paths, and auto-generated paths to high-value targets. Export the dossier to text, CSV, or JSON for reporting.

python3 BloodBash.py sharpout --from-user alice --from-user-export

Additional flags like --busiest-paths rank which principals sit on the most paths to high-value targets, and --path-break suggests which relationships to remove to disrupt the largest number of paths.

Azure and Entra ID Coverage

BloodBash also ingests AzureHound JSON. Use the Azure-specific flags to surface privileged role assignments, application and service principal credential paths you can abuse, explicit MFA bypass configurations, guest user issues, and service principal abuse rights. These are especially relevant in hybrid environments.

python3 BloodBash.py azureout --azure-privileged-roles --azure-app-secrets --azure-guest-access

Output, Exports, and Reporting

Add export flags to save results instead of just printing them.

python3 BloodBash.py sharpout --all --export=html --export=md

Other options include JSON, CSV, YAML, BloodHound-style graph JSON, and Graphviz DOT. Use --report-pack to generate a multi-page HTML report suite with per-section CSVs, or --export-zip to bundle everything into a single deliverable. Profiles let you save common flag combinations in a YAML file for repeatable runs.

A single command that covers most of the high-impact checks:

python3 BloodBash.py sharpout --adcs --dcsync --gpo-abuse --rbcd --dangerous-permissions --kerberoastable --as-rep-roastable --shortest-paths --verbose

Final Notes

BloodBash is a fast offline analyzer built for practical pentester and pentest work. It uses heuristics and the actual collector data, so validate critical paths in BloodHound CE when you need full visual confirmation or want to cross-check edge cases. The project includes unit tests, a Metasploit auxiliary module that wraps the CLI, and ongoing updates for newer SharpHound CE output formats.

Check the GitHub repository for the latest flags, sample data, and the full help output. Run SharpHound, point BloodBash at the JSON, and you will have a clear picture of the real attack surface without standing up extra infrastructure.