Route 666
Bei Hacker-Angriffen denkt man normalerweise an direkte Einbrüche in Rechner. Viel kritischer sind jedoch Manipulationen am Routing: Ein Angreifer kann dadurch den Verkehr eines ganzen Unternehmensnetzwerks stören, mitlesen oder gar fälschen.
Wenn zwei Rechner über ein größeres Netzwerk miteinander kommunizieren, wandern die Datenpakete meist über mehrere Zwischenstationen. Das Routing bestimmt dabei, welchen Weg die Pakete nehmen. Es muss sich dynamisch an Veränderungen im Netz anpassen: Geräte kommen hinzu, Verbindungen fallen aus oder sind überlastet und dergleichen mehr. Netzwerkkomponenten wie Switches oder Router kommunizieren daher über verschiedene Protokolle miteinander, um die optimalen Wege untereinander auszuhandeln.
Diese Routing-Protokolle sind ein Angriffspunkt für böswillige Hacker: Durch geschickte Manipulationen können sie den Netzwerkverkehr zum Beispiel umleiten, um ihn abzuhören oder gar zu verfälschen. Das Routing in TCP/IP-Netzen spielt sich vor allem auf zwei Protokoll-Schichten ab: auf dem Link Layer (Schicht 2, zum Beispiel Ethernet) und auf dem Network Layer (Schicht 3, IP).
In beiden Schichten lassen sich Quell- und Zieladressen leicht fälschen. Wenn ein Angreifer also in der Lage ist, Ethernet- beziehungsweise IP-Pakete in ein bestimmtes Netz zu schicken, kann er dort die verschiedenen Routing-Protokolle manipulieren. Auf unterer Ebene wäre hier zunächst das Addres Resolution Protocol (ARP) zu nennen, mit dem ein Gerät anfragt, welche MAC-Adresse zu einer bestimmten IP-Adresse gehört.
Erstaunlicherweise belächelt man zuweilen selbst in Fachkreisen Man-in-the-Middle-Attacken über ARP, obwohl mit ihnen sogar Dienste wie SSH erfolgreich ausehebelt werden können [1, 2]. Hierbei beantwortet ein Angreifer die an alle gesendete Anfrage nach der Ethernet-Adresse eines bestimmten Zielsystems mit seiner eigenen. Dadurch erreicht er, dass die Pakete zwar auf Layer 3 (IP) noch immer an den Empfänger adressiert sind, auf Layer 2 allerdings an ihn selbst. Jetzt muss er die Pakete nur noch an den richtigen Empfänger weiterleiten, nachdem er sie mitprotokolliert oder gar verändert hat. Programme wie Ettercap gehen noch aktiver vor: Sie posaunen unangefragt ARP-Antwortpakete an beliebige Hosts und gaukeln so vor, ein Router zu sein.
Eine ähnliche Angriffsmöglichkeit besteht beim Spanning Tree Protocol (STP). Es dient dazu, in einem Netz mit mehreren Switches zu verhindern, dass ein Ethernet-Frame durch eine Ringverbindung im Netz wieder und wieder dupliziert wird. Die Switches stimmen sich dazu untereinander darüber ab, welche Ports sie nutzen und welche sie blockieren. Hier besteht die Möglichkeit, mit einigen wenigen Layer-2-Paketen den gesamten Inter-Switch-Verkehr über ein System eigener Wahl zu leiten und gegebenenfalls zu verändern. Auch hier sind sich nicht einmal alle Fachleute der Gefahr bewusst oder bezweifeln, dass solche Angriffe in der Praxis überhaupt durchführbar sind [3].
Ein Großteil der tatsächlich vorgenommenen Angriffe auf Netzverkehr wird mit Hilfe von Layer-2-Protokollen durchgeführt. Der Grund ist ein ganz einfacher: Man kann sich kaum bis gar nicht dagegen schützen, denn die Dynamik dieser Protokolle ist ihre Schwäche. Jeder, der schon mal auf einer Konferenz oder Messe ein offenes Netzwerk verwendet hat, kennt das Problem, herauszufinden, ob die MAC-Adresse DE:AD:BE:EF:CA:FE:BA:BE wirklich die des nächsten Routers ist oder eher zum Notebook des schwarz gekleideten jungen Mannes am Nebentisch gehört.
Eine Ebene höher
Eine Ebene höher
Bevor man sich mit den Routing-Protokollen beschäftigt, sollte man dem Internet Control Message Protocol (ICMP) einen Moment Aufmerksamkeit schenken. Entgegen der landläufigen Meinung ist es nicht nur zum Senden und Empfangen von Ping-Paketen geeignet, sondern unterstützt noch eine ganze Reihe von anderen Funktionen. Zwei davon sind hier von besonderem Interesse: Das ICMP Router Discovery Protocol (IRDP) und die ICMP-Redirect-Meldungen.
IRDP wird vor allem zur Unterstützung von manueller IP-Adresskonfiguration verwendet. Endsysteme können Router-Discovery-Meldungen an alle anderen Systeme im Netz senden und bekommen eine Antwort von jedem Router. Dies ermöglicht dem Endsystem, sich ein Standard-Gateway selbst zu suchen. Ist schon ein Standard-Gateway konfiguriert, werden die erhaltenen Meldungen mit einer niedrigeren Priorität in die Routing-Tabelle des Systems eingetragen.
IRDP selbst liefert auch eine eigene Priorität für die entsprechende Route mit -- das so genannte Preference-Feld. Manche Betriebssysteme wie Windows< >98 begehen schon bei diesem einfachen Protokoll den fatalen Fehler, die Priorität nur aus dem empfangenen IRDP-Paket zu ermitteln. Die Priorität einer Route im Betriebssystem hängt von der Metrik ab. Eine geringe Metrik bedeutet eine hohe Priorität und umgekehrt. Windows 98 berechnet die Metrik der durch IRDP gelernten Route mittels
Metrik = 1000-Preference
Da die Preference aber aus dem empfangenen IRDP-Paket stammt und dieses wiederum von so ziemlich jedem Rechner gesendet worden sein kann, ist diese Art der Berechnung nicht zu empfehlen. Ein Angreifer kann so nämlich ohne Probleme das Standard-Gateway für ein Windows-98-System werden, indem er ein IRDP-Paket mit Preference 1000 sendet [4].
Die zweite interessante Funktion von ICMP sind die Redirects. Hiermit kann ein Router eine Meldung an das sendende System schicken und es auf ineffizientes oder geändertes Routing aufmerksam machen. Dies geschieht, indem er den Header des originalen IP-Pakets an die ICMP-Meldung angehängt. Damit weiß das Sendersystem, welche Zieladresse schlecht zu erreichen war, und nimmt einen anderen Router. Natürlich enthält das ICMP-Paket auch den Router, über den das Ziel im Idealfall angesprochen werden sollte.
Wie schon bei IRDP kann auch hier jeder beliebige Rechner im Netzwerk ein solches ICMP-Paket generieren und senden. Auch der Header des ursprünglichen Pakets lässt sich leicht fälschen. Nicht alle Betriebssysteme merken sich, mit welchen Systemen sie kommuniziert haben. Sollte das angegriffene System doch eine solche Liste führen, reicht ein Ping-Paket mit gefälschtem Absender aus, um eine beliebige IP-Adresse in diese Liste hinzuzufügen. Danach kann der Angreifer ohne weiteres ein ICMP-Redirect-Paket hinterher senden.
Routing-Protokolle
Redirects weisen immer nur auf das nächste Gateway. Um also größere Umleitungen zu erzeugen, ist ein Paket pro Router auf dem Weg nötig -- ein geringer Aufwand, wenn man damit die Kommunikation eines entfernten Rechners an sich reißen kann.
Erschreckenderweise finden sich noch heute viele Router im Internet, die ICMP-Redirects annehmen und ihre Routing-Entscheidungen danach richten. Die meisten Provider haben diese Funktionalität allerdings zumindest auf ihren offen zugänglichen Routern eingeschränkt oder abgestellt.
Routing-Protokolle
Bei Routing-Protokollen wird zwischen Interior Gateway Protocols (IGP) und Exterior Gateway Protocols (EGP) unterschieden. Wie die Namen vermuten lassen, sind IGPs Routing-Protokolle, die Informationen beispielsweise innerhalb eines autonomen Systems verbreiten, während EGPs dasselbe zwischen verschiedenen autonomen Systemen tun. Ein autonomes System (AS) bezeichnet in diesem Zusammenhang die Summe aller Router, die sich unter der gleichen administrativen Kontrolle befinden. In der Praxis ist das meist eine Gruppe von Routern, denen dieselben Routing-Informationen zur Verfügung stehen und die sich untereinander über Routing-Protokolle austauschen.
Das erste weit verbreitet eingesetzte Routing-Protokoll war RIP, das Routing Information Protocol. Bis heute findet es in vielen Netzwerken Verwendung, und bei weniger spezialisierten Systemen ist es oft das einzig verfügbare Protokoll zur Verteilung von dynamischen Routing-Informationen, so auch bei Windows NT/2000.
RIP beruht auf dem periodischen Ansagen der eigenen bekannten Routen mit der Zusatzinformation, wie viele Hops es bis zum zu erreichenden Zielrechner sind. Bei RIP Version 1 geschieht dies als Broadcast, bei Version 2 als Multicast. Jeder Rechner in der Broadcast/Multicast-Domain teilt allen anderen mit, welche Router er kennt und wer das nächste Gateway dafür ist. Ansonsten haben RIP 1 und 2 nur wenige Eigenschaften. RIP< >1 kann nur "classful" arbeiten, also mit Class A-, B- oder C-Netzen. Subnetzmasken gibt es nicht.
Ein Angreifer muss bei RIP also nur die von ihm gewünschte Route mit einer geringeren Metrik als alle anderen in das Netzwerk posaunen, und schon fließt der gesamte Verkehr in dieses Netz über seine Schnittstelle. Unix-Administratoren haben fast alle schon einmal einem Kollegen diesen Streich gespielt; zum Glück wird RIP nicht mehr so häufig eingesetzt.
IGRP und EIGRP
IGRP und EIGRP
Das heute sehr verbreitete Enhanced IGRP (EIGRP) ist der Nachfolger des weniger populären Interior Gateway Routing Protocol. IGRP führte mehrere neue Parameter ein. Allen voran kann es zwischen 216 verschiedenen autonomen Systemen unterscheiden, was die logische Trennung von Netzwerken sehr vereinfacht. Des weiteren trifft es Routing-Entscheidungen nicht mehr nur nach der Menge der Hops, sondern auch nach der Paketlaufzeit, Bandbreite, Verfügbarkeit und Auslastung einer Verbindung. Wenn ein Protokoll solche Werte in seine Routing-Entscheidung einbezieht, spricht man von "Link State Routing". Unglücklicherweise ist IGRP eine Cisco-Erfindung und der Algorithmus für die Bewertung dieser Information (DUAL) wurde nicht veröffentlicht, sodass nur Cisco-Router damit umgehen können.
Im Unterschied zu seinem Vorgänger folgt EIGRP einem anderen Konzept, was die teilnehmenden Router angeht. Wer hier mitreden will, muss sich als Nachbar in einem autonomen System einfinden und seine Präsenz den anderen Routern bekannt geben. Weiterhin unterstützt EIGRP eine Authentifizierung mittels eines Passworts und eines MD5-Hash. Da dieses Protokoll aber genau auf Grund seiner einfachen Handhabung so beliebt ist, wird dieses Feature fast nie eingesetzt.
Genau wie RIP arbeitet EIGRP über Multicast - der Angreifer sieht also immer noch, wer welche Informationen sendet, und kann sich darauf einstellen. Selbst wenn ein Angreifer den Verkehr in einem autonomen System nicht mitlesen kann, hat er die Möglichkeit, an die Informationen zu kommen: Er führt wie bei Portscans eine Iteration über alle autonomen Systeme durch und sendet ein HELO-Paket an einen teilnehmenden Router. Antwortet ein Router auf eine Nummer, ist er für die Teilnahme an diesem AS konfiguriert. Tools wie der Autonomous System Scanner [4] finden abhängig von der Netzwerkkonfiguration das AS auch von entfernten Netzen heraus, da Cisco-Router in der IOS-Version 11.x auch EIGRP an Unicast-Adressen akzeptieren.
Die Schwachstellen bleiben die gleichen wie schon bei ICMP-Redirects. Der Angreifer verändert die Pfade, auf denen die Pakete durch das Netz geschleust werden. Dabei muss er die falschen Informationen bei einem EIGRP- oder RIP-Netzwerk nur ein- oder zweimal in der Minute senden, und das auch nur zu den nächsten Routern. Diese sorgen dann dafür, dass die Information im gesamten Netzwerk verbreitet wird.
Erschreckenderweise sind globale EIGRP-Netzwerke durchaus verbreitet. Viele Unternehmen haben historisch gewachsene, weltweite Infrastrukturen. Wenn ein Mitarbeiter in Asien auf die Idee kommt, ein paar EIGRP-Pakete an seinen lokalen Router zu senden, kann er damit womöglich das gesamte Netzwerk weltweit schädigen.
EIGRP wurde entwickelt, um die Zeit zum Erreichen so genannter Konvergenz zu minimieren. Das ist der Zustand, in dem alle Router im Netzwerk über die besten Routen einer Meinung sind. Trotzdem braucht es bei einem globalen oder auch nur nationalen Netz eine gewisse Zeit, bis sich alle Router untereinander abgeglichen haben und das Netz eingeschwungen ist. Währenddessen sind einige Router auf dem neuen, andere auf dem alten Stand und es entstehen schnell so genannte Routing-Loops, bei denen Pakete von einem zum anderen Router hin und her gesendet werden, da beide der Meinung sind, der andere ist zuständig.
Genau das Zeitfenster bis zum Erreichen der Konvergenz kann ein Angreifer leicht ausnutzen, um ein komplettes Netzwerk abzuschalten. Dazu muss er in diesem Zeitfenster lediglich weitere, einander widersprechende Routing-Informationen senden. Dadurch erreicht er, dass das gesamte Netzwerk nur noch mit der Neuberechnung von Routen beschäftigt ist und Pakete auf dem Weg von A nach B wahllos ihre Richtung ändern. Besonders schlimm ist dieses Szenario, wenn die Routen aus einem automonem System gemäß EIGRP in andere Routing-Protokolle wie OSPF oder BGP4 weiterverteilt werden.
Open Shortest Path First (OSPF) ist ein weiteres IGP, bei dem das Konzept der autonomen Systeme durch eine hierarchische Struktur von so genannten Areas verbessert wurde. Eine Area enthält mehrere Router, die sich via OSPF an die gleiche Datenbank über Routing-Informationen halten. Es kann in einem OSPF-Netz bis zu 232 verschiedene Areas geben. Area 0 ist dabei die Backbone Area, das Herzstück der gesamten Hierarchie.
OSPF wird mit einem endlichen Zustandsautomaten auf Routern implementiert. Ein neuer Nachbar muss zuerst den entsprechenden Zustand erreichen, bevor er bei den Routing-Informationen mitreden darf. Des Weiteren gibt das Vorhandensein aller Routing-Informationen auf allen Routern einer Area eine gewisse Sicherheit gegen Falschinformationen. Zusätzlich unterstützt OSPF standardmäßig eine Authentifizierung mittels Klartextpasswort oder MD5-Hash. Im Unterschied zu EIGRP wird OSPF-Authetifizierung in Netzwerken häufiger eingesetzt.
Ein Angreifer kann in der Theorie genauso vorgehen wie bei RIP und EIGRP. Da er sich hierfür zumindest in der OSPF-Multicast-Domain befinden muss, stellt ein Klartextpasswort keinen besonderen Schutz dar -- der Angreifer kann es einfach aus den herumgesendeten Paketen auslesen. Ansonseten muss er sich, wie schon bei EIGRP, den anderen Routern anschließen. Im Unterschied zu anderen Routing-Protokollen ist es hier aber schwieriger, existierende Routen durch niederigere Metrik zu überlagern. Sind die anderen Router in der Area nicht derselben Meinung, so werden die falschen Routing-Informationen auch schon mal kollektiv angezweifelt und damit verworfen. Neue Routen hinzuzufügen, ist allerdings kein Problem.
Die Komplexität von OSPF in größeren Netzten ist zuweilen ein guter Schutz vor weniger talentierten Angreifern. Auf der anderen Seite hat dieselbe Komplexität auch oft schlecht konfigurierte OSPF-Netze zur Folge, sodass es dem Angreifer leichter gemacht wird. Dies ist zum Beispiel der Fall, wenn alle OSPF-Router in einer großen Area vereint sind [5].
Öffentliche Informationen
Öffentliche Informationen
Fast alle Routing-Protokolle lassen sich sehr einfach identifizieren, selbst wenn sich der Angreifer nicht dirkt im anzugreifenden Netz befindet. RIP kann man einfach durch einen UDP-Portscan auf Port 520 finden. Ist dieser Port offen, nimmt das System wahrscheinlich Routing-Informationen via RIP 1 oder 2 an. Die meisten anderen Protokolle, mit Ausnahme von BGP4, werden über eigene IP-Protokolltypen transportiert. IGRP hat Protokolltyp 9, EIGRP 88 und OFPS 89.
IP-Protokolle kann man mit Hilfe der nmap-Option -sO herausfinden. Da es nur 256 verschiedene Protokolle gibt, dauert ein solcher Scan auch nicht allzu lange. Wenn nmap alle 256 Protokolle als offen anzeigt, so liegt das an der Natur des Negativ-Scans. nmap versucht für jedes Protokoll die ICMP-Meldung "protocol not supported" zu erhalten. Sendet der Router keine ICMP-Pakete, kann man die unterstützen Protokolle nicht identifizieren.
Bei Routing-Protokollen mit autonomen Systemen muss der Angreifer außerdem noch das AS herausfinden. Dies kann er innerhalb der Multicast-Domain passiv oder aktiv von außerhalb tun. Der Autonomous System Scanner [4] bietet eine entsprechende Funktion.
Um tatsächlich eine neue Route in ein Netzwerk einzuschleusen, ist das Verständnis des Aufbaues notwendig. Schnell hat man eine falsche Route gesendet und verursacht einen schweren Ausfall im gesamten Netz. Auch ist nicht zu empfehlen, zu allgemeine Routen zu verwenden. Je mehr Systeme theoretisch über diese Route erreicht werden können, desto geringer ist die Chance, dass sie Verwendung findet. Router wählen im Zweifel fast immer die Route mit der größten Netzmaske (closest match). Außerdem muss der Angreifer ja sonst viel mehr Verkehr bearbeiten als gewollt.
Ist das Einschleusen einer Route geglückt, muss der Angreifer sicherstellen, dass diese Information auch bei den anderen Routern erhalten bleibt. Entsprechend dem angegriffenen Protokoll muss er dazu die Informationen weiterhin periodisch senden oder zumindest die Existenz dem Nachbarn anzeigen.
Populationsproblem
Ein Spezialfall von Routing-Protokoll-Angriffen ist das Problem der Nachbarerkennung. Sowohl IGRP als auch EIGRP und OSPF erkennen an Multicast-Paketen einen neuen Router, den sie als Nachbar betrachten sollen. Kein Standard dieser Protokolle erwähnt eine Regelung zu Obergrenzen bezüglich der Menge der Nachbarrouter.
Ein Angreifer kann die meisten Router durch ein einfaches Übervölkern mit Nachbarn in die Knie zwingen oder gar zum Absturz bringen. Dazu braucht er nur HELO-Pakete für das entsprechende Protokoll und AS mit zufällig gewählten Absenderadressen aus demselben Netz an die Multicast-Adresse zu senden. Da die Router Tabellen über ihre bekannten Nachbarn führen müssen, laufen diese über oder werden so groß, dass das System viel CPU-Leistung verbraucht, um Einträge zu finden und alte Einträge zu löschen. Selbst wenn das schnelle Füllen der Tabellen nicht zu einem Buffer Overflow und damit zu einem sofortigen Crash führt [7], kann ein konstantes Senden von HELO-Paketen mit einem einzigen PC im Netz die verfügbare CPU-Leistung der Router permanent binden und ein Arbeiten im Netz unmöglich machen.
Angriffe abwehren
Das Verhindern von Angriffen auf eine Routing-Infrastruktur ist zuweilen recht aufwendig. Wird zum Beispiel ein MD5-Hash zur Authentifizierung von Routing-Informationen verwendet, so müssen alle Router denselben Schlüssel haben, um an der Kommunikation teilnehmen zu können. Wird ein Router und damit sein Schlüssel kompromittiert, muss der Schlüssel überall getauscht werden. Gleichzeitig soll die Stabilität des Netzes nicht leiden. Es ist schon häufig vorgekommen, dass ungeplantes Umstellen auf MD5 ein OSPF-Netz vollständig durcheinandergebracht hat, da die Hälfte der Router MD5 sprachen und die andere Hälfte nicht.
Am besten und einfachsten zu implementieren ist hier eine Perimeter Security: Auf den äußeren Schnittstellen der Router werden Filter für die verwendeten Routing-Protokolle eingesetzt. Bei OSPF oder EIGRP kann man mit einem einfachen IP-Protokolltyp-Filter alle Pakete dieser Art von außen verwerfen. Auch innerhalb eines Unternehmensnetzwerkes kann ein solcher Filtermechanismus auf den Switches und Routern eingesetzt werden, an denen sich die Arbeitsstationen der Mitarbeiter befinden.
Einige Hersteller unterstützen auch das feste Einstellen von zu erwartenden Nachbar-Routern über IP-Adressen. Obwohl ein Angreifer noch immer die Absenderadresse eines der konfigurierten Geräte verwenden kann, ist auch diese Maßnahme zu empfehlen. Sie kostet nahezu keine CPU-Zeit und der Angreifer hat ein schwereres Leben, da Techniken wie das AS-Scanning nicht mehr funktionieren.
Fazit
Flexible Netzwerke benötigen eine dynamische Anpassung der Routing-Pfade. Dies trifft auf Unternehmensnetze genauso zu wie auf das Internet. Aufgrund der großen Menge an benötigten Routern für ein Netzwerk wird das dynamische Routing oft so einfach wie nur möglich gehalten, um den Aufwand für Wartung und Pflege zu minimieren. Sogar einige große Internet Service Provider verwenden einfach zu handhabende Protokolle wie EIGRP in ihren eigenen Netzen. Diese gewollte Simplifikation macht auch das Leben für Angreifer einfacher, da sie mit etwas Erfahrung in TCP/IP und einer Routing-Software [6] auf dem eigenen System die Datenflüsse in nahezu beliebiger Art umleiten können. Glücklicherweise wird für einen erfolgreichen Angriff noch immer einiges an Information aus dem angegriffenen Netzwerk benötigt, sodass Script-Kiddies diese Spielwiese bislang nicht entdeckt und ausgenutzt haben. Die meisten heutigen Unternehmensnetze und Teile des Internet stehen jedenfalls auf einer sehr wackligen Basis, und es dürfte nur eine Frage der Zeit und Motivation sein, bis eines dieser großen Netzwerke durch ein paar IP-Pakete zum Einsturz gebracht wird.
Literatur
Literatur
[1] Ettercap: http://ettercap.sourceforge.net [1]
[2] SSH for Fun and Profit, Sebastian Krahmer, July 2002, http://stealth.7350.org/SSH/ssharp.pdf [2]
[3] STP-Schwächen: http://archives.neohapsis.com/archives/vuln-dev/2002-q2/0143.html [3] und http://archives.neohapsis.com/archives/vuln-dev/2002-q2/0316.html [4]
[4] IRPAS, www.phenoelit.de/irpas [5]
[5] OSPF Design Guide: www.cisco.com/warp/public/104/1.html [6]
[6] GNU Routing Software: www.zebra.org [7]
[7] Cisco OSPF Overflow: www.phenoelit.de/ultimaratio/OoopSPF.c [8] (pab)
URL dieses Artikels:
https://www.heise.de/-270428
Links in diesem Artikel:
[1] http://ettercap.sourceforge.net/
[2] http://stealth.7350.org/SSH/ssharp.pdf
[3] http://archives.neohapsis.com/archives/vuln-dev/2002-q2/0143.html
[4] http://archives.neohapsis.com/archives/vuln-dev/2002-q2/0316.html
[5] http://www.phenoelit.de/irpas
[6] http://www.cisco.com/warp/public/104/1.html
[7] http://www.zebra.org/
[8] http://www.phenoelit.de/ultimaratio/OoopSPF.c
Copyright © 2004 Heise Medien