Vyhledávání na webu

TCPflow – Analýza a ladění síťového provozu v Linuxu


TCPflow je bezplatný výkonný nástroj s otevřeným zdrojovým kódem založený na příkazovém řádku pro analýzu síťového provozu v systémech podobných Unixu, jako je Linux. Zachycuje data přijatá nebo přenesená přes TCP spojení a ukládá je do souboru pro pozdější analýzu v užitečném formátu, který umožňuje analýzu protokolu a ladění.

Přečtěte si také: 16 nejlepších nástrojů pro sledování šířky pásma pro analýzu využití sítě v systému Linux

Je to vlastně nástroj podobný tcpdump, protože zpracovává pakety z drátu nebo z uloženého souboru. Podporuje stejné výkonné filtrovací výrazy jako jeho protějšek. Jediný rozdíl je v tom, že tcpflow uspořádá všechny TCP pakety a sestaví každý tok do samostatného souboru (soubor pro každý směr toku) pro pozdější analýzu.

Jeho sada funkcí zahrnuje pokročilý systém zásuvných modulů pro dekomprimaci komprimovaných připojení HTTP, zrušení kódování MIME nebo vyvolání programů třetích stran pro následné zpracování a mnoho dalšího.

Existuje mnoho případů použití pro tcpflow, které zahrnují pochopení toků síťových paketů a také podporu pro provádění síťové forenzní analýzy a prozrazení obsahu relací HTTP.

Jak nainstalovat TCPflow v systémech Linux

TCPflow je k dispozici v oficiálních repozitářích běžných distribucí GNU/Linux, můžete jej nainstalovat pomocí správce balíčků, jak je znázorněno.

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

Po instalaci tcpflow jej můžete spustit s oprávněními superuživatele, jinak použijte příkaz sudo. Všimněte si, že naslouchá na aktivním síťovém rozhraní (například enp0s3).

sudo tcpflow

tcpflow: listening on enp0s3

Ve výchozím nastavení tcpflow ukládá všechna zachycená data do souborů, které mají ve formuláři názvy (to se může lišit, pokud použijete určité možnosti, jako je časové razítko).

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

Nyní provedeme výpis adresáře, abychom zjistili, zda byl tok tcp zachycen v nějakých souborech.

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

Jak jsme zmínili dříve, každý tok TCP je uložen ve vlastním souboru. Z výše uvedeného výstupu můžete vidět, že existují tři transkriptové soubory, které indikují tcpflow ve dvou opačných směrech, kde zdrojová IP v prvním souboru a cílová IP ve druhém souboru a naopak.

První soubor 192.168.043.031.52920-216.058.210.034.00443 obsahuje data přenesená z hostitele 192.168.043.031 (localhost, na kterém byl spuštěn tcpflow) přes port 52920, k hostiteli 216.058.210.034 (vzdálený hostitel) přes port 443.

A druhý soubor 216.058.210.034.00443-192.168.043.031.52920 obsahuje data odeslaná z hostitele 216.058.210.034 (vzdáleného hostitele) přes port 443 na hostitele 192.168.043.031 (místní hostitel, na kterém byl spuštěn tcpflow) přes port 52920.

Vygeneruje se také XML zpráva, která obsahuje informace o programu, například jak byl zkompilován a na jakém počítači byl spuštěn, a záznam o každém tcp připojení.

Jak jste si možná všimli, tcpflow standardně ukládá soubory přepisu do aktuálního adresáře. Volba -o vám může pomoci určit výstupní adresář, kam se budou zapisovat soubory s přepisem.

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

Můžete také tisknout obsah paketů na stdout, jakmile jsou přijaty, aniž byste ukládali zachycená data do souborů, pomocí příznaku -c následovně.

Chcete-li to efektivně otestovat, otevřete druhý terminál a spusťte ping nebo procházejte internet. Měli byste být schopni vidět podrobnosti o pingu nebo podrobnosti o procházení zachycované tcpflow.

sudo tcpflow -c

Je možné zachytit veškerý provoz na konkrétním portu, například portu 80 (HTTP). V případě provozu HTTP budete moci vidět záhlaví HTTP následovaná obsahem všechny na standardním výstupu nebo v jednom souboru, pokud je odstraněn přepínač -c.

sudo tcpflow port 80

Chcete-li zachytit pakety z určitého síťového rozhraní, použijte příznak -i k určení názvu rozhraní.

sudo tcpflow -i eth0 port 80

Můžete také určit cílového hostitele (akceptované hodnoty jsou IP adresa, název hostitele nebo domény), jak je znázorněno.

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

Veškeré zpracování pomocí všech skenerů můžete povolit pomocí parametru -a, což je ekvivalentní přepínači -e all.

sudo tcpflow -a  
OR
sudo tcpflow -e all

Lze také aktivovat specifický skener; dostupné skenery zahrnují md5, http, netviz, tcpdemux a wifiviz (spusťte tcpflow -H pro zobrazení podrobných informací o každém 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

Následující příklad ukazuje, jak povolit všechny skenery kromě tcpdemux.

sudo tcpflow -a -x tcpdemux 

TCPflow se obvykle snaží uvést síťové rozhraní do promiskuitního režimu před zachycováním paketů. Tomu můžete zabránit pomocí příznaku -p, jak je znázorněno na obrázku.

sudo tcpflow -p -i eth0

Pro čtení paketů ze souboru tcpdump pcap použijte parametr -r.

sudo tcpflow -f file.pcap

Podrobný režim můžete povolit pomocí voleb -v nebo -d 10.

sudo tcpflow -v
OR
sudo tcpflow -d 10

Důležité: Jedním z omezení tcpflow je, že v současné době nerozumí fragmentům IP, tedy datům přenášeným v rámci připojení TCP obsahující fragmenty IP nebudou správně zachyceny.

Další informace a možnosti použití naleznete na manuálové stránce tcpflow.

man tcpflow 

TCPflow Github repozitář: https://github.com/simsong/tcpflow

To je prozatím vše! TCPflow je výkonný záznamník toku TCP, který je užitečný pro pochopení toků síťových paketů, provádění síťových forenzních analýz a mnoho dalšího. Vyzkoušejte to a podělte se s námi o svůj názor v komentářích.