|
Mit Hilfe unschuldig wirkender Ping-Pakete lassen sich auch gut abgeschottete Firewalls ’tunneln’.
Vertrauliche Informationen können nach außen gelangen oder Befehle ins Innere des geschützten LANs
geschmuggelt werden.
|
Ping-Pakete kamen in der letzten Zeit vor allem durch den sogenannten ’Ping of Death’ ins Gespräch. Da bei brachten überdimensionierte ICMP-Pakete den TCP/IP-Stack von Windows-Benutzern so durcheinander, daß im Extremfall der gesamte Rechner abstürzte.
Weitgehend unbekannt ist jedoch, daß man die scheinbar harmlosen Kontrollmeldungen auch benutzen kann, um Firewalls auszutricksen. Dabei macht sich ein Hacker die Tatsache zunutze, daß die meisten Firewall-Konfigurationen Ping-Requests und deren Antworten ungehindert passieren lassen.
Das Internet Control Message Protocol (ICMP) ist auf derselben Ebene angesiedelt wie das Internet Protocol (IP) und dient hauptsächlich dem Austausch von Status- und Fehlermeldungen. Es ist ein verbindungsloses Protokoll, dessen Pakete – analog zu TCP und UDP – in IP-Datagramme gekapselt sind.
Bekanntestes Beispiel ist das Programm Ping. Es sendet Pakete von Typ ’Echo Request’ (0x0) an den Zielrechner. Ist dieser in Betrieb (beziehungsweise genauer: funktioniert sein IP-Stack), antwortet er seinerseits mit einem ICMP-Paket ’Echo Repliy (0x8), Der dazu erforderliche Ping-Server ist Teil des IP-Stacks und befindet sich damit im Betriebssystemkern. Für den Netwerkverwalter ist Ping ein unverzichtbares Tool, mit dem er zum Beispiel schnell überprüfen kann, ob ein bestimmter Host erreichbar oder ob das neu eingerichtete Netzwerk-Interface richtig konfiguriert ist. Doch auch für Verbindungen, die das lokale Netz verlassen, leistet Ping nützliche Dienste. Dauert etwa der Aufbau verdächtig lang, verrät ein kurzer Ping und die zurückgelieferte Antwortzeit, ob es überhaupt sinnvoll ist, länger zu warten. Deshalb lassen die meisten Firewalls zumindest ausgehende ’Echo Requests’ und die eintreffenden Antworten passieren.
Weniger bekannte ICMP-Typen sind etwa ’Destination unreachable’ oder ’Redirect’-Meldungen, mit denen sich allerhand Unsinn treiben läßt. Bestimmte ICMP-Meldungen enthalten neben den in der
Grafik aufgeführten Header-Feldern optional eine sogenannte Payload. Bei der Ping-Option ’Record Route’ – die allerdings fast nie implementiert ist – werden hier die einzelnen Stationen auf dem Weg festgehalten. Im Normalfall enthält das Datenfeld die notwendigen Timing-Informationen, um die Zeit für einen ’Round-Trip’ zu ermitteln.
Diesen Datenbereich werten nur wenige Firewalls aus; und selbst wenn sie es tun, ist es nahezu unmöglich, die bestimmungsgemäße Verwendung zu überprüfen. Beim ICMP-Tunneling wird das Datenfeld genutzt, um Informationen zwischen zwei Rechnern auszutauschen. So kann ein ’Echo Reply’ beispielsweise einen Befehl enthalten. Auf dem Zielsystem muß ein entsprechender Server installiert sein, der vom System die Ping-Pakete erhält. Er entpackt den Befehl, führt ihn aus und liefert das Ergebnis im Datenbereich der ’Echo Replies’ zurück. Dazu muß der Benutzer auf beiden beteiligten Rechnern über Systemverwalter-Rechte verfügen.
ICMP-Tunneling ist keine Technik, die es Angreifern ermöglicht, in einen Rechner oder ein Netz einzubrechen. Trotzdem kann es eine enorme Bedrohung für das Sicherheitskonzept eines Netzwerks darstellen. So ist ein entsprechend modifizierter ICMP-Server ein geradezu idealer Hintereingang, um nach einem erfolgreichen Einbruch – oder etwa nach einer Kündigung – den weiteren Zugang zu einem Rechner sicherzustellen.
Mit den notwendigen Rechten ausgestattet, ist es ein Kinderspiel, einen entsprechenden Server zu installieren. Danach muß man dem Rechner nur noch ICMP-Pakete zustellen können, um darauf beliebige Befehle auszuführen. Wenn der Eindringling über ausreichende Kenntnisse verfügt, könnte er sogar den Server-Code in den Kernel integrieren oder als Modul zu diesem hinzuladen. Damit ist der Hintereingang praktisch nicht mehr zu entdecken. Herkömmliche Port-Scans zeigen keine ungewöhnliche Reaktion, und es laufen auch keine zusätzlichen Programme auf dem Rechner. Allein die Tatsache, daß der präparierte Rechner auf Ping-Pakete antwortet, ruft in der Regel noch kein Mißtrauen hervor.
Ein zweites Mißbrauchs-Szenario betrifft Netze, in denen vertrauliche Daten gespeichert sind, die auf keinen Fall nach außen gelangen dürfen. Können die Rechner ICMP-Pakete nach außen versenden, braucht ein eventueller Spion nur einen externen Rechner mit installiertem ICMP-Server, um beliebige Informationen aus dem abgeschotteten Bereich hinauszubefördern. Durch zusätzliche Verschlüsselung kann er auch die von einigen Firewalls durchgeführte Suche nach sicherheitsrelevanten Begriffen umgehen. Der grundsätzliche Mechanismus ist nicht auf ICMP Pakete beschränkt. Genauso gut können beispielsweise UDP-Pakete auf Port 53 zum Einsatz kommen, und damit eien anfrage bei einem Name-Server vortäuschen.
Daß ICMP-Tunneling kein akademisches Problem mehr ist, beweist eine Beispiel-Implementierung, die seit kurzem im Internet verfügbar ist [
1]. Sie läuft unter anderem auf Linux, Solaris und verschiedenen BSD-Varianten. Das heißt aber keinesfalls, daß andere Plattformen davor sicher wären. Programmierer mit entsprechender Erfahrung könnten sie sicherlich auch auf Windows portieren.
Lösung: Ping verbieten
ICMP-Tunneling zeigt einmal mehr, daß jede Netzwerkverbindung mit Gefahren verbunden ist. Existiert ein physikalische Verbindung zwischen einem Rechner und der Außenwelt, gibt es immer Möglichkeiten, diese zu mißbrauchen.Insbesondere Pakete, die aus unbekannten Quellen stammen und ins lokale Netz gelangen können, stellen immer ein Risiko dar. Mehr Schutz bieten – wie man an diesem Beispiel sieht – Application-Proxies, die auf dem Firewall installiert sind, und das jeweilige Protokoll ’verstehen’. Sie nehmen von außen stammende Pakete entgegen, werten sie aus, und erzeugen bei Bedarf selbst entsprechende Pakete, die nach innen versendet werden.
So böte ein Ping-Proxy wirkungsvollen Schutz gegen den Mißbrauch von ICMP. Er nimmt ICMP-Pakete entgegen und bestimmt den rechtmäßigen Empfänger. Anschließend sendet er eigene Pings und generiert aus der Antwort die korrekten ’Echo Replies’. Füllt er das Datenfeld mit den selbst generierten Timing-Informationen, wäre sichergestellt, daß keine unerwünschten Informationen über den Firewall gehen. Leider existiert meines Wissens bisher kein derartiger Dienst.
Daher bietet derzeit nur ein äußerst restriktives Sicherheitskonzept effektiven Schutz gegen verdeckte Kanäle durch den Firewall. Am einfachsten verbietet der Administrator ICMP-Verkehr zu und von allen Hosts des lokalen Netzes. Aber auch alle anderen Dienste, wie etwa DNS, sollten dann nur über entsprechende Proxies gestattet sein.
Will man den internen Benutzern das ’Pingen’ nicht verwehren, sollten die Filterregeln zumindest nach ICMP-Diensten unterscheiden. ICMP ’Echo Requests’ nach außen und ’Echo Replies’ nach innen sind dann die einzigen ’legitimen’ Kontrollmeldungen.
Gegen - eventuell unangeforderte - präparierte Antworten von externen Rechnern schützt man sich am besten durch eine Adreßübersetzung (IP-Masquerading). So erkennt der Firewall anhand seiner Übersetzungstabellen sofort, daß derzeit keine Anforderung aussteht und kann die Pakete protokollieren und verwerfen. Gegen einen präparierten Rechner im LAN, der beispielsweise jeden Montag um 21:32 Uhr den Rechner badhost.evil.com anpingt und damit seine Bereitschaft bekundet, Befehle seines Meisters entgegenzunehmen, hilft das nur wenig. Sicherheit ist eben immer ein Kompromiß zwischen Funktionalität und Verbot.
ICMP-Pakete können auch ein variables Datenfeld enthalten.
|
0 |
7 |
8 |
15 |
16 |
31 |
|
type (0 or 8) |
code (0) |
checksum |
8Bytes |
identifier |
sequence number |
optional data |
|
(ju) - c't 1997, Heft 11
Literatur
[1] Beispiel-Implementierung von ICMP-Tunneling: http:// www.phrack.com/phrack51.tar.gz