Sniffer: Ethereal Philipp Öhler Contents I I. Sniffer 1 II Was macht Ethereal zu so ren Software? II-A Free-Ware . . . . . . . . . . II-B Plattform . . . . . . . . . . II-C GnuPublicLicence (GPL) . III einer besonde. . . . . . . . . . . . . . . . . . . . . . . . . . . Eine kurze Geschichte von Ethereal 1 1 2 2 2 IV Installationstipps IV-A Win32(NT, 95, 98, ME) . . . . . . . . . . . IV-B Raum 7/19 . . . . . . . . . . . . . . . . . . V TCP/IP 3 V-A Einleitung . . . . . . . . . . . . . . . . . . . 3 V-B Architektur . . . . . . . . . . . . . . . . . . 3 V-B.1 Netzwerkschicht . . . . . . . . . . . 4 V-B.2 Internetschicht . . . . . . . . . . . . 4 V-B.3 Transportschicht . . . . . . . . . . . 4 V-B.4 Anwendungsschicht . . . . . . . . . . 5 V-C Begriffe und Festlegungen . . . . . . . . . . 5 V-D Die wichtigsten Protokolle . . . . . . . . . . 5 V-D.1 Adress Resolution Protocol (ARP) . 5 V-D.2 File Transfer Protocol (FTP) . . . . 5 V-D.3 Hypertext Transfer Protocol (HTTP) 5 V-D.4 Internet Protocol (IP) . . . . . . . . 6 V-D.5 Reverse Adress Resolution Protocol (RARP) . . . . . . . . . . . . . . . . 6 V-D.6 Transport Control Protocol (TCP) . 6 V-D.7 User Datagramm Protocol (UDP) . 6 V-D.8 Simple Mail Transfer Protocol (SMTP) 6 V-D.9 TELNET Protocol . . . . . . . . . . 6 VI Dann schnüffeln wir VI-A Normaler Verkehr . . VI-B Mail-Session . . . . . VI-C FTP-Session . . . . . VII Schluss endlich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 7 7 8 8 9 Abstract— Dieser Artikel soll Einblick in die Verwendung von Sniffer-Tools und Unterstützung bei der Installation des Tools Ethereal geben. Es wird an Hand von expliziten Beispielen auch vieles über die Handhabung von Ethereal gesagt. Grundlagen im TCP/IP-Protokoll werden nochmals grob Umrissen. Sniffer W ENN man Medien Glauben schenkt, ist das schrecklichste Schicksal, das einen Systemadministrator ereilen kann, dass sein Webserver gehackt und seine Webseiten verändert werden. Das stimmt jedoch nicht. Obwohl derartige Angriffe dramatisch aussehen und oft große Schlagzeilen bekommen, sind sie nichts, verglichen mit einem wahren Angriff. Richtige Cracker teilen ihre Anwesenhiet im Allgemeinen nicht mit oder protzen mit ihrem Leistungen. Statt dessen installieren sie ganz im Verborgenen Überwachungsvorrichtungen, die heimlich Informationen über das angegriffene Netzwerk sammeln. Diese Tools heißen Sniffer, und mit ihnen kann man alle Arten von Daten sammeln, die im Netzwerk übertragen werden. Viele Sniffer haben einzig und allein den Zweck, Benutzernamen und Kennwörter in gängigen Protokollen auszuspionieren. Andere trachten danach, Kredtikartennummern und Ablaufdaten zu ermittlen. Sniffer können alles Mögliche machen: Sie können ebenso ganz bestimmte Datentypen auf der Basis von Datenmustern erkennen wie auch den gesamten Datenverkehr einer einzelnen Leitung abhören. Die Verwendung von Sniffern muss jedoch nicht immer böswillig sein – es gibt auch Varianten, deren Zweck darin besteht, Fehler im Netzwerkverkehr aufzudecken. Diese Sniffer heißen Protocol-Analyzer. Sie basieren auf der gleichen Technologie wie Sniffer, sind aber in der Lage, Probleme wie falsch gesetzte Flags, unsachgemäß formatierte Pakete und andere Fehler zu entdecken, die Netzwerkschichten beeinträchtigen können.[Hacker’sGuide] II. Was macht Ethereal zu so einer besonderen Software? A. Free-Ware Es gibt eine große Anzahl von Packet-Sniffing-Tools. Einige diesser Programme sind recht günstig. Diese sind für 100 Euro oder weniger zu haben. Andere sind wieder wesentlich teurer (mehr als 100 Euro). Aber es gibt noch eine dritte Kategorie: Jene, die gar nichts kosten. Die Auswahl bei diesen Freeware-Tools ist natürlich beschränkt. Aber es gibt zwei Programme die wirklich voll funktionsfächige, kostenlose Packet-Sniffing-Tools sind: WinDump, ein sehr einfach gehaltenes, MSDOSbasiertes Programm. Allerdings kann man nur während der Beobachter mit dem Netzwerk vebunden ist, Pakete analysieren. Ethereal, mit dem wir uns im folgenden noch genauer auseinander setzen werden. B. Plattform Ein weiterer Grund indem Ethereal sich von anderen Tools unterscheidet, ist die Möglichkeit das Programm für viele verschiedene Betriebssysteme einzusetzen. Die folgende Liste gibt an, für welche Betriebssysteme Ethereal verfügbar ist: • Linux (2.0.x, 2.1.x, 2.2.x, 2.3.x, 2.4.x) • Solaris (2.5.1, 2.6.7) • Free BSD • Sequent PTX v4.45 • Tru64 Unix (3.2, 4.0) • Irix • Aix • Win32 (NT, 98) Dem ist nicht mehr viel hinzuzufügen! C. GnuPublicLicence (GPL) Ethereal ist ein open-source-software-project herausgegeben von der GPL. Der gesamte Quellcode ist frei zugänglich und es wird jeder herzlich dazu eingeladen Ethereal seinen eigenen Vorstellungen anzupassen. Natürlich kann man vorgenommenen Verbesserungen dem Team von Ethereal rückmelden. Wer weiß, vielleicht gibt es ja sogar noch einen User, dem genau dieses Protokoll noch gefehlt hat, oder der auch diese Funktion noch unbedingt benötigt . . . Dies ist sicher auch der Hauptgrund dafür, dass dieses Tool so schnell entwickelt wurde. III. Eine kurze Geschichte von Ethereal Ende 1997 setzte sich Gerald Combs mit Theorie über Netzwerk auseinander. Er war nicht nur auf der Suche nach mehr Wissen, sondern benötigte auch ein Tool, welches ihm bei der Lösung gewisser Probleme im Datenverkehr helfen sollte. Also begann er ein Programm zu schreiben (Ethereal ) um beide Fliegen mit einem Streich zu schlagen. Nach einigen Pausen in der Entwicklung wurde im Juli 1998 Ethereal erstmals veröffentlicht. In nur Tagen trafen eine Menge bug-reports, Zusätze (Patches) und Worte der Ermunterung zu diesem Programm ein; so begann der Erfolg von Ethereal. Kurze Zeit später sah auch Gilbert Ramirez das Potential dieses Tools und fügte noch einen low-level-dissector hinzu. Im Oktober 1998 war Guy Harris von der Firma NetApp auf der Suche nach einer Alternative zu TCPview. Er veränderte, oder besser gesagt verbesserte Ethereal weiter. Gegen Ende 1998 wurde Richare Sharp auf dieses Tool aufmerksam. Er erkannte den großen Veranschauungsvorteil den diese Software in seinem TCP/IP-Kursen einbringen konnte. Auch er unternahm weitere Veränderungen, damit auch jene Protokolle unterstütz wurden, die er benötigte. Die Liste jener Leute, die Ethereal bis jetzt erweitert und verbessert haben ist sehr lang und kann unter http://www.ethereal.com/ethereal.1.html eingesehen werden. Siehe dazu Fig. 1 Fig. 1. Ethereal-Autoren. IV. Installationstipps Nach dem vorher schon so viele Betriebssysteme angesprochen wurden auf denen Ethereal einsetzbar ist, möchte ich auch auf zwei davon näher eingehen. A. Win32(NT, 95, 98, ME) Empfehlenswerter Ausgangspunkt ist die Homepage des Teams von Ethereal : http://ethereal.zing.org oder einfach http://www.ethereal.com. Neben den einzelnen Ver- Fig. 2. Ethernet Cable. sionen von Ehtereal erhält man hier auch entsprechende Information und Installationshinweise, so ist z.b. unter Win32(NT,95,98,ME) eine Installtion in kürzester Zeit möglich. Man muss lediglich zwei Dateien herunterladen: ethereal-setup-0.9.2.exe, eine Installationsroutine, die auch schon die benötigten GTK+ dll’s enthält. WinCap-packet-Driver, dessen Aufgabe es ist eine Verbindung zwischen dem Netzwerk oder Dial-up-Network (Modem, ISDN, ADSL, . . . ) und dem Packet-Sniffer-Tool herzustellen. Dieser WinCap-Packet-Driver kann auf der Seite http://winpcap.polito.it/ heruntergeladen werden. Es wird eine selbstextrahierende Anwendungsdatei WinPcap 2 x.exe auf der Festplatte gespeichert, die bei der Ausführung alle benötigten Treiber installiert. Achtung: Sollte schon eine ältere Version des Treibers installiert sein, unbedingt, diese zuerst deinstallieren. Nach dem WinPcap 2 x.exe ausgeführt wurde, kann man ethereal-setup-0.9.2.exe starten. Ein Installatins-guide öffnet sich, dem getrost gefolgt werden kann. Einem Probelauf von Ethereal sollte nun nichts mehr im Weg stehen. Fig. 3. Ethereal-Home B. Raum 7/19 Um dieses Programm auch im Rahmen unseres Seminars zu benützen, haben wir (Teilnehmer des Seminars) die Möglichkeit an den Geräten des MathematikComputerraums 7/19 Ethereal lokal zu starten. Dazu wurden allen Teilnehmern (über ihre Benutzerkennung) sogenannte programm-spezifische Super-User-Rechte (kurz sudo) zugewiesen. Achtung: Wer diese auf irgendeine Art und Weise missbraucht, oder für Zwecke verwendet, für die sie nicht vorgesehen sind, verliert diese wieder. Starten lässt sich Ethereal einfach. Man öffnet eine XTerminal, und gibt ein: >xhost +localhost >/usr/sbin/ethereal & V. TCP/IP A. Einleitung Bevor das Programm Ethereal sinnvoll genutzt werden kann, muss man sich auf jeden Fall noch einmal Gedanken darüber machen, welche Informationen man denn wirklich von so einer Capturing-Session erwartet. Dazu ist es sicher kein Fehler das nächste Kapitel über TCP/IP durch zulesen. Das Wort TCP/IP beschreibt alles, was im Zusammenhang mit den speziellen Protokollen TCP und IP steht. Es beinhaltet auch andere Protokolle, Anwendungen und auch Netzwerkschichten. Einige Beispiele von Protokollen: UDP, ARP und IP; von Anwendungen: Telent, FTP. Ein weitaus besserer Ausdruck dafür ist Internet Technologie. Ein Netzwerk, das diese Internet Technologie nützt nennt man Internet. Das Transmission Controll Protocol/Internet Protocol ist ein weitverbreiterter Standard für die Verbindung von Rechnern vieler Hersteller. Die verschiedenen Implementierungen der Protokolle der TCP/IP-Famillie sind untereinander kompatibel, so dass Daten und Dienste von Rechnern verschiedener Hersteller gemeinsam genutzt werden können. Bei der Protokollfamilie TCP/IP wird unteranderem ein verbindungsorientiertes Verfahren eingesetzt. Dies bedeutet, dass vor der Übertragung zunächst einmal eine Verbindung zu einem anderen Datenendgerät aufgebaut werden muss. Dabei übernimmt ein Teil von TCP/IP, nämlich das IP (Internet Protocol), die Adressierung, das Versenden und die Überwachung des Transports der einzelnen Datenpakete. Das TCP/IP-Protokoll besteht generell aus einer Vielzahl von Varianten, wobei das bekannteste Protokoll sicherlich das für den Einsatz in UNIX-Netzwerken ist. Obwohl TCP/IP bereits implementiert war, bevor die Inernationale Organisation of Standardization ISO mit der Definition des OSI Refernzmodells begann, lassen sich die einzelnen Protokolle zumindest in den unteren Ebenen recht gut den Schichten des ISO/OSI-Referenzmodells zuordnen.[TCP/IP-Grundlagen] B. Architektur Als Erklärung für die Realisierung von Netzwerkprotokollen dient das so genannte ISO-OSI-Modell. Dabei werden die einzelnen Protokolle jeweils in Schichten (Layer) beschrieben, von denen jede ihre bestimmte Funktion erfüllt, gleichzeitig aber auch die Funktionen der darunterliegenden Schicht verwendet. Daraus ergibt sich zwangsläufig der Vorteil, dass durch einen solchen Aufbau eine Unabhängigkeit höherer Schichten von den darunter liegende Schichten gewährleistet ist. Da TCP/IP jedoch mehr oder weder unabhängig vom IOS/OSI-Refrenzmodell entwickelt wurde, passen die Internetschichten nicht ganz in das ISO/OSI-Modell. Es gibt im Aufbau einige Gemeinsamkeiten, aber auch viele Unterschiede: So wird die TCP/IP-Netzwerkschicht im ISO/OSIModell zu einer Bitübertragungs- und Sicherungsschicht. Zwischen Transport- und Anwendungsschicht sind noch die beiden Schichten Kommunikation und Darstellen angesiedelt, die bei der TCP/IP-Software oft schon in den Protokollen der Anwendungsschicht integriert sind. Beim einem Vergleich des Aufbaus mit dem OSISchichtenmodell fällt auf, dass bei TCP/IP lediglich vier verschieden Schichten (im Gegensatz zu den sieben Schichten des OSI-Modells) existieren (vergleiche Fig. 4). Somit gestaltet sich der generelle Aufbau bzw. die Zusammensetzung der TCP/IP-Architektur grundsätzlich wie folgt: • Netzwerkschicht • Internetschicht Fig. 4. TCP/IP im ISO/OSI-Referenzmodell Transportschicht Anwendungsschicht Die Schichten 5 bis 7 des OSI-Standards werden im TCP/IP-Referenzmodell in einer Anwendungsschicht zusammengefasst, da die Anwendungsprogramme alle direkt mit der Transportschicht kommunizieren. In Schicht 4 befindet sich außer TCP, welches gesicherten Datentransfer ermöglicht, auch UDP (User Datagramm Protocol), in welchem verbindungsloser und ungesicherter Transport festgelegt ist. Beide Protokolle erlauben durch die Einführung von so genannten Ports den gleichzeitigen Zugriff mehrerer Anwendungsprogramme auf ein und die dieselbe Maschine. In Schicht 3 ist das verbindungslose Internet-Protokoll (IP) angesiedelt. Datenpakete werden auf den Weg geschickt, ohne dass auf eine Empfangsbestätigung gewartet werden muss. In Schicht 3 werden damit auch die IP-Adressen festgelgt. Hier findet auch das Routing, das heißt die Wegsteuerung bzw. Wegewahl eines Pakets von einem Netz ins andere statt. Ebenfalls in dieser Ebene integriert sind die ARPProtokolle (Adress Resolution Protocol), die zur Auflösung einer logischen IP-Adresse in eine physikalische Adresse (Knotenadresse) dienen und dazu so genannte Broadcasts (Datenpakete, durch die alle angeschlossenen Stationen angesprochen werden) verwenden. ICMP, ein Protokoll, welches den Austausch von Kontroll- und Fehlerpaketen im Netz ermöglicht, ist ebenfalls in dieser Schicht realisiert (siehe Fig. 5). Für das TCP/IP-Referenzmodell gilt als Besonderheit, dass sich die Anwendungschicht in der Praxis aus einer Reihe von separaten Protokollen zusammensetzt. Beispielhaft sind da zu nennen: FTP, TELNET, SMTP. • • B.1 Netzwerkschicht Die Netzwerkschicht ist die unterste Schicht des TCP/IP-Modells. Protokolle, die auf dieser Schicht angesiedelt sind, legen fest, wie ein Host an ein bestimmtes Netzwerk angeschlossen wird und wie IP-Pakete über dieses Netzwerk übertragen werden. Im Gegensatz zu den Protokollen der höheren Schichten, müssen die Protokolle der Netzwerkschicht sich auf Details des verwendeten Netzwerks wie beispeilsweise Paketgröße, Netzwerkadressierung usw. beziehen. Die Netzwerkschicht des TCP/IP-Modells Fig. 5. TCP/IP im OSI-Referenzmodell umfasst somit die Aufgaben der Bitübertragungsschicht, Sicherungsschicht und Vermittlungsschicht im OSI-Modell. B.2 Internetschicht Das Internet ist eine Ansammlung von Teilnetzen, die miteinander verbunden sind. Es gibt keine echte Struktur des Netzes, sondern mehrere größere Netze (Backbones, in Europa z.B. EBONE und EuropaNET) bilden quasi das Rückgrat des Internets. Die Backbones wiederum werden aus Leitungen mit sehr hoher Bandbreite und schnellen Routern gebildet. An den Backbones sind ebenfalls größere regionale Netze angeschlossen, die lokale Netzwerke von Universitäten, Behörden, Unternehmen und Service-Providern verbinden. Die Internetschicht (Internet Layer) von TCP/IP entspricht der Vermittlungsschicht des ISO/OSISchichtenmodells. Das Protokoll, das auf dieser Eben am häufigsten eingesetzt wird, ist das Internet-Protocol (IP). Daraus resultiert auch ein Teil der Namensgebung der TCP/IP-Protokollfamilie. Die Internetschicht hat die Aufgabe IP-Pakete richtig zuzustellen. Dabei spielt das Routing der Pakete eine wichtige Rolle. Das Internet Control Message Protocol (ICMP) ist fester Bestandteil jeder IP-Implementierung und dient zur Übertragung von Diagnose- und Fehlerinformationen für das Internet Protocol. B.3 Transportschicht Die Transportschicht (Transport Layer) der TCP/IPArchitektur ist vergleichbar mit der Transportschicht des OSI-Schichtmodells. Das wichtigste Protokoll dieser Schicht ist das TCP (Transmission Control Protocol) als zweiter Teil der Namensgebung con TCP/IP. Das TCP ist zuständig für die sichere und zuverlässige Übertragung der Daten zwischen zwei Endgeräten. Im TCP/IP-Referenzmodell wurden auf dieser Schicht zwei Ende-zu-Ende-Protokolle definiert: TCP Transmission Control Protocol UDP User Datagramm Protocol. UDP ist ein verbindungsloses Transportprotokoll, das Anwendungen die Möglichkeit bietet, eingekapselte rohe IPPakete zu übertragen. Vor der Übertragung fasst TCP eine bestimmte Anzahl zu versendender Bytes zu so genannten Datenpaketen zusammen und überträgt diese anschließend mit Hilfe des IP. Generell erhält jedes Paket eine Sequenznummer, anhand derer das Ordnen und Quittieren eingehender Pakete sowie das Ignorieren doppelt versandter Pakete ermöglicht wird. B.4 Anwendungsschicht Aufbauend auf die Dienste der Transport- und der Internetschicht kommen die Protokolle der Anwendungsschicht (Application Layer) zum Einsatz. Zu den Protokollen der Anwendungsschicht zählen TELNET, FTP und SMTP. Im Laufe der Zeit kamen zu den etablierten Protokollen viele weitere Protokolle wie z.B. DNS und HTTP hinzu.[TCP/IP-Grundlagen] Fig. 6. TCP/IP im OSI-Referenzmodell Protokollen der Familie benannt (TCP und IP). Sie besteht jedoch aus einer großen Anzahl weiterer Protokolle, darunter sehr vielen speziellen Protokollen für diverse Anwendungen. So stellen TCP, IP und UDP die grundlegende Transportfunktionalität zur Verfügung. Auf dieser Basis stellen Anwendungsprotokolle, wie TELNET, FTP, und SMTP vom Benutzer nutzbare Dienstleistungen zur Verfügung. Im folgenden möchte ich noch die wichtigsten Protokolle aus der TCP/IP-Protokollfamilie vorstellen und erläutern. D. Die wichtigsten Protokolle D.1 Adress Resolution Protocol (ARP) C. Begriffe und Festlegungen Das Prinzip der Schichten im TCP/IP-Referenzmodell basiert darauf, dass eine Schicht die angebotenen Dienste der darunter liegenden Schicht in Anspruch nehmen kann. Dabei braucht die Schicht, die Dienstleistung in Anspruch nimmt, keinerlei Kenntnisse darüber haben, wie die geforderten Dienste erbracht werden. Auf diese Art und Weise wird eine Aufgabenteilung der Schichten erreicht. Daten, die von einem Programm über ein Netzwerk versendet werden, durchlaufen den TCP/IP-Protokollstapel (stack) von der Anwendungs- bis zur Netzwerkschicht. Von jeder Schicht werden dabei Kontrollinformationen in Form eines Protokollkopfes (header) angefügt. Das Zufügen von Kontrollinformationen wird als Einkapselung (encapsulation) bezeichnet. Innerhalb der Schichten des TCP/IP-Modells werden Daten mit verschiedenen Begriffen umschrieben, da jede Schicht auch ihre eigenen Datenstrukturen hat. Anwendungen, die das TCP benutzen, bezeichnen Daten als Strom (stream). Anwendungen, die das UDP verwenden, bezeichnen Daten als Nachrichten (message). Auf der Transportebene bezeichnen die Protokolle TCP und UDP ihre Daten als Segment (segment) bzw. Paket (packet). Auf der Internetschicht werden Daten allgemein als Datengramm (Datagramm) benannt. Oft werden die Daten hier aber auch als Paket bezeichnet. Auf der Netzwerkebene bezeichnen die meisten Protokolle ihre Daten als Pakete oder Rahmen (frames). Als Beispiel beachte Fig. 6. Die TCP/IP-Protokollfamilie wurde nach den wichtigsten Das ARP-Protokoll dient (auf der Transportschicht) zur Umsetzung von IP- Adressen in Knotenadressen. Innerhalb eines Netzwerksegments wird mit den Knotenadressen gearbeitet, wobei jedem Endgerät eine weltweite eindeutige Knotenadresse (Node adress) zugewiesen ist. Die Umsetzung einer IP-Adresse in eine Hardware-Adresse erfolgt durch Tabellen und auf Hardware-Ebene (z.B. Ethernet) automatisch über ARP. D.2 File Transfer Protocol (FTP) Das File Transfer Protocol (FTP) wird (auf der Anwendungsschicht) benutzt, um Dateien über ein Netzwerk von einem Endgerät zu einem anderen zu transportieren. Ein Endgerät (z.B. Rechner) kann eine Verbindung mit einem entfernten Rechner initiieren und darüber Dateien senden und empfangen, Verzeichnisse anzeigen lassen und einfache Kommandos ausführen. FTP wird überlicherweise als Client-Server-Software implementiert. Der Benutzer arbeitet mit dem lokalen Client, der mit dem entfernten Server kommuniziert. Dieser Server bearbeitet dann die Befehle des entfernten Benutzers und schickt die Ergebnisse an den Client zutück. D.3 Hypertext Transfer Protocol (HTTP) Das Hypertext Transfer Protocol ist in Zeiten des Internets ein sehr wichtiges Protokoll geworden. HTTP dient im Internet bzw. genauer im WWW für den Transport der einzelnen Web-Seiten, die wiederum mit HTML (Hypertext Markup Language) erstellt wurden. HTTP überträgt als Protokoll der TCP/IP-Anwendungsschicht die Seiten zwischen einem Web-Server und einem Web-Client. D.4 Internet Protocol (IP) Das Internet Protocol ist (auf der Internetschicht) zuständig für den Transport von Daten über mehrere Netzwerke hinweg. Das IP nimmt Datensegmente vom TCP oder UDP entgegen und packt diese in Pakete ein, die Datagramme genannt werden. Für jedes dieser Datagramme wird dann Leitweg zum Ziel bestimmt. Das IP stellt einen Adressierungsmechanismus zur Verfügung, welcher die Wegewahl zwischen Netzwerken ermöglicht. Jedes Datagramm besteht aus einem Datenteil und einem Header, der sowohl Quell- als auch Zieladresse beinhaltet. Mit dieser Information kann jeder Rechner ein Datagramm entweder direkt oder über eine Reihe von Gateways zu seinem Ziel senden. Die Funktion von IP lassen sich wie folgt zusammenfassen: • Definition von Datenblöcken (datagramm); welche die Basiseinheiten für die Übermittlung von Daten im Internet bilden • Definition des Adressierungsschemas • Übermittlung der Daten von der Transportebene zur Netzwerkschicht • Routing von Datagrammen durch das Netz • Fragmentierung und Zusammensetzen von Datagrammen Das IP ist ein kommunikationsloses Protocol, da es lediglich für jedes Datagramm den Weg zum Ziel bestimmt und es absendet. Es wird jedoch keine Überprüfung des Empfangs vorgenommen, so dass Datagramme durchaus verloren gehen können. Diese Aufgabe wird in der Transportschicht vom TCP übernommen. Wird jedoch das UDP in der Transportschicht verwendet, ist die Empfangsbestätigung vom Anwendungsprotkoll zu leisten. D.5 Reverse Adress Resolution Protocol (RARP) Das RARP leistet (auf der Transportschicht) die entgegengesetzte Umsetzung wie ARP, d.h. es werden physikalische Adressen (Knotenadressen) in Internet-Adressen umgewandelt. D.6 Transport Control Protocol (TCP) Das TCP ist im Referenzmodell auf der Transportschicht angesiedelt und realisiert die zuverlässige Kommunikation zwischen einzelnen Prozessen. Dabei wird garantiert, dass die Daten fehlerfrei, ohne Verlust oder Duplizierung in der ursprünglichen Reihenfolge beim Client wieder zusammengesetzt werden. TCP kommt auf der vierten Schicht des Referenzmodells zum Einsatz. Auf dieser Schicht wird nicht mehr von Paketen, sondern von Segmenten geredet. Die Protokolle höherer Schichten, wie z.B. FTP, übergeben Daten an das TCP, um sie an einen anderen Prozess zu übertragen. Das TCP unterteilt diese Daten in Segmente und übergibt diese an das IP, welches diese Segmente in Datagramme unterteilt und sie zum Zielsystem befördert. Auf dem Zielsystem erhält das TCP seine Segmente vom IP zurück und überprüft die fehlerfreie Übertragung. Korrekte Segmente werden dann in der ursprünglichen Reihenfolge zusammengesetzt, dem höheren Protokoll übergeben und der Empfang der Senderseite bestätigt. Ansonsten wird die Übertragung dieses Segments von der Senderseite wiederholt. Somit lassen sich die Hauptmerkmale von TCP wie folgt zusammen fassen: • verbindungsorientierter Dienst • vollduplexfähig • hohe Zuverlässigkeit • Sicherung der Datenübertragung durch Prüfsummen und Quittierung mit Zeitüberwachung • Möglichkeit von Vorrangdaten • Adresse der Ende-zu-Ende-Verbindung durch Portnummern in Verbindung mit IP-Adressen D.7 User Datagramm Protocol (UDP) Das UDP bietet als Transportschicht-Protokoll im Vergleich zu TCP lediglich eine unzuverlässige Datenübertragung zwischen einzelnen Prozessen. Das UDP ist unzuverlässig, weil es weder erfolgreich übertragene Pakete bestätigt, noch für deren richtige Reihenfolge garantiert. UDP ermöglicht zwischen zwei Stationen mehrere unabhängige Kommunikationsbeziehungen. Die Identifikation der beiden Prozesse einer Kommunikationsbeziehung geschieht durch Portnummern (Ports), die allgemein bekannten Anwendungen fest zugeordnet sind. Der Vorteil des UDP liegt in seinem Verzicht auf den zusätzlichen Ballast (geringerer Protocoloverhead), der vom TCP für eine verlässliche Übertragung benötigt wird. Die Protokolle höherer Schichten, welche diese Sicherheit nicht benötigen, verwenden daher das UDP. Zum Beispiel verwendet das Domain-Name-System UDP, da hier Verlässlichkeit nicht weiter wichtig ist. Eine verloren gegangene Domain-Name Abfrage kann ohne Schaden wiederholt werden. UDP eignet sich somit besonders für Anwendungen, bei denen es in erster Linie auf die Geschwindigkeit der Datenübertragung ankommt (z.B. Streaming, . . . ). D.8 Simple Mail Transfer Protocol (SMTP) Das SMTP bildet das Rückgrat der elektronisdchen Post in TCP/IP-basierten Netzwerken und damit auch im Internet. SMTP ist auf der Anwendungsschicht des TCP/IPReferenzmodells angesiedelt. D.9 TELNET Protocol TELNET (Terminal Emulation over Network) ist ein Zugriffsprotokoll der Anwendungsschicht, mit dem ein lokales Terminal in die Lage versetzt wird, wie ein Terminal an einem entfernten Rechner eingesetzt zu werden. Mittels TELNET kann ein Rechner oder ein Terminalfenster in einer Benutzeroberfläche in eine Terminal verwandelt werden (Rechneremulation).[TCP/IPGrundlagen][TCP/IP-Dienste] VI. Dann schnüffeln wir endlich Es sollte uns nun nichts mehr im Weg stehen um endlich mal loszulegen. Als erstes Beispiel möchte ich hier das vorhin genannte nocheinmal veranschaulichen. Dazu eignet sich am besten ein ganz ’normaler’ Verkehr über die Internet-Verbindung. A. Normaler Verkehr Die folgende Capturing-Session habe ich am Computer zu Hause aufgezeichnet. Es wäre natürlich auch im Raum 7/26 möglich gewesen den normalen Verkehr aufzuzeichnen, nur wären da in der selben Zeit des Erfassens um einiges mehr an Paketen angefallen (zu Hause erfolgt die Internetverbindung über ein sogenannte Dial-Up-Network, nichts anderes als ein Modem, im Unterschied zur Uni, bei der man über ein Netzwerk (LAN) an das Internet angebunden ist). In Fig. 7 kann man nicht wirklich viel erkennen, außer man benutzt das Zoom-Werkzeug bis zum Anschlag. Aber man kann doch vermuten, dass die zwei Bereiche der Benutzeroberfläche von Ethereal zusammenhängen. Im ersten Fenster sind die einzelnen Pakete aufgelistet (nach zeitlicher Reihenfolge geordnet). Im zweiten Fenster sieht man nähere Informationen zu dem markierten Paket. Fig. 8. ’zweites’ Fenster Genauso kann man auch z.B. bei den Protokollen verfahren. Man wählt sich ein bestimmtes Protokoll aus, eigentlich wieder das Paket, welches das gewünschte Protokoll enthält, und klickt mit der linken Maustaste auf Protocol. Ein bisschen aufwendiger, dafür aber um so mächtiger ist das Filter Werkzeug. Dies befindet sich ganz links unten an der Benutzeroberfläche. Aktivieren kann man es, in dem man auf den Button mit der Aufschrift Filter klickt. Es öffnet sich folgendes Dialogfenster: Fig. 7. ’erstes’ Fenster Ethereal bietet eine Vielzahl an Möglichkeiten um diese Pakete zu ordnen. Bei einer ’normalen’ Session treten ganz leicht an die tausend Pakete auf, die zwischen verschiedenen Geräten hin und her geschickt werden. Dass zum bessern Überblick ein gut durchdachtes Sortier- und Filterwerkzeug ein muss ist, versteht sich von selbst. Die folgenden Kriterien, nach denen sortiert werden kann, sind sehr hilfreich: - Nummer (No.) - Quelle (Source) - Ziel (Destination) - Protokoll (Protocol) Das Sortieren nach einer bestimmten Ziel-Adresse erfolgt ganz einfach durch Auswahl der gewünschten Adresse (eigentlich muss das Paket, welches die gewünschte Adresse enthält ausgewählt werden), und anschließend einfach mit der linken Maustaste auf die Spalte Source (besser gesagt einfach auf den Schriftzug Source) klicken. Fig. 9. Filter-Aktivierung 1 Interessant wird es jetzt, wenn man auf Add Expression drückt. Es öffnet sich wieder ein neues Dialogfenster: Ich habe natürlich schon einen geeigneten Field name ausgewählt, z.B. IP. Man wählt dann noch eine Relation, z.B. == und einen geeigneten Value. Klingt alles seltsam, ist es aber nicht. Was ich ber diese Auswahl gemacht habe, ist nichts anderes als, dass alle Pakete die nicht als Ziel-IPAdresse den Wert 212.67.232.1 haben, ausgefiltert werden. Man muss noch auf Accept und im nächsten Fenster auf Ok drücken. Man kann beobachten, dass die Spalte ganz links (No.) nun nicht mehr fortlaufend jede Zahl anzeigt, sondern eben nur noch jene Pakete, die unseren Filter-Kriterien entsprechen. Um das Ganze rückgängig zu machen betätigt man den Fig. 10. Filter-Aktivierung 2 Fig. 12. Unerwartetes Button Reset. Mit Hilfe dieser Filter lassen sich die unzähligen Pakete auf jeden Fall stark in ihrer Zahl reduzieren. Wenn man sich den Inhalt der Figure 8 genauer anschaut, erkennt man, dass die Struktur dieses Protkoll-Stapels folgende Reihenfolge hat: • DNS (Domain-Name-Service) • UDP (UserDataProtocol) • IP (InternetProtocol) • Ethernet Was genau mit dem vorhin besprochenen (TCP/IPGrundlagen) übereinstimmt. Einem gezieltem Einsatz von Ethereal sollte nun nicht mehr viel im Wege stehen. Als kleine Zugaben habe ich noch weitere Capturing-Sessions aufgezeichnet, damit man sehen kann, zu was für einem Unfug dieses Tool auch im Stande ist anzurichten. Mit dem feinen Unterschied: Wenn man sich einen dieser TCP-Streams genauer anschaut, d.h. man wählt sich ein Paket aus, das ein TCP-Protokoll enthällt, drückt auf die rechte Taste der Maus und wählt Follow TCP-Stream. Es öffnet sich ein eigenes Fenster, in dem bei genauerem Durchschauen allerhand Interessante Dinge auftauchen (siehe Figure 12. Unerwartetes). Wenn man allerdings eine sichere Verbindung verwendet (https), sieht der selbe TCP-Stream wie folgt aus (siehe Fig.13). B. Mail-Session Bei diesem Beispiel handelt es sich um eine einfache Kommunikation zwischen einem Rechner, der über ein sogenanntes Dial-Up-Network (kurz, gesagt, über ein Modem, ISDN, ADSL, . . . ) mit dem Mail-Server der Universität Innsbruck verbunden ist. Bekannterweise öffnet sich ein Dialogfeld, indem man Benutzername und Passwort eingeben muss. Fig. 13. Mail-Session mit sicherer Verbindung Wie kommt man zu einer sicheren Verbindung? Am Einfachsten ist es wenn man im verwendeten Webbrowser anstatt http://web-amil2.uibk.ac.at folgende Adresse angibt: https://web-mail2.uibk.ac.at. Das Web-Mail-Programm der Universitt Innsbruck bietet aber auch eine sichere Verbindung auf ’Knopfdruck’ an. Fig. 11. Mail 1 Es zeichnet sich wieder das selbe Spiel ab: Eine Anfrage (über DNS) wer denn überhaupt web-mail2.uibk.ac.at ist, usw . . . C. FTP-Session Als letztes Beispiel möchte ich noch die Pakete einer Verbindung der Anwendung FTP vorstellen. Dazu habe ich mich wieder von einem Dial-Up-Network aus an den FTP-Server der Universität Innsbruck eingeloggt (verwendet wurde die Software Ws FTP). Diesmal ganz unverblümt: Fig. 14. FTP-Session VII. Schluss Am Ende dieses Papers möchte ich auch noch Gedanken über die Abwehrmethoden von Sniffern erläutern. Einen Sniffer in seinem Netzwerk zu finden, ist so ziemlich das Schlimmste, was man sich vorstellen kann; Das Netzwerk ist dann bereits geknackt worden. Aber man muss es gar nicht erst so weit kommen lasse, um Sniffer-Angriffe bekämpfen zu können. Es gibt eine effektive Methode zur Vorbeugung, die man von Anfang an einsetzen kann, wenn man ein Netzwerk einrichtet: Verschlüsselungsverfahren! Das Konzept weist jedoch auch gravierende Nachteile auf. Benutzer wehren sich vielleicht gegen den Einsatz der Verschlüsselung. Sie finden sie möglicherweise zu umständlich. Es ist z.B. schwierig, Benutzer dazu zu überreden, bei jeder Anmeldung am Server ein Einmalkennwortsystem zu verwenden. Der einzig effektive Einsatzbereich eines Paket-Sniffers für Hacker liegt dort, wo Netzwerkkommunikation überhaupt stattfindet. Es gibt eigentlich nur zwei Fälle, in denen man sich Sorgen machen muss [Hacker’sGuide]: 1. Es werden vertrauliche Daten an einen Computer außerhalb des lokalen Netzwerks versendet und man weiß nicht genau, wie diesen ihren Bestimmungsort erreichen. 2. Einer der internen Benutzer ist nicht vertrauenswürdig. Es sollte auch noch auf ssh (secure shell) hingewiesen werden. ssh ist ein Anwendungsprotokoll, das andere unsichere Protokolle wie z.B. TELNET oder FTP ersetzt. ssh ist auf Verschlüsselung und Authentifizierung basiert. Die folgenden Dokumente enthalten weitere Informationen über Sniffer und die Bedrohung, die sie darstellen: • Christopher Klaus: The ISS Sniffer FAQ • Renee Deger: Computer Hacker Charged with Credit Card Theft • Tirza van Rijn und Jan van Oorschot: Gobbler: An Ethernt Troubleshooter/Protocol Analyzer • Dave Dittrich: Network Sniffers and You References [Hacker’sGuide] Anonymous, Der neue Linux Hacker’s Guide. Markt&Technik Kapitel (8), 289–320, 2001. [TCP/IP-Grundlagen] Dirk Larisch, TCP/IP. bhv Kapitel (2), 75– 146, 2001. [TCP/IP-Internet] Dirk Larisch, TCP/IP. bhv Kapitel (3), 147– 188, 2001. [TCP/IP-Dienste] Dirk Larisch, TCP/IP. bhv Kapitel (5), 217–248, 2001. [Packet Sniffing] Dick Hazeleger, Packet Sniffing. , 2001.