TCPFLOW - Analizuj i debuguj ruch sieciowy w Linux

TCPFLOW - Analizuj i debuguj ruch sieciowy w Linux

Tcpflow jest bezpłatnym, silnym narzędziem opartym na wierszu poleceń do analizy ruchu sieciowego w systemach podobnych do UNIX, takich jak Linux. Przechwytuje dane otrzymane lub przesyłane przez połączenia TCP i przechowuje je w pliku do późniejszej analizy, w użytecznym formacie, który pozwala na analizę protokołu i debugowanie.

Przeczytaj także: 16 najlepszych narzędzi do monitorowania przepustowości do analizy użycia sieci w Linux

W rzeczywistości są to narzędzia podobne do TCPDUMP, ponieważ przetwarza pakiety z przewodu lub z przechowywanego pliku. Obsługuje te same potężne wyrażenia filtrowania obsługiwane przez jej odpowiednik. Jedyną różnicą jest to, że TCPFlow zamawia wszystkie pakiety TCP na zamówienie i montuje każdy przepływ w osobnym pliku (plik dla każdego kierunku przepływu) do późniejszej analizy.

Zestaw funkcji obejmuje zaawansowany system wtyczek do dekompresji skompresowanych połączeń HTTP, cofnięcia kodowania MIME lub wywołujące programy stron trzecich do przetwarzania końcowego i wiele więcej.

Istnieje wiele przypadków użycia dla TCPFlow, które obejmują zrozumienie przepływów pakietów sieciowych, a także obsługuje wykonywanie sieci kryminalistyki i ujawnić zawartość sesji HTTP.

Jak zainstalować TCPFlow w systemach Linux

Tcpflow jest dostępne w oficjalnych repozytoriach dystrybucji głównego nurtu GNU/Linux, możesz go zainstalować za pomocą menedżera pakietów, jak pokazano.

$ sudo apt Zainstaluj tcpflow #debian/ubuntu $ sudo yum instaluj tcpflow #centos/rhel $ sudo dnf instaluj tcpflow #fedora 22+ 

Po zainstalowaniu TCPFlow możesz uruchomić go z uprawnieniami superuser polecenie sudo. Zauważ, że słucha on aktywnego interfejsu sieciowego (na przykład ENP0S3).

$ sudo tcpflow TCPflow: Słuchanie na ENP0S3 

Domyślnie TCPFlow przechowuje wszystkie przechwycone dane w plikach, które mają nazwy w formularzu (może to być inne, jeśli używasz określonych opcji, takich jak znak czasu).

źródło.źródłoport-destip.Destort 192.168.043.031.52920-216.058.210.034.00443 

Teraz zróbmy list katalogowy, aby sprawdzić, czy przepływ TCP został przechwycony w dowolnych plikach.

$ ls -1 Razem 20 -RW-R-R--. 1 root root 808 września 12:49 192.168.043.031.52920-216.058.210.034.00443 -RW-R-R--. 1 root root 59 września 19 12:49 216.058.210.034.00443-192.168.043.031.52920 

Jak wspomniano wcześniej, każdy przepływ TCP jest przechowywany we własnym pliku. Z powyższego wyjścia widać, że istnieją trzy plik transkrypcji, które wskazują TCPFlow w dwóch przeciwnych kierunkach, w których IP źródłowy w pierwszym pliku i docelowym IP w drugim pliku i odwrotnie.

Pierwszy plik 192.168.043.031.52920-216.058.210.034.00443 zawiera dane przeniesione z hosta 192.168.043.031 (Localhost, na którym uruchomiono TCPflow) przez port 52920, do gospodarza 216.058.210.034 (zdalny host) przez port 443.

I drugi plik 216.058.210.034.00443-192.168.043.031.52920 zawiera dane wysyłane z hosta 216.058.210.034 (zdalny host) przez port 443 do gospodarza 192.168.043.031 (Localhost, na którym uruchomiono TCPflow) przez port 52920.

Jest też XML Wygenerowany raport, który zawiera informacje o programie, takie jak jego skompilowany, oraz komputer, na którym został uruchomiony, oraz zapis każdego połączenia TCP.

Jak zapewne zauważyłeś, TCPFlow domyślnie przechowuje pliki transkrypcji w bieżącym katalogu. -o Opcja może pomóc w określeniu katalogu wyjściowego, w którym pliki transkrypcji zostaną zapisane.

$ sudo tcpflow -o tcpflow_files $ sudo ls -l tcpflow_files Łącznie 32 -RW-R-R--. 1 root root 1665 września 12:56 157.240.016.035.00443-192.168.000.103.45986 -RW-R-R--. 1 root root 45 września 19 12:56 169.044.082.101.00443-192.168.000.103.55496 -RW-R-R--. 1 korzeń root 2738 września 12:56 172.217.166.046.00443-192.168.000.103.39954 -RW-R-R--. 1 root 68 września 19 12:56 192.168.000.102.00022-192.168.000.103.42436 -RW-R-R--. 1 root root 573 września 12:56 192.168.000.103.39954-172.217.166.046.00443 -RW-R-R--. 1 root root 4067 września 12:56 192.168.000.103.45986-157.240.016.035.00443 -RW-R-R--. 1 root root 38 września 19 12:56 192.168.000.103.55496-169.044.082.101.00443 -RW-R-R--. 1 root root 3159 września 12:56 Raport.XML 

Możesz także wydrukować zawartość pakietów Stdout Jak są odbierane, bez przechowywania przechwyconych danych do plików, za pomocą -C flaga w następujący sposób.

Aby to skutecznie przetestować, otwórz drugi terminal i uruchom a świst, lub przeglądaj Internet. Powinieneś być w stanie zobaczyć szczegóły ping lub dane przeglądania są przechwytywane przez tcpflow.

$ sudo tcpflow -c 

Możliwe jest przechwycenie całego ruchu w danym porcie, na przykład portu 80 (Http). W przypadku ruchu HTTP będziesz mógł zobaczyć nagłówki HTTP, a następnie treść na stdout lub w jednym pliku, jeśli -C przełącznik jest usuwany.

$ sudo tcpflow port 80 

Aby przechwytywać pakiety z określonego interfejsu sieciowego, użyj -I flaga, aby określić nazwę interfejsu.

$ sudo tcpflow -i eth0 port 80 

Możesz także określić host docelowy (akceptowane wartości to adres IP, nazwa hosta lub domeny), jak pokazano.

$ sudo tcpflow -c host 192.68.43.1 lub $ sudo tcpflow -c host www.Google.com 

Możesz włączyć wszystkie przetwarzanie za pomocą wszystkich skanerów za pomocą -A flaga, jest to równoważne -mi Cały przełącznik.

$ sudo tcpflow -a lub $ sudo tcpflow -e all 

Można również aktywować konkretny skaner; Dostępne skanery obejmują MD5, HTTP, Netviz, TCPDemux i Wifiviz (RUN tcpflow -h Aby wyświetlić szczegółowe informacje o każdym skanerze).

$ sudo tcpflow -e http lub $ sudo tcpflow -e md5 lub $ sudo tcpflow -e netviz lub $ sudo tcpflow -e tcpdemux lub $ sudo tcpflow -e wifiriz 

Poniższy przykład pokazuje, jak włączyć wszystkie skanery oprócz TCPDemux.

$ sudo tcpflow -a -x tcpdemux 

TCPflow zwykle próbuje umieścić interfejs sieciowy w tryb rozwiązłego przed przechwyceniem pakietów. Możesz temu zapobiec za pomocą -P flaga jak pokazano.

$ sudo tcpflow -p -i eth0 

Aby odczytać pakiety z pliku PCAP TCPDUMP, użyj -R flaga.

$ sudo tcpflow -f plik.PCAP 

Możesz włączyć tryb werbowy za pomocą -v Lub -D 10 opcje.

$ sudo tcpflow -v lub $ sudo tcpflow -d 10 

Ważny: Jedno ograniczenie tcpflow jest to, że w chwili obecnej nie rozumie fragmentów IP, dlatego dane przesyłane jako część połączeń TCP zawierających fragmenty IP nie zostaną odpowiednio przechwycone.

Aby uzyskać więcej informacji i opcje użytkowania, zobacz tcpflow Strona Man.

$ man tcpflow 

TCPFLOW GITHUB Repozytorium: https: // github.com/simsong/tcpflow

To wszystko na teraz! Tcpflow to potężny rejestrator przepływu TCP, który jest przydatny do zrozumienia przepływów pakietów sieciowych i wykonywania sieci kryminalistycznych i wiele więcej. Wypróbuj i podziel się z nami swoimi przemyśleniami w komentarzach.