Skip to content
leg3ndProjects & tools
01Home02Projects03Tools04Notes
GMT+8
O/ OSCP exploitation reference
Workspace controls Memory only · 0 steps
Visualize path ↗
Command values 0 filled

Temporary connection values clear on reload. Passwords, hashes and tickets remain placeholders. Check address-family syntax in the selected command.

Reference index ↗ Search all procedures & variants ↗
01Discovery02Enumeration03Initial access04Usable access05Local privilege06Active Directory07Internal access08Evidence & reporting

QUICK REFERENCE

Discovery›Services›Web mapping›Web exploitation›Credentials›Public exploits›Sessions & transfers›Linux escalation›Windows escalation›AD enumeration›AD identity attacks›Lateral movement›Pivoting & tunnels›Execution troubleshooting›Integration & evidence›
174 methods · 15 topicsFull reference on GitHub ↗Commands · scripts · next steps
Tools/OSCP/Active Directory/AD enumeration
← All ad enumeration tasks

Validate effective directory-object control

CommandsIf → thenExplanation & examples

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 ↓

If → then

  • A controlled trustee has the effective password-reset right on a useful account → Reset a target account password through a validated directory right

    Needs: Exact object/right and account state; the disruptive password change is justified within the assigned lab objective

  • A group member-attribute write or equivalent effective right → Add a controlled identity to a group through effective membership rights

    Needs: Exact target group, controlled principal, useful resulting right and a fresh token/logon context

  • Effective WriteOwner or WriteDacl on a useful directory object → Convert ownership or DACL control into a narrower useful right

    Needs: Correct object/ACE semantics, permission to perform the required intermediate change and a preserved original ACL/owner

  • A principal has the relevant effective replication rights at the domain naming context → Use validated directory replication rights for bounded credential proof

    Needs: Required replication extended rights, DC RPC connectivity and correct domain identity; access to a member server is insufficient

No useful finding → another task in this topic. Failed check → resolve the failure before ruling out the path.

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
SYNTHETIC EXAMPLE OUTPUT
SecurityIdentifier: CONTROLLED_GROUP_SID
ActiveDirectoryRights: WriteDacl
Target: TARGET_OBJECT

Means: 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 rightPossible transition to validate laterMissing proof now
GenericAllBroad object modificationControlled trustee, target object class, applicable deny/inheritance and useful change
GenericWrite / WritePropertyChange one or more writable attributesExact attribute/object GUID and a transition that consumes it
WriteOwnerBecome ownerAbility to change the DACL afterward and use the resulting right
WriteDaclAdd an ACEEffective write-DACL right, planned narrow ACE and restoration
AllExtendedRights / ForceChangePasswordExtended operation such as reset where applicableObject class, exact extended right and downstream usefulness
Self / validated writeAdd self/member or another validated attribute where schema permitsCorrect validated-write GUID and target type
GPO/OU controlAffect linked computers/usersWritable 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/objectPossible controlled effectValidation needed
GenericAll/password-reset extended right on userReset the user's passwordEffective trustee, account state, protected-object behavior
GenericAll or effective member-attribute write on groupAdd a controlled principal to the groupTarget group, nesting and a refreshed logon token
GenericWrite/SPN-property write on userAdd a temporary SPN, request a TGS and remove itExact property right, duplicate-SPN checks and cleanup
WriteDaclGrant a narrower rightAbility to write DACL and restore original ACL
WriteOwnerChange owner, then possibly DACLOwner semantics and cleanup
Computer-object writeRBCD-related attribute changeMachine 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 →

Study guide ↗Full procedure ↗Cheatsheet ↗
HomeProjectsToolsNotes
Interactive toolsOSCP notes ↗Extended OSCP workspace ↗Attack-path visualizer ↗

© 2026 Armaan. Built with curiosity.

GitHub ↗GMT+8