Einführung
Netzwerkverkehr wird vor der Übertragung oft in kleinere Einheiten, sogenannte Pakete, zerlegt. Wenn ein Client und ein Server kommunizieren, senden sie viele dieser Pakete hin und her. Ein "Stream" stellt die vollständige, geordnete Sequenz dieser Pakete für eine einzelne Verbindung dar.
Diese Unterscheidung zwischen Paket und Stream ist einer der wichtigsten Perspektivwechsel in der Protokollanalyse. Einzelne Pakete zeigen Ihnen, was in einem bestimmten Augenblick passiert ist. Streams zeigen Ihnen die gesamte Konversation. Viele Ereignisse auf Anwendungsebene, wie Anmeldungen, Formularübermittlungen und Dateiübertragungen, sind wesentlich verständlicher, wenn man die Konversation rekonstruiert, anstatt isolierte Pakete einzeln zu betrachten.
In diesem Lab lernen Sie, wie Sie tshark (die Befehlszeilenversion von Wireshark) verwenden, um diese fragmentierten Netzwerk-Konversationen zu rekonstruieren. Indem Sie vollständige TCP-Streams verfolgen, können Sie die einzelnen Pakete wieder zusammenfügen und die gesamte Interaktion zwischen Client und Server als lesbaren Text betrachten. Dies ist eine grundlegende Fähigkeit für die Fehlerbehebung im Netzwerk und die Sicherheitsanalyse.
TCP-Streams identifizieren
In diesem Schritt lernen Sie, wie Sie die verschiedenen TCP-Streams in einer Netzwerk-Aufzeichnungsdatei identifizieren.
Wenn tshark eine Aufzeichnungsdatei liest, gruppiert es automatisch Pakete, die zur selben Verbindung gehören (gleiche Quell-IP, Quell-Port, Ziel-IP und Ziel-Port), und weist ihnen einen eindeutigen ganzzahligen Index zu. Dieser Index wird als tcp.stream-Feld bezeichnet.
Sie können sich tcp.stream als ein vom Analysetool erstelltes Konversationslabel vorstellen. Es stammt nicht als Protokollfeld aus dem Netzwerk selbst. Stattdessen schließt tshark daraus, dass bestimmte Pakete zusammengehören, weil sie dieselben Verbindungsendpunkte und Ereignisabfolgen teilen. Deshalb ist die Stream-Analyse eine so nützliche "Analysten-Sicht" auf die Daten.
Ihre Umgebung wurde bereits mit einer Beispiel-Aufzeichnungsdatei namens sample_traffic.pcap in Ihrem ~/project-Verzeichnis vorbereitet. Diese Datei enthält grundlegenden Web-Verkehr.
Um alle eindeutigen TCP-Streams in dieser Aufzeichnungsdatei zu sehen, können Sie tshark anweisen, das tcp.stream-Feld aus jedem Paket zu extrahieren, die Ergebnisse zu sortieren und nur die eindeutigen Werte anzuzeigen.
Führen Sie den folgenden Befehl in Ihrem Terminal aus:
tshark -r sample_traffic.pcap -T fields -e tcp.stream | sort -n | uniq
Hier ist die Aufschlüsselung dieses Befehls:
-r sample_traffic.pcap: Weisttsharkan, die angegebene Aufzeichnungsdatei zu lesen.-T fields: Gibt an, dass wir spezifische Felder anstelle der standardmäßigen Paketübersicht ausgeben möchten.-e tcp.stream: Weisttsharkan, den TCP-Stream-Index für jedes Paket auszugeben.| sort -n | uniq: Leitet die Ausgabe an Standard-Linux-Dienstprogramme weiter, um die Zahlen numerisch zu sortieren und Duplikate zu entfernen.
Sie sollten eine Ausgabe ähnlich dieser sehen:
0
1
Diese Ausgabe zeigt an, dass in dieser Aufzeichnungsdatei zwei unterschiedliche TCP-Konversationen (Stream 0 und Stream 1) aufgezeichnet wurden.
TCP-Stream rekonstruieren
Nachdem Sie nun die Indexnummern der TCP-Streams kennen, können Sie die gesamte Konversation rekonstruieren. Dieser Prozess ist identisch mit der Funktion "Follow TCP Stream" in der grafischen Benutzeroberfläche von Wireshark.
Die Rekonstruktion ist besonders wertvoll für textbasierte Protokolle wie HTTP, SMTP und viele ältere Anwendungsprotokolle, da der Analyst Anfragen und Antworten in der Reihenfolge lesen kann, in der die Anwendung sie erlebt hat. Selbst wenn der zugrunde liegende Austausch mehrere Pakete umfasst, stellt der rekonstruierte Stream den Zusammenhang wieder her.
In diesem Schritt werden wir Stream 0 rekonstruieren. Dieser Stream enthält eine HTTP-GET-Anfrage, bei der ein Client den Server nach einer Webseite gefragt hat.
Um einem Stream in tshark zu folgen, verwenden Sie die Option -z, die für verschiedene Statistik- und Analyseaufgaben genutzt wird. Die spezifische Syntax zum Verfolgen eines Streams lautet -z follow,tcp,ascii,<stream_index>.
Führen Sie den folgenden Befehl aus, um Stream 0 zu rekonstruieren:
tshark -r sample_traffic.pcap -z follow,tcp,ascii,0 -q
Hier ist die Bedeutung der neuen Argumente:
-z follow,tcp,ascii,0: Weisttsharkan, dem TCP-Stream mit dem Index0zu folgen und die Nutzlast imascii-Format (lesbarer Text) anzuzeigen.-q: Steht für "quiet" (ruhig). Es unterdrückt die standardmäßige Ausgabe pro Paket, sodass Sie nur die rekonstruierten Stream-Daten sehen.
Sie sehen eine Ausgabe, die die vollständige HTTP-Konversation anzeigt:
===================================================================
Follow: tcp,ascii
Filter: tcp.stream eq 0
Node 0: 127.0.0.1:58548
Node 1: 127.0.0.1:8080
GET / HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.81.0
Accept: */*
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/3.10.12
Date: Thu, 05 Mar 2026 02:00:48 GMT
Content-type: text/html
Content-Length: 40
Last-Modified: Thu, 05 Mar 2026 02:00:44 GMT
Welcome to the LabEx Network Stream Lab
===================================================================
In dieser Ausgabe können Sie deutlich die Anfrage des Clients (GET / HTTP/1.1...) gefolgt von der Antwort des Servers (HTTP/1.0 200 OK... und dem HTML-Inhalt) sehen. tshark hat die einzelnen Pakete erfolgreich zu einem zusammenhängenden Textblock zusammengesetzt.
Die Konversation analysieren
Bei der Analyse von Netzwerkverkehr können Konversationen sehr lang sein. Das direkte Ausgeben eines massiven Streams im Terminal kann das Lesen und Analysieren erschweren.
Das Speichern des rekonstruierten Streams in einer Datei ist ein kleiner Schritt, spiegelt aber eine breitere forensische Gewohnheit wider: Bewahren Sie Zwischenergebnisse der Analyse auf. Ermittler speichern oft Notizen, extrahierte Konversationen, dekodierte Nutzlasten und gefilterte Beweise als separate Dateien, damit Ergebnisse überprüft, verglichen oder an andere weitergegeben werden können, ohne die gleichen Befehle von Grund auf neu ausführen zu müssen.
In diesem Schritt rekonstruieren Sie Stream 1 und leiten die Ausgabe in eine Textdatei um. Dies ermöglicht es Ihnen, Standard-Texteditoren oder Befehlszeilentools zu verwenden, um die Konversation in Ihrem eigenen Tempo zu untersuchen.
Stream 1 enthält eine HTTP-POST-Anfrage, die normalerweise beim Übermitteln von Daten verwendet wird, wie z. B. bei einem Anmeldeformular.
Führen Sie den folgenden Befehl aus, um Stream 1 zu verfolgen und die Ausgabe in einer Datei namens stream1_analysis.txt zu speichern:
tshark -r sample_traffic.pcap -z follow,tcp,ascii,1 -q > stream1_analysis.txt
Der Operator > nimmt die Ausgabe, die normalerweise auf Ihrem Bildschirm erscheinen würde, und schreibt sie in stream1_analysis.txt in Ihrem aktuellen Verzeichnis (~/project).
Verwenden Sie nun den Befehl cat, um den Inhalt der soeben erstellten Datei anzuzeigen:
cat stream1_analysis.txt
Ihre Ausgabe sollte in etwa so aussehen:
===================================================================
Follow: tcp,ascii
Filter: tcp.stream eq 1
Node 0: 127.0.0.1:45138
Node 1: 127.0.0.1:8080
POST /login HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.81.0
Accept: */*
Content-Length: 23
Content-Type: application/x-www-form-urlencoded
user=labex&action=loginHTTP/1.0 501 Unsupported method ('POST')
Server: SimpleHTTP/0.6 Python/3.10.12
Date: Wed, 25 Oct 2026 10:00:05 GMT
Connection: close
Content-Type: text/html;charset=utf-8
Content-Length: 480
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
...
===================================================================
Durch die Analyse dieser Datei können Sie genau beobachten, welche Daten der Client im POST-Anfragekörper gesendet hat (user=labex&action=login). Sie können auch die Antwort des Servers sehen, die in diesem Fall ein 501 Unsupported method-Fehler ist. Dies zeigt, dass der einfache Python-Webserver, der zur Erzeugung dieses Verkehrs verwendet wurde, keine POST-Anfragen unterstützt.
Das Speichern von Streams in Dateien ist eine äußerst effektive Technik, wenn Sie Dateien, Anmeldeinformationen oder detaillierte Protokolle aus Netzwerkaufzeichnungen extrahieren müssen.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Lab "Netzwerk-Streams verfolgen" erfolgreich abgeschlossen.
In diesem Lab haben Sie gelernt:
- Eindeutige TCP-Streams innerhalb einer Paketaufzeichnungsdatei mithilfe des Feldes
tcp.streamzu identifizieren. - Die vollständige Konversation eines bestimmten TCP-Streams mithilfe der
follow-Funktion vontsharkzu rekonstruieren und anzuzeigen. - Rekonstruierte Stream-Daten zur einfacheren Lesbarkeit und tiefergehenden Analyse in Textdateien umzuleiten.
Diese Techniken sind grundlegend für Netzwerkadministratoren und Sicherheitsexperten bei der Untersuchung von Netzwerkproblemen, der Analyse von Malware-Verhalten oder der Überprüfung von Anwendungskommunikationen.

