DACL

Active Directory DACL attacks: the complete map of abusable access-control entries (GenericAll, GenericWrite, WriteDacl, WriteOwner, WriteSPN, AddKeyCredentialLink, ForceChangePassword, AddMember, replication and managed-password rights) and the Linux and Windows tooling that turns each into control of a privileged principal.

3 ನಿಮಿಷದ ಓದುಅಕ್ಟೋ 7,2026 ರಂದು ನವೀಕರಿಸಲಾಗಿದೆflorianamette1 ಕೊಡುಗೆದಾರ
ನಿಮ್ಮ ಸಹಾಯಕವನ್ನು ಕೇಳಿ (MCP)GitHub ನಲ್ಲಿ ಸಂಪಾದಿಸಿ

Every Active Directory object carries a discretionary access control list (DACL): a list of access-control entries (ACEs) saying which principals may read or modify it. Administrators delegate these rights liberally and almost never audit them, so AD is full of ACEs that let an ordinary principal modify a privileged one. DACL work is turning a write over an object into control of it, and BloodHound exists largely to find these edges and chain them (A can write B, B is admin of C) into a path to Domain Admin.

The complete edge map#

Each abusable right, the attribute or control-access right behind it, and where the technique is documented:

Right (BloodHound edge)Backed byTurns into
GenericAllfull controlanything below
GenericWrite / WritePropertyproperty writesSPN, key credential, delegation, membership
WriteDaclWRITE_DACgrant yourself any right
WriteOwner / OwnsWRITE_OWNERtake ownership, then rewrite the DACL
ForceChangePasswordUser-Force-Change-Passwordreset the password
AddMember / AddSelfwrite memberjoin a privileged group
WriteSPNwrite servicePrincipalNametargeted Kerberoasting
AddKeyCredentialLinkwrite msDS-KeyCredentialLinkshadow credentials
AddAllowedToAct / WriteAccountRestrictionswrite msDS-AllowedToActOnBehalfOfOtherIdentityresource-based delegation
DCSyncDS-Replication-Get-Changes + -All on the domainDCSync
ReadGMSAPasswordread msDS-ManagedPasswordrecover the gMSA password
ReadLAPSPasswordread ms-Mcs-AdmPwd / msLAPS-*recover the LAPS password
WriteGPLinkwrite gPLink on an OUlink a GPO to the OU

The right only matters for what it lets you do, so the table is the fast path: find the edge in BloodHound, jump to the technique.

Choosing the quietest conversion#

Several edges reach the same goal with very different footprints, which is the practical decision once you hold a write:

  • Shadow credentials (where PKINIT is available) and targeted Kerberoasting are non-destructive: they do not change the victim's password or lock anyone out, so prefer them over a password reset when the account is in use.
  • A password reset is loud and disruptive (the legitimate user loses access), so keep it for computer or stale accounts, or when nothing quieter is available.
  • RBCD and adding replication rights leave a durable configuration change; adding yourself to a group is trivially visible in membership. Weigh persistence value against detectability.

Pages#

Once an edge lands you in a built-in privileged group, membership itself is the escalation:

Tools#

  • BloodHound: transitive ACL path analysis and edge identification.
  • Impacket (dacledit.py, owneredit.py): read/write ACEs and change ownership from Linux.
  • bloodyAD: set owner, grant rights, reset passwords, add key credentials and group members from Linux.
  • NetExec (nxc): -M daclread to read ACEs, -M maq for the machine-account quota, and --ntds once a DCSync grant lands, over LDAP/SMB.
  • PowerView (Add-DomainObjectAcl, Set-DomainObjectOwner): on-host ACE and ownership edits.

References#

  • SpecterOps: An ACE Up the Sleeve, and the BloodHound edge reference
  • The Hacker Recipes: DACL abuse