<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: david ayala</title>
    <description>The latest articles on DEV Community by david ayala (@david_ayala2000).</description>
    <link>https://dev.to/david_ayala2000</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3957447%2F9b44d105-fb04-4f2f-bf93-968e55c05724.png</url>
      <title>DEV Community: david ayala</title>
      <link>https://dev.to/david_ayala2000</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/david_ayala2000"/>
    <language>en</language>
    <item>
      <title>MSF-Assistant: herramienta web de pentesting con Metasploit, nmap y msfvenom en Kali Linux</title>
      <dc:creator>david ayala</dc:creator>
      <pubDate>Fri, 29 May 2026 06:33:29 +0000</pubDate>
      <link>https://dev.to/evolve-space/msf-assistant-herramienta-web-de-pentesting-con-metasploit-nmap-y-msfvenom-en-kali-linux-13b2</link>
      <guid>https://dev.to/evolve-space/msf-assistant-herramienta-web-de-pentesting-con-metasploit-nmap-y-msfvenom-en-kali-linux-13b2</guid>
      <description>&lt;h2&gt;
  
  
  El problema que quería resolver
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Mi proyecto final de máster fue construir una herramienta que eliminara esa fricción: &lt;strong&gt;MSF-Assistant&lt;/strong&gt;, una aplicación web local que orquesta Metasploit desde el navegador, guiando por las distintas fases de un test de penetración.&lt;/p&gt;

&lt;h2&gt;
  
  
  El entorno: Kali Linux + Metasploitable en VirtualBox
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;El reto técnico de partida: &lt;code&gt;netdiscover&lt;/code&gt; y &lt;code&gt;nmap&lt;/code&gt; necesitan permisos de red que desde un navegador normal son imposibles de obtener. La solución fue construir la interfaz como una &lt;strong&gt;aplicación Flask que corre localmente en Kali&lt;/strong&gt; — el backend tiene acceso completo al sistema operativo y ejecuta los comandos reales, mientras el frontend recibe el output en tiempo real mediante &lt;strong&gt;Server-Sent Events&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  La arquitectura: Flask + SSE + subprocess
&lt;/h2&gt;

&lt;p&gt;El stack es intencionalmente simple:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;&lt;code&gt;&lt;br&gt;
app.py               -&amp;gt; Backend Python/Flask&lt;br&gt;
templates/index.html -&amp;gt; Frontend SPA (HTML/CSS/JS vanilla)&lt;br&gt;
\&lt;/code&gt;&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;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:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;`python&lt;br&gt;
@app.route('/api/scan/stream')&lt;br&gt;
def api_scan_stream():&lt;br&gt;
    cmd = ['sudo', 'nmap', '-sV', '--open', '-T4', network]&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;`&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;En el frontend, un &lt;code&gt;EventSource&lt;/code&gt; recibe cada línea y la pinta en un terminal simulado con colores según el tipo de mensaje.&lt;/p&gt;

&lt;h2&gt;
  
  
  Las fases del flujo
&lt;/h2&gt;

&lt;p&gt;La herramienta guía por el flujo completo de un pentest.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Escaneo de red
&lt;/h3&gt;

&lt;p&gt;Tres opciones reales que se ejecutan en el sistema: &lt;code&gt;netdiscover&lt;/code&gt;, &lt;code&gt;nmap ping scan&lt;/code&gt; y &lt;code&gt;nmap full scan&lt;/code&gt;. El output aparece en tiempo real y al terminar se parsean automáticamente las IPs descubiertas para mostrarlas como objetivos seleccionables.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39a9mvl6tzmdytid2j1r.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39a9mvl6tzmdytid2j1r.webp" alt="Escaneo nmap mostrando los servicios de Metasploitable 3" width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Selección de exploit
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qk2oxx1uw147ldmyraj.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qk2oxx1uw147ldmyraj.webp" alt="Lista de exploits disponibles en la herramienta" width="800" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Algunos de los incluidos:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Exploit&lt;/th&gt;
&lt;th&gt;CVE&lt;/th&gt;
&lt;th&gt;Target típico&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SSH Login (credenciales por defecto)&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Metasploitable 2/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Drupalgeddon2&lt;/td&gt;
&lt;td&gt;CVE-2018-7600&lt;/td&gt;
&lt;td&gt;Metasploitable 3, Drupal 7/8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EternalBlue&lt;/td&gt;
&lt;td&gt;CVE-2017-0144&lt;/td&gt;
&lt;td&gt;Windows 7 / 2008 R2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shellshock CGI&lt;/td&gt;
&lt;td&gt;CVE-2014-6271&lt;/td&gt;
&lt;td&gt;Apache con CGI&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  3. Configuración automática
&lt;/h3&gt;

&lt;p&gt;Al seleccionar un host del escaneo y un exploit, la herramienta pre-rellena automáticamente &lt;code&gt;RHOSTS&lt;/code&gt; con la IP del target y &lt;code&gt;LHOST&lt;/code&gt; con la IP local de Kali. Solo hay que revisar y ajustar si hace falta.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh7943wxsqsb7rxqkwhld.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh7943wxsqsb7rxqkwhld.webp" alt="Configuración automática del exploit SSH" width="799" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para los módulos de login (SSH, MySQL) incluí un &lt;strong&gt;diccionario de credenciales por defecto&lt;/strong&gt; de las máquinas vulnerables más comunes: &lt;code&gt;vagrant/vagrant&lt;/code&gt; para Metasploitable 3, &lt;code&gt;msfadmin/msfadmin&lt;/code&gt; para Metasploitable 2, &lt;code&gt;root&lt;/code&gt; sin contraseña para MySQL. La herramienta las prueba automáticamente y abre una sesión al primer acierto.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Lanzar en Metasploit
&lt;/h3&gt;

&lt;p&gt;Genera un script &lt;code&gt;.rc&lt;/code&gt; con todos los comandos configurados y ejecuta &lt;code&gt;msfconsole -r&lt;/code&gt;. El output completo aparece en tiempo real en el terminal de la interfaz.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Generador de payloads (msfvenom)
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Post-explotación
&lt;/h3&gt;

&lt;p&gt;Una vez dentro, panel con módulos &lt;code&gt;post/&lt;/code&gt; preconfigurados, comandos Meterpreter listos para copiar y técnicas de escalada de privilegios en Linux.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resultado: acceso conseguido contra Metasploitable 3
&lt;/h2&gt;

&lt;p&gt;El flujo completo que seguí en la prueba final:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Escaneo con &lt;code&gt;nmap full scan&lt;/code&gt; y aparece &lt;code&gt;192.168.56.101&lt;/code&gt; con sus puertos&lt;/li&gt;
&lt;li&gt;Selecciono el host, voy a Exploits y elijo &lt;strong&gt;SSH Login (credenciales por defecto)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;RHOSTS ya está relleno automáticamente, el diccionario se genera solo&lt;/li&gt;
&lt;li&gt;Pulso "Ejecutar en Metasploit"&lt;/li&gt;
&lt;li&gt;En segundos: &lt;code&gt;Success: 'vagrant:vagrant'&lt;/code&gt; y &lt;code&gt;SSH session 1 opened&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr5dpj7s6k62f4qnd3q9a.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr5dpj7s6k62f4qnd3q9a.webp" alt="Sesión SSH abierta contra Metasploitable 3" width="800" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Acceso conseguido con privilegios sudo (&lt;code&gt;groups=27(sudo)&lt;/code&gt;), todo automatizado desde la interfaz, sin escribir un solo comando manualmente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lo que aprendí
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Técnicamente:&lt;/strong&gt; la parte más interesante fue el streaming via SSE. Los procesos de Metasploit y nmap bufferizan su output, así que tuve que configurar &lt;code&gt;bufsize=1&lt;/code&gt; y &lt;code&gt;text=True&lt;/code&gt; en &lt;code&gt;subprocess.Popen&lt;/code&gt; para obtener salida línea a línea en tiempo real. También aprendí a generar scripts &lt;code&gt;.rc&lt;/code&gt; de forma genérica para soportar cualquier exploit sin programar cada opción a mano.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;De seguridad:&lt;/strong&gt; 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 &lt;code&gt;TARGETURI&lt;/code&gt; correcto, es mucho más valioso que ejecutar comandos de memoria.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lo que haría diferente:&lt;/strong&gt; 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 &lt;code&gt;db_nmap&lt;/code&gt; para aprovechar la base de datos interna de Metasploit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Herramientas utilizadas
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Stack técnico:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python 3 + Flask&lt;/strong&gt; — backend y servidor web local&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML / CSS / JS vanilla&lt;/strong&gt; — frontend sin frameworks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metasploit Framework&lt;/strong&gt; — motor de exploits (&lt;code&gt;msfconsole&lt;/code&gt;, &lt;code&gt;msfvenom&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;nmap&lt;/strong&gt; — escaneo de puertos y detección de servicios&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;netdiscover&lt;/strong&gt; — descubrimiento de hosts via ARP&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kali Linux + VirtualBox&lt;/strong&gt; — entorno de desarrollo y pruebas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metasploitable 3&lt;/strong&gt; — máquina objetivo para las pruebas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Desarrollo asistido por IA:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://claude.ai" rel="noopener noreferrer"&gt;Claude AI (Anthropic)&lt;/a&gt;&lt;/strong&gt; — 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.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Repositorio&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;El código completo está en GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Davidaah07/Proyecto-Master-Ciberseguridad-Evolve-DavidAah07" rel="noopener noreferrer"&gt;github.com/Davidaah07/Proyecto-Master-Ciberseguridad-Evolve-DavidAah07&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Incluye instrucciones de instalación, lista completa de exploits, diccionario de credenciales y aviso legal.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Proyecto académico desarrollado durante el Master en Ciberseguridad de &lt;a href="https://evolve.es" rel="noopener noreferrer"&gt;Evolve&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>python</category>
      <category>linux</category>
      <category>infosec</category>
    </item>
  </channel>
</rss>
