For the complete documentation index, see llms.txt. This page is also available as Markdown.

ACL Abuse

Overview

  • Access Control Lists (ACLs) define who has access to which asset/resource and the level of access

  • ACEs (Access Control Entries) map back to a user, group, or process and define the rights granted

  • Two types: DACL (Discretionary - who can access) and SACL (System - audit logging)

  • ACL misconfigurations are a serious threat and cannot be detected by vulnerability scanners

Abusable ACE Permissions

Permission
Abuse Method

ForceChangePassword

Set-DomainUserPassword

Add Members

Add-DomainGroupMember

GenericAll

Set-DomainUserPassword or Add-DomainGroupMember

GenericWrite

Set-DomainObject (set SPN for targeted Kerberoasting)

WriteOwner

Set-DomainObjectOwner

WriteDACL

Add-DomainObjectACL

AllExtendedRights

Set-DomainUserPassword or Add-DomainGroupMember

AddSelf

Add-DomainGroupMember

Enumerating ACLs with PowerView

Find all objects a user has rights over

Using built-in tools (no PowerView)

Reverse search GUID to human-readable

Enumerating ACLs with BloodHound

  • Set user as starting node > Node Info > Outbound Control Rights

  • First Degree Object Control shows direct rights

  • Transitive Object Control shows full attack paths

  • Right-click edges for help on abuse methods

  • Use pre-built queries: "Find Principals with DCSync Rights", "Shortest Paths to Domain Admins"

Attack Chain Example

1. ForceChangePassword

From Linux, pth-net rpc password can reset a target user's password when your controlled principal has ForceChangePassword, GenericAll, or equivalent rights:

Verify the new credential:

2. GenericWrite - Add user to group

3. GenericAll - Targeted Kerberoasting (set fake SPN)

Cleanup

Detection

  • Enable Advanced Security Audit Policy

  • Monitor Event ID 5136: A directory service object was modified

  • Monitor group membership changes

  • Regular AD audits with BloodHound

Last updated