Den Netzwerkverkehr zu protokollieren, ist eine Sache – in der Vielzahl der Pakete den Überblick zu behalten, eine ganz andere. Wireshark hilft dabei.
Wer Netzwerkverkehr mitschneiden und im Detail analysieren möchte, kommt kaum an Wireshark [1] vorbei: Das unter der GPL veröffentlichte Programm gibt es schon seit 1998; in den ersten Jahren hieß es Ethereal, seit 2006 trägt es den jetzigen Namen. Sie können der Software wahlweise beim Sammeln der Daten zusehen oder einen älteren Mitschnitt im PCAP- oder PCAPNG-Format öffnen und analysieren.
Installation
Viele Distributionen bringen Wireshark bereits in den Standard-Repos mit. Sie richten das Programm also bequem über die Paketverwaltung oder auf der Konsole mit sudo apt install wireshark (Debian) beziehungsweise sudo zypper in wireshark-ui-qt (OpenSuse) ein. Für Windows und MacOS gibt es fertige Installer respektive DMG-Images.
Die Linux-Repos bringen allerdings teils veraltete Versionen von Wireshark mit. So kommt etwa bei OpenSuse Leap 15.5 Wireshark 3.6.17 auf die Platte, in den Repos von Ubuntu 23.10 steckt Wireshark 4.0.8. Die aktuellste Version 4.2.0 müssen Sie wohl oder übel selbst aus den Quellen übersetzen (siehe Kasten “Wireshark kompilieren”).
Wireshark kompilieren
Auf einem aktuellen Ubuntu 23.10 übersetzen und installieren Sie Wireshark nach dem Herunterladen des Quellpakets mit den Befehlen aus Listing 1. Laut der Wireshark-Dokumentation sind das die generischen Befehle für alle Debian-basierten Systeme, funktionieren also beispielsweise auch unter Linux Mint. In Zeile 6 sorgt die make-Option -j8 dafür, dass die Compiler-Prozesse auf acht CPU-Kernen gleichzeitig laufen. Passen Sie den Wert an die Anzahl der Cores Ihres Rechners an. Falls Sie sie nicht auswendig wissen, ermitteln Sie sie mit dem Kommando grep -c ^pr /proc/cpuinfo. Für andere Distributionen gibt die offizielle Installationsanleitung Hilfestellungen [2].
Listing 1
Wireshark kompilieren und installieren
$ sudo apt install build-essential flex cmake $ tar xf ../wireshark-4.2.0.tar.xz $ cd wireshark-4.2.0/tools/ $ sudo ./debian-setup.sh --install-optional $ cd ..; mkdir build; cd build $ cmake .. && make -j8 && sudo make install $ sudo setcap cap_net_raw,cap_net_admin=ep $(which dumpcap)
Paketakquise
Nach dem Programmstart zeigt Wireshark Ihnen unten im Hauptfenster eine Reihe möglicher Quellen für eine Aufzeichnung an. Bei Netzwerkgeräten, auf denen das Programm Traffic erkennt, erscheinen neben den Gerätenamen kleine Lastkurven. Das erleichtert es, die richtige Schnittstelle zu finden (Abbildung 1).

Abbildung 1: Wählen Sie das Netzwerkgerät aus, das Sie überwachen möchten, oder öffnen Sie einen schon vorhandenen Mitschnitt.
Bei einem Desktop-PC nutzen Sie oft nur eine Netzwerkkarte; wenn Sie WLAN und einen eingebauten oder angeschlossenen Ethernet-Adapter gleichzeitig aktivieren, sehen Sie Verkehr auf beiden Geräten. Wählen Sie per Doppelklick ein Interface aus, das Sie überwachen möchten. Über Any schneiden Sie Pakete aller Netzwerk-Interfaces mit. Erscheinen in der Anzeige keine Netzwerkgeräte, fehlen Ihnen die notwendigen Rechte. Prüfen Sie dann mit id, ob Sie der Gruppe wireshark angehören (siehe Kasten “Rechteprobleme”).
Rechteprobleme
Eventuell ist es zum Betrieb von Wireshark nötig, Ihr Benutzerkonto mit dem Befehl aus der ersten Zeile von Listing 2 der Gruppe wireshark hinzuzufügen. Danach starten Sie den Anmeldemanager neu, denn ein einfaches Ab- und Wiederanmelden aktiviert die Gruppenmitgliedschaft nicht. Ein Neustart des Rechners sollte nicht nötig sein. Es genügt, mit dem Kommando aus der zweiten Zeile des Listings alle eigenen Prozesse abzuschießen, was eine echte neue Anmeldung auslöst.
Listing 2
Gruppenzugehörigkeit anpassen
$ sudo usermod -a -G wireshark $USER $ sudo killall -u $USER
Klappt die Auswahl des Interfaces, wechselt Wireshark zur Analyseansicht in ein dreiteiliges Fenster. Ganz oben sehen Sie die Liste der aufgezeichneten Pakete. In der Regel können Sie sofort Aktivitäten beobachten, weil viele Geräte im heimischen Netz ständig Verkehr erzeugen. Unten im Fenster erscheint die Detailanalyse eines einzelnen, oben ausgewählten Pakets. Klicken Sie einen Eintrag in der oberen Tabelle an, erscheint unten links die Beschreibung der jeweiligen Paketinhalte. Rechts sehen Sie einen Hexdump des Pakets, in dem Wireshark die Bereiche hervorhebt, die Sie links per Mausklick auswählen.
Mitschnitte vom Router
Einige Internet-Router erlauben es, den kompletten von Ihnen abgewickelten Datenverkehr mitzuschneiden. Das gilt auch für die Fritzbox-Router von AVM. Um die Aufzeichnung zu starten, öffnen Sie die Weboberfläche der Fritzbox (http://fritz.box/html/capture.html) und melden sich an. Auf der dann angezeigten Seite finden Sie auch eine Kurzanleitung. Klicken Sie in der Tabellenzeile Schnittstelle 0 (‘internet’) auf Start, dann beginnt sofort der Download einer PCAP-Datei (Abbildung 2). Er endet nach einem Klick auf die benachbarte Schaltfläche Stopp.

Abbildung 2: Einige Router, darunter auch die von AVM, erzeugen selbstständig Netzwerkmitschnitte im PCAP-Format.
Ändern Sie die Dateiendung von .eth auf .pcap, dann taucht das File im Dateiauswahldialog von Wireshark auf, den Sie über [Strg]+[O] oder Datei | Öffnen erreichen. Die Ansicht einer auf diese Weise geladenen PCAP-Datei unterscheidet sich nicht von der Ansicht eines frisch beendeten Live-Mitschnitts. Ob Sie sofort in die Analyse der gerade beobachteten Aktivitäten einsteigen oder erst Tage später in die PCAP-Datei schauen, ändert also nichts an den Inhalten, die Wireshark anzeigt.
Paketanalyse
Wireshark zeigt den aufgenommenen Datenverkehr auf Basis von Ethernet-Frames an, also auf dem Layer 2 des OSI-Modells (Sicherungsschicht / Data Link). In den beiden Spalten Source und Destination finden Sie aber meist IP-Adressen. Das Internet Protocol liegt im OSI-Modell eine Schicht höher, auf Layer 3, der Vermittlungsschicht. Noch eine Ebene höher gibt es TCP- und UDP-Pakete, bei denen Sender und Empfänger nicht nur eine IP-Adresse besitzen, sondern auch jeweils eine Port-Nummer, sodass das Betriebssystem solche Pakete an spezifische Client- oder Server-Prozesse zustellen kann.
Die Pakete der verschiedenen Schichten enthalten einander in verschachtelter Form. Manche Pakete höherer Schichten teilen sich auf mehrere Pakete einer darunter liegenden Schicht auf, weil zum Beispiel Größenbeschränkungen eine solche Aufteilung erzwingen. Auf jeder Ebene kommen dabei zusätzliche Header-Informationen zu den bereits vorhandenen Paketdaten hinzu. Wireshark zeigt diese Zusammenhänge gut auf: In Abbildung 3 sehen Sie die Analyse eines HTTP-Request-Pakets, das Ubuntus Paketverwalter Apt an den Mirror-Server http://de.archive.ubuntu.com gesendet hat.

Abbildung 3: Wireshark erlaubt es, Pakete auf allen Ebenen und in allen Details zu analysieren. Hier finden sich Header der Protokolle Ethernet, IP, TCP und HTTP. Folgen Sie dem TCP-Stream, um die ganze Kommunikation zu sehen (rechts unten).
In der ganz klein gezogenen Paketliste oben (hellgrün hinterlegt) ist die Nummer 279 markiert. Aus der kurzen Zusammenfassung ergibt sich, dass es sich um ein von der lokalen Adresse 192.168.178.182 an 141.30.62.23 (den Ubuntu-Server) gesendetes HTTP-Paket handelt.
Links findet sich von oben nach unten zunächst die Zusammenfassung zum Frame 279. Wireshark nennt die kleinsten Einheiten, die es separat verarbeitet, unabhängig vom Protokoll Frames. Der gesamte Frame ist im rechten, hellblau hinterlegten Teilfenster als Hexdump zu sehen; er hat eine Länge von 218 Bytes. Hexadezimal sind das 0x00da Bytes, also die Bytes von 0x0000 bis 0x00d9.
Links steht, dass es sich um einen Ethernet-II-Frame (Version 2 des Ethernet-Protokolls) handelt. Klicken Sie in diese Zeile, markiert Wireshark rechts im Hexdump die Header-Bytes: Das sind die ersten 14 Bytes von 0x0000 bis 0x000d. Der Header enthält als wesentliche Information die MAC-Adressen der Quelle (00:0c:29:eb:6e:03) und des Ziels (5c:49:79:21:f2:36).
Die nächste Ebene ist IP: Das Internet Protocol Version 4 verwendet die klassischen vierteiligen IP-Adressen. Hier sind erneut Quelle und Ziel im Header beschrieben, diesmal als IP-Adressen. Der IP-Header belegt die Bytes 0x000e bis 0x0021 (19 Bytes). Es folgt die TCP-Schicht (Transmission Control Protocol), und damit ein weiterer Header, der die Bytes 0x0022 bis 0x0041 belegt und damit 32 Bytes lang ist.
Die letzte Schicht besteht aus dem eigentlichen Inhalt, den das Programm an den Server schickt: ein 152 Byte langer HTTP-Request in den Bytes 0x0042 bis 0x00d9 (der rechts dunkelblau markierte Bereich) ist im Klartext lesbar.
Der gesamte Frame hat damit die Länge 14 (Ethernet Header) + 19 (IP Header) + 32 (TCP Header) + 152 (HTTP-Paket) = 217 Bytes – die Rechnung geht auf. An vielen Stellen können Sie die Darstellung im linken Bereich noch erweitern, indem Sie auf eines der kleinen Dreiecke klicken. Dann erscheinen zum Beispiel bitgenaue Detailerläuterungen zu Options- und Flag-Feldern in den Paketen.
Öffnen Sie über einen Rechtsklick auf den Frame oder irgendwo im linken Bereich das Kontextmenü, können Sie darin den Eintrag Folgen | TCP-Stream aufrufen. Dann erscheint das Fenster rechts unten aus Abbildung 3, das die komplette TCP-Verbindung vom Anfang bis zum Verbindungsabbruch zeigt und dabei die beiden Partner der Kommunikation farblich unterscheidet. In diesem Fall gibt es nur einen HTTP-GET-Request vom Client und die HTTP-Response vom Server.
Wenn Sie die Paketdiagramme für TCP, IP und die weiteren verwendeten Protokolle sehen wollen, zeigt Wireshark diese an, nachdem Sie in den Einstellungen unter Darstellung | Ansicht im Bereich 3 von Paket Bytes auf Paketdiagramm umschalten (Abbildung 4). Klicken Sie in die einzelnen Felder dieser Diagramme, dann markiert das Programm sie und zeigt auch links in der Detailansicht die zugehörigen Einträge. Wer die Paketdiagramme aus Ausbildung, Studium oder Training bereits kennt, findet sich damit noch schneller zurecht. Es ist jedoch nicht möglich, die Diagramme zusätzlich anzuzeigen, also als viertes Element im Programmfenster.

Abbildung 4: In der Diagrammansicht zeigt Wireshark die aus Lehrbüchern über Netzwerke bekannten Paketdiagramme zu IP, TCP und weiteren Protokollen an.
Filter
Die reine Darstellung aller Details auf allen Ebenen erweist sich als hilfreich, um herauszufinden, wer wann mit wem kommuniziert. Das erleichtert die Suche nach Fehlerursachen und Sicherheitsproblemen. Schon wenige Minuten eines Live-Mitschnitts in einem Netzwerk mit vielen Rechnern können aber eine derart große Menge an Paketdaten generieren, dass die Orientierung schwerfällt. Wireshark bietet darum die Möglichkeit, in der Ansicht Pakete zu filtern, sodass Sie zum Beispiel gezielt nach dem Verwenden unsicherer Protokolle suchen können.
Um einen Filter einzustellen, bietet Wireshark mehrere Möglichkeiten. Die naheliegendste besteht darin, Text in das dafür vorgesehene Filterfeld oberhalb der Frame-Tabelle zu schreiben. Klicken Sie dafür hinein oder drücken Sie [Umschalt]+[Strg]+[ 7], um den Fokus auf dieses Feld zu setzen. Interessieren Sie sich zum Beispiel nur für Pakete, an denen der Rechner mit IP-Adresse 192.168.178.222 beteiligt ist, schreiben Sie den Ausdruck ip.addr == 192.168.178.222 in das Feld und drücken [Eingabe]. Tun Sie das aber erst, nachdem Sie sehen, dass sich das Eingabefeld grün färbt: Mit rotem Hintergrund zeigt Wireshark Syntaxfehler an; erscheint das Feld grün, versteht das Programm Ihre Filterdefinition. Das bedeutet aber noch nicht, dass es auch Treffer gibt. Weitere Beispiele für die Filter zeigt die Tabelle “Wireshark: Filtersyntax”.
|
Ausdruck |
Bedeutung |
|---|---|
|
|
Die IP-Adresse muss der angegebenen Adressen entsprechen. |
|
|
Die IP-Adresse muss einer der drei angegebenen Adressen entsprechen. |
|
|
Der Ziel-Port ist 80, das Paket geht also zu einem Webserver. Im Datenteil des TCP-Pakets kommt das Wort |
|
|
Der erste Teil eines TCP-Handshakes. Jede TCP-Verbindung startet mit einem sogenannten Drei-Wege-Handshake, der aus SYN (Client bittet Server um Verbindungsaufbau), SYN/ACK (Bestätigung und entsprechende Bitte in Gegenrichtung) sowie ACK (Bestätigung) besteht. Über diesen Filter suchen Sie nach dem SYN-Paket, das als Erstes vom Client an den Server geht. |
Statt komplexer Tests auf Gleichheit oder Mengenmitgliedschaft tragen Sie alternativ einen Protokollnamen ein: Mit tls or http suchen Sie nach verschlüsselten und unverschlüsselten Verbindungen mit Webservern. Sobald Sie die ersten Buchstaben eines Protokollnamens eintippen, schlägt Wireshark Vervollständigungen vor. Über Analyse | Anzeigefilterausdruck öffnen Sie einen Dialog, der an den Funktionsassistenten von LibreOffice Calc erinnert (Abbildung 5).

Abbildung 5: Der Filterassistent zeigt alle verfügbaren Filter an und hilft Ihnen, syntaktisch korrekte Filterausdrücke zu erstellen.
Suchen Sie beispielsweise nach DHCP-Requests des Rechners mit der MAC-Adresse 98:01:a7:9f:e7:4d, können Sie sich nach kurzer Suche im Assistenten den Filter dhcp.hw.mac_addr == 98:01:a7:9f:e7:4d zusammenklicken, ohne diese Bezeichnungen vorher zu recherchieren. Der Blick in die Abbildung 5 zeigt außerdem, dass neben Tests auf Gleichheit (==) und zum Vorkommen von Text (contains) auch die mathematischen Vergleiche <, <=, >, >= und != möglich sind.
Ein anderer Weg, Filter zu definieren, führt über die volle Frame-Liste. Finden Sie dort einen Eintrag, der Sie interessiert, dann legen Sie einen Filter für ähnliche Frames an, indem Sie in die relevante Spalte innerhalb der Zeile rechtsklicken und im Kontextmenü Als Filter anwenden | Ausgewählt aufrufen. Je nach angeklickter Spalte sehen Sie dann Pakete mit gleicher Quelladresse, gleicher Zieladresse oder gleichem Protokoll.
Schalter aus Filtern
Haben Sie einen besonders nützlichen Filter definiert, erlaubt Wireshark es, daraus einen Schalter zu generieren. Dazu genügt ein Klick auf das Plus-Symbol neben dem Filterfeld. Dann geben Sie im sich öffnenden Dialog (Abbildung 6) im Feld Titel einen Kurztitel ein, der später auf der Schaltfläche erscheint. Unter Kommentar legen Sie bei Bedarf zusätzlichen Text ab, den Wireshark später einblendet, wenn Sie den Mauszeiger über den Button bewegen. Nach einem Klick auf OK erscheint der neue Schalter rechts vom Filter-Eingabefeld.
Feintuning
Standardmäßig zeigt Wireshark nur IP-Adressen an, jedoch keine Rechnernamen. Das ändern Sie, indem Sie Bearbeiten | Einstellungen aufrufen, in den Bereich Name Resolution wechseln und dort die Option Resolve network (IP) addresses aktivieren. Die Adressspalten geraten damit allerdings deutlich unübersichtlicher.
Ebenfalls in den Einstellungen unter Darstellung | Spalten fügen Sie der Tabellendarstellung weitere Spalten hinzu. Interessant sind zum Beispiel die Port-Nummern für TCP/UDP und die MAC-Adressen, die das Tool dann zusätzlich zu den IP-Adressen anzeigt (Abbildung 7). Probieren Sie auch den Menüpunkt Statistiken | Verbindungen aus: Dort finden Sie unter anderem alle TCP-Verbindungen, die im Mitschnitt erscheinen. Daraus lassen sich direkt passende Filter erstellen.

Abbildung 7: Wenn der Monitor breit genug ist, können Sie einige Zusatzspalten ergänzen und damit auch die TCP- und UDP-Port-Nummern sowie die MAC-Adressen im Blick behalten.
Um sich mit weiteren Wireshark-Features vertraut zu machen und den Umgang mit verschiedenen Protokollen zu üben, laden Sie über Hilfe | Dateien mit Beispielmitschnitten einige Beispiel-PCAP-Dateien herunter. Auf einer entsprechenden Webseite [3] finden Sie darüber hinaus Übungsaufgaben zur Malware-Analyse, die sich in Wireshark lösen lassen. (tle)
Infos
-
Wireshark: https://www.wireshark.org
-
Installationsanleitung: https://www.wireshark.org/docs/wsdg_html_chunked/ChapterSetup#ChSetupUNIX
-
Malware-Analyse: https://www.malware-traffic-analysis.net






