Material zum Praktikumsversuch Netzwerke 2 Stand: März 2005, zusammengestellt von: Michael Psarros (Lehrstuhl NDS) Version 1.1 Vertiefungspraktikum Angriffe in geswitchten Netzen (ettercap) Lehrstuhl für Netz- und Datensicherheit ruhr-universität bochum Der Versuch findet im Netzlabor IC 4 /58-60 statt
Sind Switches wirklich sicher? Im Versuch mit Ethereal, haben Sie herausgefunden wie leicht man den Netzwerkverkehr abhören kann wenn Hubs eingesetzt werden. Um gegen solche Angriffe vorgehen zu können und auch um den Datendurchsatz zu verbessern, wurden in den meisten Netzwerke Switches installiert. Ein Switch arbeitet im Gegensatz zu einem Hub auf Ebene 2 des OSI-Modells (Sicherungssicht) und die einzelnen Ports können unabhängig voneinander Daten empfangen und senden. Da ein Rechner an einen Switch nicht alle Datenpakete im Netz bekommt, kann er auch schwer unrechtsmäßig Daten auslesen. Mit eine neue Attacke, genannt ARP- Spoofing, ist es aber doch möglich Daten in ein geswitchtes Netzwerk auszulesen. Um den Angriff zu verstehen muss man erst das ARP-Protokoll verstehen. Address Resolution Protocol Die Netzwerkkarten eines Rechners in ein lokales Netz kommunizieren nicht direkt mit IP sondern benutzen das jeweilige Hardware-Protokoll (z. B. Ethernet, Token Ring). Dazu werden MAC-Adressen (Media Access Control) benutzt. Im Fall von Ethernet sind es fixe und eindeutige 48 Bit lange Adressen die in der Regel hexadezimal geschrieben werden (z. B. 00-0c-31-d6-58-1a). Als Benutzer arbeitet man aber mit IP-Adressen und wie ein Rechner eine Tabelle zwischen Rechnernamen und IP-Adressen mittels DNS verwaltet (www.nds.rub. de ist 134.147.64.11) verwaltet er auch eine Tabelle zwischen IP-Adressen und MAC- Adressen. Um diese Tabelle aufzubauen wird das ARP-Protokoll benutzt und logischerweise heißt die Tabelle ARP-Tabelle. Die Implementation von diesem Protokoll hat aber viele Schwachstellen und deswegen ist es auch angreifbar. Wobei dies sind nicht genau Schwachstellen, sondern dienen der einfachen Wartung (z. B. problemloser Austausch der Netzwerkkarte in ein Netz). Die wichtigsten dieser schwachen Optionen sind: Das Protokoll ist dynamisch. D.h. sobald ein ARP-Paket eintrifft, das eine neue MAC- Adresse zu einer IP-Adresse bindet, wird die Tabelle angepasst. Die meisten Implementationen akzeptieren ARP-Antworten auch wenn sie keine Anfragen im Netz geschickt haben. ARP-Spoofing Mit der Benutzung von gefälschten ARP-Paketen können die ARP-Tabellen in einem System von einem anderen Rechner aus manipuliert werden. Somit kann der Datenverkehr zwischen zwei Rechner in ein Netzwerk abgehört und manipuliert werden nach dem Prinzip eines Man- In-The-Middle-Angriffes. Um den Datenverkehr zwischen Rechner A und Rechner B abzuhören, sendet der Angreifer dem Rechner A eine ARP-Nachricht, so dass dieser Pakete für Rechner B an den Angreifer sendet. Das selbe geschieht mit Rechner B, so dass dieser Pakete statt direkt an A nun ungewollt zum Angreifer sendet. Der Angreifer muss nun die von A und B erhaltenen Pakete an den eigentlichen Empfänger weiterleiten, damit eine abhörbare Verbindung zustande kommen kann. Ist dies geschehen, so arbeitet der Angreifer unbemerkt als Proxy. Damit hat ein Angreifer bei ungeschützen Verbindungen wie sie beim Senden von E-Mails oder betrachten von Webseiten verwendet werden fast freie Hand zum Mitlesen und Manipulieren. Verschlüsselte Verbindungen sind tendenziell sicher, da diese meistens Zertifikate verwenden. Würde ein Angreifer sich zum Beispiel in eine HTTPS-Verbindung einklinken, um das online-banking zu manipulieren, so erkennt der Anwender dies an einer Warnmeldung des Browsers über ein ungültiges Zertifikat. Auch SSH-Verbindungen sind als sicher einzustufen (SSH Version 1 nur bedingt), da ein veränderter Fingerprint von der
Software sofort angezeigt wird. Wobei das funktioniert nur solange der Benutzer auch die Warnmeldung versteht und nicht einfach ignoriert! Mit ARP-Spoofing angreifen: Ettercap Ettercap ist ein Open-Source-Werkzeug für Man-In-The-Middle-Angriffe. Es unterstützt Sniffing auf IP wie auch auf ARP Basis, Echtzeitkontrolle über Verbindungen selbst in geswitchten Netzwerken, inhaltbezogenes Filtering und aktive wie auch passive Analysen von einzelnen Hosts und ganzen Netzwerken. Durch die Fähigkeit, Pakete bereits auf Schicht 2 (ARP) sniffen zu können, bietet Ettercap den Vorteil, selbst verschlüsselte Verbindungen zu belauschen. Verfügbar ist Ettercap auf zahlreichen Linux-Versionen (2.2 bis einschließlich 2.6), den BSD- Derivaten, Solaris, Mac OS X wie auch Windows. Als Umgebung dient standardmäßig ein NCurses-Frontend, Ettercap ist jedoch auch über GTK ansteuerbar. Für spezialisierte, zeitintensive und benutzerinteraktionsunabhängige Angriffe besteht ebenfalls die Möglichkeit, Ettercap im sogenannten Daemonmode zu starten, welcher das Programm im Hintergrund laufen lässt und die gewünschten Aktivitäten, angegeben durch Shellparameter, ausführt. Dies ist beispielsweise automatisches Logging von Benutzernamen und Passwörtern des gesamten Netzwerkes in eine zentrale Datei (unterstützt unter anderem HTTP, HTTPS, ICQ, POP3, SMB, Q3A, ORACLE, MySQL, SMTP). Um eine grafische Benutzerschnittstelle zu bekommen, muss ettercap mit den Parameter -G gestartet. Im ersten Bildschirm werden die anzugreifende Maschinen mittels doppelklick ausgewählt und dann auf ARP Sniff geklickt.
Schutz von ARP-Spoofing Es gibt mehrere Möglichkeiten sich gegen ARP-Spoofing zu schützen. Die einfachste ist, statische Tabellen zu benutzen was bei der Administrastion ziemlich aufwändig ist und nicht immer funktioniert: Bei Windows (inkl. XP) können jederzeit statische Einträge durch dynamische überschrieben werden! Es gibt auch Programme, die offensichtlich gefälschte ARP-Pakete erkennen und verwerfen bzw. den Benutzer informieren. ArpWatch für Unix und XArp für Windows sind die bekannteste dieser Programme. Besser ist es aber am Grundproblem anzusetzen: Jede ARP-Antwort ob angefordert oder nicht, ob sinnvoll oder nicht wird von fast allen Betriebssystemen akzeptiert. Hier kann es helfen das Verarbeiten von ARP-Antworten Programmen mit größerer Intelligenz zu überlassen. Solaris z. B. akzeptiert keine ARP-Antworten falls es keine Anfrage geschickt hat. Somit lässt es sich schwierig durch ein einfaches ARP-Flooding angreifbar zu machen. OpenBSD und FreeBSD geben standardmäßig eine Meldung im Systemlog aus, falls die MAC-Adresse geändert wird. Im Linux-Kernel sind auch verschiedene Sicherheitsmechanismen eingebunden, sie müssen aber explizit aktiviert werden
Versuch Versuchsaufbau Nach den einleitenden Informationen erhalten Sie nun eine konkrete Versuchsbeschreibung. Auf den Rechnern ist SuSE 9.1 (d.h. Linux) installiert. Sie bearbeiten den Versuch mit Kommandozeilen-Befehlen und GUIs. Sie können eine Shell und einen Editor Ihrer Wahl benutzen: falls Sie keine Präferenz bzw. Kenntnisse haben, wird bash und pico vorgeschlagen. Bitte keine Passwörter verändern, da der Versuchsaufbau noch benötigt wird! Für diesen Versuch arbeiten Sie unter root. Das Passwort wird für den Versuch jeweils auf 12345 gesetzt. Die Beschreibungen der einzelnen Schritte enthalten die Vorgabe in fetter Schrift und die Erläuterungen dazu jeweils in normaler Schrift. Falls Sie etwas nicht verstehen, fragen Sie bitte zu Beginn den Mitarbeiter, der das Praktikum betreut. Ziel ist es, dass Sie die Vorgabe jedes Schrittes erfüllen und das Ergebnis für sich dokumentieren. Schreiben Sie am besten bei jedem Schritt das Zwischenergebnis auf, damit der Bericht vollständig den Versuch abdeckt. Unvollständige Berichte werden vom Versuchsleiter nicht akzeptiert, was dazu führen kann Sie die Schritte dann noch mal durchführen müssen. Schritt 1: Machen Sie sich mit der Netzwerktopologie vertraut (Plan hängt an der Wand). Stellen Sie fest, welche IP-Adresse(n) ihr PC hat und welche anderen Rechner er via TCP/IP erreichen kann. Dokumentieren Sie das Ergebnis, wie auch alle folgenden Ergebnisse. Schritt 2: Verbinden Sie sich mittels eines Webbrowsers mit den Servern im Netz. Schauen Sie dann mittels arp -n im ARP-Cache des Clients. Schritt 3: Bevor eine ARP-Attacke gestartet werden kann, muss der Angreifer-Rechner IP-Forward aktivieren da er als eine Art Router agiert (d.h. Datenpakete die nicht für diesen Rechner bestimmt sind müssen trotzdem weitergeleitet statt verworfen werden) Aktivieren Sie IP-Forwarding. Wie lautet der Befehl? Schritt 4: Dieser Schritt muss in Absprache mit Ihrer Nachbargruppe gemacht werden und wird von beiden Gruppen abwechselnd ausgeführt: Gruppe 1: Starten Sie ettercap und sniffen Sie die Verbindungen Ihrer Nachbargruppe. Gruppe 2: Surfen Sie auf pc111.netz1.test und loggen Sie sich da ein. Überprüfen Sie wieder den ARP-Cache, was stellen Sie da fest?
Schritt 5: Wie im Schritt 3, aber diesmal sniffen Sie eine verschlüsselte Verbindung! Gruppe 1: Erstellen Sie dafür zuerst ein Angreifer-Zertifikat mit ettercap --newcert Gruppe 2: Benutzen Sie HTTPS. Überprüfen Sie die Sicherheitsinformationen des Browsers (auf das kleine Schloss klicken) Schritt 6: Sichern Sie ihren Rechner! Benutzen Sie arp -s und legen statische Routen für den Router und die Server. Wiederholen Sie Schritt 3, ist jetzt der Angriff möglich? Schritt 7 (optional): Installieren Sie arpwatch (Datei arpwatch.tar.gz befindet sich im Verzeichnis /root) und probieren Sie Schritt 3 wieder aus. Ende des Versuchs
Voraussetzungen für die Teilnahme an diesem Versuch Grundkenntnisse zum Arbeiten unter Linux Sie müssen mit Kommandozeilen umgehen können! Dieses Dokument muss vorher gelesen werden; siehe Kontrollfragen zum Verständnis des Dokumentes Grundkenntnisse in TCP/IP sind erforderlich Machen Sie sich mit der Dokumentation zu Ettercap vertraut (Falls sie eine Voraussetzung nicht erfüllen, sprechen Sie unbedingt mindestens eine Woche vor dem Versuch den Versuchsleiter an, um das Wissen rechtzeitig aufholen zu können.) Kontrollfragen Sie sollen mindestens folgende Fragen beantworten können (bevor der Versuch beginnt): Was ist der Unterschied zwischen einen Hub und einen Switch. Was ist der Unterschied zwischen einer MAC- und einer IP-Adresse? Wozu dienen die Protokolle ARP, RARP, IP, TCP, UDP, ICMP, DNS? Wozu dienen die Protokolle HTTPS, SSH, TLS/SSL? Was sind geswitchte Netzwerke? Welche Rolle spielen sie beim Sniffen? Wie snifft man trotzdem in geswitchten Netzwerken? Welche bekannten Protokolle übertragen Passwörter im Klartext? Kann man nur im Ethernet sniffen? Würden Sie einem Besucher bei Ihnen einfach so einen Netzwerkanschluss anbieten um z. B. zu drucken oder schnell was im Netz nachschauen? Würden Sie das auch bei einem sicherheitskritischen Netz machen? Schriftliche Versuchsauswertung Jedes Team fertigt eine schriftliche Auswertung an. Diese sollte insbesondere die bei jedem Schritt verwendeten Befehle enthalten (also unbedingt dokumentieren, was Sie bei der Versuchsdurchführung getan haben) und die Ausgabe der Befehle erläutern. Geben Sie bitte Ihre Einschätzung als Versuchsteam wieder, was Sie von diesen Tools halten. Bitte geben Sie auch Feedback, ob Sie den Praktikumsversuch als interessant empfunden haben und ob dieses Dokument für Sie bei der Versuchsdurchführung hilfreich war. Verbesserungsvorschläge sind willkommen! Die Versuchsauswertung ist schriftlich beim nächsten Termin mitzubringen.
Weiterführende Informationen - Links Dokumente Wikipedia: http://de.wikipedia.org/wiki/osi-modell http://de.wikipedia.org/wiki/hub_%28netzwerk%29 http://de.wikipedia.org/wiki/switch_%28computertechnik%29 http://de.wikipedia.org/wiki/mac-adresse http://de.wikipedia.org/wiki/address_resolution_protocol http://de.wikipedia.org/wiki/arp-spoofing http://de.wikipedia.org/wiki/man-in-the-middle-angriff Sniffing FAQ: http://linuxsecurity.net/resource_files/intrusion_detection/sniffing-faq.html ARP-Standard: http://www.faqs.org/rfcs/rfc826.html MAC-Vendor-ID s: http://standards.ieee.org/regauth/oui/index.shtml Angreifer-Tools: arprelay (das erste proof-of-concept tool): http://www.fefe.de/arprelay/ arp-sk: http://www.arp-sk.org/ ARP0c connection interceptor: http://www.phenoelit.de/arpoc/index.html Ettercap: http://ettercap.sourceforge.net/ Cain & Abel: http://www.oxid.it/cain.html DSniff: http://www.monkey.org/~dugsong/dsniff/ http://www.monkey.org/~dugsong/dsniff/faq.html http://www.datanerds.net/~mike/dsniff.html netsed: http://freshmeat.net/projects/netsed/ Tools und Dokumente zum Schutz: arpwatch: http://www-nrg.ee.lbl.gov/ arpwatch2html: http://freshmeat.net/redir/arpwatch2html/54587/url_homepage/arpwatch2html http://freshmeat.net/projects/arpwatch2html/ XArp: http://www.chrismc.de/developing/xarp/index.htm http://www.ibm.com/developerworks/security/library/s-sniff2.html