TCPflow - Analizirajte i otklonite pogreške mrežnog prometa u Linuxu


TCPflow je besplatan, moćan alat otvorenog koda koji se temelji na naredbenom retku za analizu mrežnog prometa na sustavima sličnim Unixu kao što je Linux. Hvata podatke primljene ili prenesene putem TCP veza i pohranjuje ih u datoteku za kasniju analizu, u korisnom formatu koji omogućuje analizu protokola i otklanjanje pogrešaka.

Pročitajte također: 16 najboljih alata za praćenje propusnosti za analizu korištenja mreže u Linuxu

To je zapravo alat sličan tcpdumpu jer obrađuje pakete iz žice ili iz pohranjene datoteke. Podržava iste moćne izraze filtriranja koje podržava njegov kolega. Jedina razlika je u tome što tcpflow stavlja sve TCP pakete u red i sastavlja svaki tok u zasebnu datoteku (datoteku za svaki smjer protoka) za kasniju analizu.

Njegov skup značajki uključuje napredni plug-in sustav za dekompresiju komprimiranih HTTP veza, poništavanje MIME kodiranja ili pozivanje programa trećih strana za naknadnu obradu i još mnogo toga.

Postoje mnogi slučajevi upotrebe za tcpflow koji uključuju razumijevanje protoka mrežnih paketa i podršku za izvođenje mrežne forenzike i otkrivanje sadržaja HTTP sesija.

Kako instalirati TCPflow u Linux sustavima

TCPflow dostupan je u službenim spremištima glavnih distribucija GNU/Linuxa, možete ga instalirati pomoću upravitelja paketima kao što je prikazano.

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

Nakon instaliranja tcpflowa, možete ga pokrenuti s privilegijama superkorisnika, inače koristite naredbu sudo. Imajte na umu da sluša aktivno mrežno sučelje (na primjer enp0s3).

sudo tcpflow

tcpflow: listening on enp0s3

Prema zadanim postavkama tcpflow pohranjuje sve snimljene podatke u datoteke koje imaju imena u obrascu (ovo može biti drugačije ako koristite određene opcije kao što je vremenska oznaka).

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

Sada napravimo popis direktorija da vidimo je li tcp tijek snimljen u nekoj datoteci.

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

Kao što smo ranije spomenuli, svaki TCP tok je pohranjen u vlastitu datoteku. Iz gornjeg izlaza možete vidjeti da postoje tri datoteke transkripta, koje pokazuju tcpflow u dva suprotna smjera, gdje je izvorni IP u prvoj datoteci, a odredišni IP u drugoj datoteci i obrnuto.

Prva datoteka 192.168.043.031.52920-216.058.210.034.00443 sadrži podatke prenesene s hosta 192.168.043.031 (lokalnog hosta na kojem je tcpflow pokrenut) preko porta 52920, za host 216.058.210.034 (udaljeni host) preko porta 443.

A druga datoteka 216.058.210.034.00443-192.168.043.031.52920 sadrži podatke poslane s hosta 216.058.210.034 (udaljenog hosta) preko porta 443 za host 192.168.043.031 (lokalni host na kojem je tcpflow pokrenut) preko porta 52920.

Također se generira XML izvješće koje sadrži informacije o programu kao što su način na koji je kompajliran, računalo na kojem je pokrenut i zapis svake tcp veze.

Kao što ste možda primijetili, tcpflow prema zadanim postavkama pohranjuje datoteke prijepisa u trenutni direktorij. Opcija -o može vam pomoći da odredite izlazni direktorij u koji će biti zapisane datoteke prijepisa.

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

Također možete ispisati sadržaj paketa u stdout kako su primljeni, bez pohranjivanja snimljenih podataka u datoteke, koristeći oznaku -c kako slijedi.

Da biste to učinkovito testirali, otvorite drugi terminal i pokrenite ping ili pretražujte internet. Trebali biste moći vidjeti pojedinosti pinga ili pojedinosti vašeg pregledavanja koje bilježi tcpflow.

sudo tcpflow -c

Moguće je uhvatiti sav promet na određenom portu, na primjer port 80 (HTTP). U slučaju HTTP prometa, moći ćete vidjeti HTTP zaglavlja praćena sadržajem u stdout-u ili u jednoj datoteci ako se ukloni prekidač -c.

sudo tcpflow port 80

Za hvatanje paketa s određenog mrežnog sučelja, upotrijebite oznaku -i za navođenje naziva sučelja.

sudo tcpflow -i eth0 port 80

Također možete navesti ciljni host (prihvaćene vrijednosti su IP adresa, naziv hosta ili domene), kao što je prikazano.

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

Možete omogućiti svu obradu pomoću svih skenera s oznakom -a, to je ekvivalentno prekidaču -e all.

sudo tcpflow -a  
OR
sudo tcpflow -e all

Također se može aktivirati određeni skener; dostupni skeneri uključuju md5, http, netviz, tcpdemux i wifiviz (pokrenite tcpflow -H za prikaz detaljnih informacija o svakom skeneru).

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

Sljedeći primjer pokazuje kako omogućiti sve skenere osim tcpdemux.

sudo tcpflow -a -x tcpdemux 

TCPflow obično pokušava staviti mrežno sučelje u promiskuitetni način rada prije hvatanja paketa. To možete spriječiti pomoću oznake -p kao što je prikazano.

sudo tcpflow -p -i eth0

Za čitanje paketa iz tcpdump pcap datoteke upotrijebite oznaku -r.

sudo tcpflow -f file.pcap

Možete omogućiti opširni način rada pomoću opcija -v ili -d 10.

sudo tcpflow -v
OR
sudo tcpflow -d 10

Važno: Jedno ograničenje tcpflow je to što trenutno ne razumije IP fragmente, dakle podatke koji se prenose kao dio TCP veza koji sadrže IP fragmente neće biti ispravno snimljeni.

Za više informacija i mogućnosti korištenja, pogledajte stranicu priručnika tcpflow.

man tcpflow 

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

To je sve za sada! TCPflow je moćan snimač TCP toka koji je koristan za razumijevanje protoka mrežnih paketa i izvođenje mrežne forenzike, i još mnogo toga. Isprobajte ga i podijelite svoje mišljenje o njemu s nama u komentarima.