Przewodnik po narzędzia do analizy ruchu TCPDUMP

Przewodnik po narzędzia do analizy ruchu TCPDUMP

TCPDUMP to narzędzie do węgla wąsania pakietu sieciowego. Jest najczęściej używany do rozwiązywania problemów z sieciami i testowaniem problemów związanych z bezpieczeństwem. Pomimo braku graficznego interfejsu użytkownika, jest to najpopularniejsze, potężne i wszechstronne narzędzie linii poleceń.

Jest natywna dla Linux, tak że większość rozkładów Linux instaluje go jako część standardowego systemu operacyjnego. TCPDUMP to program interfacerowy LIBPCAP, który jest biblioteką do przechwytywania sieci sieciowych.

W tym artykule zdemistyfikuje TCPDump, pokazując, jak przechwytywać, czytać i analizować schwytany ruch sieciowy w tym narzędziu. Później wykorzystamy nasze zrozumienie do kontroli pakietów danych za pomocą zaawansowanych filtrów flagi TCP.

Instalacja TCPDUMP

Domyślna instalacja TCPDUMP w dystrybucji zależy od opcji wybranych podczas procesu instalacji. W przypadku niestandardowej instalacji możliwe jest, że pakiet nie jest dostępny. Możesz sprawdzić instalację TCPDUMP za pomocą dpkg polecenie z „-S" opcja.

Ubuntu $ ubuntu: ~ $ dpkg -s tcpdump

Lub użyj polecenia „Sudo apt-get install TCPDump”, aby zainstalować TCPDump w Ubuntu Linux.

Schwytanie pakietów w TCPDUMP:

Aby rozpocząć proces przechwytywania, najpierw musimy znaleźć nasz działający interfejs za pomocą „ifconfig" Komenda. Lub możemy wymienić wszystkie dostępne interfejsy za pomocą TCPDUMP polecenie z „-D" opcja.

Ubuntu $ ubuntu: ~ $ tcpdump -d

Aby rozpocząć proces przechwytywania, możesz użyć składni;

tcpdump [-options] [wyrażenie]

Na przykład w poniższym poleceniu używamy „-I„Opcja przechwytywania ruchu w„ENP0S3„Interfejs z„-C„Flaga, aby ograniczyć przechwycone pakiety i napisać”-w„To do test_capture.PCAP plik.

Ubuntu $ Ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 -w /tmp /test_capture.PCAP

Podobnie możesz użyć różnych kombinacji filtrów do izolowania ruchu zgodnie z wymaganiami. Jeden z takich przykładów obejmuje przechwytywanie danych sieciowych opuszczających i przybycie do hosta za pomocą gospodarz polecenie dla konkretnego Port. Ponadto użyłem „-N”Flaga, aby zapobiec przechwytywaniu wyszukiwania DNS TCPDUMP. Ta flaga jest bardzo pomocna w nasycaniu ruchu podczas rozwiązywania problemów z siecią.

Ubuntu $ Ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 host 10.0.2.15 i Port DST 80 -W /TMP /TEST_CAPTURE1.PCAP
TCPDUMP: Słuchanie na ENP0S3, Link-Type EN10MB (Ethernet), rozmiar przechwytywania 262144 bajtów
Zabryczono 20 pakietów
21 pakietów otrzymanych przez filtr
0 pakietów upuszczonych przez jądro

Używamy "I”Poleć do przechwytywania tylko pakietów zawierających host 10.0.2.15 i port docelowy 80. Podobnie można zastosować różne inne filtry, aby ułatwić rozwiązywanie problemów.

Jeśli nie chcesz używać „-C„Flaga Aby ograniczyć ruch przechwytywania, możesz użyć sygnału przerwania, i.mi., Ctrl+c, Aby zatrzymać proces izolacji.

Czytanie plików TCPDump

Czytanie plików przechwyconych TCPDUMP może być bardzo przytłaczające. Domyślnie TCP przypisuje nazwy do adresów IP i portów. Użyjemy „-R„Flaga, aby odczytać nasz już przechwycony plik test_capture.PCAP uratowane w /TMP teczka. Prowadzimy moc wyjściową Awk Polecenie, aby wyświetlić tylko źródło adresu IP i porty i przewrócić go do polecenia głowa Aby wyświetlić tylko pierwsze 5 wpisów.

Ubuntu $ Ubuntu: ~ $ sudo tcpdump -r /tmp /test_capture1.PCAP | awk -f „” 'drukuj $ 3' | głowa -5
Odczyt z pliku /tmp /test_capture.PCAP, EN10MB typu łącza (Ethernet)
Ip Ubuntu.53298
Ip Ubuntu.53298
Ip Ubuntu.53298
Ip Ubuntu.53298
Ip Ubuntu.53298

Zaleca się jednak używanie adresów IP i portów w liczbach w celu rozwiązywania problemów związanych z nawiązywaniem kontaktów. Wyłączymy rozdzielczość nazwy IP za pomocą „-N„Nazwy flagi i portów z„-nn".

Ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -n
TCPDUMP: WSKAZÓWKA WYJĄTKOWA SPRÓB, Użyj -v lub -vv do pełnego dekodowania protokołu
Słuchanie na ENP0S3, Link typu EN10MB (Ethernet), rozmiar przechwytywania 262144 bajtów
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Flagi [str.], SEQ 1276027591: 1276027630, ACK 544039114, Win 63900, długość 39
20:08:22.146745 IP 10.0.2.15.43456> 54.204.39.132.443: Flagi [str.], SEQ 3381018839: 33810188885, ACK 543136109, Win 65535, długość 46
20:08:22.147506 IP 172.67.39.148.443> 10.0.2.15.54080: flagi [.], Ack 39, wygrana 65535, długość 0
20:08:22.147510 IP 54.204.39.132.443> 10.0.2.15.43456: Flagi [.], Ack 46, wygrana 65535, długość 0
20:08:22.202346 IP 216.58.209.142.443> 10.0.2.15.41050: flagi [str.], SEQ 502925703: 502925826, ACK 1203118935, Win 65535, długość 123
20:08:22.202868 IP 10.0.2.15.41050> 216.58.209.142.443: Flagi [str.], SEQ 1:40, ACK 123, Win 65535, długość 39

Zrozumienie przechwyconego wyjścia

TCPDUMP przechwytuje wiele protokołów, w tym UDP, TCP, ICMP itp. Nie jest łatwo ukryć je wszystkie tutaj. Jednak ważne jest, aby zrozumieć, w jaki sposób informacje są wyświetlane i jakie parametry zawiera.

TCPDUMP wyświetla każdy pakiet w linii, z znacznikiem czasu i informacji w odniesieniu do protokołu. Zasadniczo format protokołu TCP jest następujący:

. > .: , , , , ,

Wyjaśnijmy jeden z przechwyconych pól pakietów według pola:

20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Flagi [str.], SEQ 1276027591: 1276027630, ACK 544039114, Win 63900, długość 39
  • 20:08:22.146354: Znacznik czasu przechwyconego pakietu
  • IP: protokół warstwy sieciowej.
  • 10.0.2.15.54080: To pole zawiera źródłowy adres IP i port źródłowy.
  • 172.67.39.148.443: To pole reprezentuje docelowy adres IP i numer portu.
  • Flagi [str.]/: Flagi reprezentują stan połączenia. W tym przypadku [P.] Wskazuje pakiet potwierdzenia push. Pole flagi zawiera również inne wartości, takie jak:
    1. S: Syn
    2. P: Push
    3. [[[.]: Ack
    4. F: Fin
    5. [S.]: Syn_ack
    6. R: RST
  • SEQ 1276027591: 1276027630: Numer sekwencji w pierwszym: ostatni format oznacza liczbę danych w pakiecie. Z wyłączeniem pierwszego pakietu, w którym liczby są bezwzględne, kolejne pakiety mają względne liczby. W takim przypadku liczby tutaj oznaczają, że pakiet zawiera bajty danych od 1276027591 do 1276027630.
  • ACK 544039114: Numer potwierdzenia przedstawia następny oczekiwany numer sekwencji danych.
  • Win 63900: Rozmiar okna przedstawia liczbę dostępnych bajtów w otrzymanym buforze.
  • Długość 39: Długość danych ładunku, w bajtach.

Zaawansowane filtry

Teraz możemy użyć niektórych zaawansowanych opcji filtra nagłówka do wyświetlania i analizy tylko pakietów danych. W dowolnym pakiecie TCP flagi TCP zaczynają się od 14 bajtu, tak że PSH i ACK są reprezentowane przez czwarte i piąte bity.

Możemy wykorzystać te informacje, włączając te bity 00011000 lub 24 Aby wyświetlić pakiety danych tylko z flagami PSH i ACK. Podajemy ten numer do TCPDump z filtrem ”TCP [13] = 24„Zwróć uwagę, że indeks tablicy w TCP zaczyna się od zera.

Odfiltrujemy ten pakiet z naszego Text_capture.PCAP złożyć i użyj -A opcja wyświetlania wszystkich szczegółów pakietu dla Ciebie.

Podobnie możesz odfiltrować inne pakiety flagowe za pomocą „TCP [13] = 8” i „TCP [13] = 2” tylko dla flag PSH i Syn itp.

Ubuntu $ Ubuntu: ~ $ sudo tcpdump -a 'tcp [13] = 24' -r /tmp /test_capture.PCAP
Odczyt z pliku /tmp /test_capture.PCAP, EN10MB typu łącza (Ethernet)
19:26:17.827902 ip Ubuntu.53298> 32.121.122.34.pne.GoogleuserContent.com.http: flagi [p.], SEQ 4286571276: 4286571363, ACK 252096002, WIN 64240, Długość 87: HTTP: GET / HTTP / 1.1
E…:?@[email protected].
… ”Zy .2.P… P… Get / http / 1.1
Host: Sprawdź łączność.Ubuntu.com
Zaakceptować: */*
Połączenie: Zamknij

Wniosek

W tym artykule wprowadziliśmy Cię do niektórych z najważniejszych tematów TCPDUMP. TCPDUMP, w połączeniu z mocą CLI, może być bardzo pomocny w rozwiązywaniu problemów, automatyzacji i zarządzania bezpieczeństwem. Po zbadaniu i połączeniu jego filtry i opcje wiersza poleceń mogą wiele przyczynić się do codziennych zadań związanych z rozwiązywaniem problemów i automatyzacji oraz ogólnego zrozumienia sieci.