Analiza komunikacji sieciowej - argus
Wstęp
Jednym z aspektów monitorowania sieci pod względem bezpieczeństwa (czy to podczas normalnego działania sieci, czy w trakcie analizy powłamaniowej) jest zagregowana analiza komunikacji sieciowej. Zagregowana, czyli zsumowana pod względem pewnych czynników. Stopień agregacji zależy od konkretnego celu jaki chcemy osiągnąć podczas analizy.
Pobieranie danych do analizy
Teoretycznie, jednym z prostszych sposobów kolekcjonowania oraz analizy ruchu jest wykorzystanie oprogramowania typu tcpdump - i w kolejnym kroku agregowanie danych w pożądanym przez nas stopniu. Jednak w takim przypadku, monitorując nawet niewielką sieć możemy natknąć się na ograniczenia pojemnościowe (pełna komunikacja w niewielkiej sieci może bez problemu przekroczyć rozmiar kilkunastu GB danych dziennie). Analiza tak dużych plików może być w dużym stopniu uciążliwa...
Argus
Jednym z ciekawych narzędzi, umożliwiających zagregowaną analizę komunikacji sieciowej jest mało znane (choć rozwijane już przez około 10 lat) oprogramowanie argus. W przypadku tego oprogramowania, agregacja danych następuje na poziomie 'przepływów sieciowych' (ang. 'flow'). Przy czym 'przepływ' definiowany jest jako komunikacja między nadawcą a odbiorcą w oparciu o pewien protokół. Co więcej, komunikacja nie musi być zrealizowana z wykorzystaniem protokołów typowo połączeniowych (jak np. TCP). Równie dobrze może to być choćby ARP.
Argus składa się z dwóch głównych modułów:
- Serwer (umożliwiający gromadzenie danych w czasie rzeczywistym - lub konwersję pliku w formacie libpcap).
- Konsolowe narzędzia klienckie - umożliwiające operacje na uzyskanych danych.
W przypadku serwera argus, instalacja jest relatywnie prosta, a wykorzystanie podobne do uruchomienia w tle oprogramowania tcpdump.
W wyniku pracy serwera otrzymujemy plik z zagregowanymi danymi, który możemy analizować narzędziami klienckimi. Samych narzędzi klienckich argus oferuje przeszło 10, poniżej prezentuję przykładowe sposoby wykorzystania kilku z nich.
Wszystkie przykłady bazują na zebraniu komunikacji ze stacji roboczej za pomocą oprogramowania tcpdump, a następnie konwersji pliku wynikowego na format zgody z argus (argus -r logs.cap -w argus.log). Korzystając z tego typu "kompresji", w wielu przypadkach otrzymujemy plik około 100 razy mniejszy niż standardowy "zrzut" z wykorzystaniem tcpdumpa (!).
ra + rasort
Ra służy do wyświetlenia przepływów sieciowych zebranych w logach. Przykład wykorzystania narzędzia wygląda następująco:
$ ra -r argus.log -L0 |less
"L0" powoduje wygenerowanie również opisu wyświetlanych kolumn, co pozwala na określenie jakie dane mamy prezentowane na ww. prostym raporcie.
$ ra -r argus.log -w - - udp or tcp | rasort -m bytes -L0 |less
"-w -" wygeneruj plik w formacie argus na standardowe wyjście (który następnie będzie przeprocesowany przez kolejne narzędzie z suity klienckiej argusa - rasort)
"- udp or tcp" wykorzystanie filtru do ograniczenia analizy (chcemy analizować tylko komunikację TCP lub UDP). Przy okazji warto zauważyć, że filtry te zgodne są z notacją używaną np. w tcpdump.
"-m bytes" - sortuj po całkowitej ilości bajtów wchodzących w skład danej konwersacji.
racluster
Narzędzie klienckie racluster umożliwia agregację danych na jeszcze wyższym poziomie niż pojedyncze przepływy sieciowe. W poniższym przykładzie agregacja przepływów następuje na poziomie źródłowego adresu IP:
$racluster -r argus.log -m saddr -L0 | less
"-m saddr" - pogrupuj wszystkie konwersacje po adresie źródłowym
Kolejny przykład stanowi połączenie wykorzystania narzędzi racluster oraz rasort do uzyskania statystyki ilości przesłanych danych oraz natężenia ruchu (bity / sekundę) w obrębie różnych protokołów sieciowych:
$racluster -r argus.log -m proto -w - |rasort -m bytes -s proto,bytes.load -L0 |less
"-s" - określa jakie dane powinny być wyświetlone w raporcie
Podsumowanie
Argus umożliwia zagregowaną analizę komunikacji sieciowej. Udostępnia element serwerowy zapewniający kolekcję próbki danych. Sposób składowania tego typu danych umożliwia analizę nawet bardzo intensywnej komunikacji, przy względnej oszczędności zasobów dyskowych. Co więcej, narzędzie udostępnia bardzo elastyczne konsolowe narzędzia umożliwiające niemal dowolną obróbkę i agregację zebranych danych.
W kolejnym tekście zaprezentuję inne narzędzia klienckie argus, umożliwiające np. anonimizację prezentowanych wyników czy generację graficznej reprezentacji wyników. Pokażę też kolejne praktyczne przykłady wykorzystania argus - np. do wykrycia skanowania portów czy innych anomalii.
Więcej informacji
- Zestawienie stron z dokumentacją/przykładami do argus
- ntop - inne narzędzie oferujące w pewnym zakresie zbliżone możliwości do argus.
-- Michał Sajdak (michal.sajdak@securitum.pl)




