Sniffer: Ethereal - Refugium mviess.de

Werbung
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.
Herunterladen