PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sicherheitslücken in TCP/IP - heute [ARP-Spoofing]



Atbash
11.09.2009, 00:51
So hier mal der erste Teil einer geplanten Tutorialreihe über konzeptionelle Sicherheitslücken in TCP/IP, von Lidloses_Auge und meiner Wenigkeit.
Ich hoffe, es erregt Interesse bei allen die etwas tiefer in die Materie eindringen wollen.

I. Was ist ARP?

ARP (=="Address Resolution Protocol")
Wollen zwei Rechner in einem Netzwerk miteinander kommunizieren, genügt die IP-Adresse nicht, denn auch in der physikalischen Schicht des TCP/IP-Referenzmodells muss eine Adressierung stattfinden.
Hierzu wird die MAC-Adresse (oder auch Hardwareadresse genannt) benötigt, um eine physische Verbindung zueinander aufzubauen.
Diese MAC-Adresse ist fest mit einer Netzwerkkarte verbunden. (Allerdings gibt es doch die Möglichkeit eine falsche Hardwareadresse vorzutäuschen. Stichwort 'Wardriving')
Befinden sich die zwei Kommunikationspartner in separaten physikalischen Netzwerken, wird die MAC-Adresse des entsprechenden Routers benötigt.

II. Wie funktioniert ARP?

Für die Verwaltung der IP-Adresssen mit den dazugehörigen MAC-Adressen besitzt jeder Rechner eine Tabelle - den sogenannten ARP-Cache.
Ist eine benötigte Zuordnung nicht enthalten, muss erst ein neuer Eintrag im ARP-Cache geschaffen werden.
Hierzu sendet der Rechner einen ARP-Request (ARP-Anfrage). Der ARP-Request ist ein Broadcast-Anfrage (geht an jeden Rechner im Netzwerk) und enthält die IP-Adresse des gesuchten Rechners, sowie die IP- und MAC-Adresse des suchenden Rechners.
Da die Anfrage an jeden Rechner im Netzwerk geht, wird sie auch von jedem Rechner geprüft.
Ist der angefrage Rechner nicht im Besitz der gesuchten IP-Adresse verwirft er das Paket einfach.
Wenn er allerdings der gesuchte Rechner ist, dann trägt er zuerst die IP- und MAC-Adresse des anfragenden Rechners in seinen ARP-Cache ein, und sendet danach ein ARP-Reply (ARP-Antwort), in dem seine MAC-Adresse steht.
Im Sniffer sieht das ganze dann so aus:


//192.168.1.1 sucht 192.168.1.2
//192.168.1.1 sendet:

ARP-Request

Sender MAC address: 1a:2b:3c:4d:5e:6f
Sender IP address: 192.168.1.1
Target MAC address: 00:00:00:00:00:00
Target IP address: 192.168.1.2

//192.168.1.2 trägt in seinen Cache ein: '192.168.1.1 == 1a:2b:3c:4d:5e:6f'
//192.168.1.2 sendet:

ARP-Reply

Sender MAC address: aa:bb:cc:44:55:66
Sender IP address: 192.168.1.2
Target MAC address: 1a:2b:3c:4d:5e:6f
Target IP address: 192.168.1.1

//192.168.1.1 trägt in seinen Cache ein: '192.168.1.2 == aa:bb:cc:44:55:66'Mitgekommen? :)
Soweit so gut.

III. Die Lücke

Ein gravierendes Problem ist, dass ARP-Replys auch verarbeitet werden wenn keine ARP-Requests vorangegangen sind.
Das heißt, sendet man ein gefälschtes ARP-Reply an einen Rechner wird dieses einfach stillschweigend im ARP-Cache geändert.

(wikipedia spricht dazu allerdings, dass es moderne Implementierungen gibt, die den ARP-Cache erst nach vorangegangenem Request ändern.
Habe allerdings mal gehört, dass dann einfach solang Replys gesendet werden, bis zufällig ein Request vorangegangen ist. [Eintragungen im ARP-Cache verfallen bereits nach wenigen Minuten] )

Dies ermöglicht einen Angriff auf die Authentizität des Kommunikationspartners sowie auf die Integrigtät des Traffics.

http://securitymusings.com/wp-content/uploads/2008/12/arp-spoofing.png


IV. So wird die Lücke ausgenutzt.

Spinnen wir unser Beispiel vom Sniffer weiter.
Hinzugefügt wird ein Angreifer mit der IP 192.168.1.3 und der MAC-Adresse 11:22:33:dd:ee:ff .

192.168.1.1 kommuniziert nun mit 192.168.1.2


Der Angreifer (192.168.1.3) sendet nun ein ARP-Reply mit folgendem Inhalt an 192.168.1.1

Sender MAC address 11:22:33:dd:ee:ff // (Original MAC des Angreifers)
Sender IP address 192.168.1.2 // (IP des Kommunikationspartners [gespooft] )
Target MAC address 1a:2b:3c:4d:5e:6f // (Original)
Target IP address 192.168.1.1 // (Original)

// 192.168.1.1 überschreibt nun in seinem ARP-Cache den ursprünglichen Eintrag
// '192.168.1.2 == aa:bb:cc:44:55:66'
// mit dem neuen gespooften Eintrag
// '192.168.1.2 == 11:22:33:dd:ee:ff'

Nun kommuniziert 192.168.1.1 mit 192.168.1.3, allerdings 192.168.1.2 immernoch mit 192.168.1.1
Um dies noch zu unterbinden schickt der Angreifer abermals ein gefälschtes ARP-Reply. Nun an 192.168.1.2.

Sender MAC address 11:22:33:dd:ee:ff // (Original)
Sender IP address 192.168.1.1 // (IP des Kommunikationspartners [gespooft] )
Target MAC address aa:bb:cc:44:55:66 // (Original)
Target IP address 192.168.1.2 // (Original)

// 192.168.1.2 überschreibt nun auch in seinem ARP-Cache den ursprünglichen Eintrag
// '192.168.1.1 == 1a:2b:3c:4d:5e:6f'
// mit dem neuen gespooften Eintrag
// '192.168.1.1 == 11:22:33:dd:ee:ff'
Nun sendet 192.168.1.1 alles an 192.168.1.3 (Angreifer) ; und 192.168.1.2 alles an 192.168.1.3 (Angreifer) ;



Wenn nun 192.168.1.3 die empfangenen Nachrichten von 192.168.1.1 an 192.168.1.2 und umgekehrt weiterleitet, fungiert er als eine Art Proxy.
Aus 192.168.1.3 ist ein Man-in-the-Middle geworden.
Für die visuellen Lerner unter euch.. das Ganze stellt sich dann so dar:

http://sid.rstack.org/arp-sk/figs/arpmim_en.png
Dies kann ausgenutzt werden um den gesamten Traffic zwischen 1.1 und 1.2 zu überwachen und gegebenenfalls zu manipulieren.
Bei verschlüsselten Verbindungen ist das natürlich nicht so einfach. Es gibt allerdings spezielle Ansätze um auch dies zu ermöglichen. (Vielleicht später oder in einem anderen Tut.)

V. Gegenwehr

Nun da ARP auf der Physikalischen Schicht des TCP/IP-Modells arbeitet, und somit weit weg von der Anwendungsschicht und damit auch vom Anwender, fällt ein Angriff in der Regel garnicht groß auf.
Allerdings gibt es Möglichkeiten um sich vor ARP-Spoofing zu schützen.
Da wäre zum einen, dass man die Eintragungen im ARP-Cache manuell und statisch macht.
Dies ist wohl ein nahezu 100%-er Schutz vor ARP-Spoofing, da Änderungen ebenfalls nur manuell getätigt werden können.
Dieser Vorteil ist genauso auch Nachteil, da nun jede neue Netzwerkkarte mit ihrer spezifischen MAC-Adresse händisch neu in den ARP-Cache geschrieben werden muss.
Dies kann ganz einfach per CMD mit dem Befehl 'arp' gemacht werden.

Weitaus komfortabler sind dann solche Tools wie ARPwatch. Dieses kleine Spielzeug alarmiert den Administrator, wenn sich etwas in der IP/Ethernet-Zuordnung ändert, und logt die Daten des Angreifers.

Das war erstmal das, so wie ich finde, Wichtigste was man über ARP-Spoofing wissen sollte.

____________________________________________

Ich hoffe das Tutorial findet Gefallen, auch wenn es vielleicht ein bisschen trockener ist als die üblichen Tutorials.
Wenn der Inhalt dich nicht interessiert hat, bitte ich dich trotzdem dir jeden Kommentar zu verkneifen.
Wenn der Inhalt dich interessiert hat, aber deine Erwartungen nicht erfüllt wurden, dann bitte ich dich deine Kritik konstruktiv zu posten, um gegebenenfalls das Tut zu editieren.
Lob ist natürlich auch gern gesehen ;)

Viel Spaß und Glück wünscht euch

atbash

snify
11.09.2009, 01:00
Sauber :)
Vielleicht noch ein kleines Bild dazu...
Dann wäre es perfekt ;)
Kann man gut im LAN gebrauchen ^^

EDIT unter CMD kann man mit ARP selbst eine Tabelle erstellen und sich somit schützen ;)

fr34k*
11.09.2009, 07:54
Super!
Klasse Erklärung... hättest einen Orden verdient!

.wired
11.09.2009, 09:20
Sehr gut beschrieben!
Musste es allerdings zweimal lesen, weil ich immer durcheinander gekommen bin, wer nun was an wen sendet und welche MAC gerade die aktuelle ist^^

->bookmarked

B1044ZZ4RD
11.09.2009, 09:26
sehr schön erklärt freue mich schon auf weitere erklärungen dieser reihe :D

blackberry
11.09.2009, 10:45
Kann man dazu was sagen?
Gut erklärt, schöne Grafiken (selbst gemacht??) und sprachlich top.
Erstklassig!

AllesFAM
11.09.2009, 15:37
Hammer gut gemachtes Tut ..... wirklich sehr interessant und auch gut beschrieben ... hab alles verstanden =)

Wie wird des jetzt aber z.b bei Cain & Able gemacht wenn die andere Person im internet was macht ??

Also sagen wir z.b die 192.168.0.1 geht ins Internet und chattet dort mit einer person o. Loggt sich dort auf ner Webseit ein etc. ... mit Cain kann ich des ja jetzt mitsniffen, z.b des Passwort ....

Schick ich dann an die 192.168.0.1 einfach die IP vom Router oder wie funktioniert des das ich des dann mitsniffen kann ? Weil er dann ja quasi über mich ins Internet geht ?

Mb AllesFAM

Atbash
13.09.2009, 17:24
Danke schonmal für all das Lob. :)
Falls das ein Admin liest, vielleicht überlegt er es sich ja das Topic zu nem Sticky zu machen, da ich das Tutorial nur ungern in den tiefen Abgründen von Free-Hack, neben dDoS-Anfragen und Portfreigabethreads beerdigen möchte.

Grüße
Atbash

ichbinslol
13.09.2009, 17:53
/vote 4 sticky ^^

einfach nur geil!

mfg

BA2SER
17.06.2010, 09:54
das kann man doch auch einfacher mit dem tool clain machen oder ?

0x30
17.06.2010, 14:20
Sehr schönes Tutorial... gefällt mir sehr ;)

T0x1cBaSs
17.06.2010, 15:06
Finde es auch gut gelungen. Bitte mehr davon ;)

Cristhecrusader
17.06.2010, 15:49
das kann man doch auch einfacher mit dem tool clain machen oder ?
Cain und Abel benutzt diese Technik allerdings ist es immer gut zu wissen was dahinter steckt.

@TE:
Sieht so aus als waere es eine Serie, ich habs gern gelesen und freu mich auf jeden Fall auf weitere Tutorials von dir.
Finde ich hat auch ein Sticky in Verdient(Im Netzwerk Bereich)

D3MEN
17.06.2010, 16:31
Schön Beschrieben

VOTE FOR STICKY

bin mal gespannt wie das nächste tut wird

Dr. XMas
17.06.2010, 16:39
Alles Super erklärt :D
Wäre auch für Sticky ^^

GhostViper
13.08.2010, 13:53
Awesome einfach nur awesome!
Das Erste, was ich in diesem Forum gelesen habe und ich bin sofort überzeugt davon hier zu bleiben.
Ich hoffe es gibt noch mehr Tutorials von dir!
Hast echt gute Arbeit geleistet.
Du bist der König! :D

PancakeBear
13.08.2010, 14:47
/vote 4 Sticky
*Bookmarked*

Tolles Tutorial!
Wollte immer mal was über das Thema erfahren!

Weiter so!


Mfg Chillerz.