Validate effective directory-object control
Needs: Effective trustee membership, target object/type, inheritance/deny behavior and the exact permitted operation
PowerShell commands
# Baseline
Get-DomainObjectAcl -Identity TARGET_OBJECT -ResolveGUIDs |
Where-Object { $_.ActiveDirectoryRights -match 'GenericAll|GenericWrite|WriteDacl|WriteOwner|ExtendedRight|WriteProperty|Self' } |
Select-Object ObjectDN,SecurityIdentifier,ActiveDirectoryRights,ObjectAceType,AceType,IsInherited,InheritanceType
Compatible copy that actually emits IdentityReference
Use this projection only when inspecting the returned object confirms that the loaded implementation provides
IdentityReference.
# Compatible copy that actually emits IdentityReference
Get-DomainObjectAcl -Identity TARGET_OBJECT -ResolveGUIDs |
Where-Object { $_.ActiveDirectoryRights -match 'GenericAll|GenericWrite|WriteDacl|WriteOwner|ExtendedRight|WriteProperty|Self' } |
Select-Object ObjectDN,IdentityReference,ActiveDirectoryRights,ObjectAceType,AceType,IsInherited,InheritanceType
Enumerate a target's ACL with resolved GUIDs
If the value is an unresolved SID, resolve it before applying the rule to a controlled principal.
# Enumerate a target's ACL with resolved GUIDs
Import-Module .\PowerView.ps1
Get-DomainObjectAcl -Identity TARGET_OBJECT -ResolveGUIDs |
Where-Object { $_.ActiveDirectoryRights -match 'GenericAll|GenericWrite|WriteDacl|WriteOwner|ExtendedRight' }
# Resolve trustees
ConvertFrom-SID 'S-1-5-21-...'
Get-DomainObject -Identity 'S-1-5-21-...' | Select-Object samaccountname,objectclass
Common effects require different rights:
Verify → Verify principal, object SID/type and effective permitted modification; preserve original ACL/state before changes.
If it fails → A stale graph, inherited scope mismatch or deny/protected-object behavior can invalidate the edge. More detail ↓
Explanation & examples
Validate effective directory-object control
- USE WHEN
- An ACL/graph edge names GenericAll, GenericWrite, WriteDacl, WriteOwner or an extended/property right
- STARTING ACCESS
- A known domain identity or a directory endpoint that permits the selected anonymous query
- RESULT
- A verified object-control primitive suitable for a named identity transition
Recognize the clue
Select a useful user/group/computer/domain object from mapping and resolve its ACE trustees, rights and object-specific scopes.
Get-DomainObjectAcl -Identity TARGET_OBJECT -ResolveGUIDs
SecurityIdentifier: CONTROLLED_GROUP_SID
ActiveDirectoryRights: WriteDacl
Target: TARGET_OBJECTMeans: A DACL-control ACE for a possibly controlled trustee opens an intermediate-right candidate.
Confirm: Resolve the ACE's trustee and group nesting, target object class, GUID and inheritance/deny scope. For password reset, group writes or DACL changes open that exact operation's procedure and check its additional conditions before modifying anything.
- After validation
- The trustee and exact right apply to the target: select the corresponding object transition.
- Ruled out in this context
- The ACE applies to another object type/trustee or is overridden: reject that edge.
- Still inconclusive
- A graph label or unresolved SID does not establish current effective control.
Troubleshooting: A stale graph, inherited scope mismatch or deny/protected-object behavior can invalidate the edge.
PowerView normally exposes the trustee as SecurityIdentifier. Resolve that SID and trace controlled direct/nested membership. -ResolveGUIDs resolves operation GUIDs; it does not make every trustee a friendly account name. A blank projected column can mean the selected property is absent, not that an ACE has no trustee.
Compatible copy that actually emits IdentityReference
Use this projection only when inspecting the returned object confirms that the loaded implementation provides IdentityReference.
If the value is an unresolved SID, resolve it before applying the rule to a controlled principal.
| Candidate right | Possible transition to validate later | Missing proof now |
|---|---|---|
GenericAll | Broad object modification | Controlled trustee, target object class, applicable deny/inheritance and useful change |
GenericWrite / WriteProperty | Change one or more writable attributes | Exact attribute/object GUID and a transition that consumes it |
WriteOwner | Become owner | Ability to change the DACL afterward and use the resulting right |
WriteDacl | Add an ACE | Effective write-DACL right, planned narrow ACE and restoration |
AllExtendedRights / ForceChangePassword | Extended operation such as reset where applicable | Object class, exact extended right and downstream usefulness |
Self / validated write | Add self/member or another validated attribute where schema permits | Correct validated-write GUID and target type |
| GPO/OU control | Affect linked computers/users | Writable GPO component, effective link/scope, refresh/trigger and target placement |
An ACE is one rule. Effective access depends on trustee/group nesting, allow/deny semantics, inheritance, object-specific GUIDs and security descriptor scope. Do not perform the modification in this mapping block.
Model: controlled principal → effective ACE → target object/type → permitted modification → authentication/authorization effect → cleanup.
Enumerate a target's ACL with resolved GUIDs:
Resolve trustees:
Common effects require different rights:
| Right/object | Possible controlled effect | Validation needed |
|---|---|---|
GenericAll/password-reset extended right on user | Reset the user's password | Effective trustee, account state, protected-object behavior |
GenericAll or effective member-attribute write on group | Add a controlled principal to the group | Target group, nesting and a refreshed logon token |
GenericWrite/SPN-property write on user | Add a temporary SPN, request a TGS and remove it | Exact property right, duplicate-SPN checks and cleanup |
WriteDacl | Grant a narrower right | Ability to write DACL and restore original ACL |
WriteOwner | Change owner, then possibly DACL | Owner semantics and cleanup |
| Computer-object write | RBCD-related attribute change | Machine account/control, SPN/Kerberos and target service |
Why it works
Object rights are operation-specific. GenericWrite on a user is not a universal password-reset right; inherited ACEs and protected objects can change applicability.
Worked example · hypothetical
Observation: a graph suggests a password-reset edge. Test: resolve the ACE and controlled user's effective membership against the actual target. Illustrative output: the required extended right applies. Interpretation: assess the reset's impact and select the intended transition.
New identity, privilege, host or route? Re-enumerate → All topic tasks →