ZMap mas rápido que NMap

ZMap es un escaner de redes (tal como lo es el famosísimo nmap) que sirve para auditorias de seguridad, testings, monitoring etc etc. Sin embargo, a diferencia de otros scanners, ZMap es muy veloz y tiene un potencial muy interesante dado sus cualidades. Según sus autores, tiene la capacidad de scanear todas las ip de ipv4 en 45 minutos desde una PC normal y fue creado con el fin de encontrar vulnerabilidades en forma masiva.
Como explican en el WashintongPost:

In contrast, ZMap is “stateless,” meaning that it sends out requests and then forgets about them. Instead of keeping a list of oustanding requests, ZMap cleverly encodes identifying information in outgoing packets so that it will be able to identify responses. The lower overhead of this approach allows ZMap to send out packets more than 1,000 times faster than Nmap. So while an Internet-wide scan with Nmap takes weeks, ZMap can (with a gigabit network connection) scan the entire Internet in 44 minutes.

ZMap no tiene un registro de los paquetes enviados, simplemente envía los paquetes con data que al ser devuelta puede identificar y decodificar, haciéndolo 1300 veces mas rápido que nmap.

Instalación

Su instalación no debería serte en absoluto un problema, ya que esta portado para varias distribuciones, como se documente en su sitio:

Debian or Ubuntu: sudo apt-get install zmap
Fedora, CentOS, and RHEL: sudo yum install zmap
Gentoo: sudo emerge zmap
Mac OS (brew): brew install zmap
Arch Linux: Available through AUR

Por otro lado, lo puedes descargar/clonar desde GitHub
La información para compilarlo, puedes verla aquí

En particular, en Debian 7, necesitaras tener entre tus repositorios, los backports:

deb  http://http.debian.net/debian  wheezy-backports main contrib non-free

Uso

La rapidez de zmap hace que sea ideal para escanear una gran cantidad de hosts (syn scan) en poco tiempo (de hecho, lo hace tan rápido, que hemos de tener cuidado al usarlo). El output generado por zmap, es simple, una lista de las IPs, que pueden servir como input para otro programa. Veamos su uso más básico:

# zmap -p 22 -o iplist.txt 200.0.0.0/8

Obtendremos un output en la consola similar al siguiente:

 Mar 02 21:27:12.301 [INFO] zmap: output module: csv
0:01 1%; send: 148953 149 Kp/s (135 Kp/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hits: 0.00%
0:02 2%; send: 297811 149 Kp/s (142 Kp/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hits: 0.00%
0:03 2%; send: 446588 149 Kp/s (144 Kp/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hits: 0.00%
0:04 3%; send: 595473 149 Kp/s (145 Kp/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hits: 0.00%

Como vemos, vamos recibiendo un update del estado del escaneo en la consola a cada segundo, y en el archivo iplist.txt tendremos una lista de ips con el puerto 22.

Pero esto no es todo, hay algunas características dignas de ser recalcadas:

Control del ancho de banda:

zmap nos permite ajustar el ancho de banda que queremos utilizar con la opción -B:

zmap -B 512K -o list.txt -p 8080 83.0.0.0/8

Scan ICMP:

Podemos hacer un scan sólo utilizando ICMP con:

zmap -M icmp_echoscan -o list.txt 91.0.0.0/8

Scan UDP:

También podemos utilizar el módulo de UDP , casi con la misma velocidad que TCP, lo que es mucho:

zmap -M udp -o list.udp.txt -p 53 91.0.0.0/8

Output en JSON:

Utilizando la opción -O json podemos obtener el archivo de resultado en formato json, lo que puede ser muy útil para alguna herramienta de monitoreo o algún tipo de webservice:

zmap -O json -o list.json -p 23 15.0.0.0/16

Output en standard output:

Podemos pedirle a zmap, que la lista de IPs no las tire en el standard error con el fin de conectarlo mediante pipes a otra aplicación. Por ejemplo en la versión compilada (no la que instalamos con apt u otro gestor) tenemos un programa llamado banner-grab-tcp que sirve para obtener los banners y como sugiere el sitio de zmap podemos utilizarlo de la siguiente manera:

zmap -p 80 -N 1000 -B 10M -o - | ./banner-grab-tcp -p 80 -c 500 -d ./http-req > out 

Esta misma idea puede traspolarse a scripts hechos por nosotros mismos u otros programas que puedan recibir el input desde el standard input.

Abuso

  • A tener cuidado, zmap es una tentación a escanear grandes segmentos de red (de ips públicas).
  • Incluso si lo ejecutas en una red privada puedes llegar a generar una cantidad de tráfico indeseado que puede ser un problema para la red, por lo que mide bien los paramatros que utilizas.
  • Nunca olvides la parte ética del hacking

Extensiones

Por como si fuera poco, zmap puede ser facilmente extendido, te recomiendo le des una pasada a este link para obtener mas info de como hacerlo, verás que simple.

Conclusiones

Claramente zmap es digno de salír en las noticias (WashingtonPost article) ya que supone un gran avance y es un arma peligrosa de dos filos. Además es un proyecto muy maduro para su corta vida.
Por otro lado, me hace pensar sobre una versión de zmap para ipv6, cuya características (las de ipv6) nos hacia suponer que un escaneo masivo sería muy complejo, sin embargo esta simple herramienta nos abre un poco la cabeza. Aunque nmap tiene muchas mas cualidades, y creo yo, sigue siendo el rey de los scanners, zmap, es una herramienta que puede complementar muy bien muchas de las tareas que realizarmos en un pentesting o en auditorias internas. Definitivamente zmap no puede faltar entre tus herramientas de pentesting, hacking y auditoria. De seguro pronto la veremos en los top 10 de herramientas de hacking.

Fuentes:
Web de zmap

~have fun

Leave a Reply