12 analizatorów pakietów sieciowych dla Sysadmin i analityków bezpieczeństwa

Photo of author

By maciekx

Sieć komputerowa stanowi fundament działania każdego współczesnego przedsiębiorstwa. Niezwykle istotne jest, by mieć pełną kontrolę nad tym, co w niej zachodzi.

Świat cyfrowych firm przeszedł w ostatnich latach znaczącą transformację. Od prostych skryptów CGI pisanych w języku Perl, doszliśmy do rozbudowanych, klastrowych wdrożeń, w pełni zautomatyzowanych dzięki platformom takim jak Kubernetes. Technologia ta jest niezwykle zaawansowana i skomplikowana, ale taka jest po prostu rzeczywistość dzisiejszego IT.

Aplikacje internetowe działające w oparciu o kontenery i rozproszoną architekturę (źródło: medium.com)

Z zadumą myślę o tym, że fundamenty tych rozwiązań pozostają niezmienne od lat 70. XX wieku.

Wszystko, co widzimy na co dzień, to abstrakcje budowane na innych abstrakcjach, a ich podstawę stanowią fizyczne kable tworzące sieć. Oczywiście, istnieją również sieci wirtualne, ale zasada działania jest podobna. Możemy podzielić sieć na warstwy, zgodnie z modelem OSI, ale niezależnie od tego, na samym dole zawsze mamy do czynienia z protokołami TCP/IP, pingami, routerami i innymi elementami, których zadaniem jest przesyłanie pakietów danych.

Czym dokładnie jest pakiet sieciowy?

Bez względu na to, czy prowadzimy rozmowę online, oglądamy film, gramy w grę czy robimy zakupy, w istocie wymieniamy pakiety danych między dwoma komputerami lub sieciami. Pakiet to najmniejsza jednostka informacji przesyłana w sieci. Istnieją precyzyjne metody konstruowania i weryfikacji tych pakietów, których szczegóły wykraczają poza ramy tego artykułu, ale dla zainteresowanych, więcej informacji można znaleźć tutaj.

Schemat przesyłania pakietów w sieci (źródło: training.ukdw.ac.id)

Mówiąc prościej, każdy pakiet to ogniwo w łańcuchu. Jest on przesyłany z miejsca startu, a następnie sprawdzany w miejscu docelowym. Nawet jeśli pojedynczy pakiet zostanie pominięty lub uszkodzony, proces transferu danych zostaje wstrzymany do momentu, aż wszystkie pakiety dotrą we właściwej kolejności. Dopiero wtedy są one łączone, by odtworzyć oryginalne dane, takie jak np. obraz.

Teraz, gdy rozumiemy, czym jest sieć, łatwiej nam pojąć rolę analizatora sieci. To narzędzie umożliwia zaglądanie wewnątrz poszczególnych pakietów przepływających w naszej sieci.

Ale dlaczego mielibyśmy w ogóle chcieć się tym zajmować? O tym porozmawiamy w dalszej części.

Po co analizować pakiety sieciowe?

Pakiety są podstawowymi elementami składowymi przepływu danych w sieci, podobnie jak atomy są budulcem materii. Analizując substancje, nie skupiamy się na pojedynczych atomach, dlaczego więc mielibyśmy przejmować się pojedynczym pakietem danych? Co możemy dzięki temu odkryć?

Ciężko jest przekonać kogoś o istotności analizy pakietów, dopóki nie doświadczy się problemów, których rozwiązanie wymaga tego typu analizy. Niemniej, spróbuję to wyjaśnić.

Analiza pakietów oznacza „grzebanie się” w szczegółach, docieranie do sedna problemu. Zwykle sięgamy po nią, gdy inne metody zawiodą. Najczęściej dzieje się to w sytuacjach takich jak:

  • Niewyjaśniona utrata poufnych informacji, pomimo braku oznak włamania.
  • Diagnozowanie wolnego działania aplikacji, gdy brak widocznych przyczyn.
  • Upewnianie się, że komputer lub sieć nie zostały naruszone.
  • Potwierdzenie lub wykluczenie sytuacji, w której osoba nieuprawniona korzysta z naszej sieci poprzez podłączenie się do Wi-Fi.
  • Wyjaśnienie przyczyn przeciążenia serwera, mimo niewielkiego ruchu sieciowego.

Podsumowując, analiza pakietów dostarcza konkretnych dowodów. Dzięki niej, mając do dyspozycji odpowiednie dane, możemy uniknąć niesłusznych oskarżeń o włamanie lub udowodnić, że nie jesteśmy niekompetentnymi administratorami sieci lub programistami.

Tutaj chodzi o dowody! (źródło: dailydot.com)

Znalazłem pewien komentarz na blogu tutaj, który bardzo dobrze ilustruje istotę analizy pakietów:

Aplikacja o kluczowym znaczeniu dla mojej firmy miała problemy z wydajnością, a u klientów regularnie dochodziło do awarii. Była to aplikacja do wyceny akcji używana przez firmy finansowe na całym świecie. Analiza, o której wspomniałeś, a konkretnie analiza zachowania TCP, pokazała, że problem leży w implementacji protokołu TCP po stronie dostawcy systemu operacyjnego. Wadliwość polegała na tym, że gdy stos przechodził w stan kontroli przeciążenia, nigdy nie wracał do normalnego stanu. Prowadziło to do bardzo małego okna wysyłania, czasami zaledwie kilku MSS.

Minęło sporo czasu, zanim przekonałem menedżerów i dział wsparcia technicznego dostawcy systemu operacyjnego. Nie rozumieli problemu ani tego, że *nie może* on leżeć w aplikacji, ponieważ aplikacja nie była świadoma zawiłości TCP. To była jak rozmowa ze ścianą. Musiałem wszystko tłumaczyć od początku podczas każdej telekonferencji. W końcu udało mi się porozmawiać z odpowiednią osobą. Okazało się, że ten człowiek dokonał modyfikacji stosu, dodając rozszerzenia RFC1323! Następnego dnia otrzymałem łatkę do systemu operacyjnego, po której wszystko działało idealnie.

Programista wyjaśnił, że błąd polegał na nieprawidłowej klasyfikacji przychodzących pakietów ACK *z ładunkami* jako DUPACK, gdy stos był w stanie kontroli przeciążenia.

Problem ten nie wystąpiłby w przypadku aplikacji półdupleksowych, takich jak HTTP, ale w przypadku aplikacji, którą obsługiwałem, dane były cały czas przesyłane dwukierunkowo w gnieździe.

W tamtym czasie nie miałem dużego wsparcia ze strony kierownictwa (mój przełożony krzyczał na mnie, że „ciągle chcę używać sniffera”), a nikt poza mną nie podejrzewał implementacji TCP dostawcy systemu operacyjnego jako przyczyny problemu. Samodzielne załatwienie poprawki od dostawcy systemu operacyjnego było wielkim sukcesem i pozwoliło mi zyskać zaufanie przełożonych. Od tego czasu dostawałem do rozwiązania najciekawsze problemy.

W skrócie, ten człowiek miał problemy z aplikacją, za które początkowo obwiniano jego kod. Kierownictwo nie okazywało żadnego wsparcia. Dopiero dokładna analiza pakietów wykazała, że problem leży nie w samej aplikacji, ale w sposobie, w jaki system operacyjny obsługiwał protokół sieciowy!

Poprawka nie dotyczyła aplikacji, ale systemu operacyjnego!

Gdyby nie analiza pakietów, ta osoba prawdopodobnie straciłaby pracę. Jeśli ten przykład nie przekonuje o znaczeniu analizy pakietów, to nie wiem, co by mogło.

Teraz gdy wiesz, że analiza pakietów to potężne narzędzie, mam dobrą wiadomość: nie jest ona trudna!

Dzięki dostępnym, zaawansowanym, ale prostym w obsłudze narzędziom do analizy pakietów, zdobywanie informacji może być równie łatwe, co czytanie raportu. Oczywiście, potrzebna jest podstawowa wiedza o tym, jak działa sieć. Jednak nie jest to wiedza tajemna – wystarczy odrobina zdrowego rozsądku.

Jeśli zaczniesz czytać dokumentację jednego z tych narzędzi, wkrótce staniesz się ekspertem.

Wireshark

Wireshark to projekt o długiej historii (powstał w 1998 roku), który stał się standardem w branży, jeśli chodzi o analizę sieci. Jest to tym bardziej imponujące, że jest rozwijany przez wolontariuszy, wspieranych przez sponsorów. Wireshark jest oprogramowaniem open-source (kod źródłowy można znaleźć tutaj). Projekt ma nawet własną konferencję!

Do najważniejszych możliwości Wireshark należą:

  • Obsługa setek protokołów sieciowych.
  • Kompatybilność z różnymi formatami plików (tcpdump (libpcap), Pcap NG, Catapult DCT2000, Cisco Secure IDS iplog, Microsoft Network Monitor, Network General Sniffer® (skompresowany i nieskompresowany), Sniffer® Pro, NetXray® itd.).
  • Dostępność na praktycznie wszystkich platformach (Linux, Windows, macOS, Solaris, FreeBSD i inne).
  • Odczyt danych na żywo z interfejsów takich jak Ethernet, IEEE 802.11, PPP/HDLC, ATM, Bluetooth, USB, Token Ring.
  • Dekompensacja gzip w czasie rzeczywistym.
  • Obsługa deszyfrowania wielu protokołów (WPA/WPA2, SNMPv3 itd.).
  • Rozbudowane funkcje analizy VoIP.
  • Możliwość kolorowania danych, co ułatwia szybką analizę wizualną.

Zachęcamy do zapoznania się z kursem online, który pomoże ci opanować Wireshark.

Chcesz użyć Wireshark w terminalu? Wypróbuj Termshark.

tcpdump

Jeśli preferujesz pracę w wierszu poleceń, tcpdump jest narzędziem dla Ciebie.

To kultowe narzędzie Linuksowe (jak np. curl), które jest wciąż aktualne i używane jako podstawa dla innych, bardziej „rozbudowanych” narzędzi. Nie posiada graficznego interfejsu, ale rekompensuje to funkcjonalnością.

Instalacja może być nieco kłopotliwa. tcpdump jest częścią większości nowoczesnych dystrybucji Linuksa, ale jeśli go nie masz, będziesz musiał skompilować go ze źródeł.

Polecenia tcpdump są proste i krótkie, pozwalają szybko rozwiązać konkretne problemy, takie jak:

  • Wyświetlenie wszystkich dostępnych interfejsów.
  • Przechwytywanie ruchu tylko z jednego interfejsu.
  • Zapisywanie przechwyconych pakietów do pliku.
  • Przechwytywanie tylko nieprawidłowych pakietów.

Jeśli potrzebujesz prostego i szybkiego skanowania, tcpdump może być bardzo dobrym rozwiązaniem. Sprawdź ten artykuł, aby poznać przykłady użycia tcpdump w praktyce.

Tproxy

Tproxy to proste, open-source’owe narzędzie wiersza poleceń służące do proxy połączeń TCP w sieci. Jest napisane w języku Go i dostępne jako binarka dla systemów Linux i macOS.

Poniższy zrzut ekranu pokazuje monitorowanie połączeń Mysql za pomocą Tproxy:

Jego głównym zastosowaniem jest proxy połączeń HTTP i analiza zawartości żądań i odpowiedzi. Można go również używać do proxy innych protokołów, takich jak SOCKS czy TCP. Może pośredniczyć w połączeniach TCP między dwoma hostami, a także służyć do analizy ruchu na aktywnym połączeniu. Tproxy przydaje się do debugowania i testowania aplikacji korzystających z TCP, a także do tworzenia usług proxy.

Tproxy ma na celu zapewnienie łatwego w użyciu interfejsu do narzędzia wiersza poleceń tcpdump, umożliwiając użytkownikom proxy połączeń TCP i wykonywanie zaawansowanej analizy sieci bez konieczności zgłębiania szczegółów protokołu TCP.

Poniższe polecenie pokazuje przechwytywanie ruchu gRPC:

Tproxy działa jako proxy TCP, umożliwiając łączenie się ze zdalnymi usługami i aplikacjami tak, jakbyś robił to na komputerze lokalnym. Umożliwia budowanie niestandardowych usług TCP na zdalnych hostach, co daje dodatkowe możliwości w zakresie bezpieczeństwa, rozwiązywania problemów i wydajności aplikacji korzystających z TCP.

Kilka innych zastosowań Tproxy:

  • Pomoc w debugowaniu i optymalizacji połączeń TCP.
  • Zrozumienie, jak działają inne programy proxy, takie jak Burp Suite i ZAP.
  • Pośredniczenie w połączeniach TCP między dwoma hostami lub między hostem a usługą zdalną.
  • Monitorowanie połączeń MySQL i gRPC, a także sprawdzanie niezawodności połączenia pod kątem liczby retransmisji i RTT.

Większość użytkowników doceni fakt, że Tproxy upraszcza przepływ pracy i pozwala przeprowadzać złożoną analizę sieci i aplikacji bez konieczności wprowadzania zmian w samej aplikacji czy sieci. Narzędzie można pobrać z GitHub.

NetworkMiner

Promując się jako narzędzie do analizy sieci w kontekście badań, NetworkMiner to jeden z najlepszych analizatorów pakietów, jakie można znaleźć. Jest to narzędzie open-source, które pasywnie analizuje sieć i oferuje rozbudowany interfejs graficzny, który umożliwia podgląd przesyłanych obrazów i innych plików.

NetworkMiner posiada również inne, przydatne funkcje:

  • Obsługa IPv6.
  • Parsowanie plików PCAP.
  • Wyodrębnianie certyfikatów X.509 z ruchu szyfrowanego SSL.
  • Pcap-over-IP.
  • Współpraca z różnymi protokołami, takimi jak FTP, TFTP, HTTP, SMB, SMB2, SMTP, POP3 itd.
  • Rozpoznawanie systemu operacyjnego.
  • Geolokalizacja adresów IP.
  • Obsługa skryptów w wierszu poleceń.

Należy pamiętać, że niektóre z tych funkcji są dostępne tylko w komercyjnej wersji.

Fiddler

W przeciwieństwie do pasywnych snifferów sieciowych, Fiddler działa jako pośrednik między twoim urządzeniem a światem zewnętrznym, co wymaga pewnej konfiguracji (czy stąd nazwa „Fiddler”? 😉).

Jest to darmowe, konfigurowalne narzędzie z długą historią, które umożliwia dogłębną analizę ruchu HTTP/HTTPS.

Fiddler oferuje wiele możliwości, szczególnie dla osób zainteresowanych tematyką security:

  • Manipulacja sesją: podgląd i modyfikacja nagłówków HTTP i danych sesji.
  • Testowanie bezpieczeństwa: symulacja ataków typu man-in-the-middle i odszyfrowywanie ruchu HTTPS.
  • Testowanie wydajności: analiza czasów ładowania strony (lub odpowiedzi API) i identyfikacja wąskich gardeł.

Jeśli potrzebujesz pomocy, szczegółowa dokumentacja jest dostępna online.

WinDump

Jeśli cenisz prostotę tcpdump i chcesz go używać w systemach Windows, wypróbuj WinDump. Działa on z wiersza poleceń, podobnie jak tcpdump w systemach Linux.

WinDump jest plikiem binarnym, który można uruchomić od razu, pod warunkiem, że masz zainstalowaną implementację biblioteki Pcap (npcap jest zalecane, ponieważ winpcap nie jest już rozwijane).

BruteShark

BruteShark to potężne narzędzie do analizy sieci, które umożliwia przetwarzanie i analizę ruchu sieciowego, takiego jak pliki PCAP, a także przechwytywanie danych bezpośrednio z interfejsów sieciowych.

Umożliwia rekonstrukcję sesji TCP, tworzenie map sieci, wyodrębnianie hashy silnie zaszyfrowanych haseł i konwersję ich do formatu Hashcat, w celu przeprowadzenia ataku brute force w trybie offline.

Głównym celem tego projektu jest pomoc administratorom sieci i badaczom bezpieczeństwa w analizie ruchu sieciowego i identyfikacji potencjalnych słabych punktów.

Dostępne są dwie wersje BruteShark: aplikacja z GUI dla systemu Windows oraz narzędzie CLI dla systemów Linux i Windows. Niektóre komponenty projektu można używać niezależnie do analizy ruchu na maszynach z systemem Windows i Linux.

BruteShark oferuje wiele funkcji, takich jak wyodrębnianie zapytań DNS, rekonstrukcja plików, ekstrakcja połączeń VoIP (SIP, RTP), tworzenie diagramów sieci użytkowników i węzłów, wyodrębnianie hashy uwierzytelniania za pomocą Hashcat (NTLM, HTTP-Digest, CRAM-MD5, Kerberos itd.) oraz pobieranie i dekodowanie haseł i nazw użytkowników.

Wszystkie projekty są oparte na .Net Standard i .Net Core. Rozwiązanie charakteryzuje się architekturą trójwarstwową, obejmującą warstwy PL, BLL i DAL. Warstwa DAL (dostępu do danych) umożliwia odczyt plików PCAP za pomocą sterowników WinPcap, libpcap i SharpPcap. BLL (warstwa logiki biznesowej) odpowiada za analizę danych sieciowych (TCP, pakiety itd.), a PL korzysta z obu warstw.

OmniPeek

W przypadku dużych sieci, w których przepływają ogromne ilości danych, popularne narzędzia mogą okazać się niewystarczające. Jeśli potrzebujesz analizy sieci w skali enterprise, warto rozważyć OmniPeek.

Jest to zaawansowane narzędzie do analizy wydajności i kryminalistyki sieci, oferujące zarówno funkcje niskopoziomowe, jak i rozbudowane pulpity nawigacyjne.

Źródło: sniffwifi.com

Capsa

Jeśli interesuje cię tylko platforma Windows, Capsa jest również godną uwagi opcją. Dostępna jest w trzech wersjach: darmowej, standardowej i korporacyjnej, oferujących różne funkcjonalności.

Nawet darmowa wersja obsługuje ponad 300 protokołów i posiada takie funkcje, jak alerty (wyzwalane po spełnieniu określonych warunków). Wersja Standard oferuje obsługę ponad 1000 protokołów i umożliwia analizę rozmów i rekonstrukcję strumieni pakietów.

Podsumowując, jest to solidna opcja dla użytkowników systemu Windows.

EtherApe

Jeśli szukasz narzędzia open-source z zaawansowanymi funkcjami wizualizacji, EtherApe jest wart rozważenia. Dostępne są gotowe pliki binarne dla niektórych dystrybucji Linuksa, a kod źródłowy można pobrać z SourceForge lub GitHub, co umożliwia samodzielną kompilację.

Czym wyróżnia się EtherApe?

  • Kolorowe monitorowanie wielu węzłów.
  • Obsługa wielu formatów pakietów, takich jak ETH_II, 802.2, 803.3, IP, IPv6, ARP, X25L3, REVARP, ATALK, AARP, IPX, VINES, TRAIN, LOOP, VLAN itd.
  • Odczyt danych na żywo z sieci lub z pliku tcpdump.
  • Standardowe rozpoznawanie nazw.
  • Nowoczesny interfejs graficzny oparty na GTK3.

CommView

Jeśli korzystasz wyłącznie z systemu Windows i zależy ci na priorytetowym wsparciu, CommView jest narzędziem, które warto rozważyć. Jest to zaawansowany analizator ruchu sieciowego z wbudowanymi funkcjami takimi jak analiza VoIP, zdalne monitorowanie itp.

Najbardziej imponująca jest możliwość eksportowania danych do formatów używanych przez inne narzędzia, takie jak Sniffer®, EtherPeek™, AiroPeek™, Observer®, NetMon, Wireshark/Tcpdump, Wireshark/pcapng, a nawet zwykłe zrzuty szesnastkowe.

Eksplorator Wi-Fi

Ostatnim narzędziem na naszej liście jest Eksplorator Wi-Fi, który oferuje darmową wersję dla systemu Windows i wersję standardową dla systemów Windows i macOS. Jeśli zależy ci na analizie sieci Wi-Fi, to to narzędzie ułatwi Ci zadanie.

Jest to funkcjonalne i estetyczne narzędzie, które pozwala na dokładną analizę sieci bezprzewodowych.

Na koniec, warto wspomnieć o unikalnym narzędziu, jakim jest Little Snitch. Jest to narzędzie, które oprócz analizy, posiada zaporę ogniową, co daje pełną kontrolę nad ruchem sieciowym.

Co dalej?

Warto również zapoznać się z oprogramowaniem do monitorowania sieci, które pomoże ci lepiej zrozumieć infrastrukturę. Jeśli chcesz rozwijać swoją karierę w obszarze sieci i bezpieczeństwa, sprawdź najlepsze kursy online w tym zakresie.


newsblog.pl