Parte: 3 — Hacking ético y pentesting: metodología · Fuente: Kennedy et al. - "Metasploit: The Penetration Tester's Guide"; documentación oficial de Rapid7/Metasploit ⏱️ Duración estimada: 110 min · Nivel: Intermedio
El alumno comprenderá la arquitectura interna de Metasploit Framework —módulos, datastore, base de datos y workspaces— y adquirirá soltura operando msfconsole: buscar módulos, leer su documentación, configurar opciones y encadenar reconocimiento con explotación. Esta clase es la base técnica sobre la que se apoyan las tres clases siguientes del curso (explotación, Meterpreter y msfvenom).
Al finalizar, el alumno podrá:
search, use, set, setg y options.| # | Tema | Por qué importa |
|---|---|---|
| 1 | Arquitectura: exploit, payload, auxiliary, post, encoder, nop | Cada tipo de módulo cumple un rol distinto en la cadena de ataque |
| 2 | msfconsole y comandos base | Es la interfaz principal de trabajo del framework |
| 3 | Base de datos PostgreSQL y msfdb |
Persiste hosts, servicios, credenciales y loot entre sesiones |
| 4 | Workspaces | Aísla los datos de distintos clientes o fases de un mismo engagement |
| 5 | Datastore: set vs setg |
Evita reescribir RHOSTS/LHOST en cada módulo nuevo |
| 6 | Importación de Nmap (db_nmap, db_import) |
Une la fase de reconocimiento con la de explotación sin trabajo manual |
| 7 | Módulos auxiliares | Permiten escaneo y enumeración detallada sin lanzar un exploit |
| 8 | Sesiones, jobs y background | Gestiona múltiples objetivos y handlers en paralelo |
Metasploit es el marco de explotación más usado del mundo, y su valor no está en tener muchos exploits sino en estandarizar la cadena de ataque: descubrir, explotar, cargar un payload, mantener acceso y hacer post-explotación, todo con una interfaz común y una base de datos que recuerda lo aprendido. Entender su arquitectura de módulos es lo que separa usarlo con criterio de copiar comandos.
Hay seis tipos de módulo, y cada uno cumple un rol distinto en la cadena. Los exploits aprovechan una vulnerabilidad concreta para conseguir ejecución. Los payloads son el código que se ejecuta después de que el exploit tenga éxito (la Clase 073 los detalla). Los auxiliary hacen escaneo, enumeración y fuzzing sin explotar nada. Los post operan sobre una sesión ya establecida (recolección, escalada, pivoting). Los encoders transforman payloads, y los nops los rellenan. La distinción clave que hay que interiorizar es exploit ≠ payload: el exploit abre la puerta, el payload es lo que entra por ella, y se eligen por separado.
msfconsole es la interfaz principal. Su flujo básico —search para encontrar un
módulo, use para seleccionarlo, show options para ver qué necesita, set para
rellenarlo, run/exploit para lanzarlo— es el mismo para cualquier módulo, y esa
uniformidad es justamente lo que hace productivo al framework. El datastore guarda los
parámetros, y aquí hay un detalle que ahorra errores: set fija una variable solo para
el módulo actual, mientras que setg la fija globalmente para toda la sesión. Definir
LHOST y RHOSTS con setg una vez evita reescribirlos en cada módulo y, sobre todo,
evita el error clásico de lanzar un exploit con el LHOST de otro objetivo.
Metasploit se apoya en PostgreSQL (inicializada con msfdb init), y este es el
componente que a menudo se ignora y que más rendimiento da en un pentest real. La base de
datos persiste hosts, servicios, credenciales y loot entre sesiones, de modo que el
conocimiento no se pierde al cerrar la consola. Se integra con el reconocimiento: db_nmap
lanza Nmap y guarda el resultado directamente, y db_import carga el XML de un escaneo
previo (el -oA de la Clase 069). A partir de ahí, comandos como hosts,
services y creds consultan lo recopilado, y vulns correlaciona.
Los workspaces son la pieza que hace esto usable con varios clientes: cada workspace
aísla los datos de un engagement, de modo que los hosts, credenciales y loot de un cliente
nunca se mezclan con los de otro. Empezar cada trabajo con workspace -a cliente no es
manía organizativa: es higiene profesional y, con datos sensibles de por medio, una
obligación de la Clase 067.
Un pentest real rara vez es un objetivo a la vez. Metasploit gestiona múltiples sesiones
(cada acceso obtenido) y jobs (tareas en segundo plano, como los handlers que esperan
conexiones entrantes). background deja una sesión en espera para seguir trabajando,
sessions -l las lista y sessions -i N retoma una. Esta capacidad de manejar varios
accesos y varios listeners en paralelo, con todo persistido en la base de datos, es lo que
convierte a Metasploit en la plataforma sobre la que se articula la fase de explotación y
post-explotación de las clases siguientes.
setg fija un valor global visible para todos los módulos, mientras set lo fija solo para el módulo activo.| Término | Definición concisa |
|---|---|
| Metasploit Framework | Marco de explotación que estandariza la cadena de ataque |
| Módulo | Unidad funcional del framework |
| Exploit | Módulo que aprovecha una vulnerabilidad para lograr ejecución |
| Payload | Código que se ejecuta tras el éxito del exploit |
| Auxiliary | Módulo de escaneo, enumeración o fuzzing sin explotar |
| Post | Módulo que opera sobre una sesión ya establecida |
| Encoder / nop | Transforma y rellena payloads |
| msfconsole | Interfaz principal del framework |
| Datastore | Almacén de parámetros del módulo |
set vs setg |
Variable local del módulo vs global de la sesión |
msfdb / PostgreSQL |
Base de datos que persiste hosts, servicios y loot |
db_nmap / db_import |
Integran el reconocimiento con la base de datos |
| Workspace | Aislamiento de los datos por cliente o fase |
| Sesión | Cada acceso obtenido a un objetivo |
| Job / handler | Tarea en segundo plano que espera conexiones |
msfconsole --version para confirmar).msfdb.Inicialización recomendada:
sudo msfdb init
msfconsole -q
msf6 > db_status
# Debe responder algo como: "Connected to msf. Connection type: postgresql."
⚠️ Nota ética: Metasploit es una herramienta ofensiva real y potente. Todos los módulos que se usan en esta clase y en las tres siguientes se ejecutan exclusivamente contra máquinas de laboratorio propias (VMs propias, Metasploitable, rangos tipo HackTheBox/TryHackMe) o dentro de un alcance autorizado por escrito mediante contrato de pentesting con reglas de engagement (RoE) firmadas. El acceso no autorizado a sistemas de terceros es ilegal, independientemente de la intención o del resultado obtenido.
msfconsole -q seguido de db_status.workspace -a lab_parte3 y luego workspace lab_parte3.db_nmap -sV -p- 192.168.56.101.hosts y services; confirma que aparecen los puertos y versiones detectados.search vsftpd.use exploit/unix/ftp/vsftpd_234_backdoor seguido de info.options y fíjalas: set RHOSTS 192.168.56.101.setg RHOSTS 192.168.56.101.use auxiliary/scanner/smb/smb_version, set RHOSTS 192.168.56.101, run.hosts, services, vulns, notes.workspace -a lab_verificacion) y repite un escaneo, confirmando que los datos no se mezclan entre workspaces.set y setg con un ejemplo concreto de RHOSTS y LHOST.db_import y verifica los hosts cargados.hosts en cada uno, que los datos no se mezclan.search combinando type:exploit y platform:unix y explica qué representa cada filtro.Reto: Dejar un workspace de laboratorio completamente poblado: hosts descubiertos, servicios con versión importados desde Nmap, y al menos un módulo auxiliar ejecutado con su resultado documentado.
Criterio de aceptación: el comando hosts muestra el objetivo de laboratorio, services lista al menos tres servicios con su versión, y existe al menos una entrada generada por un módulo auxiliar visible en notes o vulns. Todo debe estar contenido dentro de un workspace nombrado explícitamente (no en default).
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
db_status responde "No connection" |
PostgreSQL detenido o msfdb no inicializada; ejecutar sudo systemctl start postgresql y luego msfdb init |
search devuelve cientos de resultados |
Búsqueda sin filtros; usar type:, platform: o cve: para acotar |
| Las opciones no persisten al cambiar de módulo | Se usó set en lugar de setg para variables comunes como RHOSTS/LHOST |
db_nmap corre pero no aparece nada en hosts |
No hay workspace activo o la base de datos no está conectada; verificar con db_status y workspace |
| El módulo buscado no existe | Ruta escrita a mano con errores; copiar el path exacto que devuelve search |
msfconsole tarda mucho en arrancar |
Está reconstruyendo la caché de módulos tras una actualización; es normal la primera vez, esperar |
❓ ¿Necesito obligatoriamente la base de datos para usar Metasploit? No es obligatoria para lanzar un único exploit, pero es muy recomendable en cualquier engagement real: persiste hosts, servicios, credenciales y loot entre sesiones, algo esencial cuando hay múltiples objetivos.
❓ ¿Cuál es la diferencia real entre un módulo auxiliary y un exploit? Los módulos auxiliary no entregan un payload ni buscan ejecución de código; sirven para escaneo, enumeración o fuerza bruta. Los exploit sí buscan ejecutar código en el objetivo y siempre se combinan con un payload.
❓ ¿Metasploit Pro aporta mucho valor sobre el Framework gratuito? Pro añade automatización de flujos, generación de informes y una interfaz gráfica, pero el Framework gratuito cubre la enorme mayoría del contenido técnico necesario para aprender y para ejecutar engagements reales.
❓ ¿Puedo agregar mis propios módulos a Metasploit?
Sí. El framework está escrito en Ruby y es completamente modular; los módulos personalizados pueden colocarse en ~/.msf4/modules respetando la estructura de carpetas (exploits/, auxiliary/, etc.) del framework oficial.
❓ ¿Por qué usar workspaces si solo tengo una VM de laboratorio?
Aunque el laboratorio tenga un solo objetivo, practicar con workspaces prepara al alumno para engagements reales donde se manejan decenas de clientes y es fácil confundir datos si todo vive en el workspace default.
Clase 071 — Análisis de vulnerabilidades con Nessus y OpenVAS