TCPflow – Analysieren und Debuggen des Netzwerkverkehrs unter Linux

TCPflow ist ein kostenloses, Open Source, leistungsstarkes, befehlszeilenbasiertes Tool zur Analyse des Netzwerkverkehrs auf Unix-ähnlichen Systemen wie Linux. Es erfasst Daten, die über TCP-Verbindungen empfangen oder übertragen wurden, und speichert sie zur späteren Analyse in einer Datei in einem nützlichen Format, das die Protokollanalyse und das Debuggen ermöglicht.

Lesen Sie auch: 16 Die besten Tools zur Bandbreitenüberwachung zur Analyse der Netzwerknutzung unter Linux

Es ist eigentlich ein tcpdump-ähnliches Tool, da es Pakete von der Leitung oder aus einer gespeicherten Datei verarbeitet. Es unterstützt dieselben leistungsstarken Filterausdrücke, die von seinem Gegenstück unterstützt werden. Der einzige Unterschied besteht darin, dass tcpflow alle TCP-Pakete in Ordnung bringt und jeden Fluss in einer separaten Datei (eine Datei für jede Flussrichtung) zur späteren Analyse zusammenstellt.

Der Funktionsumfang umfasst ein erweitertes Plug-In-System zum Dekomprimieren komprimierter HTTP-Verbindungen, zum Rückgängigmachen der MIME-Codierung oder zum Aufrufen von Programmen von Drittanbietern zur Nachbearbeitung und vielem mehr.

Es gibt viele Anwendungsfälle für tcpflow, die das Verständnis von Netzwerkpaketflüssen sowie die Unterstützung für die Durchführung von Netzwerkforensik und die Weitergabe von Inhalten von HTTP-Sitzungen umfassen.

So installieren Sie TCPflow in Linux-Systemen


TCPflow ist in den offiziellen Repositories der gängigen GNU / Linux-Distributionen verfügbar. Sie können es wie gezeigt mit Ihrem Paketmanager installieren.

$ sudo apt install tcpflow #Debian/Ubuntu
$ sudo yum install tcpflow  #CentOS/RHEL
$ sudo dnf install tcpflow  #Fedora 22+

Nach der Installation von tcpflow können Sie es mit Superuser-Berechtigungen ausführen, andernfalls verwenden Sie die Sudo-Befehl. Beachten Sie, dass es die aktive Netzwerkschnittstelle abhört (zum Beispiel enp0s3).

$ sudo tcpflow

tcpflow: listening on enp0s3

Standardmäßig speichert tcpflow alle erfassten Daten in Dateien mit Namen im Formular (dies kann anders sein, wenn Sie bestimmte Optionen verwenden, z Zeitstempel).

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

Lassen Sie uns nun eine Verzeichnisliste erstellen, um festzustellen, ob der TCP-Fluss in Dateien erfasst wurde.

$ ls -1

total 20
-rw-r--r--. 1 root    root     808 Sep 19 12:49 192.168.043.031.52920-216.058.210.034.00443
-rw-r--r--. 1 root    root      59 Sep 19 12:49 216.058.210.034.00443-192.168.043.031.52920

Wie bereits erwähnt, wird jeder TCP-Flow in einer eigenen Datei gespeichert. Aus der obigen Ausgabe können Sie ersehen, dass es drei Transkriptdateien gibt, die tcpflow in zwei entgegengesetzten Richtungen anzeigen, wobei die Quell-IP in der ersten Datei und die Ziel-IP in der zweiten Datei und umgekehrt.

Die erste Datei 192.168.043.031.52920-216.058.210.034.00443 enthält vom Host übertragene Daten 192.168.043.031 (der lokale Host, auf dem tcpflow ausgeführt wurde) über Port 52920zu hosten 216.058.210.034 (der Remote-Host) über Port 443.

Und die zweite Datei 216.058.210.034.00443-192.168.043.031.52920 enthält vom Host gesendete Daten 216.058.210.034 (der Remote-Host) über Port 443 zu hosten 192.168.043.031 (der lokale Host, auf dem tcpflow ausgeführt wurde) über Port 52920.

Es gibt auch eine XML Bericht generiert, der Informationen über das Programm enthält, z. B. wie es kompiliert wurde, den Computer, auf dem es ausgeführt wurde, und eine Aufzeichnung jeder TCP-Verbindung.

Wie Sie vielleicht bemerkt haben, speichert tcpflow die Transkriptdateien standardmäßig im aktuellen Verzeichnis. Das -o Mit dieser Option können Sie das Ausgabeverzeichnis angeben, in das die Transkriptdateien geschrieben werden.

$ sudo tcpflow -o tcpflow_files
$ sudo ls -l tcpflow_files

total 32
-rw-r--r--. 1 root root 1665 Sep 19 12:56 157.240.016.035.00443-192.168.000.103.45986
-rw-r--r--. 1 root root   45 Sep 19 12:56 169.044.082.101.00443-192.168.000.103.55496
-rw-r--r--. 1 root root 2738 Sep 19 12:56 172.217.166.046.00443-192.168.000.103.39954
-rw-r--r--. 1 root root   68 Sep 19 12:56 192.168.000.102.00022-192.168.000.103.42436
-rw-r--r--. 1 root root  573 Sep 19 12:56 192.168.000.103.39954-172.217.166.046.00443
-rw-r--r--. 1 root root 4067 Sep 19 12:56 192.168.000.103.45986-157.240.016.035.00443
-rw-r--r--. 1 root root   38 Sep 19 12:56 192.168.000.103.55496-169.044.082.101.00443
-rw-r--r--. 1 root root 3159 Sep 19 12:56 report.xml

Sie können auch den Inhalt von Paketen an drucken stdout während sie empfangen werden, ohne erfasste Daten in Dateien zu speichern, verwenden Sie die -c Flagge wie folgt.

Um dies effektiv zu testen, öffnen Sie ein zweites Terminal und führen Sie a aus Klingelnoder im Internet surfen. Sie sollten in der Lage sein, die Ping-Details oder Ihre Browser-Details zu sehen, die von tcpflow erfasst werden.

$ sudo tcpflow -c

Es ist möglich, den gesamten Datenverkehr an einem bestimmten Port, z. B. einem Port, zu erfassen 80 ((HTTP). Im Falle von HTTP-Verkehr können Sie die HTTP-Header sehen, gefolgt vom Inhalt auf der Standardausgabe oder in einer Datei, wenn die -c Schalter ist entfernt.

$ sudo tcpflow port 80

Verwenden Sie die, um Pakete von einer bestimmten Netzwerkschnittstelle zu erfassen -i Flag zur Angabe des Schnittstellennamens.

$ sudo tcpflow -i eth0 port 80

Sie können auch einen Zielhost angeben (akzeptierte Werte sind IP-Adresse, Hostname oder Domänen), wie gezeigt.

$ sudo tcpflow -c host 192.68.43.1
OR
$ sudo tcpflow -c host www.google.com 

Sie können die gesamte Verarbeitung mit allen Scannern mit dem aktivieren -a flag, dies entspricht dem -e alle schalten.

$ sudo tcpflow -a  
OR
$ sudo tcpflow -e all

Ein bestimmter Scanner kann ebenfalls aktiviert werden. Zu den verfügbaren Scannern gehören md5, http, netviz, tcpdemux und wifiviz (run tcpflow -H um detaillierte Informationen zu jedem Scanner anzuzeigen).

$ sudo tcpflow -e http
OR
$ sudo tcpflow -e md5
OR
$ sudo tcpflow -e netviz
OR
$ sudo tcpflow -e tcpdemux
OR
$ sudo tcpflow -e wifiviz

Das folgende Beispiel zeigt, wie alle Scanner außer tcpdemux aktiviert werden.

$ sudo tcpflow -a -x tcpdemux 

TCPflow versucht normalerweise, die Netzwerkschnittstelle in den Promiscuous-Modus zu versetzen, bevor Pakete erfasst werden. Sie können dies mit dem verhindern -p Flagge wie gezeigt.

$ sudo tcpflow -p -i eth0

Verwenden Sie die Taste, um Pakete aus einer tcpdump-pcap-Datei zu lesen -r Flagge.

$ sudo tcpflow -f file.pcap

Sie können den ausführlichen Modus mit dem aktivieren -v oder -d 10 Optionen.

$ sudo tcpflow -v
OR
$ sudo tcpflow -d 10

Wichtig: Eine Einschränkung von tcpflow ist, dass es derzeit IP-Fragmente nicht versteht, so dass Daten, die als Teil von TCP-Verbindungen übertragen werden, die IP-Fragmente enthalten, nicht richtig erfasst werden.

Weitere Informationen und Verwendungsoptionen finden Sie in der tcpflow Manpage.

$ man tcpflow 

TCPflow Github-Repository:: https://github.com/simsong/tcpflow

Das ist alles für jetzt! TCPflow ist ein leistungsstarker TCP-Flussrekorder, der nützlich ist, um Netzwerkpaketflüsse zu verstehen, Netzwerkforensik durchzuführen und vieles mehr. Probieren Sie es aus und teilen Sie uns Ihre Gedanken in den Kommentaren mit.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *