Descifrar Hashes NTLM de un Sistema Windows

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, te adentrarás en el mundo de la seguridad de contraseñas aprendiendo a descifrar hashes NTLM (NT LAN Manager). NTLM es un algoritmo de hash utilizado por los sistemas Microsoft Windows para almacenar contraseñas de usuario. Comprender cómo se pueden descifrar estos hashes es una habilidad fundamental en las pruebas de penetración y la auditoría de seguridad.

Utilizarás Hashcat, una herramienta potente y popular para la recuperación de contraseñas, para realizar un ataque de diccionario contra un hash NTLM de muestra. Al final de este laboratorio, comprenderás el proceso básico de descifrado de contraseñas y apreciarás la importancia de usar contraseñas fuertes y complejas.

Comprender qué son los hashes NTLM

En este paso, aprenderás los conceptos básicos de los hashes NTLM. Este conocimiento fundamental es crucial antes de intentar descifrarlos.

NTLM (NT LAN Manager) es un conjunto de protocolos de seguridad desarrollados por Microsoft. Una de sus funciones clave es gestionar la autenticación. Cuando estableces una contraseña en un sistema Windows, esta no se almacena en texto plano. En su lugar, se convierte en un valor hash utilizando el algoritmo NTLM.

Un hash NTLM es un valor de 128 bits, que generalmente se representa como una cadena hexadecimal de 32 caracteres. Por ejemplo, el hash NTLM para la contraseña "password" es 8846f7eaee8fb117ad06bdd830b7586c.

Dado que el hashing es un proceso unidireccional, no puedes "des-hashear" directamente para obtener la contraseña original. Sin embargo, los atacantes pueden utilizar técnicas como ataques de diccionario o ataques de fuerza bruta para adivinar la contraseña, hashear su suposición y ver si coincide con el hash objetivo. Este es el proceso que exploraremos en este laboratorio.

No hay comandos que ejecutar en este paso. Por favor, procede al siguiente paso para crear un archivo de hash de muestra.

Crear un archivo de hash NTLM de muestra

En este paso, crearás un archivo que contiene un hash NTLM de muestra. En una prueba de penetración del mundo real, primero necesitarías extraer estos hashes de la base de datos del Administrador de Cuentas de Seguridad (SAM) de un sistema Windows. Para este laboratorio educativo, simplemente crearemos un archivo de texto con un hash conocido.

Todo tu trabajo se realizará en el directorio ~/project. Primero, usa el comando echo para crear un archivo llamado ntlm_hash.txt y escribir un hash NTLM de muestra en él. Este hash corresponde a una contraseña común y débil.

echo "8846f7eaee8fb117ad06bdd830b7586c" > ~/project/ntlm_hash.txt

Ahora, verifica que el archivo se creó correctamente mostrando su contenido con el comando cat.

cat ~/project/ntlm_hash.txt

Deberías ver la siguiente salida, que es el hash que acabas de guardar:

8846f7eaee8fb117ad06bdd830b7586c

Con el archivo de hash listo, ahora puedes proceder a prepararte para el proceso de descifrado.

Seleccionar el modo de hash correcto para NTLM

En este paso, aprenderás cómo identificar el modo de hash correcto en Hashcat para los hashes NTLM.

Hashcat es una herramienta versátil que soporta cientos de tipos de hash diferentes, desde hashes de contraseñas de aplicaciones web hasta hashes de sistemas operativos. Para funcionar correctamente, debes indicar a Hashcat exactamente qué tipo de hash estás intentando descifrar. Esto se hace utilizando un número de modo específico.

Puedes encontrar el número de modo para NTLM buscando en el menú de ayuda de Hashcat. Usa el comando grep para filtrar la salida por "NTLM".

hashcat --help | grep NTLM

La salida listará varios tipos de hash relacionados con NTLM. Busca la entrada para NTLM estándar.

...
1000 | NTLM                                             | Operating System
...

Como puedes ver en la salida, el número de modo para NTLM es 1000. Utilizarás este número en el siguiente paso para indicarle a Hashcat cómo interpretar el hash en tu archivo ntlm_hash.txt.

Lanzar un ataque de diccionario contra el hash NTLM

En este paso, usarás Hashcat para lanzar un ataque de diccionario contra el hash NTLM. Un ataque de diccionario es un método para descifrar una contraseña probando una lista de palabras y frases comunes, conocida como "wordlist" o "diccionario".

El script de configuración para este laboratorio ya ha descargado una popular lista de palabras llamada rockyou.txt en tu directorio ~/project. Ahora, construirás el comando de Hashcat para iniciar el ataque.

La estructura del comando es la siguiente:

  • hashcat: El nombre del programa.
  • -m 1000: El modo de hash para NTLM, que identificaste en el paso anterior.
  • ~/project/ntlm_hash.txt: La ruta a tu archivo que contiene el hash objetivo.
  • ~/project/rockyou.txt: La ruta a la lista de palabras.
  • --force: Esta opción le indica a Hashcat que se ejecute incluso si detecta posibles problemas con el entorno, lo cual puede ser útil en laboratorios virtualizados.

Ahora, ejecuta el comando completo en tu terminal:

hashcat -m 1000 ~/project/ntlm_hash.txt ~/project/rockyou.txt --force

Hashcat comenzará. El proceso puede tardar unos momentos mientras carga la lista de palabras y comienza a comparar hashes. Verás una salida similar a la siguiente:

hashcat (vX.X.X) starting...

...

Session..........: hashcat
Status...........: Running
Hash.Type........: NTLM
Hash.Target......: 8846f7eaee8fb117ad06bdd830b7586c
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (~/project/rockyou.txt)
...

Session..........: hashcat
Status...........: Cracked
...

El mensaje "Status...........: Cracked" indica que Hashcat ha encontrado la contraseña con éxito.

Analizar la contraseña NTLM descifrada

En este paso, verás y analizarás la contraseña descifrada que Hashcat descubrió.

Una vez que Hashcat descifra un hash con éxito, guarda el resultado en un archivo llamado "potfile" (como en "pot of gold" - olla de oro). Esto evita que tengas que volver a descifrar el mismo hash en el futuro. La ubicación predeterminada de este archivo es ~/.local/share/hashcat/hashcat.potfile.

La forma más fácil de ver la contraseña descifrada es usar la opción --show de Hashcat. Este comando le indica a Hashcat que muestre cualquier contraseña descifrada para los hashes proporcionados en tu archivo de entrada.

Ejecuta el siguiente comando:

hashcat -m 1000 ~/project/ntlm_hash.txt --show

Hashcat verificará su potfile y mostrará el resultado para tu hash:

8846f7eaee8fb117ad06bdd830b7586c:password

El formato de salida es hash:contraseña_en_texto_plano. Como puedes ver, la contraseña original para el hash 8846f7eaee8fb117ad06bdd830b7586c es password.

También puedes ver el potfile sin procesar directamente usando el comando cat:

cat ~/.local/share/hashcat/hashcat.potfile

Esto mostrará el mismo resultado. Ahora has descifrado con éxito un hash NTLM y recuperado la contraseña original.

Resumen

En este laboratorio, has realizado con éxito un ataque básico de descifrado de contraseñas contra un hash NTLM.

Aprendiste:

  • Qué son los hashes NTLM y cómo se utilizan en los sistemas Windows.
  • Cómo usar Hashcat, una potente herramienta de recuperación de contraseñas.
  • El concepto de ataque de diccionario y la importancia de las listas de palabras (wordlists) como rockyou.txt.
  • El proceso de identificación del tipo de hash correcto, el lanzamiento de un ataque y la visualización de la contraseña descifrada.

Este ejercicio demuestra con qué facilidad se pueden comprometer las contraseñas débiles. Subraya la importancia crítica de usar contraseñas fuertes, únicas y complejas, así como mecanismos de hashing robustos, para proteger los sistemas y los datos del acceso no autorizado.