> 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/active-directory/introduccion-a-active-directory/protocolos-de-active-directory/autenticacion-ntlm.md).

# Autenticación NTLM

Además de **Kerberos** y **LDAP**, Active Directory (AD) admite otros métodos de autenticación, incluyendo **LM**, **NTLM**, **NTLMv1** y **NTLMv2**. Es esencial entender la diferencia entre los **tipos de hash** y los **protocolos** que los utilizan.

***

## Comparación de Protocolos

| Protocolo/Hash | Técnica Criptográfica      | Autenticación Mutua | Tipo de Mensaje           | Tercero de Confianza   |
| -------------- | -------------------------- | ------------------- | ------------------------- | ---------------------- |
| **NTLM**       | Clave simétrica            | ❌                   | Número aleatorio          | Controlador de Dominio |
| **NTLMv1**     | Clave simétrica            | ❌                   | MD4, aleatorio            | Controlador de Dominio |
| **NTLMv2**     | Clave simétrica            | ❌                   | MD4, aleatorio            | Controlador de Dominio |
| **Kerberos**   | Clave simétrica/asimétrica | ✅                   | Ticket cifrado (DES, MD5) | DC/KDC                 |

***

## Hashes LM (LAN Manager)

* Introducido en **1987**, es el método de hash más antiguo de Windows.
* **Inseguro** y deshabilitado por defecto desde **Windows Vista / Server 2008**.
* Almacenado en: `SAM` (local) y `NTDS.DIT` (controlador de dominio).
* Límite de **14 caracteres**, **no distingue mayúsculas/minúsculas**.
* Divide la contraseña en **dos bloques de 7 caracteres**, cada uno cifrado con DES.
* Hash resultante de 16 bytes, ejemplo:

  ```
  299bd128c1101fd6
  ```

**Vulnerabilidades:**

* Espacio de claves reducido.
* Facilita ataques por fuerza bruta y cracking con herramientas como **Hashcat**.

***

## NT Hashes (NTLM)

* Utilizado en sistemas modernos.
* Hash MD4 de la contraseña en UTF-16-LE:

  ```
  MD4(UTF-16LE(password))
  ```
* Utiliza **tres mensajes** en el protocolo de autenticación:
  1. `NEGOTIATE_MESSAGE`
  2. `CHALLENGE_MESSAGE`
  3. `AUTHENTICATE_MESSAGE`
* Hash típico:

  ```
  b4b9b02e6f09a9bd760f388b67351e2b
  ```

#### Ejemplo de hash NTLM:

```
Rachel:500:aad3c435b514a4eeaad3b935b51304fe:e46b9e548fa0d122de7f59fb6d48eaa2:::
```

* `Rachel`: usuario
* `500`: RID (administrador)
* `aad3...`: hash LM (vacío si está deshabilitado)
* `e46b...`: hash NT (usado para cracking o pass-the-hash)

#### 🛠️ Ejemplo de Pass-the-Hash:

```bash
crackmapexec smb 10.129.41.19 -u rachel -H e46b9e548fa0d122de7f59fb6d48eaa2
```

***

## NTLMv1 (Net-NTLMv1)

* Introduce desafío/respuesta entre cliente y servidor.
* Muy vulnerable a ataques offline y relay.
* NO se puede usar para **pass-the-hash**.
* Utiliza 3 claves DES derivadas del hash:

```plaintext
C = server challenge (8 bytes)
K1 | K2 | K3 = NT-hash padded
response = DES(K1, C) | DES(K2, C) | DES(K3, C)
```

#### Ejemplo de hash NTLMv1:

```
u4-netntlm::kNS:338d08f8e26de933...:9526fb8c23a90751...:cb8086049ec4736c
```

***

## NTLMv2 (Net-NTLMv2)

* Introducido en **Windows NT 4.0 SP4**.
* Requiere desafío de servidor y cliente, incluye:
  * Marca de tiempo
  * Desafío aleatorio
  * Nombre de dominio
* Utiliza **HMAC-MD5** con múltiples etapas.

```plaintext
v2-Hash = HMAC-MD5(NT-Hash, username, domain)
LMv2 = HMAC-MD5(v2-Hash, server challenge, client challenge)
NTv2 = HMAC-MD5(v2-Hash, server challenge, blob con timestamp, etc.)
```

#### Ejemplo de hash NTLMv2:

```
admin::N46iSNekpT:08ca45b7d7ea58ee:88dcbe4446168966a153a0064958dac6:...
```

***

## MSCache2 (Credenciales de Dominio Cacheadas)

* También conocido como **DCC2**.
* Permite autenticación **offline** si el host no puede contactar con el DC.
* Se almacena en:

  ```
  HKEY_LOCAL_MACHINE\SECURITY\Cache
  ```
* Almacena los últimos 10 hashes de usuarios del dominio que iniciaron sesión.

#### Formato del hash:

```
$DCC2$10240#bjones#e4e938d12fe5974dc42a90120bd9c90f
```

#### Características:

* **Muy lento de crackear** (incluso con GPU).
* **No se puede usar para pass-the-hash**.
* Solo útil si la contraseña es muy débil y el atacante tiene acceso local como administrador.
