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.
"Turns a 17 minutes Nmap scan into 19 seconds."
Rust Scan — A tool to scans all 65k ports in 8-10 seconds, and then it automatically pipe useful results into Nmap for faster analysis.https://t.co/X3YgAUITQE
via @brandon_skerrit#infosec #pentesting #bugbounty pic.twitter.com/MmEJsnB2hO
— The Hacker News (@TheHackersNews) July 23, 2020
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
Por fin alguien que habla sin pelos en la lengua. Enhorabuena, seguir por esta línea. Desmantelando a los vendehumos. Además me parece una labor importantísima para la sociedad que se cuestiones este tipo de actitudes. Necesitamos más información contrastada y menos clickbait.
ZAS en toda la boca!
Muy buena, apoyo 100% este tipo de publicaciones donde se aporta criterio, código, resultados… que estamos agilipollados con las redes sociales.
Lo dicho; felicidades por el post y a cuidarse!
Creo que hay una confusión en la comparación.
Rust busca hacer lo mismo, pero con algunas ventajas de paradigma y desempeño, de hecho la velocidad no es la mejor comparación, pues Nmap no busca velocidad, sino cantidad y calidad de información.
Nmap está desarrollado en C y algo de La,zenity y Perl.
Este desarrollo con Rust no me lleve más que una actualización de prácticamente “lo mismo” pero con mejor factibilidad de mantenerla a futuro y con una ligera ventaja de Rust sobre C.
En fin, es una ventaja muy ligera.