Masscan - Scanner port haute vitesse
Masscan est un scanner port extrêmement rapide conçu pour scanner l'Internet entier en moins de 6 minutes. Il est asynchrone et peut transmettre des paquets à des taux de 10 millions de paquets par seconde, ce qui le rend idéal pour la reconnaissance réseau à grande échelle et les évaluations de sécurité.
Utilisation de base
Scannage de port simple
# Scan single host for specific port
masscan 192.168.1.1 -p80
masscan 192.168.1.1 -p443
masscan 192.168.1.1 -p22
# Scan subnet for specific port
masscan 192.168.1.0/24 -p80
masscan 10.0.0.0/8 -p443
masscan 172.16.0.0/12 -p22
# Scan multiple ports
masscan 192.168.1.0/24 -p80,443
masscan 192.168.1.0/24 -p80,443,22,21,25
masscan 192.168.1.0/24 -p1-1000
# Scan all ports
masscan 192.168.1.0/24 -p1-65535
masscan 192.168.1.0/24 -p0-65535
Contrôle des taux
# Set transmission rate (packets per second)
masscan 192.168.1.0/24 -p80 --rate 100
masscan 192.168.1.0/24 -p80 --rate 1000
masscan 192.168.1.0/24 -p80 --rate 10000
# Maximum rate limiting
masscan 192.168.1.0/24 -p80 --max-rate 1000
# Conservative scanning (slow)
masscan 192.168.1.0/24 -p80 --rate 10
# Aggressive scanning (fast)
masscan 192.168.1.0/24 -p80 --rate 100000
```_
## Formats de sortie
### Formats de sortie standard
```bash
# XML output (nmap compatible)
masscan 192.168.1.0/24 -p80 -oX scan_results.xml
# Grepable output
masscan 192.168.1.0/24 -p80 -oG scan_results.gnmap
# JSON output
masscan 192.168.1.0/24 -p80 -oJ scan_results.json
# List output (simple format)
masscan 192.168.1.0/24 -p80 -oL scan_results.list
# Binary output (for resuming)
masscan 192.168.1.0/24 -p80 -oB scan_results.binary
# Multiple output formats
masscan 192.168.1.0/24 -p80 -oX results.xml -oG results.gnmap -oJ results.json
```_
### Traitement des produits
```bash
# Parse XML output
cat scan_results.xml|grep "open"
# Parse JSON output
cat scan_results.json|jq '.[]|select(.ports[].status == "open")'
# Parse list output
cat scan_results.list|grep "open"
# Convert to nmap format
masscan 192.168.1.0/24 -p80 -oX results.xml
# Then use with nmap scripts: nmap -iL <(grep -oP '(?<=addr=")[^"]*' results.xml) -sV
Options avancées de numérisation
Accaparement des bannières
# Enable banner grabbing
masscan 192.168.1.0/24 -p80,443,22,21 --banners
# Banner grabbing with specific source port
masscan 192.168.1.0/24 -p80 --banners --source-port 61000
# Banner grabbing with rate limiting
masscan 192.168.1.0/24 -p80,443 --banners --rate 1000
# Banner grabbing for web services
masscan 192.168.1.0/24 -p80,443,8080,8443 --banners
Configuration de l'interface réseau
# Specify network adapter
masscan 192.168.1.0/24 -p80 --adapter eth0
masscan 192.168.1.0/24 -p80 --adapter wlan0
# Set adapter IP address
masscan 192.168.1.0/24 -p80 --adapter-ip 192.168.1.100
# Set adapter MAC address
masscan 192.168.1.0/24 -p80 --adapter-mac 00:11:22:33:44:55
# Set router MAC address
masscan 192.168.1.0/24 -p80 --router-mac 00:11:22:33:44:55
Configuration des sources
# Specify source IP address
masscan 192.168.1.0/24 -p80 --source-ip 192.168.1.100
# Specify source port
masscan 192.168.1.0/24 -p80 --source-port 61000
# Random source port
masscan 192.168.1.0/24 -p80 --source-port 60000-65000
# Multiple source IPs
masscan 192.168.1.0/24 -p80 --source-ip 192.168.1.100,192.168.1.101
Calendrier et performance
Délai de connexion
# Set connection timeout (seconds)
masscan 192.168.1.0/24 -p80 --connection-timeout 30
masscan 192.168.1.0/24 -p80 --connection-timeout 10
# Set wait time after scan completion
masscan 192.168.1.0/24 -p80 --wait 3
masscan 192.168.1.0/24 -p80 --wait 10
# Set number of retries
masscan 192.168.1.0/24 -p80 --retries 3
masscan 192.168.1.0/24 -p80 --retries 1
Optimisation des performances
# High-performance scanning
masscan 192.168.1.0/24 -p80 --rate 100000 --connection-timeout 5 --retries 1
# Balanced performance
masscan 192.168.1.0/24 -p80 --rate 10000 --connection-timeout 10 --retries 2
# Conservative scanning
masscan 192.168.1.0/24 -p80 --rate 1000 --connection-timeout 30 --retries 3
Scannage à grande échelle
Analyse à l'aide d'Internet
# Scan entire IPv4 space for HTTP
masscan 0.0.0.0/0 -p80 --rate 1000
# Scan for common web ports
masscan 0.0.0.0/0 -p80,443,8080,8443 --rate 10000
# Scan for common services
masscan 0.0.0.0/0 -p80,443,22,21,25,53,110,143,993,995 --rate 5000
# Scan specific regions
masscan 8.8.0.0/16 -p80,443 --rate 1000 # Google's range
masscan 1.1.0.0/16 -p80,443 --rate 1000 # Cloudflare's range
Scannage de réseau privé
# Scan all RFC 1918 networks
masscan 10.0.0.0/8 -p80,443,22 --rate 10000
masscan 172.16.0.0/12 -p80,443,22 --rate 10000
masscan 192.168.0.0/16 -p80,443,22 --rate 10000
# Scan common enterprise ranges
masscan 10.0.0.0/8 -p80,443,22,21,25,53,135,139,445 --rate 5000
Vol et randomisation
randomisation de l'hôte
# Randomize host order
masscan 192.168.1.0/24 -p80 --randomize-hosts
# Set random seed for reproducible results
masscan 192.168.1.0/24 -p80 --seed 12345
# Combine randomization with rate limiting
masscan 192.168.1.0/24 -p80 --randomize-hosts --rate 100
Techniques de vol
# Slow scan to avoid detection
masscan 192.168.1.0/24 -p80 --rate 10 --randomize-hosts
# Use common source port
masscan 192.168.1.0/24 -p80 --source-port 53 # DNS
masscan 192.168.1.0/24 -p80 --source-port 80 # HTTP
# Fragmented scanning
masscan 192.168.1.0/24 -p80 --rate 100 --wait 5
Exclusions et filtrage
Exclure les objectifs
# Exclude single host
masscan 192.168.1.0/24 -p80 --exclude 192.168.1.1
# Exclude multiple hosts
masscan 192.168.1.0/24 -p80 --exclude 192.168.1.1,192.168.1.2
# Exclude from file
echo "192.168.1.1" > exclude.txt
echo "192.168.1.2" >> exclude.txt
masscan 192.168.1.0/24 -p80 --excludefile exclude.txt
# Exclude ranges
masscan 192.168.1.0/24 -p80 --exclude 192.168.1.1-192.168.1.10
Listes cibles
# Scan from target file
echo "192.168.1.1" > targets.txt
echo "192.168.1.2" >> targets.txt
masscan -iL targets.txt -p80
# Combine ranges and files
masscan 192.168.1.0/24 -iL additional_targets.txt -p80
Numérisation IPv6
Plages d'adresses IPv6
# Scan IPv6 subnet
masscan 2001:db8::/32 -p80,443
# Scan entire IPv6 space (be very careful!)
masscan ::0/0 -p80 --rate 1000
# Scan specific IPv6 addresses
masscan 2001:db8::1 -p80,443,22
# Scan IPv6 with rate limiting
masscan 2001:db8::/64 -p80,443 --rate 100
Fichiers de configuration
Création de fichiers de configuration
# Generate configuration template
masscan --echo > masscan.conf
# Edit configuration file
# masscan.conf example:
# rate = 1000
# output-format = xml
# output-filename = scan_results.xml
# ports = 80,443,22
# range = 192.168.1.0/24
# Use configuration file
masscan -c masscan.conf
Reprendre la fonctionnalité
# Create resumable scan
masscan 192.168.1.0/24 -p1-65535 --rate 1000 -oB scan.binary
# Resume interrupted scan
masscan --resume scan.binary
# Resume with different parameters
masscan --resume scan.binary --rate 2000
Intégration avec d'autres outils
Combiner avec Nmap
# Use masscan for discovery, nmap for detailed scanning
masscan 192.168.1.0/24 -p80,443 --rate 1000 -oL live_hosts.txt
nmap -iL live_hosts.txt -sV -sC
# Extract IPs from masscan XML output
masscan 192.168.1.0/24 -p80 -oX results.xml
grep -oP '(?<=addr=")[^"]*' results.xml > live_ips.txt
nmap -iL live_ips.txt -sV
Résultats du traitement
# Count open ports
masscan 192.168.1.0/24 -p1-1000 -oL results.txt
grep "open" results.txt|wc -l
# Extract unique IPs
masscan 192.168.1.0/24 -p80,443 -oL results.txt
grep "open" results.txt|awk '\\\\{print $4\\\\}'|sort -u
# Create target list for further scanning
masscan 192.168.1.0/24 -p80 -oL results.txt
grep "open" results.txt|awk '\\\\{print $4\\\\}' > web_servers.txt
Exemples pratiques
Découverte du serveur Web
# Find web servers in network
masscan 192.168.1.0/24 -p80,443,8080,8443,8000,8888 --rate 1000
# Find web servers with banners
masscan 192.168.1.0/24 -p80,443 --banners --rate 500
# Comprehensive web service scan
masscan 192.168.1.0/24 -p80,443,8080,8443,8000,8888,9000,9090 --banners --rate 1000
Découverte des services
# Find SSH servers
masscan 192.168.1.0/24 -p22 --banners --rate 1000
# Find mail servers
masscan 192.168.1.0/24 -p25,110,143,993,995 --rate 1000
# Find database servers
masscan 192.168.1.0/24 -p3306,5432,1433,1521,27017 --rate 1000
# Find file sharing services
masscan 192.168.1.0/24 -p21,22,139,445,2049 --rate 1000
Évaluation de la sécurité
# Quick network overview
masscan 192.168.1.0/24 -p1-1000 --rate 5000 -oX quick_scan.xml
# Comprehensive service discovery
masscan 192.168.1.0/24 -p1-65535 --rate 2000 --banners -oX full_scan.xml
# Focus on common vulnerable services
masscan 192.168.1.0/24 -p21,22,23,25,53,80,110,111,135,139,143,443,445,993,995,1433,3306,3389,5432 --banners --rate 1000
Analyse des performances
Optimisation des taux
# Test network capacity
masscan 192.168.1.1 -p80 --rate 1000 # Start conservative
masscan 192.168.1.1 -p80 --rate 10000 # Increase gradually
masscan 192.168.1.1 -p80 --rate 100000 # Maximum performance
# Adjust based on network conditions
# Local network: --rate 10000-100000
# WAN: --rate 1000-10000
# Internet: --rate 100-1000
Optimisation de la mémoire et du processeur
# Reduce memory usage for large scans
masscan 0.0.0.0/0 -p80 --rate 1000 --connection-timeout 5 --retries 1
# Balance CPU and network usage
masscan 192.168.1.0/24 -p1-65535 --rate 5000 --wait 1
Gestion des erreurs et dépannage
Questions communes
# Permission errors (need root for raw sockets)
sudo masscan 192.168.1.0/24 -p80
# Network interface issues
masscan --echo|grep adapter
masscan 192.168.1.0/24 -p80 --adapter eth0
# Rate limiting issues
masscan 192.168.1.0/24 -p80 --rate 100 # Reduce rate
# Timeout issues
masscan 192.168.1.0/24 -p80 --connection-timeout 30 # Increase timeout
Déboguement
# Verbose output
masscan 192.168.1.0/24 -p80 --echo
# Test configuration
masscan --selftest
# Check network configuration
masscan --echo|grep -E "(adapter|router-mac|source-ip)"
Considérations en matière de sécurité
Usage juridique et éthique
- Seuls les réseaux de numérisation que vous possédez ou avez la permission explicite de tester
- Être au courant des lois et règlements locaux concernant la numérisation des réseaux
- Examiner l'impact sur la performance et la disponibilité du réseau
- Documentez vos activités de numérisation pour la conformité
Mesures défensives
# Detect masscan activity (on target systems)
# Look for high-rate SYN packets from single source
netstat -an|grep SYN_RECV|wc -l
# Monitor for scanning patterns
tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'|head -100
Meilleures pratiques
Stratégie de numérisation
- Commencez avec de petits sous-réseaux pour tester les performances
- Utilisez une limite tarifaire appropriée pour votre réseau
- Enregistrer les résultats dans plusieurs formats pour l'analyse
- Combiner avec d'autres outils pour une évaluation complète
- Documentez votre méthodologie et vos constatations
Lignes directrices en matière de résultats
- Réseaux locaux: Utiliser des taux élevés (10 000 à 100 000 pp)
- Réseaux à distance: Utiliser des taux modérés (1 000-10 000 pp)
- Balayage Internet : Utiliser des taux prudents (100-1 000 pp)
- Toujours tester avec de petites gammes d'abord
Gestion des produits
- Utiliser des noms de fichiers descriptifs avec des timestamps
- Enregistrer dans plusieurs formats pour différents outils d'analyse
- Compresser les grands fichiers de sortie pour économiser de l'espace
- Sauvegarde des résultats importants de l'analyse
Masscan est un outil incroyablement puissant pour la reconnaissance du réseau et l'évaluation de la sécurité. Sa vitesse le rend idéal pour le balayage à grande échelle, mais ce pouvoir doit être utilisé de manière responsable et éthique. Assurez-vous toujours d'avoir une autorisation appropriée avant de scanner les réseaux, et soyez conscient de l'impact que votre numérisation peut avoir sur les performances du réseau et les systèmes de surveillance de la sécurité.