Jeśli znasz wroga i znasz siebie, nie musisz obawiać się wyniku stu bitew.

– Sun Tzu

Jeśli tcpdump jest jak stetoskop (szybki, niezawodny, słyszy wszystko), to tshark jest jak rezonans magnetyczny z opcją eksportu do Excela. Pozwala nie tylko zajrzeć w głąb pakietu, ale też rozebrać go na czynniki pierwsze i sformatować wynik tak, jak tego potrzebujesz.

Czym jest TShark?

TShark to terminalowy odpowiednik Wiresharka. Korzystają z tej samej biblioteki do dissekcji (analizy) pakietów. Oznacza to, że każdy filtr, który znasz z Wiresharka (http.request.method == "POST"), zadziała tutaj.

Dlaczego TShark?

  1. Automatyzacja: Możesz wrzucić go w crona, skrypt bashowy lub potok danych.
  2. Precyzja: Wyciągasz konkretne pola (np. tylko adresy URL) zamiast całych surowych pakietów.
  3. Headless: Działa tam, gdzie nie ma X Window System / Wayland.

Instalacja

Często jest w pakiecie z Wiresharkiem, ale warto się upewnić.

Debian / Ubuntu / Kali

sudo apt update
sudo apt install tshark

Ważne: Podczas instalacji zostaniesz zapytany, czy użytkownicy inni niż root mogą przechwytywać pakiety. Dla bezpieczeństwa i wygody warto dodać swojego użytkownika do grupy wireshark.

sudo usermod -aG wireshark $USER (wymaga przelogowania)

RHEL / CentOS / Fedora

sudo dnf install wireshark-cli

macOS

brew install wireshark

Podstawowe użycie

Sprawdź dostępne interfejsy:

tshark -D

Nasłuchiwanie na konkretnym interfejsie (np. 1):

tshark -i 1

Ale uwaga! TShark domyślnie “wypluwa” zdekodowane informacje na ekran, co przy dużym ruchu zaleje Twój terminal. Siła TSharka leży w filtrowaniu.

Dwa światy filtrów

To najważniejsza koncepcja do zrozumienia w ekosystemie Wiresharka/TSharka.

1. Capture Filters (Filtry przechwytywania) -f

Działają przed zapisaniem pakietu. Odrzucają śmieci na wejściu. Używają składni BPF (tak jak tcpdump). Są szybkie.

# Łap tylko ruch na porcie 80
tshark -f "port 80"

# Łap tylko ruch hosta 192.168.1.5
tshark -f "host 192.168.1.5"

2. Display Filters (Filtry wyświetlania) -Y

Działają na przechwyconych pakietach. Są wolniejsze, ale mają dostęp do pełnej struktury protokołów (ponad 200,000 pól). To te same filtry, które wpisujesz w pasek na górze Wiresharka.

# Pokaż tylko żądania HTTP POST
tshark -Y "http.request.method == POST"

# Pokaż pakiety z błędnym sumą kontrolną TCP
tshark -Y "tcp.checksum.status == Bad"

Pro Tip: Jeśli analizujesz duży plik pcap, używaj -2 (two-pass analysis). TShark przejdzie przez plik dwa razy – raz, żeby zbudować kontekst (np. fragmentację IP), a drugi raz, żeby nałożyć filtry. To niezbędne dla poprawności niektórych statystyk.

Potęga formatowania: -T fields

To jest “killer feature” TSharka. Zamiast oglądać szum, wyciągnij tylko to, co Cię interesuje.

Składnia: -T fields -e [nazwa_pola] -e [nazwa_pola2]

Przykład 1: Wyciągnij odwiedzane domeny (DNS)

tshark -i eth0 -f "udp port 53" -Y "dns.flags.response == 0" -T fields -e dns.qry.name

Przykład 2: Zrób listę User-Agent z ruchu HTTP

tshark -r traffic.pcap -Y "http.request" -T fields -e http.user_agent | sort | uniq -c

Przykład 3: JSON dla programistów

Chcesz obrobić dane w Pythonie lub jq?

tshark -r traffic.pcap -T json | jq .

(O jq będzie osobny odcinek!)

Statystyki w terminalu

TShark potrafi generować raporty bez konieczności ręcznego liczenia.

Hierarchia protokołów (co lata w sieci?):

tshark -r traffic.pcap -q -z io,phs

Lista konwersacji IP:

tshark -r traffic.pcap -q -z conv,ip

(Flaga -q ucisza wypisywanie każdego pakietu, zostawiając tylko wynik statystyk)

Bufor kołowy (Ring Buffer)

Nie chcesz zapchać dysku? Użyj bufora kołowego. TShark będzie pisał do X plików, a po zapełnieniu najstarszego – nadpisze go.

# Trzymaj 10 plików, każdy po 100MB
tshark -i eth0 -b filesize:100000 -b files:10 -w capture.pcap

Idealne do łapania rzadkich błędów (“zostaw na noc, rano sprawdzimy”).

TShark vs Tcpdump

Cecha Tcpdump TShark
Zastosowanie Szybkie zbieranie, prosta analiza Głęboka analiza, ekstrakcja danych
Zasoby Lekki, działa na tosterze Cięższy, zjada RAM przy dużych plikach
Rozumienie protokołów Podstawowe (nagłówki) Pełne (payload, L7)
Wyjście Tekstowe, surowe Fields, JSON, XML, ElasticSearch

Aspekty prawne

PAMIĘTAJ: Podsłuchiwanie sieci, do której nie masz uprawnień, jest nielegalne. TShark widzi wszystko – w tym hasła przesyłane otwartym tekstem (HTTP, Telnet, FTP) oraz treść maili. Używaj go tylko do:

  • Debugowania własnych aplikacji
  • Analizy własnej sieci
  • Audytów bezpieczeństwa, na które masz zgodę

Podsumowanie praktyczne

TShark to narzędzie dla tych, którzy wiedzą, czego szukają. Jeśli tcpdump służy do tego, żeby nagrać wszystko “jak leci”, to tshark służy do tego, żeby z tego nagrania wyciąć precyzyjnie te 3 pakiety, które dowodzą włamania.

Twoja ścieżka rozwoju w serii “Wróćmy do podstaw”:

  1. netcat - nawiązywanie połączeń (aktywne)
  2. tcpdump - nagrywanie ruchu (pasywne, szybkie)
  3. tshark - analiza i ekstrakcja danych (pasywne, dokładne)

W następnym odcinku: lsof/fuser – czyli jak sprawdzić, który proces na Twoim systemie generuje ten podejrzany ruch, który właśnie wykryłeś TSharkiem.

Przydatne zasoby

Podsumowanie

TShark to narzędzie, które wybacza mniej niż Wireshark, ale oferuje znacznie więcej w zamian. Pozwala na automatyzację procesów, które wcześniej wymagały godzin żmudnej pracy, a jego zdolność do ekstrakcji konkretnych pól czyni go niezastąpionym w rękach analityka bezpieczeństwa.

Kluczowe punkty do zapamiętania

  • Odróżniaj filtr przechwytywania (-f) od filtra wyświetlania (-Y)
  • Używaj -T fields, aby wyciągać tylko potrzebne dane
  • Pamiętaj o -2 przy skomplikowanych filtrach na plikach pcap
  • JSON to Twój przyjaciel, jeśli planujesz dalszą obróbkę danych skryptami
  • Zawsze działaj zgodnie z prawem i etyką

Materiały dostępne również na wrocmy-do-podstaw/tshark

Cheatsheet można podejrzeć na cheatsheet/tshark