Sí, el título parece ser confuso y, usar el nombre del escáner de puertos dominante (nmap) trae ciertas disputas en redes, como es el caso de este hilo en Reddit. Nmap PUEDE ser lento a propósito. ¿Por qué puede?, ¿Nmap puede ser más veloz? Hay muchas cosas interesantes en ese hilo, por ejemplo:
Nmap funciona intentando abrir conexiones en cada puerto que escanea, lo que requiere un par de paquetes de tráfico por puerto por host, posiblemente con un par de saltos. Más si no usa un escaneo sincronizado. Tiene valores predeterminados razonables porque abrir las conexiones 65535 en un par de segundos generará algunas alarmas (gran aumento en el tráfico de red entre dos hosts) y puede causar congestión de la red o paquetes descartados.
¿Qué es esto?
- Encuentra los puertos rápidamente usando Rustscan (8 segundos en su máxima velocidad).
- Ejecuta automáticamente nmap en esos puertos.
- ???
- ¡Ganancia!
El único trabajo de RustScans es reducir la fricción entre encontrar puertos abiertos e introducirlos en nmap.
Características
- Escanea todos los puertos 65k en 8 segundos (en un tamaño de lote de 10k).
- Te ahorra tiempo al introducirlo automáticamente en Nmap. Se acabó el copiar y pegar manualmente.
- Hace una cosa y la hace bien. El único propósito es mejorar Nmap, ¡no reemplazarlo!
- Te permite elegir qué comandos de Nmap deseas ejecutar, o utilizar el predeterminado.
- Soporte de IPv6
¿Por qué RustScan?
¿Por qué gastar tiempo haciendo escaneos rápidos y copiando manualmente los puertos, o esperando a que termine un escaneo de 20 minutos cuando puedes hacer todos los 65k puertos en menos de un minuto?
RustScan funcionando en 8 segundos y encontrando todos los puertos abiertos de 65k.
FAQ
No. Si quieres un escáner de puertos rápido, usa Masscan.
Genial. ¡Contribuye a Nmap! 😀
Si eres un pentester, entonces sí, tienes Nmap instalado.
¡Genial! Me encantaría que me ayudaran con esto. ¡Lee el archivo contributing.md para más información!
Guía de Instalación
Necesitas Nmap. Si tienes instalado el sistema operativo Kali Linux o Parrot, ya tienes Nmap. Si no es así, sigue la guía de instalación de nmap.
La forma más fácil de instalar RustScan es usar uno de los paquetes proporcionados para tu sistema, como HomeBrew o Yay para Arch Linux.
La forma más universal es usar cargo
, Rust es un gestor de paquetes incorporado (piensa en Pip pero para Rust). Sigue esta guía para instalar Rust & Cargo.
Si te enfrentas a algún problema, por favor deja un issue en GitHub. Sólo he probado esto en Linux, así que puede haber problemas para Mac OS o Windows.
Nota: a veces Rust no añade Cargo al PATH. Por favor, consulta este issue para saber cómo solucionarlo.
Debian / Kali
Descarga el archivo .deb
de la página de releases.
Ejecuta el comando dpkg -i
en el archivo.
¿El archivo .deb no funciona?
El archivo .deb sólo funciona en las CPU AMD64. Si el tuyo es diferente (como un Raspberry Pi) o el archivo .deb no funciona, es fácil construir el archivo .deb tú mismo.
- Instalar Rust Puedes hacer esto con
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
que tomé del sitio web de Rust cargo install rustscan
isi quieres el método más fácil posible. De lo contrario, para construir el archivo .debcargo install cargo-deb
- Clonar este repo
git clone https://github.com/brandonskerritt/RustScan
- cd RustScan (en el repo clonado git)
cd RustScan
- Ejecutar
cargo deb
- Tu archivo .deb se encuentra ahora en
target/releases/Debian/
HomeBrew
Tap de brew:
brew tap brandonskerritt/rustscan
Instálalo:
brew install rustscan
Construyéndolo tú mismo
- Clonar el Repositorio
- Instalar Rust Puedes hacer esto con
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
que tomé del sitio web de Rust - cd dentro del repo clonado, y ejecutar
cargo build --release
- El binario se encuentra en
target/release/rustscan
- Enlace simbólico al binario o algo así. ¡Lo que quieras!
Uso
rustscan -h
RustScan 1.2.0
Bee https://github.com/brandonskerritt
Fast Port Scanner built in Rust
WARNING Do not use this program against sensitive infrastructure. The specified server may not be able to handle this
many socket connections at once.
USAGE:
rustscan [FLAGS] [OPTIONS] <ip> [command]...
FLAGS:
-h, --help Prints help information
-q, --quiet Quiet mode. Only output the ports. No Nmap. Useful for grep or outputting to a file.
-V, --version Prints version information
OPTIONS:
-T, --timeout <T> The timeout before a port is assumed to be close. In MS. [default: 1500]
-b, --batch <b> Increases speed of scanning. The batch size for port scanning. Depends on your open file limit
of OS. If you do 65535 it will do every port at the same time. Although, your OS may not
support this. [default: 4500]
-u, --ulimit <u> Automatically ups the ULIMIT with the value you provided.
ARGS:
<ip> The IP address to scan
<command>... The Nmap arguments to run. To use the argument -A, end RustScan's args with '-- -A'. To run
EXAMPLE: 'rustscan -T 1500 127.0.0.1 -- -A -sC'. This argument auto runs nmap {your commands}
-vvv -p $PORTS
El formato es rustscan -b 500 -T 1500 192.168.0.1
para escanear 192.168.0.1 con un tamaño de lote de 500 con un tiempo de espera de 1500ms. El tiempo de espera es el tiempo que RustScan espera una respuesta hasta que asume que el puerto está cerrado.
El tamaño del lote determina cuán rápido es RustScan. Ajústalo a 65k, y escaneará todos los puertos 65k al mismo tiempo. Esto significa que a un tamaño de lote de 65k, RustScan tardará mucho tiempo en escanear todos los puertos. Esencialmente, si el tiempo de espera es de 1000ms, RustScan puede escanear en 1 segundo.
Puede que tu sistema operativo no lo soporte, pero vale la pena jugar y ver dónde está el límite de apertura de archivos. En breve lanzaré una versión acoplada con un límite de archivos abiertos mucho mayor, así que esto será posible.
Advertencia
Este programa, por defecto, escanea 5000 puertos a la vez (5000 por segundo).
Esto puede causar daños a un servidor, o puede hacer increíblemente obvio que estás escaneando el servidor.
Hay dos maneras de lidiar con esto;
- Disminuir el tamaño del lote
rustscan -b 10
que ejecutará 10 escaneos de puerto durante 1 segundo, y luego otros 10 durante 1 segundo y así sucesivamente. - Aumentar el tiempo de espera
rustscan -T 5000
lo que significa que RustScan espera 5 segundos hasta que escanee los siguientes puertos.
También puedes usar ambos al mismo tiempo, para hacerlo tan lento o tan rápido como quieras. Un favorito divertido es el tamaño de lote 65535 con un segundo de tiempo de espera. Teóricamente, esto escanea todos los 65535 puertos en 1 segundo.
Flags personalizadas de Nmap
Para ejecutar tus propios comandos de nmap, finaliza el comando RustScan con -- -A
donde --
indica “fin de las banderas de RustScan, por favor no analices nada más” y cualquier bandera después de eso será introducida en nmap.
RustScan ejecuta automáticamente nmap -vvv -p $PORTS $IP
. Para hacer que funcione -A
, ejecuta el comando rustscan 127.0.0.1 -- -A
.
Si quieres ejecutar comandos como --script (vuln and safe)
, ytendrás que incluirlo entre comillas como --script '"(vuln and safe) or default"'
.
Aumentar velocidad / precisión
- Tamaño del lote
Esto aumenta la velocidad, permitiéndonos procesar más a la vez. Algo experimental en lo que estoy trabajando está cambiando el límite de apertura de archivos. Puedes hacerlo manualmente con ulimit -n 70000
y luego ejecutar rustscan con-b 65535
. Esto debería escanear todos los 65535 puertos al mismo tiempo. Pero esto es extremadamente experimental.
Para los aumentos de velocidad no experimentales, aumenta lentamente el tamaño del lote hasta que ya no tenga puertos abiertos, o se rompa.
- Precisión (y algo de velocidad)
Para aumentar la precisión, la forma más fácil es aumentar el tiempo de espera. El valor predeterminado es 1,5 segundos, al ajustarlo a 4 segundos (4000) le estamos diciendo a RustScan “si no recibimos respuesta de un puerto en 4 segundos, supongamos que está cerrado“.
La disminución de la precisión da un plus de velocidad, pero mis pruebas encontraron que el tamaño del lote cambió dramáticamente la velocidad mientras que el tiempo de espera lo hizo, pero no tanto.
Contribución
Por favor, leer el archivo contributing.md.
RustScan (este enlace se abre en una nueva ventana) por RustScan (este enlace se abre en una nueva ventana)
🤖 The Modern Port Scanner 🤖