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.

Network-Scanning-Overview