Drogi Czytelniku, czy czujesz ten dreszczyk emocji?

Kontynuujemy naszą epicką (albo przynajmniej dość nudną, ale za to techniczną) podróż po świecie narzędzi wiersza poleceń Linuksa. Wiecie, tych, które w rękach prawdziwego cyberbezpiecznika są tak nieocenione, jak kawa o 3 nad ranem. Po Netcacie, który pozwolił nam na manipulację strumieniami danych z finezją chirurga (albo szaleńca z piłą łańcuchową, zależy od dnia), dziś zanurkujemy w otchłań naszej sieci. Przygotujcie się, bo przed nami potężny i bezlitosny tcpdump. On wie o Waszej sieci więcej niż Wy sami!

Czym jest tcpdump?

Mówiąc wprost, tcpdump to Twój osobisty, sieciowy stalker – analizator pakietów sieciowych działający w wierszu poleceń. Jego głównym zadaniem jest bezczelne przechwytywanie i analizowanie absolutnie każdego ruchu sieciowego, który bez skrępowania przechodzi przez interfejsy sieciowe Twojego systemu. Wyobraź sobie, że to taki wścibski sąsiad, który zagląda przez okno w każdy pakiet danych. Niezastąpione narzędzie do diagnostyki problemów sieciowych (bo przecież zawsze coś nie działa), monitorowania aktywności (żeby wiedzieć, kto i gdzie buszuje), a także do badania potencjalnych zagrożeń bezpieczeństwa (bo przecież wróg nigdy nie śpi, a my musimy udawać, że też nie).

Dlaczego tcpdump jest tak ważny?

A dlaczego nie? Bo kto nie chciałby mieć supermocy widzenia w sieć? Oto kilka “oczywistych” powodów:

  • Diagnostyka problemów (czyli “Dlaczego to znowu nie działa?”): Nagle magicznie zobaczysz, czy Twoje pakieciki docierają do celu, czy może są bezlitośnie odrzucane w jakiejś czeluści sieci. Odkryjesz, jakie protokoły są używane – i nie, to nie zawsze będzie HTTP/HTTPS, czasem trafisz na coś egzotycznego, co sprawi, że zapragniesz herbaty z miętą.
  • Monitorowanie bezpieczeństwa (czyli “Kto tu szpieguje?”): Wykryjesz podejrzane aktywności, zanim Twoja sieć zamieni się w plac zabaw dla hakerów. Skanowanie portów? Próby nawiązania niedozwolonych połączeń, o których nikt Ci nie powiedział? Eksfiltracja danych, czyli “Cześć, właśnie wysyłam Twoje dane do Wietnamu”? tcpdump wszystko Ci wyśpiewa.
  • Nauka o sieciach (czyli “W końcu zrozumiem ten internet!”): Obserwując surowe pakiety, poczujesz się jak Neo w Matrixie. Serio! Lepiej zrozumiesz zasady działania protokołów sieciowych i przestaniesz uważać, że magia odpowiada za to, że Twoja strona się ładuje.
  • Lekkość i elastyczność (czyli “Bo jestem prawdziwym hakerem, a nie klikałem w myszkę”): Działa w terminalu, co czyni go idealnym do użycia na serwerach bez GUI – tych, na których prawdziwi twardziele stawiają swoje usługi. A także w skryptach czy w środowiskach o ograniczonych zasobach, gdzie każdy megabajt i cykl procesora jest na wagę złota (albo przynajmniej na wagę kolejnej kawy).

Podstawowe użycie tcpdump

Dobra, wystarczy tego filozofowania. Przejdźmy do konkretów, czyli jak włączyć to cudo. Najprostsze wywołanie tcpdump to jak otwarcie drzwi na oścież w centrum handlowym i krzyczenie “Słucham wszystkich!”. Rozpocznie to przechwytywanie absolutnie wszystkich pakietów na pierwszym dostępnym interfejsie sieciowym.

sudo tcpdump

Ostrzegam! Spowoduje to wyświetlanie na ekranie niezliczonej ilości danych, która będzie pędzić szybciej niż Twoje myśli o kawie. Szybko stanie się to nieczytelne, a Ty poczujesz się, jakbyś próbował pić wodę z hydrantu. Aby efektywnie korzystać z tcpdump, musimy nauczyć się filtrować ten informacyjny potop. Inaczej utoniemy.

Wybór interfejsu

Zacznijmy od wyboru konkretnego interfejsu, np. eth0 lub wlan0. Listę dostępnych interfejsów uzyskasz za pomocą ifconfig lub ip a.

sudo tcpdump -i eth0

Filtrowanie po hoście

Chcemy zobaczyć ruch tylko z lub do konkretnego adresu IP (np. 192.168.1.1):

sudo tcpdump host 192.168.1.1

Możemy również filtrować dla konkretnego hosta docelowego (dst host) lub źródłowego (src host):

sudo tcpdump src host 192.168.1.1
sudo tcpdump dst host 192.168.1.1

Filtrowanie po porcie

Jeśli interesuje nas ruch na konkretnym porcie, np. HTTP (port 80):

sudo tcpdump port 80

Lub połączenia do/z danego portu:

sudo tcpdump src port 80
sudo tcpdump dst port 80

Filtrowanie po protokole

Możemy również filtrować po protokole, np. TCP, UDP, ICMP:

sudo tcpdump tcp
sudo tcpdump udp
sudo tcpdump icmp

Kombinowanie filtrów

Prawdziwa moc tcpdump objawia się w kombinowaniu filtrów za pomocą operatorów logicznych and, or, not (lub !).

Przykład: Zobacz wszystkie pakiety TCP na porcie 80, które nie pochodzą z 192.168.1.1:

sudo tcpdump "tcp port 80 and not src host 192.168.1.1"

Inny przykład: Ruch UDP z hosta A do hosta B na porcie 53 (DNS):

sudo tcpdump "udp and src host 192.168.1.100 and dst host 8.8.8.8 and port 53"

Zapisywanie do pliku

Przechwycony ruch możemy zapisać do pliku .pcap do późniejszej analizy za pomocą tcpdump lub Wiresharka:

sudo tcpdump -w ruch_sieciowy.pcap

Aby odczytać plik .pcap:

sudo tcpdump -r ruch_sieciowy.pcap

Inne przydatne opcje

  • -n: Nie konwertuj adresów IP na nazwy hostów.
  • -nn: Nie konwertuj adresów IP i portów na nazwy.
  • -v, -vv, -vvv: Zwiększ szczegółowość wyświetlanych informacji.
  • -X: Wyświetlaj zawartość pakietu w formie heksadecymalnej i ASCII.
  • -A: Wyświetlaj zawartość pakietu tylko w formie ASCII.
  • -s 0: Przechwyć pełną długość pakietu (domyślnie tcpdump obcina pakiety).
  • -c <liczba>: Przechwyć określoną liczbę pakietów i zakończ.
# Przechwyć 10 pakietów TCP na porcie 22 (SSH)
sudo tcpdump -c 10 tcp port 22

tcpdump w praktyce

  • Skanowanie portów: Obserwuj próby nawiązania połączeń na nieoczekiwanych portach.
  • Wykrywanie złośliwego oprogramowania: Szukaj nietypowego ruchu wychodzącego do podejrzanych adresów.
  • Problemy z DNS: Monitoruj ruch na porcie 53, aby sprawdzić, czy zapytania DNS są prawidłowo rozwiązywane.
  • Testowanie reguł firewalla: Użyj tcpdump, aby zweryfikować, czy Twój firewall blokuje lub przepuszcza ruch zgodnie z oczekiwaniami.

Podsumowanie

No i jak? Czujesz się, jakbyś właśnie odsłonił matrycę własnej sieci? tcpdump to jedno z tych fundamentalnych narzędzi, które każdy szanujący się sieciowiec, czy specjalista od bezpieczeństwa powinien mieć w małym palcu. Jego opanowanie otwiera drzwi do głębokiego zrozumienia tego, co dzieje się w Twojej infrastrukturze sieciowej – albo przynajmniej do udawania, że wiesz. Pamiętaj, że praktyka czyni mistrza (a w przypadku tcpdump – detektywa), więc eksperymentuj z różnymi filtrami i opcjami. Nie bój się, najwyżej coś przestaniesz widzieć, ale to przecież idealna okazja do dalszej diagnostyki!

W kolejnym odcinku serii “Wróćmy do podstaw” zajmiemy się… jeszcze bardziej ekscytującym (przynajmniej dla nas, geeków) tematem: śledzeniem, kto i co robi na naszym systemie za pomocą narzędzi takich jak lsof i fuser. Szykujcie popcorn i kawę – będzie grubo! Do zobaczenia!


PS. Pamiętajcie, że sudo tcpdump to podstawa. Bez uprawnień roota nie zobaczysz wszystkiego, co dzieje się w sieci. A co za tym idzie, nie będziesz w stanie skutecznie chronić… nawet siebie przed nudą. No chyba, że lubisz bezczynność.