Volcado de hashes y credenciales

CiberseguridadBeginner
Practicar Ahora

Introducción

En este laboratorio, realizarás tareas críticas de post-explotación utilizando el framework Metasploit. La post-explotación ocurre después de que un atacante ha comprometido con éxito un sistema objetivo. El objetivo durante esta fase es recopilar información, escalar privilegios y extraer credenciales (como hashes de contraseñas) para mantener el acceso o moverse lateralmente hacia otros sistemas en la red.

El acceso a las credenciales es fundamental porque un host comprometido suele ser solo el comienzo. El material de contraseñas y los tokens son el puente desde un compromiso local hacia un alcance de red más amplio.

Utilizarás Meterpreter, un payload avanzado y dinámicamente extensible que proporciona una potente shell de comandos. A través de la práctica, aprenderás a verificar tus privilegios de usuario actuales, simular una escalada de privilegios, extraer hashes de contraseñas locales y almacenar estas credenciales en la base de datos de Metasploit para su uso futuro.

Esta secuencia es intencional: el nivel de privilegios determina a qué secretos puedes acceder, y los secretos a los que accedes a menudo determinan hacia dónde puedes moverte después.

Verificar privilegios actuales (getuid)

En este paso, configurarás tu entorno instalando Metasploit, generando un payload de Meterpreter y estableciendo tu primera sesión. Una vez conectado, utilizarás el comando getuid para identificar la cuenta de usuario bajo la cual se está ejecutando tu payload.

Conocer tu identidad actual es básico pero esencial. Muchas acciones de post-explotación tienen éxito o fallan completamente según el contexto de la cuenta en la que se encuentre la sesión.

Primero, instala el framework Metasploit utilizando el script de instalación preparado para ti. Este proceso descargará e instalará los componentes necesarios.

sudo /tmp/msfinstall

Metasploit utiliza una base de datos PostgreSQL para realizar un seguimiento de tus hallazgos, como las credenciales extraídas. En este entorno de laboratorio, msfdb init puede preparar la base de datos local por sí mismo, por lo que puedes inicializarla directamente:

msfdb init

Si ves un mensaje como postgresql: unrecognized service, puedes ignorarlo en este entorno siempre que msfdb init se complete con éxito.

A continuación, genera un payload de Meterpreter para Linux. Un payload es el código malicioso que se ejecuta en el sistema objetivo. Crearemos un payload bind_tcp, que abre un puerto en el objetivo y espera a que nos conectemos a él.

msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=4444 -f elf -o ~/project/payload.elf

Si es la primera vez que utilizas Metasploit en el entorno de laboratorio actual, es posible que veas un aviso de configuración inicial antes de que se ejecute msfvenom. Cuando se te pregunte si deseas configurar una nueva base de datos, responde yes y espera a que finalice la configuración. Después de eso, msfvenom continuará y guardará el archivo del payload.

Haz que el payload generado sea ejecutable:

chmod +x ~/project/payload.elf

Ahora, ejecuta el payload en segundo plano. Esto simula a una víctima ejecutando el archivo malicioso en su sistema.

./payload.elf &

Con el payload ejecutándose y escuchando en el puerto 4444, utiliza msfconsole para conectarte a él. El siguiente comando configura automáticamente el handler y se conecta a tu payload, llevándote directamente a una sesión de Meterpreter.

msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/bind_tcp; set RHOST 127.0.0.1; set LPORT 4444; exploit"

Una vez establecida la conexión, verás el prompt meterpreter >. Para verificar tus privilegios actuales, escribe el siguiente comando:

getuid

Deberías ver una salida similar a esta, que indica que estás ejecutando como el usuario estándar labex:

Server username: uid=1000, gid=1000, euid=1000, egid=1000

Escalar privilegios (getsystem)

En un escenario del mundo real, los privilegios de usuario estándar suelen ser insuficientes para tareas críticas como el volcado de hashes de contraseñas. Los atacantes deben escalar sus privilegios al nivel más alto.

En entornos Windows, Meterpreter proporciona el comando getsystem, que intenta automáticamente varias técnicas para elevar los privilegios a NT AUTHORITY\SYSTEM. Sin embargo, en sistemas Linux, la escalada de privilegios generalmente implica explotar vulnerabilidades locales o configuraciones erróneas (como permisos sudo débiles) para convertirse en el usuario root.

Dado que estamos practicando en un entorno Linux, simularemos una escalada de privilegios exitosa ejecutando nuestro payload con sudo.

Primero, sal de tu sesión actual de Meterpreter como usuario estándar escribiendo:

exit

Esto cerrará la sesión y te devolverá a la terminal de Linux estándar. Debes esperar hasta que estés de vuelta en el prompt normal de la shell, que se ve similar a labex:project/ $. Solo después de haber regresado a ese prompt debes ejecutar el siguiente comando.

Ahora, ejecuta el payload nuevamente, pero esta vez utiliza sudo para ejecutarlo como usuario root. El símbolo & lo ejecuta en segundo plano.

sudo ./payload.elf &

Conéctate al nuevo payload con altos privilegios usando msfconsole tal como lo hiciste antes:

msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/bind_tcp; set RHOST 127.0.0.1; set LPORT 4444; exploit"

Una vez que aparezca el prompt meterpreter >, verifica que has escalado tus privilegios con éxito comprobando tu ID de usuario nuevamente:

getuid

La salida ahora debería confirmar que tienes acceso a nivel de sistema (root). En este entorno, la salida más común es:

Server username: root

Algunas versiones de Meterpreter pueden mostrar una forma numérica más detallada como uid=0, gid=0, euid=0, egid=0. Ambas formas indican que la sesión se está ejecutando con privilegios de root.

Ejecutar Hashdump

Ahora que tienes acceso a nivel de sistema, puedes realizar tareas avanzadas de post-explotación. Una de las tareas más críticas es la extracción de hashes de contraseñas.

Aquí es donde la escalada de privilegios se traduce en un impacto operativo. Los privilegios más altos son útiles porque desbloquean el acceso a almacenes de credenciales protegidos y al estado sensible del sistema.

En Windows, los atacantes utilizan el comando hashdump para extraer hashes de la base de datos SAM (Security Account Manager). En Linux, los hashes de contraseñas de los usuarios se almacenan en el archivo /etc/shadow, que solo puede ser leído por el usuario root. Metasploit proporciona un módulo de post-explotación específico para automatizar la extracción y el análisis de estos hashes de Linux.

En tu sesión activa de Meterpreter como root, ejecuta el módulo de hashdump para Linux escribiendo:

run post/linux/gather/hashdump

Verás una salida que indica que Metasploit ha extraído uno o más hashes de cuentas y ha guardado los resultados en el directorio de botín (loot).

[+] labex:$y$j9T$24vG2N.x5ruy90hsyJXIe/$oFFK7PjuOmn3X2n/DoLh9YYg1Is/gEM2VAi/Qvl.812:5000:5000::/home/labex:/usr/bin/zsh
[+] Unshadowed Password File: /home/labex/.msf4/loot/20260314100052_default_127.0.0.1_linux.hashes_334082.txt

Estos hashes extraídos pueden someterse posteriormente a ataques de fuerza bruta offline utilizando herramientas como John the Ripper o Hashcat para recuperar las contraseñas en texto plano, lo que permite un mayor movimiento lateral a través de la red.

Almacenar hashes en la base de datos (creds)

Una gran ventaja de utilizar el framework Metasploit es su capacidad para gestionar automáticamente los datos que recopilas durante un compromiso. Debido a que inicializaste la base de datos en el Paso 1, Metasploit almacena automáticamente los hashes de contraseñas que acabas de volcar.

Para ver las credenciales almacenadas, debes regresar al prompt principal de msfconsole. Puedes hacerlo enviando tu sesión actual de Meterpreter a segundo plano.

En el prompt de Meterpreter, escribe:

background

Regresarás al prompt msf6 >. Ahora, utiliza el comando creds para mostrar todas las credenciales que Metasploit ha recopilado y almacenado en su base de datos:

creds

La salida mostrará una tabla estructurada que contiene la IP del host, el puerto, el nombre de usuario y el hash de la contraseña extraído.

Credentials
===========

id  host  origin     service  public  private                                                                    realm  private_type        JtR Format  cracked_password
--  ----  ------     -------  ------  -------                                                                    -----  ------------        ----------  ----------------
1         127.0.0.1           labex   $y$j9T$24vG2N.x5ruy90hsyJXIe/$oFFK7PjuOmn3X2n/DoLh9YYg1Is/gEM2VAi/Qvl.812         Nonreplayable hash  yescrypt

Esta gestión centralizada de credenciales es increíblemente útil durante pruebas de penetración a gran escala, permitiéndote realizar un seguimiento sencillo de las cuentas comprometidas y reutilizarlas en otros módulos de Metasploit.

Para salir de msfconsole y completar el laboratorio, escribe:

exit

Si Metasploit advierte que todavía tienes una sesión activa abierta, escribe exit -y para cerrar la consola y finalizar el laboratorio.

Resumen

En este laboratorio, navegaste con éxito por las fases críticas de la post-explotación utilizando el framework Metasploit. Aprendiste a establecer una sesión de Meterpreter, verificar tus privilegios actuales usando getuid y comprender la importancia de la escalada de privilegios (simulando el objetivo de getsystem). Además, utilizaste los módulos de post-explotación de Metasploit para ejecutar un hashdump, extrayendo hashes de contraseñas locales del sistema objetivo. Finalmente, exploraste cómo Metasploit gestiona automáticamente estos hallazgos, permitiéndote ver las credenciales almacenadas mediante el comando creds. Estas habilidades son fundamentales para evaluar la postura de seguridad de los sistemas y comprender cómo los atacantes se mueven lateralmente dentro de una red.