Die meisten Aktivitäten des Rechners im Netzwerk bleiben dem Anwender verborgen. Wireshark deckt sie auf.
Der ans Netzwerk angeschlossene Rechner ist ein geschwätziger Geselle: Kontinuierlich beantwortet er Statusabfragen oder stellt selbst Anfragen an andere Rechner. Diese Aktivitäten bleiben dem Anwender in aller Regel verbogen. Selbst der Besuch einer Webseite führt unter Umständen zum Transfer von Daten, von denen der Anwender nichts weiß: Site-Tracker oder Webbugs bis hin zu bösartigem, in Webseiten eingebetteten Schadcode, der im Hintergrund abläuft. Auch Spywareprogramme wie Keylogger, Rootkits und Trojaner nutzen die Möglichkeiten der verborgenen Kommunikation. Abgesehen von rudimentären Analyseprogrammen wie Netstat hat der Anwender kaum Werkzeuge zur Hand, um nachzuvollziehen, welche Daten über seinen Rechner laufen.
Abhilfe schaffen hier so genannte Sniffer. Sie ermöglichen nicht nur die detaillierte Analyse des eigenen Netzwerkverkehrs, sondern auch den der anderen ans Netzwerk angeschlossenen Rechner, sofern sich diese in derselben Kollisionsdomäne (siehe Kasten “Abgehört”) befinden. Beinahe jede Distribution bringt den bekannten kommandozeilenbasierten Sniffer Tcpdump mit, den aufgrund seiner komplizierten Bedienung aber nur wenige Anwender wirklich nutzen.
Abgehört
In älteren Netzwerken dient oft noch der Hub zum Anschluss der Rechner ans Netzwerk. Dieser arbeitet ähnlich wie eine Mehrfachsteckdose. Der Datenstrom eines Rechners erreicht automatisch auch die anderen angeschlossenen Hosts (Abbildung 1), die sich alle innerhalb der selben so genannten Kollisionsdomäne befinden. Neben dem eklatanten Sicherheitsrisiko gilt als zweites Manko der geringe Datendurchsatz durch die Kollision von Paketen, die der Absender dann erneut versenden muss. Befindet sich eine der Netzwerkkarten im Promiscuous Mode, empfängt der Rechner alle Informationen, beispielsweise Login-Daten für FTP, SMTP oder Telnet. Spezielle Sniffer wie Phoss [1] verfeinern diese Technik und liefern nach dem Start ausschließlich die über das Netzwerk versendeten Login-Daten.

Abbildung 1: Rechner in derselben Kollisionsdomäne versenden ihre Daten stets an alle daran angeschlossenen Rechner. Mit Netzwerksniffern wie Wireshark ist es dann ein leichtes, Passwörter unverschlüsselter Verbindungen auszulesen.
Abhilfe schaffen die heute gängigen Switches. Sie leiten den Datenstrom direkt vom Absender zum Empfänger. Über Methoden wie ARP-Poisoning kann ein Angreifer sich dennoch auch in geswitchten Netzen in den Datenstrom einschalten. Per MAC-Flooding lassen sich zudem Switches relativ leicht in den Repeat-Modus versetzen, der die Daten quasi wie ein Hub über das ganze Netz verteilt. Entsprechende Manipulationen fallen dem aufmerksamen Admin, beispielsweise mit Hilfe von Arpwatch [2], allerdings auf. Den besten Schutz gegen das Abhören sensibler Daten bietet jedoch nach wie vor das Verwenden verschlüsselter Dienste – etwa via SSH, HTTPS, SFTP, IMAPS und dergleichen.
Einen benutzerfreundlicheren Weg geht das Programm Wireshark [3], besser bekannt unter seinem früheren Namen Ethereal. Da die Namensrechte für “Ethereal” [4] beim ehemaligen Arbeitgeber des Maintainers verblieben, führt dieser das Projekt als Fork unter anderem Namen fort. Wireshark gilt einer der leistungsfähigsten freien Sniffer. Es entpuppt sich bei beim Beheben von Netzwerkproblemen nicht selten als unentbehrliches Hilfsmittel zur Fehlersuche.
Da Sniffer den internen Aufbau des Übertragungsprotokolls offen legen, gehören grundlegende Kenntnisse über TCP/IP zum Pflichtprogramm des Wireshark-Benutzers, um die gewonnenen Daten sinnvoll interpretieren zu können. Eine gute Einführung in die TCP/IP-Protokollfamilie bietet Heiko Holtkamp auf seinen Webseiten bei der Uni Bielefeld [5].
Installation
Auf der Downloadseite des Projekts steht für Linux lediglich der Quellcode von Wireshark zum Download bereit, nur wenige Distributionen bringen bereits ein fertiges Wirkeshark-Paket mit. Wer auf das manuelle Übersetzen des Programms verzichten möchte, installiert stattdessen das in den meisten Distributionen enthaltene Ethereal, das weitgehend die selben Funktionen bietet wie Wireshark.
Zum Kompilieren von Wireshark aus den Sourcen genügt der Dreisatz configure && make && make install, den Sie mit administrativen Rechten ausführen müssen. Der Übersetzungsvorgang dauert abhängig von der Leistung Ihres Rechners etwa 20 Minuten. Benutzer von Suse Linux müssen anschließend noch den Inhalt des Verzeichnisses /usr/local/lib/libwireshark nach /lib kopieren. Vor dem ersten Start gilt es dann noch das Paket libnet (Suse) oder libnet1 nachzuinstallieren, das zum Paketumfang aller größeren Distributionen zählt.
First Steps
Nach der Installation starten Sie das Programm über den Aufruf sudo wireshark mit administrativen Rechten in der Konsole. Als erstes gilt es, die Netzwerkkarte auszuwählen, deren Datenverkehr das Programm aufzeichnen soll. Klicken Sie dazu auf das erste Icon in der Schalterleiste (List the available capture interfaces…). Im neuen Fenster beginnen Sie die Aufzeichnung mit einem Mausklick auf das Icon Start. Über Options erreichen Sie ein erweitertes Konfigurationsfenster, in dem Sie unter anderem Filter setzen, die Paketgröße der Aufzeichnung beschränken oder einen definierten Endpunkt des Dumps festlegen (etwa Stop Capture after x Packets/Minutes). Ist die Checkbox Capture Packets in promiscuous Mode aktiviert, zeichnet Wireshark nicht nur den Netzwerkverkehr vom und zum eigenen Rechner auf, sondern – je nach Netzwerkanbindung des Rechners – unter Umständen auch fremde Datenverbindungen.
Wireshark verfügt über einen Live-Capture-Modus, der schon während der Aufzeichnung den Netzwerkverkehr anzeigt. Während das Hauptfenster (Abbildung 2) alle ein- und ausgehenden Pakete auflistet, finden Sie im Fenster darunter die Analyse der Paketheader. Das unterste Fenster zeigt den Inhalt des gewählten Paketes. Um die Aufzeichnung zu stoppen, klicken Sie in der Schalterleiste des Hauptfensters auf das Netzwerkkarten-Symbol mit dem roten Kreuz. Möchten Sie den Datenstrom speichern, wählen Sie danach das Diskettensymbol an. Über File | Open… stellen Sie später den gespeicherten Dump wieder her.

Abbildung 2: Wireshark zeigt bereits während der Aufzeichnung des Netzwerkverkehrs die Pakete im Analysefenster an.
Daten auswerten
Da beim Aufzeichnen eine Menge nur mäßig interessanter Daten anfallen, gilt es zunächst, den Weizen von der Spreu zu trennen. Dafür stellt das Programm eine ganze Reihe von Filterfunktionen bereit. Unter der Schalterleiste neben dem Icon Filter: finden Sie ein Eingabefeld, in das Sie Suchbegriffe wie http oder smtp direkt eintragen können, um den Datenbestand auf diese Art von Paketen einzuschränken. Eine Reihe vordefinierter Suchbegriffe fördert ein Klick auf das Icon Filter: selbst zutage (Abbildung 3).

Abbildung 3: Wireshark verfügt über mächtige Werkzeuge, um die gesammelten Daten nach den eigenen Vorgaben zu filtern. Das Anlegen neuer Filter erfordert jedoch detailierte Kenntnisse über Netzwerkprotokolle.
Um eigene Filter anzulegen, klicken Sie im neuen Fenster auf das Icon Expressions…. Allerdings erfordert die Arbeit mit selbst definierten Filtern ein gerüttelt Maß an Kenntnissen über Netzwerkprotokolle sowie grundlegende Kenntnisse über Regular Expressions.
Um nur die Pakete eines bestimmten Rechners anzuzeigen, klicken Sie mit der rechten Maustaste auf ein Paket, das vom gewünschten Absender stammt, und wählen aus dem Kontextmenü Apply as Filter | Selected. Umgekehrt blendet die Negierung Not selected eben diese Pakete aus.
Da stets mehrere Pakete zu einer Konversation zwischen Netzwerkstationen gehören, gibt ein einzelnes Paket oft wenig Aufschluss über deren Inhalt und Verlauf. Hier hilft die Option Follow TCP Stream aus dem Kontextmenü, das die komplette Session rekonstruiert und als ASCII-Code anzeigt. Möchten Sie ein im Verlauf der Sitzung übermitteltes Binärpaket – wie etwa ein Bild – wiederherstellen, wählen Sie Sie die Checkbox Raw und speichern die Daten mit der entsprechenden Erweiterung (beispielsweise gif), die im Header der Datei steht.
Eine weitere Möglichkeit, den Datenstrom zu lichten, besteht darin, die Anzeige auf bestimmte Protokolle einzuschränken. Über den Menüpunkt Analyze | Enable Protocols öffnen Sie ein Auswahlfenster mit allen unterstützten Protokollen, in dem Sie das Benötigte auswählen.
Zur Suche von Zeichenketten in den Paketen verwenden Sie das Suchsymbol in der Schalterleiste. Aktivieren Sie die Checkbox String und geben Sie im Textfeld den gesuchten Begriff ein.
Statistik
Wireshark kann nicht nur Daten filtern, sondern bringt auch einige Statistik- und Analysemodule mit. Im Fenster Analyse | Expert Info und Expert Composite zeigt Wireshark den Status (Notes, Errors, Warnings) aller eingegangenen Pakete entweder in einer Listenübersicht oder einer Zusammenfassung. Um eine grafische Echtzeitanalyse der eingehenden Pakete zu starten, öffnen Sie das Fenster Statistics | IO Graphs (Abbildung 4).

Abbildung 4: Die grafische Paketanalyse zeigt das aktuelle Datenaufkommen verschiedener Dienste und Protokolle an.
Im oberen Teil des Fensters stellt Wireshark die aktuelle Netzlast aller Pakete wahlweise als Linien- oder Balkendiagramm dar. Über die Filter im unteren Teil des Fensters stellen Sie ein, welchen Dienst oder welches Protokoll das Diagramm darstellt. Bei einer Mehrfachauswahl helfen die verschiedenen Farben, den Datenfluss im Diagramm zu durchschauen.
Geschickt gekontert
Wireshark generiert auf Wunsch aus den Informationen der eingehenden Pakete direkt die passenden Firewall-Regeln. Klicken Sie dazu im Menü Analyze des Hauptfensters auf Firewall ACL Rules. Im neuen Fenster (Abbildung 5) wählen Sie zunächst den verwendeten Paketfilter, in der Regel Netfilter (Iptables).

Abbildung 5: Wireshark bringt ein einfaches aber effektives Werkzeug mit, um aus eingehenden Paketen die passenden Firewall-Regeln zu generieren.
Das Programm zeigt danach direkt eine fertig generierte Regel an, die Sie über das Pulldownmenü Filter näher spezifizieren. Die Checkboxen Inbound und Deny geben vor, für welche Richtung die Regel gelten soll und ob die betreffende Verbindung erlaubt oder abgelehnt wird. Da das Programm keine Mehrfachauswahl von Paketen erlaubt, erweist sich das Erstellen mehrerer Regeln allerdings als relativ umständlich.
Fazit
Wireshark verfügt über vielfältige Mechanismen, um den Netzwerkverkehr aufzuzeichnen und zu analysieren. Während diverse Filtermechanismen die Anzeige der Pakete auf das Wesentliche einschränken, geben umfangreiche Statistiktools Aufschluss über die Gesamtheit des Datenverkehrs.
Um die gewonnenen Daten sinnvoll nutzen und richtig interpretieren zu können, kommen Sie jedoch nicht umhin, sich eingehend mit den Netzwerkprotokollen zu beschäftigen, die es zu analysieren gilt. Einen guten Einstieg finden Sie auf den Webseiten des Wireshark-Projekts [3]; geht es ans Eingemachte, hilft die ausführliche Programmdokumentation [6] weiter.
Glossar
-
Site-Tracker
-
Werkzeug zur Analyse des Benutzerverhaltens auf einer Website.
-
Webbugs
-
Kleinstgrafiken (in der Regel ein einzelnes Pixel) auf Webseiten oder in HTML-E-Mails, die eine Aufzeichnung und Analyse via Logfile ermöglichen.
-
Keylogger
-
Software, welche die Eingaben des Benutzers protokolliert und so das Ausspähen von Passwörtern und anderen wichtigen Daten ermöglicht.
-
Rootkits
-
Bei Rootkits handelt es sich in der Regel um eine Sammlung von Programmen. Während eines davon die eigentliche Backdoor stellt, ersetzen die anderen Systemprogramme wie Ps, Top oder Netstat, um die Existenz der Hintertür zu verschleiern.
-
Sniffer
-
Eingebürgerte generische Bezeichnung für Netzwerkprotokollanalysatoren, nach einem sehr bekannten Produkt des Herstellers Network General.
-
Promiscuous Mode
-
Normalerweise verarbeitet eine Netzwerkschnittstelle nur diejenigen Datenpakete, die an sie selbst gerichtet sind. Im Promiscuous Mode dagegen gibt das Interface den gesamten ankommenden Datenverkehr zur Verarbeitung an das Betriebssystem weiter.
-
ARP
-
Address Resolution Protocol (RFC 826). Netzwerkprotokoll für die Zuordnung von Netzwerk- und Hardware-Adressen.
-
MAC-Flooding
-
Angriff auf die MAC-Adresse, die eindeutige Hardware-Adresse eines Netzwerkinterfaces. Besteht aus sechs Bytes, die sich aus einer Herstellerkennung sowie einer individuellen Nummer zusammensetzen.
[1] Phoss: http://www.phenoelit.de/phoss/docu.html
[2] Arpwatch: ftp://ftp.ee.lbl.gov/
[3] Wireshark: http://www.wireshark.org
[4] Ethereal: http://www.ethereal.com
[5] Einführung in TCP/IP: http://www.rvs.uni-bielefeld.de/~heiko/tcpip/tcpip_html_alt/frame_tcpip.html
[6] Wireshark-Dokumentation: http://www.wireshark.org/docs/wsug_html_chunked/, kurz http://tinyurl.com/2ucdj8





