bloodyAD is an LDAP-first AD privilege-escalation framework: everything is a get (read), set/add (write), or remove against directory objects. Where BloodHoundmaps rights, bloodyAD uses them.
Authentication
Flag
Description
-u <user> -p '<pass>'
Plain credentials. -p ':<nt_hash>' for pass-the-hash.
-k ccache=<file>.ccache
Kerberos auth from a ccache (pair with export KRB5CCNAME=<file>.ccache) — the way in when you have a TGT but no password/hash.
-d <domain> --host <dc_fqdn>
Domain and the DC to talk to; use the FQDN, not the IP, for anything Kerberos.
--dc-ip <ip>
DC address when the hostname can’t be resolved by DNS.
Enumeration
Command
Description
bloodyAD ... get writable
The headline command — every object the current identity can write to, and which right on each.
bloodyAD ... get writable --right WRITE
Narrow the same listing to plain write rights (drops the noisy self-referential entries).
bloodyAD ... get object '<dn_or_sam>' --attr '<attr>'
Read specific attributes of one object.
bloodyAD ... get search --base '<dn>' --filter '<ldap_filter>' --attr '<attrs>'
Raw LDAP search — how you list CN=Deleted Objects or any container BloodHound skips.
bloodyAD ... get children '<dn>'
List an object’s child objects (handy for walking OUs).
Run get writable the moment any new credential is obtained. It is the fastest triage step in an AD box and it catches paths the graph tools miss entirely — on HTB Machine - Checkpointbloodhound-python collection failed outright, and get writable was what revealed write access to the AD Recycle Bin.
Everything works over Kerberos: grab a TGT (e.g. Rubeus.exe tgtdeleg from a shell), convert with impacket-ticketConverter, then -k ccache=<file>.ccache. That covers the common case of holding a session but no password or hash. Sync the clock first (sudo ntpdate -b <domain>) or every call dies with KRB_AP_ERR_SKEW.
DNs of deleted objects contain a literal \0ADEL:<guid> marker — keep it verbatim inside single quotes.
Write operations are real directory changes with no automatic rollback (unlike impacket-dacledit, which drops a .bak) — note what you changed so it can be reverted.