Website-Suche

TCPflow – Netzwerkverkehr unter Linux analysieren und debuggen


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

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

Es handelt sich eigentlich um ein TCPdump-ähnliches Tool, da es Pakete von der Leitung oder aus einer gespeicherten Datei verarbeitet. Es unterstützt die gleichen leistungsstarken Filterausdrücke wie sein Gegenstück. Der einzige Unterschied besteht darin, dass tcpflow alle TCP-Pakete in die richtige Reihenfolge bringt und jeden Fluss zur späteren Analyse in einer separaten Datei (eine Datei für jede Flussrichtung) zusammenfasst.

Sein Funktionsumfang umfasst ein fortschrittliches Plug-in-System zum Dekomprimieren komprimierter HTTP-Verbindungen, zum Rückgängigmachen der MIME-Kodierung oder zum Aufrufen von Drittanbieterprogrammen zur Nachbearbeitung und vieles mehr.

Es gibt viele Anwendungsfälle für TCPFlow, darunter das Verständnis von Netzwerkpaketflüssen sowie die Unterstützung für die Durchführung von Netzwerkforensik und die Offenlegung des Inhalts von HTTP-Sitzungen.

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-Rechten ausführen, andernfalls verwenden Sie den sudo-Befehl. Beachten Sie, dass es auf der aktiven Netzwerkschnittstelle lauscht (z. B. enp0s3).

sudo tcpflow

tcpflow: listening on enp0s3

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

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

Lassen Sie uns nun eine Verzeichnisliste erstellen, um zu sehen, ob der TCP-Fluss in irgendwelchen 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-Fluss in einer eigenen Datei gespeichert. Aus der obigen Ausgabe können Sie ersehen, dass es drei Transkriptdateien gibt, die TCPflow in zwei entgegengesetzte Richtungen anzeigen, wobei die Quell-IP in der ersten Datei und die Ziel-IP in der zweiten Datei und umgekehrt sind.

Die erste Datei 192.168.043.031.52920-216.058.210.034.00443 enthält Daten, die vom Host 192.168.043.031 (dem lokalen Host, auf dem tcpflow ausgeführt wurde) über Port übertragen wurden 52920, um 216.058.210.034 (den Remote-Host) über Port 443 zu hosten.

Und die zweite Datei 216.058.210.034.00443-192.168.043.031.52920 enthält Daten, die vom Host 216.058.210.034 (dem Remote-Host) über Port 443 gesendet wurden. zum Hosten von 192.168.043.031 (dem lokalen Host, auf dem tcpflow ausgeführt wurde) über Port 52920.

Außerdem wird ein XML-Bericht generiert, der Informationen über das Programm enthält, z. B. wie es kompiliert wurde, über den Computer, auf dem es ausgeführt wurde, und eine Aufzeichnung aller TCP-Verbindungen.

Wie Sie vielleicht bemerkt haben, speichert tcpflow die Transkriptdateien standardmäßig im aktuellen Verzeichnis. Mit der Option -o 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 den Inhalt von Paketen auch beim Empfang auf stdout drucken, ohne erfasste Daten in Dateien zu speichern, indem Sie das Flag -c wie folgt verwenden.

Um dies effektiv zu testen, öffnen Sie ein zweites Terminal und führen Sie einen Ping durch oder surfen Sie im Internet. Sie sollten in der Lage sein, die Ping-Details oder Ihre Browsing-Details zu sehen, die von TCPFlow erfasst werden.

sudo tcpflow -c

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

sudo tcpflow port 80

Um Pakete von einer bestimmten Netzwerkschnittstelle zu erfassen, verwenden Sie das Flag -i, um den Schnittstellennamen anzugeben.

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 Flag -a aktivieren. Dies entspricht dem Schalter -e all.

sudo tcpflow -a  
OR
sudo tcpflow -e all

Es kann auch ein bestimmter Scanner aktiviert werden; Zu den verfügbaren Scannern gehören MD5, http, Netviz, TCPdemux und Wifiviz (führen Sie tcpflow -H aus, 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 verhindern, indem Sie wie gezeigt das Flag -p verwenden.

sudo tcpflow -p -i eth0

Um Pakete aus einer tcpdump-pcap-Datei zu lesen, verwenden Sie das Flag -r.

sudo tcpflow -f file.pcap

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

sudo tcpflow -v
OR
sudo tcpflow -d 10

Wichtig: Eine Einschränkung von tcpflow besteht darin, dass es derzeit keine IP-Fragmente, also Daten, die im Rahmen von TCP-Verbindungen übertragen werden, versteht IP-Fragmente enthalten, werden nicht ordnungsgemäß erfasst.

Weitere Informationen und Verwendungsmöglichkeiten finden Sie auf der Manpage tcpflow.

man tcpflow 

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

Das ist alles für jetzt! TCPflow ist ein leistungsstarker TCP-Flussrekorder, der zum Verständnis von Netzwerkpaketströmen, zur Durchführung von Netzwerkforensik und vielem mehr nützlich ist. Probieren Sie es aus und teilen Sie uns Ihre Meinung dazu in den Kommentaren mit.