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.