Einführung
Wenn Sie ein physisches Paket verfolgen, reicht das Lesen des Versandetiketts meist aus, um zu wissen, wohin es geht. Manchmal müssen Sie jedoch wissen, was sich tatsächlich im Karton befindet.
In der Netzwerkanalyse ist das Betrachten von IP-Adressen und Ports vergleichbar mit dem Lesen des Versandetiketts (dem Paket-Header). Die wirklich wertvollen Informationen – wie der Text einer Webseite, eine heruntergeladene Datei oder sogar ein unverschlüsseltes Passwort – verbergen sich jedoch im Payload des Pakets.
Diese Unterscheidung zwischen Header und Payload ist in der Cybersicherheit grundlegend. Header beantworten Routing-Fragen, wie etwa woher der Datenverkehr kommt, wohin er geht und welches Protokoll verwendet wird. Payloads beantworten inhaltliche Fragen, wie etwa was angefordert wurde, was zurückgegeben wurde und ob sensible Daten offengelegt wurden. Erfahrene Analysten lernen, je nach Fragestellung zwischen diesen beiden Sichtweisen zu wechseln.
In diesem Lab lernen Sie, wie Sie mit tcpdump das Paket „öffnen“ und den tatsächlichen Inhalt untersuchen. Sie werden erforschen, wie Sie sicherstellen, dass Sie das gesamte Paket erfassen und nicht nur das Etikett, und wie Sie die Rohdaten in Formaten anzeigen, die sowohl für Menschen als auch für Computer leicht lesbar sind. Abschließend üben Sie den Einsatz von Linux-Textwerkzeugen, um Klartext-Geheimnisse direkt aus dem fließenden Netzwerkverkehr zu extrahieren.
Snaplen erhöhen (Vollständige Pakete erfassen)
Um in das Paket hineinzuschauen, müssen Sie zunächst sicherstellen, dass tcpdump tatsächlich das gesamte Paket erfasst. Standardmäßig versuchen ältere Versionen von tcpdump und einige Netzwerk-Tools, Festplattenspeicher zu sparen, indem sie das Ende jedes Pakets abschneiden und nur die Header erfassen.
Dieser Kompromiss erklärt, warum die Paketerfassung immer ein Gleichgewicht zwischen Vollständigkeit und Kosten darstellt. Das Erfassen kürzerer Pakete verbraucht weniger Speicherplatz und kann schneller sein, was in stark ausgelasteten Netzwerken wichtig ist. Das Erfassen vollständiger Pakete bewahrt mehr Beweise, was bei der Fehlersuche und Forensik entscheidend ist. Es gibt keine universelle Einstellung, die immer korrekt ist. Analysten entscheiden basierend auf der Fragestellung, der Umgebung und dem Leistungsbudget.
Die Datenmenge, die von einem einzelnen Paket erfasst wird, nennt man „Snapshot Length“ oder kurz snaplen. Wenn Sie den Payload benötigen, müssen Sie dem Tool mitteilen, dass die Daten nicht abgeschnitten werden sollen. Dies steuern Sie mit dem Flag -s. Das Setzen der Snaplen auf 0 (-s 0) ist ein spezieller Trick, der tcpdump anweist, die maximal mögliche Länge zu verwenden, wodurch garantiert wird, dass keine Daten verloren gehen.
In Ihrer Umgebung haben wir bereits einen einfachen Webserver auf Port 8080 gestartet. Um die Daten sauber zu erfassen, verwenden wir den hilfreichen Linux-Befehl timeout, um tcpdump automatisch für genau 10 Sekunden auszuführen.
Führen Sie den folgenden Befehl aus. Er startet die Erfassung auf dem Loopback-Interface (lo), filtert nach Port 8080, stellt sicher, dass vollständige Pakete erfasst werden (-s 0), und speichert die Ergebnisse im Hintergrund (unter Verwendung des &-Symbols) in traffic.pcap:
sudo timeout 10 tcpdump -i lo port 8080 -s 0 -w ~/project/traffic.pcap &
Während tcpdump im Hintergrund stillschweigend beobachtet, müssen wir interessanten Web-Datenverkehr erzeugen, den es erfassen kann. Verwenden Sie den curl-Befehl, um eine versteckte Datei vom lokalen Webserver anzufordern:
curl http://localhost:8080/secret.txt
Sie werden den Text SecretPayloadData123 sehen, der ausgegeben wird – dies ist die Antwort des Webservers auf Ihre Anfrage. Warten Sie einige Sekunden, bis der 10-sekündige timeout-Timer den tcpdump-Prozess im Hintergrund beendet hat. Sie können ein paar Mal Enter drücken, um die Abschlussmeldung des Hintergrundprozesses zu sehen.
Um sicherzustellen, dass alles funktioniert hat, listen Sie den Inhalt Ihres Verzeichnisses auf, um die Erfassungsdatei zu überprüfen:
ls -l ~/project/traffic.pcap
Sie sollten die Datei traffic.pcap mit einer Dateigröße größer als Null sehen, was bestätigt, dass unsere vollständigen, nicht abgeschnittenen Pakete sicher erfasst und gespeichert wurden.
ASCII-Payloads ausgeben
Nachdem wir die vollständigen Pakete erfolgreich gespeichert haben, ist es an der Zeit, sie zu öffnen und zu lesen. Wenn Netzwerkanwendungen wie einfache Webseiten, FTP-Server oder alte Telnet-Systeme miteinander kommunizieren, senden sie ihre Payload-Daten oft als einfachen, unverschlüsselten Text.
Dies ist auch der Grund, warum unverschlüsselte Protokolle in nicht vertrauenswürdigen Netzwerken als riskant gelten. Wenn ein Mensch den Payload in einer Erfassungsdatei lesen kann, kann dies auch ein Angreifer, der denselben Datenverkehr abfängt. Mit anderen Worten: Paketuntersuchung ist nicht nur eine Analysetechnik. Sie ist auch eine Erinnerung daran, warum moderne Systeme verschlüsselte Protokolle wie HTTPS und SSH bevorzugen.
Um diesen Klartext sichtbar zu machen, bietet tcpdump das Flag -A. Diese praktische Option übersetzt die binären Rohdaten innerhalb des Pakets in für Menschen lesbare ASCII-Zeichen. Es ist eine hervorragende Möglichkeit, eine Erfassungsdatei schnell nach lesbaren Wörtern, Fehlermeldungen oder offengelegten Anmeldedaten zu durchsuchen.
Verwenden Sie das Flag -r, um Ihre neu erstellte Erfassungsdatei zu lesen, und kombinieren Sie es mit dem Flag -A, um den ASCII-Inhalt anzuzeigen:
sudo tcpdump -r ~/project/traffic.pcap -A
Während der Text durchläuft, schauen Sie sich die Ausgabe genau an. Sie sehen zuerst die technischen Paket-Header, aber dazwischen finden Sie tatsächlich lesbares Englisch.
Sie sollten leicht die GET /secret.txt-Anfrage erkennen, die Ihr curl-Befehl gesendet hat, gefolgt von der Antwort des Webservers mit einer HTTP/1.0 200 OK-Meldung. Nahe dem Ende des Antwortpakets des Servers sehen Sie deutlich den versteckten Payload im Klartext: SecretPayloadData123.
...
E..e..@.@.............Q...P.P...P...*......
GET /secret.txt HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.81.0
Accept: */*
...
E.....@.@.............P...Q.P...P...*......
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/3.10.12
...
SecretPayloadData123
...
Sie werden zweifellos viele zufällige Punkte (.) in der Ausgabe bemerken. Das ist völlig normal. Der Computer versucht, den zugrunde liegenden Maschinencode (wie TCP/IP-Header) als Text darzustellen. Wenn er einen Binärwert findet, der keinem Standard-Tastaturzeichen entspricht, druckt er stattdessen einfach einen Punkt.
Hex- und ASCII-Ausgabe (Hexdump)
Während die ASCII-Ansicht (-A) fantastisch zum Überfliegen von Klartext geeignet ist, stößt sie bei komplexer Computerlogik an ihre Grenzen. Da binäre Protokolle (wie DNS-Anfragen oder verschlüsselter Datenverkehr) im ASCII-Modus als ein unübersichtliches Meer aus Punkten erscheinen, benötigen Netzwerkingenieure ein präziseres Werkzeug.
Hexadezimalzahlen tauchen in der Low-Level-Sicherheitsarbeit ständig auf, da sie eine kompakte Möglichkeit darstellen, Rohbytes darzustellen. Computer speichern Daten binär, aber Binärzahlen sind für Menschen schwer direkt zu lesen. Hex fungiert als praktischer Mittelweg: Jede Hex-Ziffer lässt sich sauber auf vier binäre Bits abbilden, sodass Analysten die Byte-Struktur untersuchen können, ohne in langen Ketten von Nullen und Einsen zu ertrinken.
Um die genaueste Ansicht der Anatomie eines Pakets zu erhalten, verwenden Sie das Flag -X. Dies wandelt die Ausgabe in ein strukturiertes Format um, das als Hexdump bekannt ist. Es zeigt die exakten hexadezimalen (Basis-16) Werte der Daten neben dem ASCII-Text an und bietet Ihnen so das Beste aus beiden Welten.
Führen Sie den folgenden Befehl aus, um Ihre Erfassungsdatei zu lesen und die detaillierte Hexdump-Ansicht anzuzeigen:
sudo tcpdump -r ~/project/traffic.pcap -X
Untersuchen Sie die strukturierten Datenblöcke, die auf Ihrem Bildschirm angezeigt werden.
...
0x0000: 4500 0065 1419 4000 4006 28b4 7f00 0001 E..e..@.@.(.....
0x0010: 7f00 0001 8152 1f90 50b9 1017 5018 0200 .....R..P...P...
0x0020: fe59 0000 4745 5420 2f73 6563 7265 742e .Y..GET./secret.
0x0030: 7478 7420 4854 5450 2f31 2e31 0d0a 486f txt.HTTP/1.1..Ho
0x0040: 7374 3a20 6c6f 6361 6c68 6f73 743a 3830 st:.localhost:80
...
Die Ausgabe ist sorgfältig in drei verschiedene Spalten unterteilt.
Die ganz linke Spalte (beginnend mit 0x0000:) ist im Grunde ein Lineal, das Ihnen die exakte Byte-Position innerhalb des Pakets anzeigt.
Der breite mittlere Bereich zeigt die rohen, unverfälschten Paketdaten im hexadezimalen Format, sauber gruppiert in Zwei-Byte-Paaren für eine einfachere Lesbarkeit durch Sicherheitsanalysten.
Schließlich versucht der ganz rechte Bereich, genau diese Zeile der Hex-Daten wieder in vertraute ASCII-Zeichen zu übersetzen, was als schnelle Referenz dient.
Durch die nebeneinander liegende Darstellung können Sie den exakten Binärwert jedes fehlerhaften Zeichens bestimmen, was für das Reverse Engineering komplexer Netzwerkangriffe absolut notwendig ist.
HTTP-Header im Klartext extrahieren
Das manuelle Durchsuchen von roher ASCII- oder Hexdump-Ausgabe ist für kleine Tests akzeptabel, wird aber schnell zu einer unmöglichen Aufgabe, wenn man reale Erfassungsdateien mit Tausenden von Paketen analysiert.
Dieser Schritt führt eine weitere zentrale Idee der Technik ein: Leistungsstarke Workflows entstehen oft durch die Kombination kleiner Werkzeuge, anstatt sich auf ein riesiges Tool zu verlassen, das alles können muss. tcpdump ist gut darin, Pakete zu lesen. grep ist gut darin, Text zu durchsuchen. Indem Sie sie mit einer Pipe verbinden, erstellen Sie einen Workflow, der sowohl schnell als auch einfach anzupassen ist. Diese Kombinierbarkeit ist eine der entscheidenden Stärken der Linux-Kommandozeilenumgebung.
Um dies zu lösen, erlaubt Linux Ihnen, Werkzeuge zu kombinieren. Indem Sie die ASCII-Ausgabe von tcpdump nehmen und direkt in ein Textsuchwerkzeug namens grep leiten (|), können Sie den massiven Textstrom sofort filtern, um nur die spezifischen Nadeln zu enthüllen, nach denen Sie im Heuhaufen suchen.
Wenn Sie beispielsweise Web-Datenverkehr untersuchen, möchten Sie vielleicht schnell herausfinden, welche Webseiten besucht werden (der Host-Header) und welche Art von Webbrowsern die Benutzer verwenden (der User-Agent-Header).
Führen Sie den folgenden Befehl aus. Er liest die Datei im ASCII-Modus, leitet den Text an grep weiter und verwendet das Flag -E, um eine erweiterte Suche nach Zeilen zu ermöglichen, die entweder "Host:", "User-Agent:" oder "HTTP" enthalten:
sudo tcpdump -r ~/project/traffic.pcap -A | grep -E "Host:|User-Agent:|HTTP"
Sofort wird die unübersichtliche Ausgabe durch eine saubere, hochgradig organisierte Zusammenfassung der Web-Transaktion ersetzt:
GET /secret.txt HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.81.0
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/3.10.12
Dieser Workflow ist unglaublich leistungsstark für die Reaktion auf Cybersicherheitsvorfälle. Durch das Austauschen der Suchbegriffe können Sie genau dieselbe Technik verwenden, um mühelos eine gesamte Netzwerkerfassung nach durchgesickerten Passwörtern (z. B. grep -i "password"), vertraulichen Dateinamen oder bekannten bösartigen Befehlszeichenfolgen zu durchsuchen.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Lab „Untersuchung von Paket-Inhalten“ erfolgreich abgeschlossen.
Sie haben Ihre Fähigkeiten erweitert: vom bloßen Betrachten der Außenseite von Netzwerkpaketen bis hin zum tiefen Eintauchen in die tatsächlich übertragenen Daten. Sie haben geübt, das Abschneiden von Paketen mithilfe der snaplen-Option (-s 0) zu deaktivieren, um eine vollständige Erfassung zu garantieren. Anschließend haben Sie die Inhalte mithilfe des -A-Flags für eine lesbare ASCII-Ansicht und des -X-Flags für eine präzise, professionelle Hexdump-Aufschlüsselung freigelegt. Schließlich haben Sie Ihren Workflow verbessert, indem Sie tcpdump mit Standard-Linux-Textwerkzeugen kombiniert haben, um automatisch spezifische Anwendungsdaten aus dem Rauschen herauszufiltern und zu extrahieren.
Diese Kernkompetenzen bilden das Fundament der Deep Packet Inspection. Egal, ob Sie einen obskuren Anwendungsfehler beheben oder eine detaillierte Netzwerkforensik bei einem Sicherheitsvorfall durchführen – Sie verfügen nun über die Werkzeuge, um genau aufzudecken, was über die Leitungen übertragen wird.

