Access Control Lists (ACLs) in Active Directory are like the invisible permission web connecting every object. While group memberships are obvious, ACL-based permissions are often overlooked - creating hidden privilege escalation paths that BloodHound excels at finding.Related
Think of ACLs as the "who can do what to whom" rules. Maybe Help Desk can reset passwords. Maybe a service account can add members to groups. These permissions accumulate over years of IT changes and often nobody remembers why they exist.
ACL Abuse is King
In modern AD pentests, ACL abuse often provides the escalation path. Direct admin group membership is watched; ACLs enabling the same access are not.
Understanding AD ACLs
Dangerous Rights
Enumerating ACLs
PowerView
AD Module
BloodHound (Best Approach)
ACL Abuse Techniques
GenericAll on User
GenericAll on Group
GenericAll on Computer
WriteDACL
WriteOwner
ForceChangePassword
AddMember (Self)
Chain Attacks
ACL abuse often chains: You have WriteDACL on User A. User A has GenericAll on Group B. Group B has admin rights on Server C. Three hops to compromise.
DCSync Rights
Exchange = DCSync
The Exchange Windows Permissions group has WriteDACL on the domain object by default. Members can grant themselves DCSync rights! This is a common escalation path.
Common ACL Attack Paths
Detection & Defense
AdminSDHolder
Every 60 minutes, SDProp resets ACLs on protected objects (AdminCount=1) to match AdminSDHolder. Manually added ACEs get removed. This protects Domain Admins but attackers can modify AdminSDHolder itself.
ACL Abuse Methodology
ACL Attack Flow
1
EnumerateFind ACLs on high-value objects
2
Map PathsUse BloodHound to visualize chains
3
Identify AbuseDetermine which rights enable what attacks
4
ExecuteAbuse the ACL (password reset, group add, etc.)
5
EscalateUse new access to continue escalation
6
DocumentRecord the attack path for reporting
Knowledge Check
Challenges
Key Takeaways
- ACLs define "who can do what to whom" in AD
- GenericAll = full control, most dangerous right
- WriteDACL/WriteOwner can escalate to GenericAll
- ForceChangePassword resets without knowing current
- DCSync rights allow extracting all domain hashes
- BloodHound visualizes ACL attack paths automatically