Ping – lautloser Datenabfluss durch die Firewall

Wie ein einfaches Netzwerkdiagnose-Verfahren zur Spionage missbraucht werden kann

Ping ist wohl das Netzwerkdiagnosetool, das am häufigsten Verwendung findet, wenn Administratoren nach Fehlern in einer Netzwerkkonfiguration suchen. Erfunden 1983 von Mike Muuss gibt es Portierungen auf nahezu alle Betriebssysteme. Selbst in Hardware wie Routern oder Firewalls ist der Ping-Befehl in der Regel verbaut und über eine SSH-Shell zugänglich.

Ping arbeitet mit sog. ICMP Echo Requests. Diese Pakete enthalten neben einer Typ-Bezeichnung, Code und Prüfsumme ein Datenfeld. Dieses Datenfeld wird je nach Ping-Implementierung unterschiedlich benutzt: Windows etwa füllt es mit dem Alphabet auf, wobei die Buchstaben x-z weggelassen werden.

Darstellung ICMP-Paket des Windows-Befehls ping 8.8.8.8
Mit Wireshark aufgezeichnetes ICMP-Paket des Windows-Befehls:
ping 8.8.8.8, der Datenanteil beträgt 32 Bytes

Vergrößert man das Datenfeld mittels des Parameters „-l 128“, so setzt sich das Alphabet-Muster fort:

Darstellung eines ICMP-Ping-Paketes mit 128 Byte Daten
Ein Ping mit 128 Byte Daten

Wireshark aufgezeichnete Datenpaket kann man nun – nach dem Stoppen der Aufzeichnung über den Menüpunkt „Aufzeichnen/Stoppen“ – über „Datei/Speichern als“ als „Ping.pcapng“ speichern.

Dieses Paket lässt sich bearbeiten, z. B. mit der Freeware „Colasoft Packet Builder. Über File/Import importiert man das aus Wireshark gespeicherte Paket. Sollten Sie versehentlich mehrere Pakete aufgezeichnet haben, können sie diese im Packet Builder wieder entfernen, so dass nur noch das erste Paket des Ping-Befehls übrig bleibt.

Anzeige des Programmes Colasoft Packet Builder
Der Colasoft Packet Builder im Einsatz. Auf der rechten Seite sieht man die importierten Pakete. Für unseren Test genügt das erste Datenpaket, der Rest kann gelöscht werden.

Auf der linken Hälfte des Packet Builders wird nun im unteren Teil das Datenfeld manipuliert. Praktischerweise berechnet die Software die notwendige Prüfsumme automatisch, so dass das Paket nach der Manipulation gleich versandt werden kann.

Ein ICMP-Paket mit manipuliertem Datenanteil
Das Datenpaket nach der Manipulation. Das Feld „Checksum“ berechnet der Packet Builder automatisch neu.

Das so geänderte Paket kann jetzt über die Schaltfläche „Send“ abgeschickt werden. Ist Ping bzw. ICMP in der Firewall oder dem Router generell geöffnet, wird das Paket wahrscheinlich ohne Probleme das Netzwerk verlassen

Türen auf für die Spionage-Malware

Für Computerschädlinge, die zum Abgreifen von Daten konstruiert wurden, ist es ein leichtes, diese Lücke zum unauffälligen Transfer von Daten auszunutzen. Die Malware könnte dabei sehr vorsichtig vorgehen:

Zunächst könnte durch einen Ping auf ein bekanntes Ziel (z. B. 8.8.8.8) getestet werden, dass ICMP-Pakete die Firewall durchqueren können. War dieser Schritt erfolgreich, könnte ein weiteres (nicht manipuliertes) ICMP-Paket an den „bösen“ Datenempfangsserver geschickt werden. Damit ist sichergestellt, dass ein Administrator ICMP-Pakete nicht auf bestimmte Ziele limitiert hat. Gelingt auch dieser Versuch, können jetzt ICMP-Pakete mit geheimen Daten ausgeleitet werden. Der Zielserver setzt die Informationen dann wieder zu Dateien zusammen und in der Unternehmensfirewall tauchen lediglich ICMP/Ping-Einträge auf, die zunächst einmal unauffällig wirken.

Neben einem Datenabfluss können natürlich auch andere Protokoll über ICMP getunnelt werden. Implementierungen dazu gibt es bereits seit Jahren.

Gegenmaßnahmen

Durch die aufgezählten Möglichkeiten sollte deutlich geworden sein, dass ein Firewall-Administrator die Durchlässigkeit für ICMP-Pakete auf das notwendige Maß zu beschränken hat. Muss wirklich jedes Gerät ins Internet pingen? Netzwerk-Überwachungstools oder Admin-Workstations ja, aber muss dafür auch der interne Fileserver zugelassen sein? Eine Beschränkung über Firewall-Regeln bringt bereits eine deutliche Risikominimierung.

Malware, die professionell ICMP als Datenabfluss-Kanal nutzt, wird die zeitliche Abfolge der Paket so justieren, dass Intrusion Detection/Prevention Systeme nicht Alarm schlagen.

Für die Erkennung wirksamer wäre es, wenn die Perimeter-Firewall im Datenanteil des ICMP-Paketes nach Ungereimtheiten suchte. Windows-Geräte pingen einen wiederkehrenden „abcd“-Datenteil. Dieser ist freilich nicht normiert; manche Implementierung füllen den Datenteil gar mit „totem Fleisch“1:

Quellcode des Programms Rawping
Quellcode-Auszug aus https://tangentsoft.net/wskfaq/examples/rawping.html

Um eine Abweichung vom Standard-Ping zu erkennen, müsste ein Firewallhersteller zunächst eine Musterdatenbank sämtlicher bekannter Ping-Implementierungen aufbauen. Dann wäre eine Erkennung ein Leichtes: Enthält das Datenpaket nicht ein bekanntes Muster, ist das Paket verdächtig und sollte blockiert werden. Ein Test des Autors bei einem namhaften Hersteller hat gezeigt: Soweit sind die Hersteller beileibe noch nicht. Es bleibt für den Firewall-Admin damit nur die Möglichkeit, jedem ICMP-Paket ein gesundes Misstrauen entgegen zu bringen.