· Manuel López Pérez · noticias · 3 min read
Vendiendo humo: RUSTSCAN vs NMAP
Análisis crítico de RustScan, la herramienta que prometía escanear puertos mucho más rápido que Nmap. ¿Es realmente revolucionaria o solo un wrapper agresivo? Comparativa real con configuraciones avanzadas de Nmap que logran resultados más precisos y rápidos.

En este post analizaremos la nueva moda de publicar códigos “vendehumo” de dudosa calidad para ganar unas cuantas interacciones, demostrar que su nivel no es muy alto o que no saben leer la documentación de otras herramientas que ya existen ;) Por esta moda nos encontramos publicaciones en Twitter, Linkedin o incluso Twitch que pueden llegar a confundir a gente que está empezando en esto o que simplemente no tiene mucho nivel técnico.
Esta semana se hizo bastante viral el siguiente Tweet de @AsensiFj: https://twitter.com/AsensiFj/status/1285635854032089090
No voy a unirme a los comentarios que ha recibido este Tweet, pero os animo a leerlos. Hay otros que directamente no se cortan y copian repositorios tal cual y dicen que son suyos: https://web.archive.org/web/20200724121252/https://github.com/Marduky/Facial_recognition - https://github.com/MProx/Facial_recognition
En este post hablaremos de Rustscan, la nueva herramienta “revolucionaria” que promete scanners de puerto mucho más rápidos que Nmap. https://twitter.com/TheHackersNews/status/1286178618133983232
Si repasamos el código fuente de la herramienta nos damos cuenta de que el autor no ha leído la documentación de Nmap, una herramienta que él mismo usa en su script. La herramienta sólo intenta conectarse a los 65 mil puertos en baches. Este enfoque provoca mucho más ruido y puede que resultados erróneos. Pero aun que provocara más tráfico, ¿no está mal si es mucho más rápido no?
Lo gracioso es que puede hacer exactamente lo mismo con NMAP. Los parámetros por defecto en RustScan son 4500 conexiones simultáneas y 1500 ms de rtt timeout. Si buscamos en la documentación de NMAP:
—min-rtt-timeout time, —max-rtt-timeout time, —initial-rtt-timeout time (Adjust probe timeouts): Nmap mantiene un valor de expiración en ejecución para saber cuánto tiempo debe esperar para recibir la respuesta a una sonda o para retransmitir la sonda. Se pueden recortar los tiempos de análisis de forma apreciable. Sin embargo, no se debería establecer a valores muy agresivos.
—min-rate number; —max-rate number (Controla directamente la tasa de exploración)
Por tanto, una configuración similar a la de Rustscan sería:
nmap --min-rate 4500 --max-rtt-timeout 1500ms -p- IP RUSTSCAN vs NMAP
Rustscan

Con Rustscan se encuentran 10 puertos abiertos: 88, 135, 139, 445, 53, 389, 5985, 49155, 49154, 49157 en 21.67 segundos.
NMAP 1
nmap --min-rate 4500 --max-rtt-timeout 1500ms -p- 10.10.10.182 
Utilizando la configuración que dijimos anteriormente, se encuentran 15 puertos abiertos: 53, 88, 135, 139, 389, 445, 636, 3268, 3269, 49154, 49155, 49157, 49158 y 49165 en 44.07 segundos. Por tanto el scan anterior de Rustscan no ha detectado los puertos 636, 3268 y 3269, entre otros, aun que ha tardado la mitad que Nmap.
NMAP 2
Pero puestos a ser rápidos y ruidosos, podemos utilizar otra configuración de Nmap más agresiva:
nmap -sS -n -Pn -p- --max-rtt-timeout 100ms --min-parallelism 1000 10.10.10.182 
Como veis esta configuración nos avisa (“Your —min-parallelism option is pretty high! This can hurt reliability.”) y los resultados han sido bastante mejores que Rustscan pues se han encontrado todos los puertos y ha tardado 14.73 segundos.
No debemos fiarnos de twitter :O


