Technische Analyse des Tools Masscan
Beispiel um das ganze Netwzerk nach rekursiv offenen DNS Servern zu suchen:
#!/bin/bash
RATE=10000
OPEN_DNS_FILE="open_recursive_dns.txt"
EXCLUDE_IP="255.255.255.255"
> "$OPEN_DNS_FILE"
test_dns_server() {
local DNS_IP="$1"
echo "[*] Teste $DNS_IP auf rekursive DNS-Anfragen..."
RESPONSE=$(dig @$DNS_IP google.com ANY +recurse +time=2 +short)
if [[ ! -z "$RESPONSE" ]]; then
echo "[+] Offener rekursiver DNS-Server gefunden: $DNS_IP"
echo "$DNS_IP" | tee -a "$OPEN_DNS_FILE" >/dev/null
sync # Erzwingt das sofortige Schreiben in die Datei
fi
}
echo "[+] Starte Masscan-Scan nach offenen DNS-Servern..."
sudo masscan -p53 --rate=$RATE --open-only 0.0.0.0/0 --exclude $EXCLUDE_IP | while read -r line; do
if [[ $line == Host* ]]; then
DNS_IP=$(echo $line | awk '{print $2}')
test_dns_server "$DNS_IP" &
fi
done
echo "[+] Scan läuft... Offene rekursive DNS-Server werden in: $OPEN_DNS_FILE gespeichert."Einleitung
Masscan ist ein extrem schneller Portscanner, der für das Scannen großer IP-Adressbereiche mit hoher Geschwindigkeit entwickelt wurde. Er funktioniert ähnlich wie Nmap, bietet jedoch eine viel höhere Scan-Rate und verwendet eine eigene TCP/IP-Stack-Implementierung für eine bessere Performance. Masscan wird häufig für Penetrationstests, Sicherheitsanalysen und die Identifizierung offener Ports in Netzwerken eingesetzt.
Dieser Bericht beschreibt die Funktionsweise, die wichtigsten Parameter und die Nutzung von Masscan mit Bash-Befehlen unter Linux.
Technische Grundlagen von Masscan
Masscan ist ein auf C basierendes Tool, das asynchrone Paketverarbeitung nutzt. Es kann mehrere Millionen Pakete pro Sekunde senden und verarbeiten. Dies wird durch folgende Merkmale ermöglicht:
✅ Eigener TCP/IP-Stack: Masscan umgeht den Standard-Linux-Netzwerkstack und verwendet eine eigene Implementierung für extrem schnelle Scans.
✅ Rohsockets & SYN-Scanning: Es sendet TCP-SYN-Pakete direkt über Rohsockets, ähnlich wie der SYN-Scan-Modus in Nmap (nmap -sS).
✅ Massive Parallelisierung: Masscan verteilt Scans auf mehrere Threads und nutzt RAW-Packet Injection, um die Netzwerkkarte maximal auszulasten.
✅ Optimierung für große IP-Bereiche: Es kann ganze Länder oder das gesamte IPv4-Internet scannen.
Installation von Masscan
Unter Linux kann Masscan einfach installiert werden:
sudo apt update && sudo apt install masscan -y
Alternativ kann das Tool aus dem offiziellen GitHub-Repository kompiliert werden:
git clone https://github.com/robertdavidgraham/masscan.git
Nach der Installation kann die Version überprüft werden:
masscan --version
Grundlegende Nutzung von Masscan
1. Einfacher Portscan auf eine einzelne IP-Adresse
sudo masscan -p80 192.168.1.1 --rate 1000
Erklärung:
-
-p80: Scan auf Port 80 (HTTP). -
192.168.1.1: Ziel-IP-Adresse. -
--rate 1000: Sende 1000 Pakete pro Sekunde.
2. Scannen eines gesamten Netzwerks nach offenen Ports
sudo masscan -p22,80,443 192.168.1.0/24 --rate 5000
Erklärung:
-
-p22,80,443: Scannt SSH, HTTP und HTTPS. -
192.168.1.0/24: Scannt das gesamte Subnetz. -
--rate 5000: Sende 5000 Pakete pro Sekunde.
3. Das gesamte Internet nach offenen SSH-Ports scannen
sudo masscan 0.0.0.0/0 -p22 --rate 100000
⚠ Warnung: Dieser Befehl scannt das gesamte Internet und kann als Angriff gewertet werden.
Erklärung:
-
0.0.0.0/0: Scannt alle IPv4-Adressen. -
-p22: Scannt SSH. -
--rate 100000: Extrem hoher Durchsatz (100.000 Pakete pro Sekunde).
4. Speichern der Scan-Ergebnisse in einer Datei
sudo masscan -p443 192.168.1.0/24 --rate 5000 -oX results.xml
Erklärung:
-oX results.xml: Speichert die Ausgabe im XML-Format.
5. Verwendung von Whitelists (nur bestimmte IP-Bereiche scannen)
sudo masscan -p80,443 -iL targets.txt --rate 10000
Erklärung:
-iL targets.txt: Nutzt eine Datei mit IP-Adressen als Eingabe.
Erweiterte Nutzung von Masscan
6. Integration mit Nmap zur detaillierten Analyse
Masscan kann offene Ports schnell identifizieren, liefert aber keine detaillierten Informationen. Daher kann man die Ergebnisse an Nmap übergeben:
sudo masscan -p80,443 192.168.1.0/24 --rate 10000 -oG masscan_results.gnmap
Erklärung:
-
-oG masscan_results.gnmap: Speichert die Ergebnisse im Nmap-kompatiblen Format. -
nmap -iL masscan_results.gnmap -sV -A: Führt einen detaillierten Service-Scan mit Nmap durch.
Leistungsoptimierung von Masscan
Erhöhung der Scan-Performance durch System-Tuning
Masscan kann extrem viele Pakete pro Sekunde senden. Dafür müssen die Systemressourcen angepasst werden:
✅ Erhöhung der Datei-Deskriptor-Limits:
echo "fs.file-max = 1000000" | sudo tee -a /etc/sysctl.conf
✅ Netzwerkpuffergröße erhöhen:
echo "net.core.rmem_max=2500000" | sudo tee -a /etc/sysctl.conf
✅ IPTables-Firewall für Masscan konfigurieren:
sudo iptables -A INPUT -p tcp --dport 60000:65000 -j ACCEPT
Schutzmaßnahmen gegen Masscan-Scans
Administratoren können Maßnahmen ergreifen, um sich gegen unerwünschte Masscan-Scans zu schützen:
✅ Rate-Limiting in der Firewall aktivieren:
sudo iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT
✅ Intrusion Detection Systeme (IDS) nutzen:
- Snort oder Suricata können verdächtige Scan-Muster erkennen und blockieren.
✅ Honeypots einsetzen:
- Dienste wie T-Pot oder Dionaea können Angreifer täuschen und Informationen sammeln.