Tools: MSF-Assistant: herramienta web de pentesting con Metasploit, nmap y msfvenom en Kali Linux (2026)

Tools: MSF-Assistant: herramienta web de pentesting con Metasploit, nmap y msfvenom en Kali Linux (2026)

El problema que quería resolver

El entorno: Kali Linux + Metasploitable en VirtualBox

La arquitectura: Flask + SSE + subprocess

Las fases del flujo

1. Escaneo de red

2. Selección de exploit

3. Configuración automática

4. Lanzar en Metasploit

5. Generador de payloads (msfvenom)

6. Post-explotación

Resultado: acceso conseguido contra Metasploitable 3

Lo que aprendí

Herramientas utilizadas Aprender pentesting con Metasploit tiene una curva de entrada alta. Cada sesión de prácticas implica recordar la secuencia exacta de comandos: qué exploit usar, qué parámetros configurar, cómo construir el payload, cómo lanzar el listener. Para alguien que está aprendiendo, esa fricción hace que te centres más en memorizar comandos que en entender lo que ocurre. Mi proyecto final de máster fue construir una herramienta que eliminara esa fricción: MSF-Assistant, una aplicación web local que orquesta Metasploit desde el navegador, guiando por las distintas fases de un test de penetración. Todo el desarrollo y las pruebas se hicieron en Kali Linux corriendo en VirtualBox, con Metasploitable 3 como máquina objetivo en una red Host-Only aislada. Es el setup estándar para prácticas de pentesting en entornos controlados. El reto técnico de partida: netdiscover y nmap necesitan permisos de red que desde un navegador normal son imposibles de obtener. La solución fue construir la interfaz como una aplicación Flask que corre localmente en Kali — el backend tiene acceso completo al sistema operativo y ejecuta los comandos reales, mientras el frontend recibe el output en tiempo real mediante Server-Sent Events. El stack es intencionalmente simple: \

app.py -> Backend Python/Flasktemplates/index.html -> Frontend SPA (HTML/CSS/JS vanilla)\\ La clave técnica está en el streaming de output. Cuando lanzas un escaneo o un exploit, el proceso puede tardar minutos. En lugar de esperar y mostrar todo al final, usé Server-Sent Events para que cada línea aparezca en pantalla en tiempo real, igual que en una terminal: \`python@app.route('/api/scan/stream')

def api_scan_stream(): cmd = ['sudo', 'nmap', '-sV', '--open', '-T4', network] En el frontend, un EventSource recibe cada línea y la pinta en un terminal simulado con colores según el tipo de mensaje. La herramienta guía por el flujo completo de un pentest. Tres opciones reales que se ejecutan en el sistema: netdiscover, nmap ping scan y nmap full scan. El output aparece en tiempo real y al terminar se parsean automáticamente las IPs descubiertas para mostrarlas como objetivos seleccionables. Aquí se ven los servicios detectados en Metasploitable 3: ProFTPD en el puerto 21, OpenSSH en el 22, Apache en el 80, Samba en el 445, MySQL en el 3306 y Jetty en el 8080. Base de datos de exploits organizados por categoría (web, smb, ftp, ssh, irc, db, network) con buscador por nombre, CVE o puerto. Cada uno muestra su rank de Metasploit, CVE asociado y una nota sobre en qué condiciones funciona. Algunos de los incluidos: Al seleccionar un host del escaneo y un exploit, la herramienta pre-rellena automáticamente RHOSTS con la IP del target y LHOST con la IP local de Kali. Solo hay que revisar y ajustar si hace falta. Para los módulos de login (SSH, MySQL) incluí un diccionario de credenciales por defecto de las máquinas vulnerables más comunes: vagrant/vagrant para Metasploitable 3, msfadmin/msfadmin para Metasploitable 2, root sin contraseña para MySQL. La herramienta las prueba automáticamente y abre una sesión al primer acierto. Genera un script .rc con todos los comandos configurados y ejecuta msfconsole -r. El output completo aparece en tiempo real en el terminal de la interfaz. Diez tipos de payload: ELF Linux x86/x64, EXE Windows x86/x64, PHP webshell, Python, Bash one-liner, WAR para Tomcat, ASPX para IIS, PowerShell. Con soporte para encoders y descarga directa del payload generado. Una vez dentro, panel con módulos post/ preconfigurados, comandos Meterpreter listos para copiar y técnicas de escalada de privilegios en Linux. El flujo completo que seguí en la prueba final: Acceso conseguido con privilegios sudo (groups=27(sudo)), todo automatizado desde la interfaz, sin escribir un solo comando manualmente. Técnicamente: la parte más interesante fue el streaming via SSE. Los procesos de Metasploit y nmap bufferizan su output, así que tuve que configurar bufsize=1 y text=True en subprocess.Popen para obtener salida línea a línea en tiempo real. También aprendí a generar scripts .rc de forma genérica para soportar cualquier exploit sin programar cada opción a mano. De seguridad: construir la herramienta me obligó a entender en profundidad qué hace cada exploit, qué condiciones necesita y por qué funciona. Saber por qué Drupalgeddon2 no necesita credenciales, o por qué hay que apuntar al TARGETURI correcto, es mucho más valioso que ejecutar comandos de memoria. Lo que haría diferente: añadiría autenticación a la interfaz web, un sistema de logs persistente para guardar los resultados de cada sesión, e integraría db_nmap para aprovechar la base de datos interna de Metasploit. Desarrollo asistido por IA: El código completo está en GitHub: github.com/Davidaah07/Proyecto-Master-Ciberseguridad-Evolve-DavidAah07 Incluye instrucciones de instalación, lista completa de exploits, diccionario de credenciales y aviso legal. Proyecto académico desarrollado durante el Master en Ciberseguridad de Evolve. Templates let you quickly answer FAQs or store snippets for re-use. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse

Code Block

Copy

def generate(): proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, bufsize=1) for line in proc.stdout: yield f"data: {line.rstrip()}\n\n" yield "data: __DONE__\n\n" return Response(generate(), mimetype='text/event-stream') def generate(): proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, bufsize=1) for line in proc.stdout: yield f"data: {line.rstrip()}\n\n" yield "data: __DONE__\n\n" return Response(generate(), mimetype='text/event-stream') def generate(): proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, bufsize=1) for line in proc.stdout: yield f"data: {line.rstrip()}\n\n" yield "data: __DONE__\n\n" return Response(generate(), mimetype='text/event-stream') - Escaneo con nmap full scan y aparece 192.168.56.101 con sus puertos - Selecciono el host, voy a Exploits y elijo SSH Login (credenciales por defecto) - RHOSTS ya está relleno automáticamente, el diccionario se genera solo - Pulso "Ejecutar en Metasploit" - En segundos: Success: 'vagrant:vagrant' y SSH session 1 opened - Python 3 + Flask — backend y servidor web local - HTML / CSS / JS vanilla — frontend sin frameworks - Metasploit Framework — motor de exploits (msfconsole, msfvenom) - nmap — escaneo de puertos y detección de servicios - netdiscover — descubrimiento de hosts via ARP - Kali Linux + VirtualBox — entorno de desarrollo y pruebas - Metasploitable 3 — máquina objetivo para las pruebas - Claude AI (Anthropic) — co-desarrollado con Claude como asistente de programación. Claude ayudó a estructurar la arquitectura, implementar el streaming via Server-Sent Events, depurar el backend Flask y diseñar la interfaz. Trabajar con IA no reemplaza entender lo que se construye: cada decisión técnica fue revisada, probada y ajustada manualmente en Kali.