W tym samouczku zobaczymy jak pracować z tcpdump. Jest to narzędzie typu open source dla wiersza poleceń, służy do monitorować sieć, możemy to rozumieć jako analizator pakietów, które przechodzą przez sieć, w której wykonujesz program. Jest używany w środowiskach Unix, chociaż istnieje wariant dla Windows o nazwie WinDump. Może Cię zainteresować samouczek dotyczący EtherApe, który jest narzędziem do graficznego podglądu stanu naszej sieci.
W tutorialu będziemy pracować pod Linuksem, a konkretnie w Ubuntu 16.04, aby narzędzie działało musimy uruchomić je z wysokimi uprawnieniami, poza pewnymi opcjami, które będą konieczne.
Możemy użyć tcpdump do różnych zadań, takich jak debugowanie naszych aplikacji sieciowych, odczytywanie danych przesyłanych między użytkownikami przez sieć, w której się znajdujemy itp. Poniżej umieścimy jego składnię:
tcpdump [-aAbdDefhHIJKlLnNOpqRStuUvxX #] [-B rozmiar] [-c liczba] [-C rozmiar_pliku] [-E coś: sekret] [-F plik] [-G sekund] [-i interfejs] [-j tstamptype] [- M sekret] [--number] [-Q in | out | inout] [-r plik] [-s snaplen] [--time-stamp-precyzja] [--tryb natychmiastowy] [-T typ] [ --wersja] [-V plik] [-w plik] [-W liczba plików] [-y typ łącza danych] [-z polecenie] [-Z użytkownik] [wyrażenie]To narzędzie ma dużą liczbę parametrów, z których możemy korzystać, tutaj zobaczymy niektóre.
Niektóre parametry tcpdump
- -DO: Wydrukuj pakiety w kodzie ASCII.
- -x: Drukuj pakiety w systemie szesnastkowym.
- -D: Pokazuje dostępne interfejsy.
- -C number: Program zostanie zamknięty po przechwyceniu wskazanej liczby pakietów.
- -i interfejs: program nasłuchuje na określonym interfejsie.
- -I: Przełącza interfejs w tryb monitora.
- -P: Nie przełącza interfejsu w tryb rozwiązły.
- -f plik: Dane wyjściowe są przechowywane we wskazanym przez nas pliku.
- -h: Wyświetla pomoc do jego użycia.
Jeśli chcemy zobaczyć wszystkie dostępne parametry, w Linuksie używamy:
człowiek tcpdumpKorzystanie z tego polecenia jest pełniejsze niż pomoc oferowana przez parametr -h lub --Wsparcie, który pokaże nam tylko:
Zobaczymy 10 przykładów, aby rozpocząć korzystanie z tego potężnego narzędzia.
NotatkaW prawie wszystkich przykładach zobaczysz, że sudo jest używane przed tcpdump, jak wspomniano wcześniej, konieczne jest uruchomienie go z wysokimi uprawnieniami, jeśli używasz terminala jako root, nie ma potrzeby umieszczania czegokolwiek przed tcpdump. Jeśli chcesz zatrzymać przechwytywanie, możesz połączyć klawisze:
CTRL + C
Przykład 1
Najprostszy przykład z wykorzystaniem parametru -DO. W tym celu wykonujemy:
tcpdump -A
Zobaczmy przykład z większą zawartością.
Przykład 2
Teraz przefiltrujemy według hosta i dodamy tryb szczegółowy z parametrem -v:
sudo tcpdump host 192.168.66.130 -vPoniżej znajduje się obraz za pomocą powyższego polecenia:
Dla obrazu zrobiłem ping z innej maszyny, więc możemy zobaczyć ICMP. Przejdźmy do trzeciego przykładu.
Przykład 3
W tym przykładzie przyjrzymy się pakietom z tego samego hosta, tylko tym razem pakiety związane z portem 80:
sudo tcpdump host 192.168.66.130 i port 80 -vJeśli spojrzymy na przechwycenie, zobaczymy coś podobnego do tego:
Możesz zobaczyć, jak łatwe w obsłudze jest to narzędzie, przejdźmy dalej.
Przykład 4
Użyjemy przykładu 3 i będziemy go modyfikować, chcemy filtrować pakiety o źródle 192.168.66.130, które trafiają na port 80:
sudo tcpdump src host 192.168.66.130 i dst port 80 -vWidzimy, że użyliśmy warunkowego i aby oba warunki zostały spełnione, możemy również użyć lub, jeśli chcemy, aby był spełniony tylko jeden z nich. Jeśli spojrzymy na zrzuty ekranu, zobaczymy żądanie POST.
Przechodzimy do piątego przykładu.
Przykład 5
Zamierzamy przechwycić pakiety wskazujące interfejs:
sudo tcpdump -i pl33NotatkaTwój interfejs to prawdopodobnie eth0, możesz to zobaczyć za pomocą polecenia ifconfig, ale również z parametrem -D tcpdump zadziała u nas, zobaczymy to w poniższym przykładzie.
Poniżej możesz zobaczyć obraz przechwytywania.
Przejdźmy do następnego.
Przykład 6
W tym przykładzie jedyne, co zamierzamy zrobić, to pokazać dostępne interfejsy, w tym celu wykonujemy:
tcpdump -DW tym przypadku nie trzeba być rootem.
Kontynuujmy.
Przykład 7
Chcemy przechwycić 3 pakiety przeznaczone dla portu 1987 i gdy to nastąpi, zatrzymaj program:
sudo tcpdump -c 3 port dst 1987Na poniższym obrazku widać, że przechwytywane są tylko 3 pakiety:
Zobaczmy jeszcze kilka przykładów.
Przykład 8
Gdy jesteśmy zainteresowani uzyskaniem wszystkich pakietów ruchu tcp, które nie trafiają na określony port, na przykład port 80, wykonamy następujące czynności:
sudo tcpdump nie port 80 i tcpDane wyjściowe są podobne, więc w tym przykładzie nie ustawiono przechwytywania. Przejdźmy do przedostatniego przykładu.
Przykład 9
Zamierzamy przechwycić 2 pakiety określonego interfejsu i pokażemy je w formacie szesnastkowym, w tym celu musimy wykonać:
sudo tcpdump -i ens33 -x -c 2Poniżej możesz zobaczyć wynik:
Przejdźmy teraz do ostatniego przykładu samouczka.
Przykład 10
W tym przykładzie zapiszemy przechwycony plik w pliku, aby móc go później przejrzeć. Przechwytywanie jest ograniczone do 3 pakietów i określony jest interfejs, więc wykonamy:
sudo tcpdump -w test.pcap -i ens33 -c 3Zobaczmy zrzut ekranu:
Jeśli chcemy teraz przeczytać ten plik, musimy wykonać:
tcpdump -r test.pcapWidzimy to na poniższym obrazku:
Samouczek dotyczący tcpdump zaszedł tak daleko, ma wiele możliwości i wiele opcji, więc aby nauczyć się dobrze obsługiwać to narzędzie, najlepiej ćwiczyć i stopniowo odkrywać wszystkie jego funkcje. Możesz również przeczytać coś o narzędziu netcat, więc oto link do samouczka z przykładami:
Jak korzystać z netcata
Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt