Pakete mit Tcpdump aufzeichnen und mit Wireshark unter Ubuntu analysieren
In dieser Anleitung zeige ich dir, wie du Netzwerkpakete unter Linux analysieren kannst. Ich werde die Tools Tcpdump und Wireshark verwenden. In dieser Anleitung wird Ubuntu als Betriebssystem verwendet, aber sie ist auch auf andere Linux-Distributionen anwendbar.
Warum brauchst du Tcpdump?
Eine offensichtliche Frage, die dir vielleicht in den Sinn kommt, ist, warum du dich für Tcpdump interessierst, wenn du fast alles mit Wireshark machen kannst. Nun, hier ist die Antwort darauf: Manchmal ist es bequemer, Tcpdump zum Aufzeichnen von Paketen zu verwenden als Wireshark. Wenn der Zielcomputer, auf dem du Pakete aufzeichnen willst, ein Remote-Computer ist, auf dem Wireshark nicht installiert ist, oder wenn es sich um einen Remote-Computer ohne Kopfhörer handelt, ist Tcpdump in beiden Fällen sehr praktisch. Die verschiedenen Optionen, die mit Tcpdump verwendet werden können, findest du in den Man Pages.
Was ist Tcpdump?
Tcpdump ist eine Kommandozeilenalternative zu Wireshark. Es dient demselben Zweck wie Wireshark, nämlich dem Aufzeichnen und Analysieren von Datenverkehr. Tcpdump ist eine eigenständige Anwendung und sollte nicht als Wireshark-Befehlszeilenschnittstelle betrachtet werden. Da es auf der Befehlszeilenschnittstelle basiert, ist es nicht so einfach zu bedienen wie Wireshark. Neue Benutzer/innen finden es anfangs vielleicht etwas abschreckend, wenn sie anfangen, es zu benutzen, und können sich viele schwer zu merkende Befehle und Syntax merken.
Gliederung dieses Tutorials
Wenden wir uns nun dem Hauptzweck dieses Leitfadens zu. In diesem Leitfaden werden wir sehen, wie wir Tcpdump mit Wireshark verbinden können. Hier zeigen wir dir, was wir in diesem Leitfaden tun werden:
- Verbinden mit dem entfernten Rechner (Host 2) über SSH.
- Erfassen des Datenverkehrs mit Tcpdump und Speichern des Captures.
- Senden der Aufzeichnungsdatei an den Rechner vor Ort (Host 1), auf dem Wireshark installiert ist.
- Verwendung von Wireshark zur Analyse der aufgezeichneten Tcpdump-Sitzung.
Pre-Flight Check
Für diesen Lehrgang verwenden wir zwei Ubuntu 20.04-Rechner, die du selbst konfigurieren musst. Unsere IP-Konfiguration sieht wie folgt aus:
Host 1(Vor-Ort-Rechner): 192.168.186.150
Host 2 (entfernter Rechner): 192.168.186.201
Die in diesem Leitfaden beschriebenen Schritte sollten auf jedem Linux-System funktionieren, das die folgenden Voraussetzungen erfüllt:
- Vor-Ort-Host (Host 1) mit installiertem Wireshark und konfiguriertem SSH.
- SSH-Zugang vom Vor-Ort-Host (Host 1) zum Remote-Host (Host 2).
- Tcpdump und SSH sind auf dem entfernten Host (Host 2) konfiguriert.
- sudo“-Benutzerkonto auf Host 2 zur Ausführung von Tcpdump und auch auf Host 1 (je nachdem, wie Wireshark konfiguriert ist).
Fangen wir an…
Um weiterzumachen, verbindest du dich von deinem Rechner vor Ort (Host 1) mit dem entfernten Rechner (Host 2) über das SSH-Zugangsprotokoll. Wir haben die SSH-Verbindung zwischen den beiden Rechnern bereits eingerichtet. Wir verwenden also den folgenden Befehl vom Terminal von Host 1 aus, um uns mit Host 2 zu verbinden:
$ ssh ‚user_name’@’IP_of_Host2‘
Ersetze hier „Benutzername“ durch den Benutzernamen von Host 2, mit dem wir uns verbinden wollen, und „IP_von_Host2“ ist die IP-Adresse von Host 2. Siehe dazu das Bild unten:
Überprüfe nun die verfügbaren Schnittstellen auf dem entfernten Rechner, die Tcpdump aufzeichnen kann. Verwende dazu den Befehl:
$ tcpdump –list-interfaces
Beispielhafte Ausgabe:
1.enp0s3 [Up, Running]
2.lo [Up, Running, Loopback]
3.any (Pseudo-Gerät, das auf allen Schnittstellen aufzeichnet) [Up, Running]
4.eno1 [Up]
5.bluetooth-monitor (Bluetooth Linux Monitor) [keine]
6.nflog (Linux netfilter log (NFLOG) Schnittstelle) [keine]
7.nfqueue (Linux netfilter queue (NFQUEUE) Schnittstelle) [keine]
8.bluetooth0 (Bluetooth Adapter Nummer 0) [keine]
Wie du siehst, ist die Schnittstelle „enpos3“ eingerichtet und funktioniert. Legen wir sie also als Zielschnittstelle fest und führen den tcpdump-Befehl hier aus. Wenn du das Gefühl hast, dass du genug Pakete aufgezeichnet hast, drückst du einfach „Strg+c“, um die Paketaufzeichnung zu beenden. Der Befehl lautet:
$ sudo tcpdump -s 65535 -i enp0s3 -w my_remote_capture.pcap
Im obigen Befehl haben wir die folgenden Optionen mit Tcpdump verwendet:
- -s: Ältere Versionen von Tcpdump schneiden Pakete auf 68 oder 96 Bytes ab. Die Option „-s“ wird verwendet, um Pakete mit voller Länge zu erfassen.
- -i: Sie wählt die Schnittstelle aus, auf der gelauscht werden soll.
- -w: Speichert die aufgezeichneten Rohdatenpakete in einer Datei, anstatt sie auf dem Terminal anzuzeigen.
Der aufgezeichnete Datenverkehr wird in der Datei „my_remote_capture.pcap“ gespeichert. Wir werden diese Datei nun zur Analyse mit Wireshark auf Host 1 übertragen. Um die Datei zu übertragen, verwenden wir den Befehl „scp“. Auch hier haben wir „scp“ bereits so konfiguriert, dass es zwischen den beiden Rechnern funktioniert. Die Befehlssyntax lautet wie folgt:
$ scp my_remote_capture.pcap ‚username’@’IP_of_remote_machine‘:
Hier ist „Benutzername“ der Name des Benutzers auf Host 1 und „IP_der_entfernten_Maschine“ ist ebenfalls die IP von Host 1.
Prüfe auf dem Rechner vor Ort (Host 1), ob du die Datei erhalten hast. In unserem Fall haben wir die Datei erfolgreich erhalten und öffnen sie mit Wireshark wie unten gezeigt:
Hier ist der Screenshot der Capture-Datei von Host 1:
Analysieren der Capture-Datei
Wenden wir nun einen Anzeigefilter auf die obige Datei an. Da wir mit Host 2 über SSH verbunden waren, sollten einige Spuren des SSH-Protokolls zu sehen sein. Gib in das Textfeld, das dem Anzeigefilter entspricht, „ssh“ ein:
Im obigen Bild sehen wir nur die Pakete mit dem „SSH“-Protokoll.
Abschließend…
Herzlichen Glückwunsch, wir haben endlich demonstriert, wie wir einen Rechner per Fernzugriff erfassen können. Wir haben gesehen, wie wir Tcpdump mit Wireshark kombinieren können.