Paketfelder in Tshark extrahieren

WiresharkWiresharkBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie mithilfe des Befehlszeilentools tshark von Wireshark spezifische Paketfelder aus Netzwerkverkehr extrahieren können. Sie üben die Auswahl gängiger Felder wie Quell-IP (ip.src) und TCP-Port (tcp.port), während Sie die Ausgabeformatierung mit -T fields und benutzerdefinierten Trennzeichen beherrschen.

Die Übungen führen Sie durch die Paketerfassung, die Felderextraktion mit der -e-Option und den Export der Daten im CSV-Format. Sie lernen, die Ausgabe für bessere Lesbarkeit und Analyse zu strukturieren, indem Sie Techniken wie die Konfiguration des Trennzeichens mit -E separator=, und die Umleitung der Ausgabe verwenden.

Felder mit -e ip.src -e tcp.port auswählen

In diesem Schritt lernen Sie, wie Sie mithilfe des Befehlszeilentools tshark von Wireshark spezifische Felder aus Netzwerkpaketerfassungen extrahieren können. Netzwerkpakete enthalten viele verschiedene Informationen, und oft müssen wir für unsere Analyse nur auf bestimmte Felder schauen. Hier konzentrieren wir uns auf zwei wichtige Felder: die Quell-IP-Adresse (ip.src), die uns sagt, woher das Paket stammt, und die TCP-Portnummer (tcp.port), die den spezifischen Dienst oder die Anwendung identifiziert, die verwendet wird.

Zunächst benötigen wir einige Beispiel-Netzwerkverkehrsdaten, mit denen wir arbeiten können. Der folgende Befehl erzeugt einfachen Webverkehr, den wir erfassen können:

curl -s http://example.com > /dev/null

Jetzt erfassen wir diesen Verkehr mit tshark. Der folgende Befehl erfasst 10 Pakete und speichert sie in einer Datei namens sample.pcap. Das .pcap-Format ist der Standard für die Speicherung von Netzwerkverkehrserfassungen:

tshark -c 10 -w sample.pcap

Nachdem unsere Erfassungsdatei bereit ist, können wir nun nur die Felder extrahieren, die uns interessieren. Der folgende Befehl liest die Erfassungsdatei und gibt nur die Quell-IP-Adressen und TCP-Ports aus:

tshark -r sample.pcap -T fields -e ip.src -e tcp.port

Schauen wir uns an, was jeder Teil dieses Befehls macht:

  • -r sample.pcap teilt tshark mit, aus unserer erfassten Datei zu lesen
  • -T fields gibt an, dass wir die Ausgabe im Feldformat möchten (im Gegensatz zu anderen Formaten wie XML oder JSON)
  • -e ip.src wählt das Feld für die Quell-IP-Adresse aus
  • -e tcp.port wählt das Feld für die TCP-Portnummer aus

Die Ausgabe wird als tabulatorgetrennte Werte angezeigt, wobei jede Zeile ein Paket darstellt und zunächst die Quell-IP und dann die Portnummer anzeigt:

192.168.1.1    443
192.168.1.2    80

Um damit leichter arbeiten zu können, können wir die Ausgabe in einer Datei speichern. Dies ist besonders nützlich, wenn es sich um große Erfassungen handelt oder wenn wir die Daten weiter verarbeiten möchten:

tshark -r sample.pcap -T fields -e ip.src -e tcp.port > temp.txt
cat temp.txt

Das >-Symbol leitet die Ausgabe in eine Datei um, und cat ermöglicht es uns, den Inhalt dieser Datei anzuzeigen. Dieser Ansatz liefert uns eine dauerhafte Aufzeichnung unserer gefilterten Daten, auf die wir später zurückgreifen oder mit anderen Tools analysieren können.

Ausgabe auf Felder mit -T fields festlegen

In diesem Schritt werden wir untersuchen, wie Sie die Ausgabe von tshark anpassen können, um nur die spezifischen Paketfelder anzuzeigen, die Sie benötigen. Die Option -T fields wandelt die Standardanzeige der Pakete in ein strukturiertes Format um, das einfacher zu verarbeiten und zu analysieren ist.

Wenn Sie tshark erstmals ohne jegliche Feldangaben ausführen, zeigt es eine umfassende, aber manchmal überwältigende Ansicht jedes Pakets an:

tshark -r sample.pcap -c 3

Diese Standardansicht enthält alle verfügbaren Paketdetails. Für eine gezielte Analyse benötigen wir jedoch oft nur einige wenige Schlüsselinformationen. Hier kommt die Feldextraktion ins Spiel. Der folgende Befehl zeigt, wie Sie bestimmte Felder auswählen können:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -e ip.dst -e tcp.port

Schauen wir uns an, was jeder Teil dieses Befehls macht:

  • -T fields teilt tshark mit, dass wir eine feldbasierte Ausgabe statt der Standard-Paketzusammenfassung möchten
  • -e frame.number extrahiert die Position des Pakets in der Erfassungsdatei
  • -e ip.src zeigt, woher das Paket stammt (Quell-IP)
  • -e ip.dst zeigt, wohin das Paket geht (Ziel-IP)
  • -e tcp.port zeigt, welchen Netzwerkport das Paket verwendet

Das Ergebnis ist eine saubere, tabulatorgetrennte Ausgabe, die so aussieht:

1    192.168.1.1    192.168.1.2    443
2    192.168.1.2    192.168.1.1    80

Dieses Format ist besonders nützlich, wenn Sie die Daten weiter verarbeiten oder in andere Tools importieren müssen. Wenn Sie sich nicht sicher sind, welche Felder verfügbar sind oder die Feldnamen überprüfen müssen, können Sie die vollständige Liste durchsuchen:

tshark -G fields | grep -E 'ip.src|ip.dst|tcp.port'

Dieser Befehl hilft Ihnen, alle relevanten Felder für IP-Adressen und TCP-Ports zu finden, die Sie möglicherweise in Ihre Analyse aufnehmen möchten.

Verwendung eines Kommas als Trennzeichen mit -E separator=

In diesem Schritt lernen Sie, wie Sie im tshark-Ausgabeformat das Feldtrennzeichen von Tabulatoren auf Kommas ändern können. Diese Änderung ist besonders nützlich, wenn Sie die Daten in Tabellenkalkulationsprogramme wie Excel importieren oder mit Tools analysieren müssen, die das CSV-Format (Comma-Separated Values, deutsch: komma-getrennte Werte) erwarten.

Zunächst betrachten wir noch einmal den grundlegenden Befehl, den wir zuvor verwendet haben, der eine tabulatorgetrennte Ausgabe erzeugt. Dies hilft uns zu verstehen, was wir ändern:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -e ip.dst -e tcp.port -c 3

Um diese Ausgabe in das CSV-Format zu konvertieren, verwenden wir die Option -E mit separator=,. Dadurch wird tshark angewiesen, statt Tabulatoren Kommas zwischen den Feldern zu verwenden:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -e ip.dst -e tcp.port -E separator=, -c 3

Schauen wir uns an, was jeder Teil dieses Befehls macht:

  • -E separator=, ist die entscheidende Ergänzung, die das Trennzeichen in ein Komma ändert
  • Alle anderen Optionen (-r, -T fields, -e Felder, -c) funktionieren genau wie zuvor
  • Die Reihenfolge der Optionen spielt keine Rolle, solange alle vorhanden sind

Nachdem Sie diesen Befehl ausgeführt haben, sehen Sie eine Ausgabe in folgendem Format:

1,192.168.1.1,192.168.1.2,443
2,192.168.1.2,192.168.1.1,80
3,192.168.1.3,192.168.1.4,22

Um sicherzustellen, dass das Trennzeichen tatsächlich in Kommas geändert wurde (insbesondere nützlich, wenn Sie Tabulatoren und Leerzeichen visuell nicht unterscheiden können), können Sie die Ausgabe an od -c weiterleiten, das Sonderzeichen anzeigt:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -E separator=, -c 1 | od -c

Dieser Überprüfungsschritt hilft dabei, sicherzustellen, dass Ihre Ausgabe von CSV-Readern richtig interpretiert wird, was entscheidend ist, wenn Sie Daten für die Analyse in anderen Tools vorbereiten.

Exportieren in eine Datei mit > fields.csv

In diesem Schritt lernen wir, wie wir die extrahierten Paketdaten in eine CSV-Datei (Comma-Separated Values, deutsch: komma-getrennte Werte) speichern können. CSV ist ein einfaches Dateiformat, das tabellarische Daten als Klartext speichert, was es ideal für die Analyse in Tabellenkalkulationsprogrammen oder Datenverarbeitungstools macht. Indem wir unsere Paketdaten in einer Datei speichern, erstellen we ein permanentes Archiv, das später geteilt, analysiert oder verarbeitet werden kann.

Kombinieren wir nun alles, was wir bisher gelernt haben, in einem einzigen Befehl, der mehrere Paketfelder extrahiert und sie in einer Datei speichert:

tshark -r sample.pcap -T fields -e frame.number -e ip.src -e ip.dst -e tcp.port -E separator=, > fields.csv

Hier ist, was jeder Teil des Befehls macht:

  • -r sample.pcap liest unsere Paketerfassungsdatei
  • -T fields teilt Tshark mit, dass wir eine feldbasierte Ausgabe möchten
  • Jede -e-Option gibt ein Feld an, das extrahiert werden soll (Paketnummer, Quell-IP, Ziel-IP und Port)
  • -E separator=, setzt das Komma als Feldtrennzeichen
  • > fields.csv leitet die Ausgabe in eine Datei um, anstatt sie auf dem Bildschirm anzuzeigen

Nachdem wir diesen Befehl ausgeführt haben, überprüfen wir, ob unsere Datei korrekt erstellt wurde:

ls -l fields.csv
head fields.csv

Der Befehl ls -l zeigt die Dateidetails an, während head die ersten Zeilen anzeigt. Ihre Ausgabe sollte in etwa so aussehen:

1,192.168.1.1,192.168.1.2,443
2,192.168.1.2,192.168.1.1,80
3,192.168.1.3,192.168.1.4,22

Um diese Daten besser verständlich zu machen, können wir Spaltenüberschriften hinzufügen. Hier ist, wie Sie eine neue Datei mit Überschriften erstellen und sie mit unseren Daten kombinieren können:

echo "Packet,Source,Destination,Port" > headers.csv
cat headers.csv fields.csv > final.csv
mv final.csv fields.csv

Dadurch wird eine neue Version unserer CSV-Datei erstellt, die oben beschreibende Überschriften enthält, was es viel einfacher macht, mit den Daten in Tabellenkalkulationsprogrammen zu arbeiten.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie mit dem Befehlszeilentool tshark von Wireshark bestimmte Paketfelder extrahieren können. Die Übungen beinhalteten die Auswahl von Feldern mit der -e-Option, die Formatierung der Ausgabe mit -T fields und das Speichern der Ergebnisse in Dateien für die Analyse.

Sie haben auch gelernt, wie Sie mehrere Felder wie frame.number, ip.src und tcp.port zu strukturierten Ausgaben kombinieren können. Diese Techniken ermöglichen es, Rohdaten aus Paketen effizient in organisierte Formate zu transformieren, die für die Netzwerkfehlersuche geeignet sind.