Open Source im professionellen Einsatz

Angriffstechnik im lokalen Netz: ARP-Spoofing und -Poisoning

Interner Zugriff

,

Im LAN kann jeder Rechner den Netzverkehr belauschen und manipulieren. An dieser Tatsache ändert auch ein Switch wenig: Durch ARP-Spoofing und -Poisoning lenkt der Angreifer jeden Verkehr auf seinen Rechner. Wie das funktioniert und welche Gegenmaßnahmen dem Admin bleiben, zeigt dieser Artikel.

Neugier, Mobbing, Konkurrenzkampf oder Wirtschaftsspionage - es gibt viele Gründe, warum sich Insider unberechtigt Zugang zu Daten und Systemen verschaffen. Laut Statistik kommen 70 bis 80 Prozent aller Angriffe aus dem internen Netz[1]. Admins haben es schwer, dies zu verhindern: Der innere Schutz ist deutlich schwieriger als die Verteidigung gegen externe Attacken.

Gefahr durch Innentäter

Den Innentätern bleibt die Wahl unter vielen Angriffstechniken. Die meisten setzen einiges Fachwissen beim Angreifer und eine spezielle Betriebssystem- und Software-Umgebung beim Angegriffenen voraus. Es gibt aber auch Verfahren, die fast immer funktionieren: Per ARP-Spoofing setzen sich Angreifer in eine Position, in der sie alle Datenströme im lokalen Netz abhören und manipulieren können. Diese als Man-in-the-Middle-Angriff bekannte Technik ist einfacher als viele IT-Verantwortliche und Admins glauben. Dank ausgeklügelter Software gelingt dies auch dem Laien in Sachen Netzwerk und Sicherheit.

Um Hintergründe und mögliche Verteidigungsstrategien zu verstehen, sind einige Grundkenntnisse in Sachen ARP (Address Resolution Protocol) nötig. Dieses alte und relativ einfache Protokoll bildet IP- auf MAC-Adressen ab (siehe Kasten "Grundlagen: Adressen im LAN"). Während der Anwender nur den Namen »www.linux-magazin.de« oder die IP-Adresse »62.245.157.216« kennt, wird der Rechner im LAN ausschließlich mit seiner MAC-Adresse angesprochen »00:C1:26:07:CF:F3«.

Grundlagen: Adressen im
LAN

Wollen in einem Netz zwei Rechner miteinander kommunizieren, müssen sie sich eindeutig adressieren. Im Ethernet dient dazu eine 48-Bit-Nummer (6 Byte), die der Hersteller vorgibt. Diese so genannte MAC-Adresse (Media Access Control) ist weltweit eindeutig. Damit kann der Anwender beinahe beliebig viele Ethernet-Adapter zu einem LAN verkabeln.

Ethernet funktioniert ohne Switches und Bridges als Broadcast-Medium, sprich: Jedes Paket erreicht jeden Teilnehmer in diesem Netz. Aber nur der adressierte Empfänger nimmt das Paket an, alle anderen ignorieren es. Das Netz funktioniert ohne weitere Konfiguration, echtes Plug & Play.

Einfache Zustellung, aber nur lokal tauglich

Diese Vorgehensweise ist bestechend einfach, skaliert aber schlecht. Schließlich teilen sich alle Teilnehmer das Netz (Shared Medium) und damit dessen Übertragungskapazität. Linderung verschaffen Bridges und Switches: Diese Geräte teilen das Netz in mehrere Segmente und lernen, welche MAC-Adressen an welchem Anschluss zu finden sind (CAM-Tabelle, Content-addressable Memory). Sie senden dann Pakete nur noch in das Segment, in dem sie den gewünschten Empfänger erwarten. Innerhalb eines Segments senden sich die Teilnehmer Datenpakete, ohne die Kommunikation in einem anderen Segment zu stören.

Für weltweite Netze taugt dieses Prinzip immer noch nicht. Jeder Switch müsste für jeden einzelnen Zielrechner wissen, wo er sich befindet. Daher haben die Väter des Internets eine eigene Adressierung eingeführt, die IP-Adresse. Sie ist 32 Bit lang (4 Byte) und besteht aus einem Netz- und einem Host-Anteil. Welcher Teil der Adresse das Netz und welcher den Host festlegt, lässt sich aus der Netzmaske ablesen.

Die einzelnen Netze sind im Internet durch Router verbunden. Die Router müssen nur die Netzadressen kennen und leiten jedes Paket damit in die richtige Richtung. Durch systematisches Vergeben der Adressen gelingt es, IP-Pakete weltweit korrekt und zügig zuzustellen.

MAC und IP: Zwei Adressen für einen Rechner

Während für das Routing ausschließlich die IP-Adressen relevant sind, arbeitet das LAN weiterhin nur mit MAC-Adressen (Abbildung 1). Es wäre aber ungeschickt, wenn jedes Programm sowohl IP- als auch MAC-Adresse eines Rechners kennen müsste, um mit ihm zu kommunizieren. Daher sorgt ARP (Address Resolution Protocol) für die Zuordnung: Zu einer IP-Adresse liefert es die passende MAC-Adresse. Eine Konfiguration ist dazu nicht nötig, der Admin muss also nicht selbst die Adresspärchen IP/MAC einstellen. Die Automatik führt aber zu schweren Sicherheitsproblemen, die dieser Artikel genauer erklärt.

Namen und Nummern

Zusätzlich zu MAC- und IP-Adresse spielen noch Portnummer und Rechnername eine wichtige Rolle. Während MAC und IP nur den Rechner adressieren, unterscheidet der Port die gleichzeitig laufenden Clients und Server (Dienste) innerhalb eines Computers. Der DNS-Name nimmt Rücksicht auf die menschliche Merkfähigkeit: »www.linux-magazin.de« ist einfacher zu behalten als »62.245.157.216«. Hier sorgt der Domain Name Service für die Abbildung von Name auf Nummer, ganz nach dem Vorbild der Telefonbücher.

Neben ARP gibt es noch RARP (Reverse ARP,[3]). Ähnlich wie DHCP teilt ein RARP-Server einer Maschine, die nur ihre eigene MAC-Adresse kennt, eine IP-Adresse zu. Da RARP keine weiteren Parameter überträgt (Nameserver, Gateway-Adresse, Netzmaske), kommt es kaum noch zum Einsatz.

Das ARP-Protokoll wurde im November 1982 von David C. Plummer als RFC 826 veröffentlicht[2]. Trotz des Titels "An Ethernet Address Resolution Protocol" ist der Ansatz generisch gehalten und nicht auf Ethernet oder TCP/IP beschränkt. Da IT-Sicherheit im Jahre 1982 noch keine wesentliche Rolle spielte, war das Ziel lediglich, eine bestimmte Funktionalität bereitzustellen. Ob und inwieweit diese Funktion angreifbar ist, wurde erst später diskutiert.

ARP stellt die Zuordnung von IP- zu MAC-Adresse fest. Wenn Client C ein Paket an Server S senden will, muss er die MAC-Adresse von S kennen, wenn beide im selben Subnetz stehen. Selbst wenn S in einem fremden Netz steht, braucht C eine MAC-Adresse, dann aber die des nächsten Routers (meist das Standard-Gateway), siehe Abbildung 1. Der Router kümmert sich dann um alles Weitere.

Abbildung 1: Client C sendet ein Paket an Server S. Als Ziel-IP-Adresse setzt er S ein, als MAC-Adresse das linke Router-Interface L. Der Router leitet das Paket weiter; die IP-Adressen lässt er, setzt aber die MAC-Adressen neu. Ein Switch verändert das Paket nicht.

Abbildung 1: Client C sendet ein Paket an Server S. Als Ziel-IP-Adresse setzt er S ein, als MAC-Adresse das linke Router-Interface L. Der Router leitet das Paket weiter; die IP-Adressen lässt er, setzt aber die MAC-Adressen neu. Ein Switch verändert das Paket nicht.

So funktioniert ARP

Um die MAC-Adresse des Zielsystems zu erfahren, schickt C einen ARP-Request per Broadcast an alle Maschinen im lokalen Netz mit der Frage "Wer hat die IP-Adresse a.b.c.d?". Der Rechner mit der passenden Nummer antwortet und teilt dem Client die gesuchte MAC-Adresse mit (Abbildung 2).

Abbildung 2: Mittels ARP stellt der Client im LAN die MAC-Adresse des Servers fest, bevor er ein Paket an ihn sendet. Die Frage "Who has ..." geht per Broadcast an alle Rechner im LAN. Der gesuchte Partner sendet seine Antwort direkt zum Fragenden.

Abbildung 2: Mittels ARP stellt der Client im LAN die MAC-Adresse des Servers fest, bevor er ein Paket an ihn sendet. Die Frage "Who has ..." geht per Broadcast an alle Rechner im LAN. Der gesuchte Partner sendet seine Antwort direkt zum Fragenden.

Wie in Abbildung 3 zu sehen ist, überträgt ein Ethernet-Frame das ARP-Paket direkt als Payload (Nutzlast), es sind keine weiteren Protokolle zwischengeschaltet. Dazu ist im Type-Feld des Frame-Headers der Wert »0x0806« eingetragen - das sagt dem Empfänger, dass der Frame ein ARP-Paket enthält. Tabelle 1 führt auf, welche Werte in welchen Feldern des Ethernet-Frame und des ARP-Pakets zu finden sind.

Abbildung 3: Ein ARP-Paket wird direkt als Nutzlast eines Ethernet-Frame übertragen, benutzt also selbst kein IP. Nach den Feldern, die Typ und Länge der Adressen beschreiben, enthält jedes Paket die Angaben für Sender und Empfänger.

Abbildung 3: Ein ARP-Paket wird direkt als Nutzlast eines Ethernet-Frame übertragen, benutzt also selbst kein IP. Nach den Feldern, die Typ und Länge der Adressen beschreiben, enthält jedes Paket die Angaben für Sender und Empfänger.

Da es viel zu aufwändig wäre, vor dem Absenden jedes Pakets eine ARP-Anfrage zu stellen und die Antwort abzuwarten, verfügt jeder IP-Stack über eine ARP-Tabelle, auch ARP-Cache genannt (Abbildung 4). Der Cache listet IP- und zugehörige MAC-Adressen tabellarisch. Er nimmt statische (vom Anwender generierte) und dynamische (durch das ARP-Protokoll gelernte) Einträge auf. Dynamische Einträge sind in der Regel nur eine begrenzte Zeit gültig, oft nur wenige Minuten.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook