Wyciskając cytryny IoC – metodyczna analiza infrastruktury sieciowej.

counterintelligence.pl 1 rok temu

Jednym z najczęstszych problemów przed jakimi stają analitycy CTI jest wykorzystanie zgromadzonych danych do odkrycia dalszych elementów wrogiej aktywności, czyli tak zwany „pivoting„. Najprościej rzecz ujmując, pivoting polega na odkryciu innych artefaktów takich jak adresy IP czy próbki malware’u poprzez wspólne punkty styku obu elementów. W przypadku malware’u może to być na przykład hash tablicy importów, a w przypadku infrastruktury sieciowej hash JARM profilujący konfigurację usługi TLS. Wychodząc z założenia, iż dla atakujących nie jest możliwe tworzenie za każdym razem całkowicie unikalnego malware’u albo unikalnej konfiguracji infrastruktury, poszukujemy artefaktów o podobnych i unikalnych charakterystykach (lub ich kombinacji) w ten sposób rozszerzając naszą wiedzę o całokształcie aktywności.

Ze względu na mnogość kombinacji artefaktów i indykatorów trudno jest o kompleksową metodologię mającą zastosowanie do każdej sytuacji. Jednak w moim odczuciu największy problem stanowi odpowiednie i powtarzalne podejście do elementów infrastruktury sieciowej. Zarówno w przypadku adresów IP jak i domen trudno jest wskazać elementy, które mogłyby tak jednoznacznie wskazywać na podobieństwo jak powtórne użycie fragmentów kodu, hashe tabeli importów, czas kompilacji, czy dane zawarte w rich header. Rozpowszechnienie regulacji z zakresu ochrony prywatności i popularność usług chmurowych często utrudnia znajdowanie powiązań. Domena której dane WHOIS wypełnione są zwrotem „REDACTED FOR PRIVACY” prowadząca do strony korzystającej z hostingu Amazon Web Services z pewnością nie będzie wystarczająco unikalna dla znajdowania dalszych powiązanych elementów. W takim przypadku będziemy musieli pójść dalej, sprawdzając konfigurację usług, wykorzystane certyfikaty TLS, rekordy DNS aby odnaleźć wzór pozwalający nam posunąć dalej nasze poszukiwania. Koncepcje te przedstawił świetnie Joe Slowik we wpisie „Analyzing Network Infrastructure as Composite Objects„. Wyzwaniem pozostaje jednak mnogość charakterystyk, a w związku z tym trudność w powtarzalnej analizie danych.

Dlatego też aby pomóc mniej i bardziej doświadczonym analitykom postanowiłem zebrać w jednym miejscu cechy infrastruktury sieciowej, które można wykorzystać do profilowania w formie arkusza kalkulacyjnego. Arkusz ten ma za zadanie strukturyzować analizę indykatorów służąc jako lista kontrolna pomagająca analitykom w pełnym wykorzystaniu zdobytych danych. Arkusz znajdziecie pod tym linkiem, a teraz postaram się po krótce wyjaśnić jak z niego korzystać.

Pierwsza strona zawiera spis treści i przedstawienie koncepcji narzędzia, znajdziecie tam więc linki do poszczególnych arkuszy, a także schemat korelacji infrastruktury sieciowej zaczerpnięty ze wspomnianego wpisu autorstwa Joe Slowika. Na główną część składają się natomiast arkusze zawierające opis elementów indykatorów danego rodzaju oraz szablony opisu indykatora jako złożonego obiektu i notowania powiązań, które pomagają nam w analizie. Spójrzmy więc na przykład adresu IP 87.98.236.253, który akurat jest adresem serwera na którym stoi blog, który czytacie. W arkuszu IP znajdziemy listę cech, dzięki którym możemy stworzyć profil adresu IP.

Ponieważ za adresem IP kryją się konkretne urządzenia (wirtualne lub fizyczne) spójrzmy również na arkusz Services/Protocol specific w którym znajdziemy opis cech związanych z popularnymi usługami jak TLS.

Analizując po kolei wskazane elementy możemy ocenić, które mogą przydać się w znajdowaniu powiązanych elementów, np.: ze względu na swoją unikalność. I tutaj też właśnie wchodzimy w obszar profilowania opartego o łączenie elementów. Wyszukiwanie adresów IP znajdujących się w tym samym AS ujawni miliony wyników:

Podobnie profil konfiguracji usługi TLS oparty o JARM zwróci prawie 40 tysięcy wyników:

Jednak łącząc oba zapytania liczba wykrytych urządzeń będzie już o rzędy wielkośći niższa:

Tak więc rozwijanie indykatorów infrastruktury sieciowej do postaci obiektów o szeregu charakterystyk to potężne narzędzie pozwalające w sposób powtarzalny śledzić elementy infrastruktury, które powiązaliśmy z aktywnością. Wynik możemy zapisać w arkuszu „Composite Object Template”, dodatkowo opisując zbiory wartości, które według nas są warte uwagi:

A same wyniki poszczególnych pivotów zapisujemy w arkuszu Pivot Template:

W ten sposób możemy katalogować wszystkie metody, dzięki którym odnaleźliśmy kolejne elementy infrastruktury. Kiedy zaczynałem pracę z mapowaniem infrastruktury sieciowej jednym z najczęstszych błędów, które popełniałem było wykonywanie zbyt wiele i zbyt szerokich pivotów na raz. W rezultacie kończyłem z wykresem Maltego na którym nie potrafiłem wskazać elementów, które faktycznie z wysokim prawdopodobieństwem należały do tego samego zbioru aktywności. Rozbicie tego procesu na poszczególne wyszukiwania i śledzenie kolejnych etapów pozwala uniknąć takiej sytuacji i na bieżąco oceniać, które techniki przyniosły oczekiwany skutek.

Mam nadzieję, iż narzędzie to pomoże analitykom ustrukturyzować pracę nad wykrywaniem wrogiej infrastruktury sieciowej i pozwoli jak najpełniej wykorzystać ślady pozostawione przez napastników. Arkusze zawierające opis poszczególnych charakterystyk zawierają również kolumnę Examples w której postaram się gromadzić linki do opracowań opisujących w praktyce użyteczność danego zakresu informacji.

Tymczasem życzę wszystkim analitykom udanych łowów!

Idź do oryginalnego materiału