17. ACL Enumeration

Import PowerView module

Import-Module .\PowerView.ps1

Convert usernames and groups to SIDs

$userSIDs = @{
    "wley" = Convert-NameToSid wley
    "damundsen" = Convert-NameToSid damundsen
    "Information Technology" = Convert-NameToSid "Information Technology"
    "adunn" = Convert-NameToSid adunn
}

Find interesting domain ACLs (broad enumeration)

Find-InterestingDomainAcl

Get domain object ACLs for specific SIDs (targeted enumeration)

foreach ($key in $userSIDs.Keys) {
    Get-DomainObjectACL -ResolveGUIDs -Identity * | Where-Object {$_.SecurityIdentifier -eq $userSIDs[$key]} -Verbose
}

Reverse search GUID to retrieve corresponding name

$guid = "00299570-246d-11d0-a768-00aa006e0529"
Get-ADObject -SearchBase "CN=Extended-Rights,$((Get-ADRootDSE).ConfigurationNamingContext)" \
    -Filter {ObjectClass -like 'ControlAccessRight'} -Properties * | \
    Where-Object {$_.rightsGuid -eq $guid} | \
    Select-Object Name, DisplayName, DistinguishedName, rightsGuid | Format-List

Create a list of domain users

Get-ADUser -Filter * | Select-Object -ExpandProperty SamAccountName | Out-File -Encoding utf8 ad_users.txt

Manually enumerate ACLs using Get-Acl (foreach loop)

$users = Get-Content "C:\Users\htb-student\Desktop\ad_users.txt"
foreach ($user in $users) {
    Get-Acl "AD:\$(Get-ADUser $user)" | \
    Select-Object Path -ExpandProperty Access | \
    Where-Object {$_.IdentityReference -match 'INLANEFREIGHT\\wley'}
}

Get domain group information

Get-DomainGroup -Identity "Help Desk Level 1" | Select-Object -ExpandProperty MemberOf

Last updated