Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Analiza ruchu sieciowego – przykładowe zrzuty pcap oraz narzędzia
Wstęp
Analiza ruchu sieciowego to istotna kwestia szczególnie w kontekście informatyki śledczej, monitoringu bezpieczeństwa sieci, czy analizy powłamaniowej. W tekście przedstawię przykładowe repozytoria zrzutów komunikacji w formacie pcacp (bywa to niezmiernie przydatne do nauki analizy komunikacji sieciowej), wskażę również kilka narzędzi ułatwiających tego typu analizę.
Zrzuty sieciowe
Na stronie producenta narzędzia NetworkMiner znaleźć można listę repozytoriów plików PCAP (ang. packet capture), zawierających dane będące zapisem ruchu sieciowego, który można odtworzyć za pomocą takich narzędzi jak: NetworkMiner czy Wireshark, o których mowa w dalszej części artykułu.
Dane te zostały udostępnione głównie w celach edukacyjnych, ponieważ dają one możliwość obserwacji i analizy ataków czy aktywności malware.
Na tej stronie znajdują się opisy dwóch realistycznych zadań z kategorii „Computer Forensics”, dzięki którym każdy zainteresowany informatyką śledczą może poćwiczyć, bądź zweryfikować swoje umiejętności w praktyce.
Materiały wchodzące w skład tego ćwiczenia to w sumie prawie 1 TB danych ( 50 obrazów dysków, pamięci USB, zrzutów pamięci operacyjnej i ruchu sieciowego).
Z kolei na podstronie wiki Wiresharka znajdują się zrzuty sieciowe z niemal wszystkich najczęściej używanych protokołów.
Wśród nich znaleźć można także bardziej nietypowe zrzuty, jak choćby protokołu USB:
Organizator zawodów CTF na jednym z Defconów w tym miejscu umieścił zrzuty całego ruchu sieciowego, zarejestrowanego podczas 17. edycji tej chyba największej i najbardziej znanej na świecie konferencji na temat hackingu.
Po rozpakowaniu zrzuty zajmują ponad 7 GB i są podzielone na 78 plików.
Wygodniejszą analizę umożliwi pewna przydatna funkcja oferowana przez Wireshark: powoduje ona scalenie zaznaczonych zrzutów wejściowych w jeden większy zrzut tymczasowy.
W tym celu wystarczy zaznaczyć kilka plików zawierających pakiety i przeciągnąć je techniką 'drag and drop’ do okna aplikacji. Trzeba jednak uważać, żeby nie przesadzić z liczbą jednocześnie wybranych zrzutów, bo może się okazać, że zabraknie pamięci operacyjnej na ich załadowanie.
Dzięki zrzutom prześledzić można wiele realnych ataków, w tym na aplikacje webowe:
W zrzutach dostrzec można również wiele prób ataków na usługi sieciowe:
Na poniższym screenie widać, jak atakujący w dość prosty, choć pomysłowy sposób obchodzi brak dostępu do wyświetlania zawartości pliku za pomocą polecenia cat:
Co prawda w ten sposób z pliku key można wyświetlić tylko pierwszą linię, ale w tym wypadku było to wystarczające, ponieważ stanowiła ona całą zawartość pliku. Jeśli znaleźlibyśmy się jednak w podobnej sytuacji, to w analogiczny sposób można wyświetlić wszystkie linie z pliku tekstowego, korzystając z prostej pętli w Bashu:
while read linia; do echo $linia; done < plik
Wireshark
Wireshark to darmowy, open source’owy i pewnie najbardziej popularny analizator ruchu sieciowego na świecie, znany wcześniej pod nazwą Ethereal. Narzędzie potrafi dekodować setki różnych protokołów i posiada zaawansowane możliwości filtrowania pakietów:
Wireshark świetnie sprawdza się jako narzędzie do nauki protokołów sieciowych, jak i do rozwiązywania różnych problemów w sieciach komputerowych.
Umożliwia dekodowanie i wyświetlanie zawartości przechwyconych pakietów zarówno w czasie rzeczywistym, jak i analizę off-line (z ruchu sieciowego zapisanego wcześniej do pliku).
Bardzo użyteczną funkcją Wireshark’a jest Follow TCP Stream, dostępna po wybraniu danego pakietu TCP z poziomu menu kontekstowego:
Funkcja ta umożliwia rekonstrukcję całej sesji TCP i wyświetlenie wszystkich danych przesyłanych w warstwie aplikacji pomiędzy hostem źródłowym (kolor czerwony) a docelowym (kolor niebieski):
Niemniej jednak w celu wykrycia potencjalnie niebezpiecznego zdarzenia w sieci, musimy najpierw sami odnaleźć jakiś pakiet należący do podejrzanej sesji. Jest to problem, który staje się trudniejszy wraz z liczbą analizowanych pakietów.
NetWitness Investigator
Problem ten o wiele lepiej rozwiązano w aplikacji NetWitness Investigator, która co prawda nie jest narzędziem tak uniwersalnym jak Wireshark, ale o wiele lepiej sprawdza się jako narzędzie informatyki śledczej. Głównym celem tej aplikacji jest analiza tylko tych danych, które mogą być użyteczne w kontekście informatyki śledczej czy bezpieczeństwa sieci i przedstawienie ich w jak najprostszej formie.
Netwitness Investigator w porównaniu do funkcji follow tcp stream Wiresharka idzie o krok dalej, automatycznie agregując wszystkie sesje i grupując je według protokołów, adresów IP, rodzajów zawartości, aplikacji klienckich, a nawet kont i czynności użytkowników takich jak logowanie, wysyłanie i odbiór poczty, pobieranie i wysłanie plików itp.
Dzięki takiemu rozwiązaniu w prosty i szybki sposób można przeglądać sesje i o wiele łatwiej jest zlokalizować te, które nas interesują.
Narzędzie to potrafi również wyświetlać odwiedzane strony internetowe albo przesyłaną pocztę:
Ponadto po aktywacji subskrypcji usługi NetWitness Live, która na szczęście jest również dostępna dla darmowej wersji, aplikacja potrafi wykryć podejrzane zdarzenia w sieci, takie jak korzystanie z torrentów, tunelowanie, przekierowania, malware, a nawet niektóre rodzaje ataków.
NetworkMiner
Bardzo użytecznym narzędziem w tego typu analizach jest również NetworkMiner. Aplikacja ta również gromadzi mnóstwo danych z analizowanego online lub offline ruchu sieciowego.
Bardzo przydatną funkcją NetworkMinera jest możliwość automatycznego zapisywania plików, które były przesyłane przez sieć:
Oprócz plików program potrafi również wyciągać inne wartościowe dane, takie jak nazwy i hasła użytkowników, ruch DNS czy obrazki zawarte w przeglądanych stronach internetowych.
Dodatkowo aplikacja ta na podstawie zgromadzonych pakietów potrafi zidentyfikować wszystkie hosty i dostarczyć o nich wielu informacji, wyświetlając je w prostej i przejrzystej formie:
Jak widać wśród danych gromadzonych o każdym hoście znajdują się bardzo szczegółowe informacje, między innymi :
- prawdopodobny system operacyjny (fingerprinting wykorzystuje bazy danych z narzędzi Ettercap, p0f i Satori),
- otwarte porty,
- informacje o sesjach wychodzących i przychodzących,
- zapytania NetBIOS-owe i DNS-owe,
- rodzaje użytych przeglądarek internetowych,
- brama domyślna,
- poprzednio używany adres IP.
Podsumowanie
Publicznie dostępnych repozytoriów z plikami pcap jest naprawdę dużo, więc danych do analizy jest całe mnóstwo, a dzięki narzędziom takim jak NetworkMiner czy NetWitness Investigator analizowanie ruchu sieciowego staje się zadaniem o wiele prostszym niż kiedyś.
— Sebastian Włodarczyk
Przy okazji dzięki dla naszego czytelnika za ten tekst!
Jeśli ktoś z Was chciałby się podzielić wiedzą to zachęcam do kontaktu! :) Z naszej strony zapewniamy support merytoryczny i ew. inspirację odnośnie tematów ;-)
-ms
jeszcze można dodatkowo dorzucić
York1.61- log all network traffic
http://www.freewarefiles.com/York_program_78518.html
,a juz chyba na pewno Colasoft Capsa Network Analyzer Free 7.7.1.3076
[wersja full ma opcje nie z tej ziemi] ;-)
a free też niczego sobie
Pozdrawiam
zlinkuję,bo nie weszło:
http://www.majorgeeks.com/files/details/colasoft_capsa_network_analyzer_free.html
Bardzo ciekawy artykuł. Jestem laikiem i mam pytanie na temat różnic w działaniu programu York i Network Miner. Ten drugi zdecydowanie mnie zaskoczył. Widac praktycznie wszystkie hosty w sieci lokalnej, przy czym York pokazuje tylko ruch pakietów między switchem (brama) a moim komputerem. Podobno pod linuxem wystarczy uruchomić sieciówkę w trybie „nasluchu”, aby podsluchiwac wszystko co „lata” w sieci. W jaki sposób gromadzi dane Network Miner w odróżnieniu do Yorka? Czy jeślibym chciał nasłuchiwać całą sieć, musiałbym uruchomić program wyspecjalizowany do tego typu zadań na komputerze bedącym bramą sieciową (linux) czy może wystarczyłoby na jednym z DNSów (windows 2008)? To ostatnie pytanie niekoniecznie dotyczy Network Minera, bo nie wiem jaka jest zasada jego działania (czy czerpie informacje na zasadzie pingów/snmp tak jak Lokk@Lan, czy może w inny sposób).
Widze, że mały ruch tutaj albo głupie pytanie zadałem :)
Piotrek,
Nie wystarczy tylko nasluchujaca sieciowka, poczytaj o roznicach miedzy hub’em a switch’em. W duzym skrocie switch wysyla do Ciebie tylko to co powinienes dostac, chyba ze:,
Przepelni sie jego pamiec i zacznie broadcast’owac pakiety, wykona sie arp poisoning lub ustawi jeden z portow jako mirror port.
W pierwszych 2 przypadkach mozesz bardzo spowolnic siec, w ostatnim co najwyzej Ty dostaniesz mniej niz caly ruch sieciowy.
Łukaszu, czy mógłbyś podac jakiegoś linka do opisu najprostszej albo po prostu jednej z tych metod? Chętnie poczytałbym. Administruje prostą siecią w szkole i zastanawiałem się nad możliwością wykorzystania Network Minera. Ale widzę, że na pierwszy rzut oka coś oczywistego jest takie tylko z pozoru :)
Generalnie do zebrania danych z sieci polecam TAPy (np.: http://www.netoptics.com/products/network-taps – choć to może być droga zabawa).
Albo w tańszym wydaniu mirror port na switchu (co ma pewne wady ale przy niedużej sieci powinno spisywać się bez problemów).
Mały tekst porównujący te metody: http://www.ntop.org/pf_ring/port-mirror-vs-network-tap/
–ms
Witam, mam pytanko czy znacie może jakąś dobrą stronę na temat PL na temat Wiresharka, teraz na uczelni mamy analizę ruchu sieciowego, dostajemy pliczek pcap i mam napisać jakie ataki zostały przeprowadzone i za chiny nie wiem jak za to się zabrać co szukać i filtrować. Macie może jakieś materiały.
Witam, czy ktoś byłby wstanie pomóc mi z generacją ruchu i przechwytywaniem do Wireshark? Mam problem z wyświetlaniem nazw protokołów, gdy generuję ruch. Zawsze jest TCP albo UDP, mimo, że ruch ustawiam na różne porty… Generuję ruch za pomocą programu Ostinato. Byłbym bardzo wdzięczny za pomoc.
vitcum@gmail.com <— jeśli ktoś byłby wstanie pomóc, prosiłbym o kontakt.