__ __ __ .-----.--.--.----.| |.--.--.--| |.-----.--| | .-----.----.-----. | -__|_ _| __|| || | | _ || -__| _ |__| _ | _| _ | |_____|__.__|____||__||_____|_____||_____|_____|__|_____|__| |___ | by ProXy - member of excluded-team |_____| v.1.0 / 07.04.2004 [ A R P - A t t a c k ] Index: - Erklaerung MAC - Erklaerung IP - Erklaerung ARP - Angriff auf das ARP - Sinn eines solchen Angriffs - ARP Spoofing Beispiel - Schutz vor ARP-Spoofing - Tool Collection Bevor wir uns ans ARP wagen klaere ich erstmal die Grundlagen was eine MAC-Adresse bzw IP ist da diese die Vorraussetzung fuers ARP bilden. --[ MAC (Media Access Control) Die MAC-Adresse ist die Hardware-Adresse einer Netzwerkkarte. Jede Netzwerkkarte verfuegt ueber diese und jede dieser Adressen ist einmalig. (sofern sie nicht gespooft wurde ;)) Sie wird der Karte vom Hersteller bei der Produktion zugewiesen. Die MAC-Adresse besteht aus Hexadezimal-Zeichen und umfasst 48bit. (Bsp: 00:20:ab:12:98:b1) --[ IP (Internet Protocoll) Jeder Computer in einem Netzwerk benoetigt eine IP-Adresse um mit anderen Stationen im Netzwerk zu kommunizieren. Wenn ein DHCP-Server laeuft verteilt dieser die IP-Adressen an die Clienten, anderenfalls muss sie per Hand eingestellt werden. (Bsp: 192.168.0.1) ----[ ARP (Address Resolution Protocol) Das ARP bringt das Internet Protokoll und die MAC-Adresse unter ein Dach. Es ist fuer das Mapping dieser beiden ganz unterschiedlichen Formen von Adressen verantwortlich. Dann gibt es noch den ARP-Cache, das ist ein lokaler Speicher ueber den jeder Netzwerkteilnehmer verfuegt. Im ARP-Cache wird die IP-Adresse mit dazupassender physischen MAC-Adresse aller Netzwerkteilnehmer mit denen kommuniziert wird gespeichert. Will nun ein Computer im LAN eine Verbindung mit einem anderen aufbauen sieht er in seinem ARP-Cache nach ob dieser einen passenden Eintrag enthaelt und baut dann erst die Verbindung zu diesem auf. Ist dies nicht der Fall wird ein ARP-Request als Broadcast an alle Clienten im Netzwerk gesendet und auf eine Antwort des jeweiligen Clienten gewartet. Der gesuchte Client im LAN sieht diese Anfrage falls er online ist, erkennt seine IP-Adresse, und antwortet darauf mit seiner MAC-Adresse! Sieht dann in etwa so aus: Who has 192.168.0.1? Tell 192.168.0.2 // Broadcast 192.168.0.2 is at 00:20:ab:12:98:b1 // Request Sind alle CLienten im lokalen ARP-Cache vorhanden bleibt das aber nicht so, denn der ARP-Cache wird regelmaessig geleert und die ganze Prozedur beginnt von vorne. Der ARP-Cache ist unter Windows mit "arp -a" ueber die Eingabeaufforderung und unter Linux mit "arp -n" in der Konsole aufrufbar. -- windows: C:\Dokumente und Einstellungen\pr0x>arp -a Schnittstelle: 192.168.0.3 --- 0x1337 Internetadresse Physikal. Adresse Typ 192.168.0.1 00-33-ab-82-40-73 dynamisch 192.168.0.2 00-40-ab-19-96-b1 dynamisch 192.168.0.4 00-30-bd-63-84-90 dynamisch -- linux: root@FUCKUP:~# arp -n Address HWtype HWaddress Flags Mask Iface 192.168.0.1 ether 00:33:ab:82:40:73 C eth1 192.168.0.2 ether 00:40:ab:19:96:b1 C eth1 192.168.0.4 ether 00:30:bd:63:84:90 C eth1 ----[ Angriff auf das ARP-Protokoll Auch ARP-Spoofing, ARP Cache Injection oder ARP Poisoning genannt.. Dabei geht es darum remote den lokalen ARP-Cache eines Clienten zu manipulieren. Genauer gesagt nimmt der Angreifer die IP eines anderen Clienten an, seine MAC-Adresse behaelt er. Dies funktioniert durch versenden von manipulierten ARP-Requests. Der Angreifer kann sich durch einen solchen Angriff auch zwischen die beiden Telnehmer stellen. Dazu muss er die eingefangenen Pakete anschliessend durch IP-Forwarding an den wirklichen Empfaenger weiterleiten, das waere dann eine 'Man-In-The-Middle Attack'. 192.168.0.2 192.168.0.1 Client A Client B \_ Client C _/ 192.168.0.1 (192.168.0.3) Da der lokale ARP-Cache der Clients regelmaessig geleert wird muss er je nach Betriebssystem in bestimmten Minuten-Abstaenden neu manipuliert werden. ----[ Sinn eines solchen Angriffs Zum Beispiel in einem Firmeninternen Intranet koennte eine Login-Seite kopiert und mittels eines eigenen Webservers gespooft werden. Man koennte ein Perlscript schreiben welches alle Eingaben dann lokal speichert und eine Fehlerseite als Antwort ausgibt. Wenn dem Benutzer eine akzeptable Kopie des Services geboten wird koennte sich ein Angreifer Zutritt darauf verschaffen ohne das Mitarbeiter es mitbekommen wuerden. Durch ARP-Spoofing kann sich ein Angreifer sicher sein das wirklich jedes Paket an ihm vorbei kommt. Das ist in einem normalen LAN sowieso der Fall wenn ein Sniffer im Promiscous-Mode laeuft, aber es eignet sich zum Beispiel fuer geswitchte LANs hervorragend. Bei diesen haette ein Angreifer ansonsten keine Moeglichkeit den Traffic seines Opfers zu ueberwachen und ggf. Passwoerter mitzulesen oder sonstige Aktivitaeten zu verfolgen. Grund dafuer ist das Switches die Daten einschraenken welche an die Clients gesendet werden. Es sollte aber IP-Forwarding aktiviert sein da es ansonsten zu Problemen kommt im Netzwerk kommt. Weiters kann ARP-Spoofing auch zum Ausgrenzen eines einzelnen Clienten verwendet werden indem dessen Cache periodisch neu mit falschen Daten nichtexistierender Clients gefuettert wird. (Man kann aber durch das senden von entsprechenden ARP-Broadcasts nicht existierender Clients auch 'ARP-Stuerme' hervorrufen, welche in der Lage sind ganze Subnetze lahmzulegen! Mit dem Tool 'havoc' kann ARP-Storming erzwungen werden.) Connection-Spoofing ist ein weiterer Punkt welcher nicht vergessen werden sollte. Ein Angreifer koennte indem er sich fuer einen anderen Clienten ausgibt Zugriff auf ein anderes System verschaffen. Protokolle wie zB. 'rlogin' welche sich nach einer Liste von Benutzern und deren IP-Adressen orientiert sind dadurch besonders betroffen. Weiss ein Angreifer nun den Benutzernamen eines Befaehigten kann er sich durch ARP-Spoofing noch die richtige IP-Adresse verschaffen und schon stehen ihm alle Tueren offen. ----[ ARP-Spoofing Beispiel So sieht das Programm arpspoof welches im dsniff-package integriert ist bei der Arbeit aus, es werden laufend manipulierte ARP-Requests an das Opfer gesendet. root@FUCKUP:/# arpspoof -t 192.168.0.2 192.168.0.1 0:8:2:4d:5:b6 0:40:ab:19:96:b1 0806 42: arp reply 192.168.0.1 is-at 0:8:2:4d:5:b6 0:8:2:4d:5:b6 0:40:ab:19:96:b1 0806 42: arp reply 192.168.0.1 is-at 0:8:2:4d:5:b6 0:8:2:4d:5:b6 0:40:ab:19:96:b1 0806 42: arp reply 192.168.0.1 is-at 0:8:2:4d:5:b6 0:8:2:4d:5:b6 0:40:ab:19:96:b1 0806 42: arp reply 192.168.0.1 is-at 0:8:2:4d:5:b6 0:8:2:4d:5:b6 0:40:ab:19:96:b1 0806 42: arp reply 192.168.0.1 is-at 0:8:2:4d:5:b6 0:8:2:4d:5:b6 0:40:ab:19:96:b1 0806 42: arp reply 192.168.0.1 is-at 0:8:2:4d:5:b6 0:8:2:4d:5:b6 0:40:ab:19:96:b1 0806 42: arp reply 192.168.0.1 is-at 0:8:2:4d:5:b6 [...] Und so sieht der ARP-Cache des Opfers danach aus: C:\Dokumente und Einstellungen\victim>arp -a Schnittstelle: 192.168.0.2 --- 0x1337 Internetadresse Physikal. Adresse Typ 192.168.0.1 00-08-02-4d-05-b6 dynamisch 192.168.0.3 00-08-02-4d-05-b6 dynamisch 192.168.0.4 00-30-bd-63-84-90 dynamisch ----[ Schutz vor ARP-Spoofing Woran man einen solchen Angriff erkennen koennte ist die Verringerung der Geschwindigkeit da jedes Paket den doppelten Weg vor sich hat. Es kommt bei einer 'Man-In-The-Middle Attack' zuerst am Client des Angreifers vorbei und danach erst am eigentlichen Zielhost. Eine weitere Moeglichkeit ist es ein Tool einzusetzen das Angriffe auf das Address Resolution Protocol erkennt und meldet, wie zum Beispiel: ARPWATCH - http://www.securityfocus.com/tools/142 Arpwarp - http://www.zone-h.org/download/file=3216 oder fuer windows: WinArpWatch - http://www.arp-sk.org/files/related/warpwatch.zip Wird die ARP-Cache Tabelle statisch festgelegt und gesichert werden keine ARP-Requests der Clients mehr benoetigt und das Sicherheits-Risiko ist somit geringer. ARP table locking: linux :: arp -v -i eth0 192.168.0.2 00-40-ab-19-96-b1 windows :: arp -s 192.168.0.2 00-40-ab-19-96-b1 Eine weitere Moeglichkeit sich davor zu schuetzen ist 'intelligente Hardware' wie zB der ARP-Guard. https://www.arp-guard.com ----[ Tool Collection phenoelit ARP0c -- linux -- http://www.phenoelit.de/arpoc/ THC parasite -- linux -- http://www.thc.org/releases.php ARP-Fun -- linux -- http://people.debian.org/~amaya/debian/arp-fun/ ARPMITM -- linux -- http://teso.scene.at/releases.php havoc -- linux -- http://packetstormsecurity.org/DoS/havoc-0.1d.tar.gz hunt -- linux -- http://packages.debian.org/stable/net/hunt ARPTool -- linux -- http://users.hotlink.com.br/lincoln/arptool/ ettercap -- linux -- http://ettercap.sourceforge.net arpspoof -- linux -- http://naughty.monkey.org/~dugsong/dsniff/ arpoison -- linux -- http://arpoison.sourceforge.net fragrouter -- linux -- http://www.w00w00.org/files/sectools/fragrouter/ arp-sk -- linux -- http://www.arp-sk.org winarp-sk -- windows -- http://www.arp-sk.org winarp-mim -- windows -- http://www.arp-sk.org ettercap -- windows -- http://ettercap.sourceforge.net phenoelit WCI -- windows -- http://www.phenoelit.de/arpoc/ arpworks -- windows -- http://www.oxid.it/arpworks.html arptoxin -- windows -- http://www.phrite.net/default.php?page=tools ------------------------------------------------------ Kopieren erlaubt - aendern verboten! ProXy http://www.excluded.org