Suchen

Professionelle Netzwerk-Analyse mit Wireshark, Teil 5 CLI-Tools im Fokus: Scripting mit Wireshark

| Autor / Redakteur: Christian Landström / Dipl.-Ing. (FH) Andreas Donner

Die grafische Benutzeroberfläche von Wireshark bietet Netzwerkanalyse-Funktionen für zahllose Szenarien. Dennoch gibt es Fälle, in denen die Kommandozeilenwerkzeuge (CLI-Tools) unschlagbar sind. Dieser Beitrag zeigt exemplarisch, wie CLI-Tools eingesetzt werden.

Firmen zum Thema

Mit CLI-Tools lassen sich viele Wireshark-Messdaten bequemer und treffsicherer auswerten als mit der GUI – Schulungsanbieter Fast Lane zeigt wie!
Mit CLI-Tools lassen sich viele Wireshark-Messdaten bequemer und treffsicherer auswerten als mit der GUI – Schulungsanbieter Fast Lane zeigt wie!
(Bild: Fast Lane )

Die grafische Benutzeroberfläche (GUI) von Wireshark bietet eine Fülle von Funktionen für die Netzwerkanalyse. Es gibt jedoch Szenarien, in denen die Funktionalität der GUI nicht optimal ausgenutzt werden kann oder der zeitliche Aufwand für die Bestimmung wichtiger Informationen schlicht zu hoch ist. In vielen Fällen kann hier aber durch den geschickten Einsatz der Kommandozeilenwerkzeuge (CLI-Tools), die Wireshark mit sich bringt, eine geeignete Lösung gefunden werden.

Wenn Sie bisher noch nicht mit diesen Tools gearbeitet haben, ist jetzt der ideale Moment, es auszuprobieren, da im Folgenden ein paar einfache Beispiele für die Nutzung gegeben werden. Die Kommandozeilenwerkzeuge finden Sie im jeweiligen Installationsverzeichnis von Wireshark.

Einlesen und Filtern mit „tshark“

Das wohl mächtigste Werkzeug im Lieferumfang von Wireshark ist die Kommandozeilenanwendung „tshark“. Mit tshark können Trace Files aufgezeichnet oder bereits vorhandene eingelesen werden, wenn gewünscht auch direkt mit Aufzeichnungs- bzw. Anzeigefilter.

Wie bei allen Wireshark CLI-Tools lässt sich mit dem Parameter -h eine Übersicht der zur Verfügung stehenden Optionen ausgeben. Wundern Sie sich nicht – bei tshark füllen die vielfältigen Parameter durchaus mehrere Seiten Text. Im Folgenden werden einige Optionen für mögliche Analysen beschrieben, die mit der grafischen Oberfläche nicht oder nicht so einfach durchzuführen wären.

Ein einfaches Beispiel hierfür ist das Einlesen eines Trace File. Hierbei werden gleichzeitig bestimmte Frames gefiltert und diese in einer neuen Datei abgespeichert. Die tshark-Syntax hierfür lautet:

tshark –r tracefile_1.pcap –R „displayfilter“ –w neues_file.pcap

Wer Erfahrung aus großen Netzwerkanalyseprojekten mitbringt, wird relativ schnell folgendes Problem erkennen: Es wurden nicht ein oder zwei Dateien aufgezeichnet, sondern z.B. hunderte von Trace Files (ggf. mit einem Ring Buffer).

Also beginnt die berühmte Suche nach der Nadel im Heuhaufen, nur dass es hier darum geht, innerhalb dieser Menge an Daten bestimmte Pakete aufzuspüren. Dazu ist es erforderlich, über die GUI jedes File zu laden, per Suche oder Filter zu prüfen, ob entsprechende Pakete enthalten sind. Diese können dann in einer neuen Datei gespeichert werden, falls der Verantwortliche später nochmals darauf zugreifen möchte. Dieser Prozess kann je nach Volumen gut und gerne ein paar zeitraubende Stunden in Anspruch nehmen.

Dies ist eine klassische Aufgabe, bei der tshark die Arbeit erleichtern kann. Um beispielsweise alle Pakete von oder zu der IP-Adresse 10.0.0.1 in einem Trace File zu finden und zu speichern, benötigen wir folgenden Aufruf im tshark:

tshark –r tracefile_1.pcap –R „ip.addr==10.0.0.1“ –w tracefile_1_addr_10.0.0.1.pcap

Diese tshark-Aufrufe können nun in einem Script abgearbeitet werden, indem man beispielsweise einen Batch-Job anlegt und Zeile für Zeile die tshark-Kommandos eingibt. Hier gilt es zu beachten, die Dateinamen der Eingangs- und Ausgangstraces entsprechend anzupassen. Ein kurzes Shell-Script kann den Prozess durch den Einsatz einer FOR-Schleife komfortabel vereinfachen.

Nehmen wir beispielsweise an, die Trace Files wurden alle nach dem Schema „tracefile_x.pcap“ benannt. Dabei steht das x für eine laufende Nummer hinter dem Dateinamen. Dann lassen sich mit dieser Befehlsfolge die Dateien in einem Rutsch verarbeiten:

for %a IN (*.pcap) DO tshark -r "%a" -R "ip.addr==10.0.0.1" -w gefiltert_auf_10.0.0.1_%a

Dieser Befehl sorgt in der Windows-Kommandozeile dafür, dass sämtliche im aktuellen Ordner liegenden .pcap-Dateien auf Pakete mit IP-Adresse 10.0.0.1 gefiltert und mit dem Präfix „gefiltert_auf_10.0.0.1_“ plus Original-Dateinamen auch wieder gespeichert werden. Natürlich können Sie hier stattdessen auch in einen Unterordner speichern oder Sonstiges.

Beachten Sie, dass beim Speichern des oben gezeigten Aufrufs in einer Windows-Batchdatei wie filter.cmd die Parameter der for-Schleife zwei anstatt ein Prozentzeichen benötigen, also %%a anstatt %a.

Nun hat man also pro Ursprungsdatei eine neue, gefilterte Datei. Diese lässt sich mittels des CLI-Tools mergecap auf Wunsch zu einem einzigen Trace File zusammensetzen, in welchem man die hier im Beispiel gefilterte Kommunikation der Adresse 10.0.0.1 komplett analysieren kann. Die Syntax, um alle Trace Files, die mit dem Namen „gefiltert“ anfangen, zusammenzupacken, wäre:

mergecap -a -w neue_datei.pcap trace1.pcap trace2.pcap trace3.pcap

bzw. analog für unser Beispiel:

mergecap -a -w komplette_kommunikation_10.0.0.1.pcap gefiltert*

Die Option „-a“ sorgt dafür, dass nicht der Zeitstempel der Frames genommen wird, um die richtige Reihenfolge der Daten zu gewährleisten, sondern die Eingabedateien direkt aneinandergehängt werden. Im Zweifelsfall lassen Sie den „-a“-Parameter weg, damit auf Basis der Zeitstempel die Pakete in die korrekte Reihenfolge gebracht werden, auch wenn dieses Verfahren etwas mehr Zeit benötigt.

weiter mit: Schnelles Ermitteln von Statistikdaten

Artikelfiles und Artikellinks

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de (ID: 33743730)