Einführung
Willkommen zum Lab über Netzwerkschnittstellen und grundlegende Paketerfassung!
Stellen Sie sich Ihren Computer wie ein Haus vor und den Netzwerkverkehr wie die Post, die empfangen und versendet wird. Um zu verstehen, was vor sich geht, bräuchten Sie eine Überwachungskamera am Briefkasten. In der Linux-Welt fungiert tcpdump als diese leistungsstarke Überwachungskamera für Ihr Netzwerk. Es ist ein Kommandozeilen-Tool, mit dem Sie die Daten untersuchen können, die in Ihr System hinein- und herausfließen. Dies hilft Ihnen bei der Fehlerbehebung von Verbindungsproblemen und beim Aufspüren verdächtiger Aktivitäten.
Bevor wir fortfahren, ist es hilfreich, das grundlegende Objekt zu definieren, das wir beobachten. Die Netzwerkkommunikation ist in kleine Einheiten unterteilt, die als Pakete bezeichnet werden. Ein Paket ist ein winziges Informationsbündel, das sowohl Zustellanweisungen als auch den eigentlichen Inhalt enthält. Die Zustellanweisungen befinden sich in den Headern, die Details wie Quelladresse, Zieladresse, Protokoll und Portinformationen enthalten. Der eigentliche Inhalt wird als Payload bezeichnet. In diesem ersten Lab wird von Ihnen noch nicht erwartet, jedes Feld zu entschlüsseln. Das Ziel ist es, sich mit der Idee vertraut zu machen, dass tcpdump es Ihnen ermöglicht, diese Pakete zu beobachten, während sie sich durch Ihr System bewegen.
In diesem Lab lernen Sie die absoluten Grundlagen der Verwendung von tcpdump. Wir beginnen damit, die "Türen" Ihres Computers (Netzwerkschnittstellen) zu identifizieren. Danach üben Sie das Erfassen von Live-Netzwerkverkehr, steuern die Menge der gesammelten Daten und speichern diese Erfassungen schließlich, um sie später wie ein aufgezeichnetes Video zu überprüfen.
Netzwerkschnittstellen identifizieren
Bevor wir unsere "Überwachungskamera" aufstellen können, um den Verkehr zu beobachten, müssen wir wissen, wo sich die Türen befinden. In der Netzwerktechnik werden diese Türen als "Netzwerkschnittstellen" bezeichnet. Eine Netzwerkschnittstelle ist der Verbindungspunkt zwischen Ihrem Computer und dem externen Netzwerk. Zum Beispiel wird eine normale kabelgebundene Verbindung oft als eth0 bezeichnet, während eine interne Loopback-Verbindung (bei der der Computer mit sich selbst spricht) lo genannt wird.
Diese Unterscheidung ist wichtig, da tcpdump nicht das "Internet" in einem vagen globalen Sinne erfasst. Es hört an einem spezifischen Beobachtungspunkt innerhalb des Betriebssystems zu. Wenn Sie Ihre Erfassung an der falschen Schnittstelle anbringen, sehen Sie möglicherweise nichts Nützliches, selbst wenn die Maschine sehr beschäftigt ist. Zu lernen, die richtige Schnittstelle auszuwählen, ist eine der ersten praktischen Gewohnheiten der Paketanalyse.
Um herauszufinden, welche Schnittstellen auf Ihrer Maschine verfügbar sind, bietet tcpdump einen einfachen Befehl zur Erkennung. Das Flag -D steht für "Discover" (Entdecken) oder "Display" (Anzeigen).
Da das Belauschen von Netzwerkverkehr eine privilegierte Aktion ist, müssen wir den Befehl sudo verwenden, um tcpdump mit Administratorrechten (Superuser) auszuführen.
Führen Sie den folgenden Befehl in Ihrem Terminal aus, um die Schnittstellen aufzulisten:
sudo tcpdump -D
Sie sollten eine Ausgabe sehen, die der folgenden ähnelt:
1.eth0 [Up, Running, Connected]
2.lo [Up, Running, Loopback]
3.any (Pseudo-device that captures on all interfaces) [Up, Running]
4.bluetooth-monitor (Bluetooth Linux Monitor) [none]
5.nflog (Linux netfilter log (NFLOG) interface) [none]
6.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]
Wenn Sie sich diese Liste ansehen, ist eth0 (oder eth1, je nach Ihrer spezifischen virtuellen Maschinenumgebung) die primäre Tür, die Ihre virtuelle Maschine mit dem externen Netzwerk verbindet. Die Schnittstelle lo wird rein für die interne Kommunikation verwendet. Sie werden auch ein spezielles Pseudo-Gerät namens any bemerken, das eine praktische Abkürzung ist, wenn Sie den Verkehr erfassen möchten, der alle aktiven Türen gleichzeitig durchquert.
Hinweis: Wenn Ihre primäre Schnittstelle
eth1anstelle voneth0ist, ersetzen Sie bitte in allen nachfolgenden Befehlen in diesem Labeth0durcheth1.
Live-Verkehr erfassen
Nachdem Sie nun wissen, wo sich Ihre Netzwerktüren befinden, können Sie damit beginnen, die Pakete (die Post), die sie durchlaufen, zu erfassen. Wir konzentrieren uns auf die Schnittstelle eth0, da sie die Hauptnetzwerkverbindung abwickelt.
Wenn man tcpdump zum ersten Mal verwendet, kann die Ausgabe einschüchternd wirken, da jede Zeile eine kompakte Zusammenfassung eines Pakets ist. Betrachten Sie jede Zeile als einen schnellen Vorfallprotokolleintrag. Sie zeigt zwar noch nicht jedes Byte, aber normalerweise reicht sie aus, um übergeordnete Fragen zu beantworten, wie z. B. wer mit wem gesprochen hat, welches Protokoll verwendet wurde und wie viele Daten übertragen wurden. In der Sicherheitsarbeit ist diese Zusammenfassungsansicht oft der schnellste Weg, um festzustellen, ob sich ein System normal oder ungewöhnlich verhält.
Um tcpdump mitzuteilen, welche spezifische Schnittstelle überwacht werden soll, verwenden Sie das Flag -i, das einfach für "interface" steht.
Führen Sie den folgenden Befehl aus, um die Erfassung des Verkehrs auf eth0 zu starten:
sudo tcpdump -i eth0
Sobald Sie diesen Befehl ausführen, beginnt tcpdump sofort damit, Informationen über jedes Paket direkt in Ihrem Terminal auszugeben. Es wird wie eine schnell scrollende Textmatrix aussehen:
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:23:45.123456 IP 192.168.1.10.22 > 192.168.1.20.54321: Flags [P.], seq 1:100, ack 1, win 500, length 99
10:23:45.124567 IP 192.168.1.20.54321 > 192.168.1.10.22: Flags [.], ack 100, win 499, length 0
...
Das Programm läuft kontinuierlich und versucht, alles zu erfassen, bis Sie es explizit zum Stoppen auffordern. Dies ist ein übliches Verhalten für Überwachungstools unter Linux.
Um die Erfassung zu stoppen und die Kontrolle über Ihr Terminal zurückzugewinnen, halten Sie die Ctrl-Taste gedrückt und drücken Sie C. Diese Tastenkombination (Ctrl+C) wird unter Linux universell verwendet, um ein laufendes Programm zu unterbrechen und abzubrechen.
Nachdem Sie es gestoppt haben, beendet sich tcpdump ordnungsgemäß und liefert eine kurze Zusammenfassung dessen, was es gesehen hat, einschließlich der Anzahl der erfolgreich erfassten und der verworfenen Pakete.
Erfassungslänge (Paketanzahl) verwalten
Das manuelle Stoppen einer Paketerfassung mit Ctrl+C ist eine nützliche Fähigkeit, aber nicht immer praktikabel. In einem stark ausgelasteten Netzwerk könnte Ihr Bildschirm innerhalb weniger Sekunden mit Tausenden von Zeilen überflutet werden. Manchmal benötigen Sie nur eine kleine Stichprobe des Verkehrs, um zu sehen, was vor sich geht.
Dies führt eine wichtige Denkweise für Analysten ein: Das Sammeln von Daten ist nicht automatisch nützlich, es sei denn, es bleibt überschaubar. In realen Umgebungen kann eine schlecht geplante Erfassung Ihren Bildschirm überfordern, Speicherplatz füllen oder das interessante Ereignis unter Tausenden von irrelevanten Paketen begraben. Die Begrenzung der Paketanzahl ist eine einfache Form der Bereichskontrolle. Gute Ermittler schränken ihre Sammlung ständig ein, damit sie klar über das nachdenken können, was sie sehen.
Um dies zu lösen, bietet tcpdump das Flag -c, das für "count" (Anzahl) steht. Mit diesem Flag können Sie ein striktes Limit für die Anzahl der Pakete festlegen, die Sie erfassen möchten. Sobald diese Zahl erreicht ist, stoppt das Tool automatisch.
Führen Sie den folgenden Befehl aus, um genau 5 Pakete auf der Schnittstelle eth0 zu erfassen:
sudo tcpdump -i eth0 -c 5
Sie werden sehen, dass genau 5 Pakete auf Ihrem Bildschirm ausgegeben werden. Danach kehrt die Eingabeaufforderung automatisch zu Ihnen zurück, ohne dass Sie Ctrl+C drücken müssen.
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:28:12.345678 IP 10.0.0.5.443 > 10.0.0.2.34567: Flags [P.], seq 1:50, ack 1, win 256, length 49
...
5 packets captured
5 packets received by filter
0 packets dropped by kernel
Die Verwendung des Flags -c ist eine ausgezeichnete Gewohnheit, wenn Sie unbekannte Netzwerke erkunden. Es verhindert, dass Ihr Terminal überlastet wird, und gibt Ihnen einen überschaubaren Datenblock, den Sie in Ihrem eigenen Tempo analysieren können.
Ausgabe stoppen und überprüfen
Das Beobachten von Text, der in Echtzeit vorbeiläuft, ist eine Herausforderung, besonders wenn Sie versuchen, ein bestimmtes Detail zu entdecken. Ein viel besserer Ansatz ist es, den Netzwerkverkehr in einer Datei aufzuzeichnen, damit Sie ihn später sorgfältig überprüfen können. Dies ist genau wie das Aufzeichnen von Sicherheitsaufnahmen auf ein Band.
Dieser Wechsel von der Live-Ansicht zu gespeicherten Beweisen ist ein wichtiger Wendepunkt in der Cybersicherheitsarbeit. Die Live-Erfassung ist nützlich für die sofortige Fehlerbehebung, aber die gespeicherte Erfassung ermöglicht eine sorgfältige Analyse, Zusammenarbeit und Rekonstruktion von Vorfällen. Sobald der Verkehr in einer Datei gespeichert ist, können Sie ihn wiederholt abspielen, mit Teamkollegen teilen und später neue Filter anwenden, ohne dass das ursprüngliche Ereignis erneut stattfinden muss.
Diese Aufzeichnungen werden normalerweise mit der Erweiterung .pcap gespeichert, was für "packet capture" steht.
Eine PCAP-Datei ist nicht nur ein Textprotokoll. Sie speichert die Paketdaten in einem strukturierten Binärformat, das von Analysetools verstanden wird. Deshalb bevorzugen Profis PCAP gegenüber dem Kopieren der Terminalausgabe in Notizen. Die Datei bewahrt das ursprüngliche Timing und die Rohbytes so genau, dass andere Tools die gleichen Beweise später auf unterschiedliche Weise neu interpretieren können.
Um die Ausgabe zu speichern, verwenden Sie das Flag -w, das für "write" (schreiben) steht. Wir kombinieren dies mit unserem praktischen Flag -c, um eine schnelle Stichprobe von 5 Paketen zu erfassen und sie in eine Datei namens capture.pcap zu schreiben.
Führen Sie den folgenden Befehl aus:
sudo tcpdump -i eth0 -c 5 -w capture.pcap
Diesmal wird das Terminal ungewöhnlich ruhig sein. tcpdump druckt die Paketdetails nicht auf den Bildschirm, wenn Sie -w verwenden. Stattdessen schreibt es die binären Rohdaten stillschweigend direkt in die Datei capture.pcap in Ihrem aktuellen Verzeichnis.
Nachdem der Verkehr nun gespeichert ist, können Sie ihn wiedergeben. Sie verwenden das Flag -r, das für "read" (lesen) steht, um die Datei zu öffnen. Da Sie lediglich eine Datei lesen, die Ihnen gehört, benötigen Sie für diesen Schritt keine sudo-Rechte.
Führen Sie den folgenden Befehl aus, um Ihre gespeicherten Pakete zu lesen:
tcpdump -r capture.pcap
Die 5 Pakete, die Sie zuvor erfasst haben, werden sauber in Ihrem Terminal ausgegeben, sodass Sie alle Zeit haben, die Sie benötigen, um sie zu untersuchen:
reading from file capture.pcap, link-type EN10MB (Ethernet), snapshot length 262144
10:35:22.111222 IP 10.0.0.2.22 > 10.0.0.5.55555: Flags [P.], seq 1:100, ack 1, win 300, length 99
...
Das Speichern von Erfassungen in einer PCAP-Datei ist ein Eckpfeiler der professionellen Netzwerkanalyse. Es ermöglicht Ihnen, zuverlässige Aufzeichnungen zu führen, die Aktion anzuhalten und die Verkehrsprotokolle bei der Untersuchung komplexer Probleme einfach mit Teamkollegen zu teilen.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben Ihre ersten Schritte in der Netzwerkanalyse erfolgreich abgeschlossen.
In diesem Lab haben Sie gelernt, wie Sie tcpdump als leistungsstarkes Beobachtungstool einsetzen. Sie haben geübt, Netzwerkschnittstellen mit dem Flag -D zu identifizieren und Live-Verkehr auf einer bestimmten Schnittstelle mit dem Flag -i zu erfassen. Sie haben auch gelernt, wie Sie die Kontrolle über das Ausgabevolumen behalten, indem Sie die Paketanzahl mit dem Flag -c begrenzen. Schließlich haben Sie entdeckt, wie Sie rohe Netzwerkdaten in einer permanenten .pcap-Datei mit dem Flag -w speichern und sie zur sorgfältigen Überprüfung mit dem Flag -r wieder auslesen können.
Diese grundlegenden Befehle sind das absolute Fundament der Netzwerkfehlerbehebung und Sicherheitsuntersuchungen. Indem Sie diese Grundlagen beherrschen, sind Sie auf dem besten Weg, die unsichtbaren Konversationen zu verstehen, die über Ihre Systeme hinweg stattfinden. Üben Sie weiter, und die fließenden Daten werden bald anfangen, absolut Sinn zu ergeben!



