Tcpdump to narzędzie wiersza poleceń do sniffowania pakietów sieciowych. Jest najczęściej używany do rozwiązywania problemów z sieciami i testowania problemów z bezpieczeństwem. Pomimo braku graficznego interfejsu użytkownika jest to najpopularniejsze, potężne i wszechstronne narzędzie wiersza poleceń.
Jest natywny dla Linuksa, więc większość dystrybucji Linuksa instaluje go jako część standardowego systemu operacyjnego. Tcpdump to program z interfejsem libpcap, który jest biblioteką do przechwytywania datagramów sieciowych.
W tym artykule wyjaśnimy tcpdump, pokazując, jak przechwytywać, odczytywać i analizować przechwycony ruch sieciowy w tym narzędziu. Później wykorzystamy naszą wiedzę do sprawdzania pakietów danych za pomocą zaawansowanych filtrów flag TCP flag.
Instalacja Tcpdump
Domyślna instalacja Tcpdump w twojej dystrybucji zależy od opcji wybranych podczas procesu instalacji. W przypadku instalacji niestandardowej możliwe, że pakiet nie jest dostępny. Możesz sprawdzić instalację tcpdump za pomocą dpkg polecenie z „-s" opcja.
ubuntu$ubuntu:~$ dpkg -s tcpdumpLub użyj polecenia „sudo apt-get install tcpdump”, aby zainstalować tcpdump w systemie Ubuntu Linux.
Przechwytywanie pakietów w Tcpdump:
Aby rozpocząć proces przechwytywania, najpierw musimy znaleźć nasz interfejs roboczy za pomocą „ifconfig" Komenda. Lub możemy wyświetlić listę wszystkich dostępnych interfejsów za pomocą tcpdump polecenie z „-re" opcja.
ubuntu$ubuntu:~$ tcpdump -DAby rozpocząć proces przechwytywania, możesz użyć składni;
tcpdump [-opcje] [wyrażenie]Na przykład w poniższym poleceniu używamy „-ja” opcja przechwytywania ruchu na “enp0s3” interfejs, z „-do” flaga ograniczająca przechwycone pakiety i zapis”-w” to do test_capture test.PCAP plik.
ubuntu$ubuntu:~$ sudo tcpdump -i enp0s3 -c 20 -w /tmp/test_capture.PCAPPodobnie możesz użyć różnych kombinacji filtrów, aby izolować ruch zgodnie ze swoimi wymaganiami. Jeden z takich przykładów obejmuje przechwytywanie danych sieciowych wychodzących i przychodzących do hosta za pomocą gospodarz polecenie dla konkretnego Port. Ponadto użyłem „-nie” flaga uniemożliwiająca tcpdump przechwytywanie wyszukiwań DNS. 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 dst port 80 -w /tmp/test_capture1.PCAPtcpdump: nasłuch na enp0s3, link-type EN10MB (Ethernet), rozmiar przechwytywania 262144 bajtów
20 przechwyconych pakietów
21 pakietów odebranych przez filtr
0 pakietów porzuconych przez jądro
Używamy "i” polecenie do przechwytywania tylko pakietów zawierających hosta 10.0.2.15 i port docelowy 80. Podobnie można zastosować różne inne filtry, aby ułatwić zadania związane z rozwiązywaniem problemów.
Jeśli nie chcesz używać „-do” flaga, aby ograniczyć ruch przechwytywania, możesz użyć sygnału przerwania, i.mi., Ctrl+C, zatrzymać proces izolacji.
Czytanie plików Tcpdump
Czytanie przechwyconych plików tcpdump może być bardzo przytłaczające. Domyślnie tcp przypisuje nazwy do adresów IP i portów. Użyjemy „-r” flaga do odczytu naszego już przechwyconego pliku test_capture test.PCAP zapisane w in /tmp teczka. Prześlemy wyjście do awk polecenie, aby wyprowadzić tylko źródłowy adres IP i porty i przekazać go do polecenia głowa aby wyświetlić tylko pierwsze 5 wpisów.
ubuntu$ubuntu:~$ sudo tcpdump -r /tmp/test_capture1.pcp | awk -F “ ” 'drukuj$3' | głowa -5odczyt z pliku /tmp/test_capture.pcap, link-type EN10MB (Ethernet)
Ubuntu IP.53298
Ubuntu IP.53298
Ubuntu IP.53298
Ubuntu IP.53298
Ubuntu IP.53298
Zaleca się jednak używanie adresów IP i portów w liczbach, aby rozwiązać problemy z siecią. Wyłączymy rozpoznawanie nazw IP za pomocą „-nie” flagi i nazwy portów z „-nn“.
ubuntu$ubuntu:~$ sudo tcpdump -i enp0s3 -ntcpdump: gadatliwe wyjście wyłączone, użyj -v lub -vv do pełnego dekodowania protokołu
nasłuch na enp0s3, link-type EN10MB (Ethernet), rozmiar przechwytywania 262144 bajtów
20:08:22.146354 IP 10.0.2.15.54080 > 172.67.39.148.443: Flagi [P.], 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 [P.], seq 3381018839:3381018885, 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 [P.], 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 [P.], seq 1:40, ack 123, wygrana 65535, długość 39
Zrozumienie przechwyconych danych wyjściowych
Tcpdump przechwytuje wiele protokołów, w tym UDP, TCP, ICMP itp. Nie jest łatwo omówić je wszystkie tutaj. Jednak ważne jest, aby zrozumieć, w jaki sposób wyświetlane są informacje i jakie są w nich parametry.
Tcpdump wyświetla każdy pakiet w linii, ze znacznikiem czasu i informacjami dotyczącymi protokołu. Ogólnie format protokołu TCP jest następujący:
Wyjaśnijmy jedno z przechwyconych pól pakietu według pola:
20:08:22.146354 IP 10.0.2.15.54080 > 172.67.39.148.443: Flagi [P.], seq 1276027591:1276027630, ack 544039114, win 63900, długość 39- 20:08:22.146354: Znacznik czasu przechwyconego pakietu
- IP: protokół warstwy sieci.
- 10.0.2.15.54080: To pole zawiera źródłowy adres IP i źródłowy port.
- 172.67.39.148.443: To pole reprezentuje docelowy adres IP i numer portu.
- Flagi[P.]/
: Flagi reprezentują stan połączenia. W tym przypadku [P.] wskazuje pakiet potwierdzenia PUSH. Pole flag zawiera również inne wartości, takie jak: - S: SYN
- P: WCIŚNIJ
- [.]: POTW
- F: FIN
- [S.]: SYN_ACK
- R: RST
- seq 1276027591:1276027630: Numer sekwencyjny w pierwszym: ostatni format oznacza liczbę danych w pakiecie. Wyłączając pierwszy pakiet, w którym liczby są bezwzględne, kolejne pakiety mają liczby względne. W tym 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 odebranym buforze.
- length 39: Długość danych ładunku, w bajtach.
Filtry zaawansowane
Teraz możemy użyć zaawansowanych opcji filtrowania nagłówków, aby wyświetlić i przeanalizować tylko pakiety danych. W każdym pakiecie TCP flagi TCP zaczynają się od 14 bajtu, tak że PSH i ACK są reprezentowane przez 4 i 5 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. Numer ten przekazujemy do tcpdump z filtrem “tcp[13]=24“, zauważ, że indeks tablicy w TCP zaczyna się od zera.
Odfiltrujemy ten pakiet z naszego text_capture.PCAP plik i użyj -ZA opcja wyświetlania wszystkich szczegółów pakietu dla Ciebie.
Podobnie możesz odfiltrować inne pakiety flag, używając „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.PCAPodczyt z pliku /tmp/test_capture.pcap, link-type EN10MB (Ethernet)
19:26:17.827902 IP ubuntu.53298 > 32.121.122.34.pne.treśćużytkownika google.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: sprawdzanie łączności.ubuntu.com
Zaakceptować: */*
Połączenie: zamknij
Wniosek
W tym artykule przedstawiliśmy Ci niektóre z najważniejszych tematów tcpdump. Tcpdump w połączeniu z mocą CLI może być bardzo pomocny w rozwiązywaniu problemów z siecią, automatyzacji i zarządzaniu bezpieczeństwem. Po przestudiowaniu i połączeniu jego filtry i opcje wiersza poleceń mogą w znacznym stopniu przyczynić się do codziennych zadań związanych z rozwiązywaniem problemów i automatyzacją oraz z ogólnym zrozumieniem sieci.