Over Pass-The-Hash - Pass-The-Key
Lo que se va a realizar en esta tecnica es que cuando se realiza una autenticacion de kerberos este consulta en la clave privada cifrada con un hash del usuario que esta escrita en memoria ya para poder darle el Ticket de servicio, pues esta tecnica consiste en sobreescribir esta parte de la memoria por el hash que nosotros queramos poner ahi, para posteriormente poder obtener ese ticket y podernos hacer pasar por dicho usuario del hash que hayamos insertado en dicha memoria.
Vamos a utilizar mimikatz en este caso, como hemos visto antes podremos obtener el hash del usuario en las logon sessions del proceso lsass volcandolo con mimikatz.
Y despues realizabamos la tecnica de pth con el mimikatz para obtener una shell como el usuario administrador en cmd, en la informacion que nos daba, que era algo asi:
user : Administrator
domain : corp.local
program : cmd.exe
impers. : no
NTLM : a87f3a337d73085c45f9416be5787d86
| PID 3448
| TID 3228
| LSA Process is now R/W
| LUID 0 ; 7674536 (00000000:00751aa8)
\_ msv1_0 - data copy @ 00000224E7C04E80 : OK !
\_ kerberos - data copy @ 00000224E7D777C8
\_ 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 @ 00000224E7679D38 (32) -> nullVemos en esta parte de aqui:
Que estaba sobreescribiendo en la direccion de memoria 00000224E7C04E80 del proceso lsass el hash que nosotros le habiamos pasado del administrador mediante el paquete de autenticacion msv1_0 que se corresponde con el paquete de autenticacion NTLM, pero si seguimos viendo, seguidamente veremos esto:
Vemos que tambien nos esta sobreescribiendo la direccion de memoria 00000224E7D777C8 donde esta el hash que se almacena de la autenticacion de kerberos por nuestro hash que hemos metido con mimikatz pudiendo realizar asi tambien acciones respecto al dominio.
Por ejemplo, si nosotros ponemos esto, cuando obtenermos el cmd autenticados como el administrador en los 2 protocolos:
Veremos que si nos deja listar ya que sobreescribimos nuestro hash tambien en el de kerberos que es el que se encarga del dominio en estos casos de autenticacion frente a un dominio y si lo hicieramos con una IP seria mediante la autenticacion NTLM.
Con Rubeus.exe podremos solicitar un TGT como el usuario Administrador con el hash NTLM que obtuvimos anteriormente, para que nos lo proporcione el mismo kerberos.
Abrimos una PowerShell como administrador local:
Info:
Y vemos que hemos obtenido perfectamente el TGT del usuario Administrador.
Todo este proceso se llama Over PTH por que estamos cogiendo el hash NTLM y lo utilizamos primero en el protocolo de autenticacion NTLM que es donde debe utilizarse, y hacemos un over lo volvemos a utilizar en este caso para el protocolo de autenticacion kerberos
Nosotros podremos listar de la misma forma que lo hacemos con los hashes NTLM las claves que estan inyectadas en memoria de kerberos con la herramienta mimikatz:
Ejecutaremos mimikatz:
Nos aparecera el help del comando y nos interesaran estas opciones:
Por lo que haremos lo siguiente:
Info:
Aqui veremos las claves de cada uno de los usuarios que estan inyectadas en memoria pero del protocolo kerberos.
Aqui estamos viendo que nos muestra el mismo hash que cuando volcabamos el NTLM del administrador pero aunque ponga des_cbc_md4 lo estamos viendo en rc4 como antes estabamos forzando la autenticacion con Rubeus a kerberos y el primero de todos que es el mas largo esta cifrado el hash original que vemos abajo con el cifrado AES-256 que es el que utiliza por defecto kerberos ya que es mas seguro, pero los 2 tipos de hashes los soporta kerberos como hemos visto antes.
Si por ejemplo queremos utilizar el hash AES-256 para la herramienta Rubeus.exe lo haremos de la siguiente forma:
Y esto nos volcara la misma informacion que cuando utilizamos el rc4 con el hash NTLM.
Pero esta tecnica que cabamos de utilizar con el hash de kerberos del AES-256 se le llama Pass-The-Key.
Si queremos obtener el TGT del administrador como hemos echo con Rubeus pero en kali lo podremos hacer de la siguiente forma:
Lo guardamos y ejecutamos lo siguiente:
Info:
Vemos que se guardo correctamente, ahora si lo leemos nos apareceran caractares raros, pero es por que nos ha volcado el TGT en un archivo directamente, en vez de por la pantalla.
Last updated