Wie funktioniert ARP-Spoofing?von Steve Graegert

June 14th, 2003 Permalink

ARP-Spoofing ist eine einfache, aber effektive Art, Verbindungen in Netzwerken zu belauschen, umzuleiten, zu übernehmen oder zu verweigern, was eine Denial-of-Service-Attacke (DoS) entspricht. Das geht deshalb recht einfach, weil der Angreifer als Proxy auftritt und nicht blind ist, wie beim verwandten IP Spoofing.

Kurze ARP-Schule

Das Address Resolution Protocol (ARP) übersetzt IP-Adressen in MAC-Adressen des jeweiligen zugrundeliegenden Übertragungssystems, beispielsweise Ethernet, EtherTalk, FDDI, etc. ARP wird dem TCP/IP-Protokollstapel zugeordnet und arbeitet aber nur auf Schicht 2 (Datalink Layer) und 3 (Network Layer). Das Verfahren ist vergleichbar mit DNS, mit dem Unterschied, das für die umgekehrte Richtung (MAC-Adressen in IP-Adressen umwandeln) RARP (Reverse ARP) verwendet wird. Folgende Abbildung zeigt die Funktionsweise des Protokolls:

Funktionsweise des ARP-Protokolls

Funktionsweise des ARP-Protokolls

Gehen wir die Schritte einmal durch:

  1. Eine Applikation, hier der FTP-Client ruft die Bibliotheksfunktion gethostbyname(3) (zumindest unter UNIX) auf, damit der Name des Zielhosts myhost in seine IP-Adresse aufgelöst werden kann. Diese Funktion wird gemeinhin auch als Resolver bezeichnet. Die Auflösung geschieht entweder über das Domain Name System (DNS) oder über die Hostdatei /etc/hosts mit ihren statischen Einträgen.
  2. Der FTP-Client kann nun sein TCP beauftragen, eine Verbindung zu dem Host mit der entsprechenden IP-Adresse aufzubauen.
  3. Das TCP sendet nun ein SYN, das in einem IP-Datagram gekapselt ist, an den Remote-Host.
  4. Befindet sich der Zielhost im lokalen Netzwerk, kann das Datagram direkt zugestellt werden, andernfalls muß die IP-Adresse des nächsten Routers (next-hop router) ermittelt werden, der dann das IP-Datagram weiterleitet. Diesen Vorgang übernimmt die Routing-Funktion des Internet Protokolls. In jedem Fall muß das Datagram einem Host oder Router zugestellt werden.
  5. Wenn wir Ethernet zur Grundlage unserer Diskussion machen, so muß der Sender die Ziel-IP-Adresse in eine 48-bit MAC-Adresse umwandeln, damit das Mapping einer logischen Adresse (IP) in eine physische Adresse (MAC) möglich wird. Hier kommt ARP ins Spiel.
  6. Via Broadcasting sendet ARP einen sog. ARP Request an alle Hosts in der Broadcast-Domäne. Es antwortet aber nur der Host, dessen Hostname myhost lautet und sendet einen ARP Reply an den Sender zurück. Ein ARP Request wird etwa so interpretiert: Wenn Du den Hostnamen myhost hast, antworte mit deiner Hardware-Adresse.
  7. Einer der Hosts in der Broadcast-Domäne empfängt den ARP Request und erkennt, daß die Anfrage auf ihn zutrifft. Der ARP-Layer antwortet mit einem ARP Reply, der seine IP-Adresse und die Hardware-Adresse enthält.
  8. Das ARP Reply wird nun vom Sender empfangen und das eigentliche IP-Datagram, daß für die Anwendung von ARP verantwortlich war, kann nun an das Ziel übermittelt werden.
  9. Das IP-Datagram wird nun über die Netzwerkkarte and das Ziel gesendet.

Die meisten Systeme verwalten eine ARP-Tabelle (ARP Cache), die statische und dynamische Einträge für das Mapping von IP- und MAC-Adressen enthält. Diese Systeme aktualisieren die dynamischen Einträge immer wenn sie eine Antwort erhalten, auch wenn sie nicht danach gefragt haben (ARP Request); eine Schwachstelle, die sich Angreifer zu Nutze machen.

ARP-Spoofing

ARP Spoofing macht sich die gerade beschriebene Schwachstelle zu Nutze indem der Angreifer (Host C) eine Nachricht and den Zielhost schickt und sagt: Host B, du findest Host A an meiner MAC-Adresse mit dieser IP. Das Opfer aktualisiert seinen ARP-Cache, so daß Host B von jetzt an, alle Daten an Host C anstatt an Host A sendet. Folgende Abbildung zeigt, wie das geschieht:

ARP Spoofing

ARP Spoofing

Der obere Teil der Abbildung zeigt, daß der ARP-Cache von Host B die MAC-Adresse (und natürlich auch die IP, die ich hier weggelassen habe) von Host A enthält. Die Kommunikation läuft völlig normal ab. Nun sendet aber Host C (der Angreifer) ein manipuliertes ARP-Packet an Host B. Das Paket sagt Host B: Host A ist jetzt an dieser MAC- mit dieser IP-Addresse zu finden. Nachdem Host B seinen ARP-Cache aktualisiert hat, ist die Kommunikation zu Host A unterbrochen und Host C erhält die für A bestimmten IP-Datagramme.

Solche Attacken fliegen relativ schnell auf, weil Host A beispielsweise durch eine Anfrage an Host B den ARP-Cache erneut aktualisiert und damit den Angreifer zumindest vorübergehend aus der Kommunikation ausschließt.

Sniffing

Eine weitaus gefährlichere Variante ist das Sniffing, das dem Angreifer erlaubt, den Datenverkehr zwischen zwei Hosts zu belauschen. Dazu ist es notwendig, daß der Angreifer als ARP-Proxy auftritt und damit für die beiden betroffenen Hosts unsichtbar ist. Folgende Abbildung verdeutlicht diesen Vorgang:

Angriff durch ARP-Proxy

Angriff durch ARP-Proxy

Der Angreifer teilt den Hosts mit, daß er als ARP-Proxy auftritt und den Datenverkehr quasi umleitet. Auf diese Weise kann der Angreifer alle Daten der beteiligten Systeme lesen und auch vertrauliche Daten wie Passwörter und Schlüssel erkennen. Somit kann sich der Angreifer auch auf höherer Ebene authorisierten Zugang zu den Hosts verschaffen.

DoS-Attacken

ARP-Spoofing eignet sich auch für das Ausführen von DoS-Attacken. Das Verfahren ist sehr einfach: der Angreifer teilt dem Opfer mit, daß die eigene oder eine andere MAC-Adresse im Netzwerk die des Gateways ist, sodaß alle betroffenen Hosts nun die Pakete an den Angreifer oder einen anderen Host senden, aber nicht an den Router. Somit kann kein System außerhalb des Subnetzes angesprochen werden.

Session Hijacking

Letztendlich kann der Angreifer, wenn er es denn möchte, Sitzungen übernehmen, was als Session Hijacking bezeichnet wird. Das passiert durch das injezieren von Kommandos in den Datenstrom. Nehmen wir an, Joe, der Angreifer, möchte die Sitzung von Jane übernehmen, die gerade mit Jim kommuniziert. Dazu überwacht (siehe Sniffing) Joe den Datenverkehr zwischen Jane und Jim und beobachtet wie Jane eine Telnet-Verbindung zu Jim’s Host öffnet und sich einloggt. Sobald das geschehen ist, leitet Joe die Daten von Jane nicht mehr an Jim weiter, sondern sendet seine eigenen Pakete an Jim und gibt dabei vor, Jane zu sein. Die Pakete von Joe, alias Jane, könnten So manipuliert sein, daß ein Benutzerkonto auf Jim’s Host mit Jane’s Previlegien angelegt wird. Jetzt leitet Joe die Pakete von Jane wieder and Jim weiter. Beide beteiligten merken lediglich, daß die Verbindung schlecht ist, doch der Angreifer bleibt unentdeckt. Nun kann sich Joe ganz regulär auf Jim’s host einloggen.

Schutz vor ARP-Spoofing

Wie die drei beschriebenen Szenarien zeigen, ist ARP-Spoofing nicht zu unterschätzen, doch was können wir dagegen tun? Eine Möglichkeit ist das Verwenden von statischen ARP Tabellen. Das bedeutet aber, daß ARP gar nicht mehr zum Einsatz kommt und damit jede Änderung der ARP-Tabelle manuell vorgenommen werden muß. Eine andere Variante ist die Verwendung von ArpWatch, daß Änderungen der ARP-Tabellen überwacht. Die gleiche Funktionalität bietet XArp für Windows.

Kommentieren