TCPflow - Analyséieren an Debug Network Traffic am Linux


TCPflow ass e gratis, Open Source, mächteg Kommandozeil baséiert Tool fir den Netzverkéier op Unix-ähnleche Systemer wéi Linux ze analyséieren. Et erfaasst Daten, déi iwwer TCP-Verbindunge kritt oder transferéiert ginn, a späichert se an enger Datei fir spéider Analyse, an engem nëtzlechen Format dat Protokollanalyse an Debugging erlaabt.

Et ass tatsächlech tcpdump-ähnlech Tools wéi et Päckchen aus dem Drot oder aus enger gespäicherter Datei veraarbecht. Et ënnerstëtzt déiselwecht mächteg Filterausdréck, déi vu sengem Kolleg ënnerstëtzt gëtt. Deen eenzegen Ënnerscheed ass datt tcpflow all TCP Päck an Uerdnung setzt an all Flow an enger separater Datei (eng Datei fir all Flowrichtung) fir spéider Analyse montéiert.

Säi Feature-Set enthält en fortgeschratt Plug-in System fir kompriméiert HTTP Verbindungen ze dekompriméieren, MIME Kodéierung ofzeschafen oder Drëtt Partei Programmer fir Postveraarbechtung opruffen a vill méi.

Et gi vill Benotzungsfäll fir tcpflow déi enthalen fir Netzwierkpaketfloss ze verstoen an och ënnerstëtzt fir Netzwierkforensik auszeféieren an den Inhalt vun HTTP Sessiounen ze verëffentlechen.

Wéi installéiere ech TCPflow a Linux Systemer

TCPflow ass verfügbar an den offiziellen Repositories vun Mainstream GNU/Linux Verdeelungen, Dir kënnt et mat Ärem Package Manager installéieren wéi gewisen.

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

Nodeems Dir tcpflow installéiert hutt, kënnt Dir et mat Superuser Privilegien lafen, soss benotzt de sudo Kommando. Notéiert datt et op der aktiver Netzwierkinterface lauschtert (zum Beispill enp0s3).

$ sudo tcpflow

tcpflow: listening on enp0s3

Par défaut späichert tcpflow all erfaasst Donnéeën an Dateien déi Nimm an der Form hunn (dëst kann anescht sinn wann Dir verschidden Optiounen benotzt wéi Zäitstempel).

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

Loosst eis elo eng Verzeechneslëscht maachen fir ze kucken ob tcp Flow an all Dateie gefaange gouf.

$ 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

Wéi mir virdru scho gesot hunn, gëtt all TCP Flow a senger eegener Datei gespäichert. Vun der Ausgab uewendriwwer kënnt Dir gesinn datt et dräi Transkriptdatei sinn, déi tcpflow an zwou entgéintgesate Richtungen uginn, wou d'Quell-IP an der éischter Datei an d'Zil-IP an der zweeter Datei a vice-versa.

Déi éischt Datei 192.168.043.031.52920-216.058.210.034.00443 enthält Daten iwwerdroe vum Host 192.168.043.031 (de localhost op deem tcpflow ausgeführt gouf) iwwer den Hafen 52920, op den Host 0.41.4.2.4.2.

An déi zweet Datei 216.058.210.034.00443-192.168.043.031.52920 enthält Daten, déi vum Host 216.058.210.034 (de Fernhost) iwwer den Hafen 443 op den Host 192.168.043 op 192.168.043.

Et gëtt och en XML-Rapport generéiert, deen Informatioun iwwer de Programm enthält wéi et kompiléiert gouf, an de Computer op deem et gelaf ass an e Rekord vun all tcp Verbindung.

Wéi Dir vläicht gemierkt hutt, späichert tcpflow d'Transkriptdateien am aktuellen Verzeichnis als Standard. D'Optioun -o kann Iech hëllefen den Ausgangsverzeechnes ze spezifizéieren wou d'Transkriptdateien geschriwwe ginn.

$ 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

Dir kënnt och den Inhalt vu Pakete op stdout drécken wéi se opgeholl gi sinn, ouni all gespäichert Daten op Dateien ze späicheren, andeems Dir de -c Fändel wéi follegt benotzt.

Fir dëst effektiv ze testen, öffnen en zweeten Terminal a lafen e Ping, oder surft um Internet. Dir sollt fäeg sinn d'Ping Detailer ze gesinn oder Är Browserdetailer déi vum tcpflow erfaasst ginn.

$ sudo tcpflow -c

Et ass méiglech all Traffic op engem bestëmmten Hafen z'erreechen, zum Beispill Port 80 (HTTP). Am Fall vum HTTP-Traffic kënnt Dir d'HTTP-Header gesinn, gefollegt vum Inhalt all op der stdout oder an enger Datei, wann de -c-Schalter ewechgeholl gëtt.

$ sudo tcpflow port 80

Fir Pakete vun engem spezifeschen Netzwierk ze erfassen, benotzt de -i Fändel fir den Interfacenumm ze spezifizéieren.

$ sudo tcpflow -i eth0 port 80

Dir kënnt och en Zilhost spezifizéieren (akzeptéiert Wäerter sinn IP Adress, Hostnumm oder Domains), wéi gewisen.

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

Dir kënnt all Veraarbechtung aktivéieren andeems Dir all Scanner mam -a Fändel benotzt, dëst entsprécht dem -e all Schalter.

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

E spezifesche Scanner kann och aktivéiert ginn; déi verfügbar Scanner enthalen md5, http, netviz, tcpdemux a wifiviz (runt tcpflow -H fir detailléiert Informatioun iwwer all Scanner ze gesinn).

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

Dat folgend Beispill weist wéi Dir all Scanner aktivéiert ausser tcpdemux.

$ sudo tcpflow -a -x tcpdemux 

TCPflow probéiert normalerweis d'Netzwierk-Interface an de promiskuéise Modus ze setzen ier Dir Pakete erfaasst. Dir kënnt dëst verhënneren andeems Dir de -p Fändel benotzt wéi gewisen.

$ sudo tcpflow -p -i eth0

Fir Pakete vun enger tcpdump pcap Datei ze liesen, benotzt de -r Fändel.

$ sudo tcpflow -f file.pcap

Dir kënnt de verbose Modus aktivéieren andeems Dir d'Optiounen -v oder -d 10 benotzt.

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

Wichteg: Eng Begrenzung vum tcpflow ass datt et de Moment net IP Fragmenter versteet, also Daten, déi als Deel vun TCP Verbindungen iwwerdroe ginn, déi IP Fragmenter enthalen, net richteg ageholl ginn.

Fir méi Informatioun a Benotzungsoptiounen, kuckt d'tcpflow Man Säit.

$ man tcpflow 

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

Dat ass alles fir elo! TCPflow ass e mächtege TCP Flow Recorder deen nëtzlech ass fir Netzwierkpaketfloss ze verstoen an Netzwierk Forensik auszeféieren, a sou vill méi. Probéiert et eraus an deelt Är Gedanken doriwwer mat eis an de Kommentaren.