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 |
setg fija un valor global visible para todos los módulos, mientras set lo fija solo para el módulo activo.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