-
-
Notifications
You must be signed in to change notification settings - Fork 4
ACL Parsing
Macmod edited this page Feb 14, 2026
·
1 revision
ACEs are included in the Aces array of all AD objects. They are built by ParseBinaryACL(), which parses the nTSecurityDescriptor binary attribute using the TheManticoreProject/winacl library.
ACE attributes:
-
PrincipalSID: SID from the ACE trustee -
PrincipalType: Resolved object type (User, Group, Computer, etc.) via ResolveACETypes() using SIDCache -
RightName: Determined from ACE mask and object GUID:-
Standard Rights:
GenericAll,WriteDacl,WriteOwner,GenericWrite,ReadControl -
Extended rights:
GetChanges,GetChangesAll,GetChangesInFilteredSet,UserForceChangePassword,AllowedToAct,AddKeyPrincipal,Enroll -
Attribute-specific:
WriteMember,WriteGPLink,WriteSPN,WritePKINameFlag,WritePKIEnrollmentFlag - Mapped via GUID comparison with ACEGuids map
-
Standard Rights:
-
IsInherited: Extracted from ACE flags -
InheritanceHash: Computed via CalculateInheritanceHash() using SHA1 of (SID + Rights + ACE Type + Inherited Object Type) -
IsPermissionForOwnerRightsSid: Check if SID is the OWNER_RIGHTS SID (S-1-3-4) and ACE is not inherited -
IsInheritedPermissionForOwnerRightsSid: Check if SID is OWNER_RIGHTS and ACE is inherited
Special ACE handling:
-
GMSA Readers: Parsed from
msDS-GroupMSAMembershipbinary attribute via ParseGMSAReaders() for user objects -
RBCD: Parsed from
msDS-AllowedToActOnBehalfOfOtherIdentityfor computer objects, filtered for GenericAll to populateAllowedToAct - AdminSDHolder Protection: Security descriptor hash compared with domain's AdminSDHolder object hash to determine if object is protected