> 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/pruebas-de-penetracion-de-host-y-red/ataques-basados-en-sistema-host/windows/volcado-de-credenciales-de-windows/hashes-de-contrasenas-en-windows.md).

# Hashes de contraseñas en Windows

## 🔐 Windows Password Hashes (Hashes de contraseñas en Windows)

* El sistema operativo Windows almacena las contraseñas de las cuentas de usuario de forma **hasheada** localmente en la base de datos **SAM (Security Accounts Manager)**.
* El **hashing** es el proceso de convertir un dato en otro valor mediante una función o algoritmo hash. El resultado se conoce como **hash** o **valor hash**.
* La **autenticación y verificación** de credenciales de usuario es gestionada por la **LSA (Local Security Authority)**.
* Las versiones de Windows hasta **Windows Server 2003** usan dos tipos de hashes:
  * **LM (LanMan)**
  * **NTLM**
* A partir de **Windows Vista**, Windows **desactiva LM hashing** y utiliza únicamente **NTLM hashing**.

***

## 🗄️ SAM Database (Base de datos SAM)

* **SAM (Security Account Manager)** es un archivo de base de datos encargado de gestionar las cuentas de usuario y sus contraseñas en Windows.
* Todas las contraseñas almacenadas en la base de datos SAM están **hasheadas**.
* **No se puede copiar** el archivo SAM mientras el sistema operativo está en ejecución.
* El **núcleo de Windows (NT Kernel)** mantiene el archivo SAM **bloqueado**, por lo que los atacantes normalmente emplean técnicas en memoria y herramientas que permiten **volcar los hashes** desde el proceso **LSASS**.
* En versiones modernas de Windows, la base de datos SAM está **cifrada con una clave del sistema (syskey)**.

> ⚠️ Se requieren **privilegios elevados o administrativos** para acceder e interactuar con el proceso **LSASS**.

***

## 🧮 LM (LanMan)

* **LM** es el algoritmo de hashing por defecto implementado en versiones antiguas de Windows (anteriores a NT 4.0).
* Se usaba para hashear contraseñas de usuario mediante los siguientes pasos:
  1. La contraseña se divide en **dos bloques de 7 caracteres**.
  2. Todos los caracteres se convierten en **mayúsculas**.
  3. Cada bloque se **hashea por separado** usando el algoritmo **DES**.
* LM hashing se considera **muy débil** porque:
  * No utiliza **salts** (valores aleatorios).
  * Es muy vulnerable a ataques de **fuerza bruta** y **tablas arcoíris (rainbow tables)**.

<figure><img src="/files/sEqBK3LDWCVzCGo0wmCU" alt=""><figcaption></figcaption></figure>

***

## 🔐 NTLM (NT Hash)

* **NTLM** es un conjunto de protocolos de autenticación utilizados en Windows para facilitar la autenticación entre equipos.
* A partir de **Windows Vista**, LM hashing está desactivado por defecto, y se utiliza **NTLM hashing**.
* Cuando se crea una cuenta de usuario, la contraseña se **hashea usando el algoritmo MD4**, y la contraseña original se descarta.
* NTLM mejora respecto a LM en varios aspectos:
  * **No divide** la contraseña en dos bloques.
  * Es **sensible a mayúsculas y minúsculas**.
  * Permite el uso de **símbolos** y **caracteres Unicode**.

<figure><img src="/files/W5f6cn3xUzOOw2swb6RH" alt=""><figcaption></figcaption></figure>
