Masscan - Escaneo de Alta Velocidad

Masscan - Escaneo de Alta Velocidad

1. Introduccion

Masscan es una herramienta de escaneo de puertos diseñada para velocidad extrema. Utiliza Transmission Asyncronous I/O para escanear millones de puertos por segundo. Es significativamente mas rapido que nmap en grandes rangos.

Esta guia cubre configuracion, parametros y escenarios de uso para esta herramienta.


2. Caracteristicas Principales

2.1. Velocidad

  • Puede escanear todo Internet en muy poco tiempo
  • Rate configurable de paquetes por segundo
  • Utiliza RAW sockets paramaximo rendimiento
  • Soportaescaneo asincrono TCP y UDP

2.2. Diferencias con Nmap

Caracteristica Nmap Masscan
Velocidad Media-Alta Extrema
TCP SYN Soportado Solo TCP
UDP Soportado Limitado
OS Detection Si No
Scripts Si No
Precision Alta Alta (con config)

3. Instalacion

3.1. Arch Linux

sudo pacman -S masscan

3.2. Kali/Parrot

sudo apt install masscan

3.3. Desde Fuente

git clone https://github.com/robertdavidgraham/masscan
cd masscan
make
sudo make install

4. Sintaxis Basica

4.1. Forma General

masscan [-p<Puertos>] [-o(Output] [--rate=Rate] <objetivo>

4.2. Objetivos

# Host unico
masscan 192.168.1.1

# Rango CIDR
masscan 192.168.1.0/24

# Multiples rangos
masscan 10.0.0.0/8

# Archivo con Targets
masscan -iL targets.txt

5. Parametros Principales

5.1. Puertos (-p)

# Puerto unico
masscan -p 80 192.168.1.1

# Multiples puertos
masscan -p 22,80,443 192.168.1.1

# Rango de puertos
masscan -p 1-1000 192.168.1.1

# Puertos comunes
masscan -p 1-65535 192.168.1.1

# Desde archivo de puertos
masscan -pU:1-1000 -p:1-1000 192.168.1.1

5.2. Rate (–rate)

# Paquetes por segundo
masscan --rate 1000 192.168.1.1

# 100k paquetes por segundo
masscan --rate 100000 192.168.1.1

# Million paquetes por segundo
masscan --rate 1000000 192.168.1.1

5.3. Salida (-o)

# Listable
masscan -oL 192.168.1.0/24 -oL output.txt

# JSON
masscan -oJ 192.168.1.0/24 -oJ output.json

# Binary
masscan -oB 192.168.1.0/24 -oB output.bin

# XML
masscan 192.168.1.0/24 > output.xml

5.4. Interface (-e)

# Interface especifica
masscan -e eth0 192.168.1.0/24

# Interface y rate
masscan -e eth0 --rate 10000 192.168.1.0/24

6. Parametros Avanzados

6.1. Timing

# Waittime entre paquetes (ms)
masscan --wait=10 192.168.1.1

# Retries
masscan --retries 3 192.168.1.1

# Batch size
masscan --batch-size 1000 192.168.1.1

6.2. Source

# Puerto Source
masscan -s 443 192.168.1.0/24

# IP Source
masscan -S 192.168.1.100 192.168.1.0/24

6.3. Fragmentacion (-f)

# Fragmentar paquetes
masscan -f 192.168.1.0/24

# Doble fragmentacion
masscan -ff 192.168.1.0/24

7. Configuracion de Red

7.1. Banner Grabbing

# Obtener banner
masscan 192.168.1.1 -p80,443 --banners
Parametro Descripcion
--banners Recibir banner del servicio

7.2. Format de Banner

# Con timestamp
masscan 192.168.1.0/24 --banners --format=json

# Con datos completos
masscan 192.168.1.0/24 -p80 --banners --only-new

8. Ejemplos Practicos

8.1. Escaneo Rapido de Red Local

masscan -p1-1000 192.168.1.0/24 --rate=10000

8.2. Escaneo Completo

masscan -p1-65535 192.168.1.0/24 --rate=1000000 -oJ scan.json

8.3. Escaneo de Internet (Demo)

masscan -p80,443 0.0.0.0/0 --rate=1000000 -oJ internet.json

8.4. Escaneo UDP

masscan -pU:53,161 192.168.1.0/24 --rate=10000 -oJ udp.json

8.5. Con Banner Grabbing

masscan -p80,443,22,21,25,3306,5432 192.168.1.0/24 --banners --rate=50000 -oJ services.json

9. Archivos de Configuracion

9.1. Archivo de Configuracion

# Crear configuracion
masscan --conf > masscan.conf

9.2. Usar Configuracion

masscan -c masscan.conf 192.168.1.0/24

9.3. Ejemplo de Configuracion

# masscan.conf
rate = 100000
ports = 80,443,22
range = 192.168.1.0/24
output-format = json
json-file = scan.json

10. Combinacion con Otras Herramientas

10.1. Pipeline Nmap

# Masscan + Nmap
masscan -p1-1000 192.168.1.0/24 -oL ips.txt
nmap -sV -iL ips.txt

10.2. Filtrar Resultados Masscan

# Obtener solo puertos abiertos
masscan -oJ scan.json | jq '.open_ports'

11. Recomendaciones de Uso

11.1. Entorno Controlado

# Red local
masscan -p1-1000 192.168.1.0/24 --rate=10000 -oL red_local.txt

11.2. Penetration Test

# Escaneo inicial rapido
masscan -p1-1000 target.com --rate=100000 -oJ initial.json

# Follow-up con nmap
cat initial.json | jq -r '.open_ports[] | .ip' | nmap -sV -p-

11.3. Bug Bounty

# Escaneo de rango grande
masscan -p80,443,22,21,25,3306,5432,6379,8080,8443 0.0.0.0/0 --rate=1000000 -oJ internet.json

12. Consideraciones Legales y Eticas

12.1. Uso Responsable

  • Obtener autorizacion antes de escanear
  • Respetar politicas de la organizacion
  • No exceder rate sin autorizacion
  • Documentar hallazgos

12.2. Rate Recomendado

Objetivo Rate Recomendado
Red local 10,000 pps
Objetivo pequeño 50,000 pps
Objetivo grande 100,000 pps
Internet 1,000,000 pps

13. Feedback

13.1. Lo Que Esta Bien

  • Extremadamente rapido
  • Simple de usar
  • Salida JSON util
  • Soporte para banner grabbing

13.2. Lo Que Falta

  • Deteccion de OS
  • Scripts de enumeracion
  • Soporte completo UDP

13.3. Mejoras

  • Combinar siempre con nmap para version detection
  • Usar –banners para servicios basicos
  • Ajustar rate segun el objetivo