Fortgeschrittene Firewall-Umgehung mit Paketfragmentierung
In diesem Schritt werden wir eine fortschrittlichere Technik zur Umgehung von Firewalls erkunden, die als Paketfragmentierung (packet fragmentation) bezeichnet wird. Bevor wir tiefer in das Thema eintauchen, verstehen wir zunächst, was Paketfragmentierung ist. Wenn Daten über ein Netzwerk gesendet werden, werden sie in kleinere Einheiten aufgeteilt, die als Pakete bezeichnet werden. Einige Firewalls und Intrusion Detection Systems (IDS) sind so konzipiert, dass sie diese Pakete auf Anzeichen von bösartiger Aktivität untersuchen. Allerdings können diese Sicherheitssysteme Schwierigkeiten haben, fragmentierte Pakete zu verarbeiten, also Pakete, die in noch kleinere Teile aufgeteilt wurden. Diese Schwierigkeiten können uns die Möglichkeit geben, bestimmte Sicherheitsmaßnahmen während unserer Scans zu umgehen.
Wir werden weiterhin unseren lokalen HTTP-Server als Ziel für unseren Scan verwenden. Zunächst müssen wir im Terminal in das entsprechende Verzeichnis wechseln, in dem wir unseren vorherigen Scan durchgeführt haben. In diesem Verzeichnis befinden sich unsere Projekt-Dateien, und es ist wichtig, sich in diesem Verzeichnis zu befinden, damit unsere Befehle korrekt funktionieren. Dazu führen wir den folgenden Befehl aus:
cd /home/labex/project
Jetzt, da wir im richtigen Verzeichnis sind, sind wir bereit, einen Scan mit Nmap's Fragmentierungsoption durchzuführen. Diese Option teilt die IP-Pakete in kleinere Fragmente auf, wodurch es für Paketfilter schwieriger wird, unseren Scan zu erkennen. Hier ist der Befehl, den wir verwenden werden:
sudo nmap -f -Pn --reason -p 8000 localhost
Lassen Sie uns die zusätzliche Option -f in diesem Befehl aufschlüsseln. Die Option -f teilt Nmap mit, die IP-Pakete zu fragmentieren. Dadurch wird es für Paketfilter schwieriger, die Pakete zu analysieren und zu erkennen, dass wir einen Scan durchführen.
Nachdem Sie den Befehl ausgeführt haben, sollten Sie eine Ausgabe ähnlich der folgenden sehen:
Starting Nmap 7.80 ( https://nmap.org ) at 2025-03-18 16:46 CST
Nmap scan report for localhost (127.0.0.1)
Host is up, received user-set (0.000062s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE REASON
8000/tcp open http-alt syn-ack ttl 64
Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds
Diese Ausgabe zeigt uns die Ergebnisse unseres Scans. Sie sagt uns, dass der Host (localhost) erreichbar ist und dass Port 8000 geöffnet ist.
Als Nächstes möchten wir diese Ergebnisse in einer separaten Datei speichern. So können wir später auf sie zurückgreifen und sie mit anderen Scanergebnissen vergleichen. Um die Ergebnisse zu speichern, führen wir den folgenden Befehl aus:
sudo nmap -f -Pn --reason -p 8000 localhost > /home/labex/project/nmap_frag_scan.txt
Das Symbol > in diesem Befehl leitet die Ausgabe des Nmap-Scans in die angegebene Datei um.
Jetzt überprüfen wir den Inhalt dieser Datei, um sicherzustellen, dass die Ergebnisse korrekt gespeichert wurden. Wir verwenden den Befehl cat, der zum Anzeigen des Inhalts einer Datei verwendet wird:
cat /home/labex/project/nmap_frag_scan.txt
Die Scanergebnisse können ähnlich wie bei unserem vorherigen Scan aussehen, aber die zugrunde liegende Technik ist unterschiedlich. In diesem Fall hat Nmap die IP-Pakete in kleinere Teile aufgeteilt, was es für zustandslose Paketfilter schwieriger macht, den Scan zu erkennen.
Vergleichen wir die beiden Scan-Methoden, die wir bisher verwendet haben: den regulären Scan und den fragmentierten Scan. Wir erstellen eine neue Datei, um diesen Vergleich zu speichern. Hier sind die Befehle dazu:
echo "Comparing regular scan vs. fragmented scan:" > /home/labex/project/scan_comparison.txt
echo "---------------------------------------------" >> /home/labex/project/scan_comparison.txt
echo "" >> /home/labex/project/scan_comparison.txt
echo "1. Regular scan with -Pn:" >> /home/labex/project/scan_comparison.txt
cat /home/labex/project/nmap_scan.txt >> /home/labex/project/scan_comparison.txt
echo "" >> /home/labex/project/scan_comparison.txt
echo "2. Fragmented scan with -f -Pn:" >> /home/labex/project/scan_comparison.txt
cat /home/labex/project/nmap_frag_scan.txt >> /home/labex/project/scan_comparison.txt
Diese Befehle schreiben zunächst einen Header in die Vergleichsdatei und fügen dann die Ergebnisse des regulären Scans und des fragmentierten Scans zur Datei hinzu.
Jetzt untersuchen wir unseren Vergleich, indem wir den Inhalt der Vergleichsdatei anzeigen:
cat /home/labex/project/scan_comparison.txt
In unserer kontrollierten Umgebung können die Ergebnisse der beiden Scans ähnlich aussehen. In realen Szenarien können diese verschiedenen Techniken jedoch unterschiedliche Erfolgsraten bei verschiedenen Firewall-Konfigurationen haben. Die Paketfragmentierung (-f) ist besonders effektiv gegen zustandslose Paketfilter. Zustandslose Paketfilter untersuchen jedes Paket unabhängig voneinander und können die Fragmente oft nicht wieder zusammenfügen, um das vollständige Paket zu untersuchen. Dies gibt unserem fragmentierten Scan eine bessere Chance, diese Filter zu umgehen.
Für noch mehr Fragmentierung ermöglicht es Nmap, die Stufe zu erhöhen, indem Sie mehrere -f-Flags verwenden (z.B. -ff) oder indem Sie mit der Option --mtu eine benutzerdefinierte Maximum Transmission Unit (MTU)-Größe angeben. Die MTU ist die größte Größe eines Pakets, das über ein Netzwerk übertragen werden kann. Indem Sie eine benutzerdefinierte MTU angeben, können Sie steuern, wie die Pakete fragmentiert werden.
Diese Technik zeigt, wie die Paketfragmentierung als zusätzliche Methode zur Umgehung der Firewall-Erkennung bei der Durchführung von Sicherheitsbewertungen verwendet werden kann.