Threat Inteliigence / OSINT / NETSEC / NATSEC

Hunting – zaprzęgając CTI do pracy

Na counterintelligence.pl poświęciłem już sporo miejsca OSINTowi i threat intelligence. Nie możemy jednak zapominać, że wywiad w różnych swoich formach pełni przede wszystkim funkcję pomocniczą. Wspiera podejmowania decyzji, reakcje na incydenty czy wykrywanie złośliwej aktywności. I właśnie threat hunting to aktywność, która w ten czy inny sposób musi u swoich podstaw mieć informacje wywiadowcze. Zacznijmy więc od podstaw – czym jest threat hunting?

W największym skrócie i uproszczeniu jest to aktywność analityków polegająca na ręcznym wyszukiwaniu złośliwej aktywności w środowisku. Dlaczego konieczne są takie ręczne działania? Mamy przecież tyle systemów alertowania i monitoringu, SIEM, AV, EDR, XDR i tak dalej? Są dwa główne powody. Po pierwsze mimo, że wspomniane systemy są cały czas rozwijane to nigdy nie będą doskonałe i tworzenie sygnatur, wzorów zachowań do wykrycia i tak dalej będzie zawsze obarczone pewnym marginesem braku widoczności wynikającym choćby z ciągłego rozwoju technik stosowanych przez atakujących. Po drugie, niektóre zachowania są bardzo trudne do zidentyfikowania jako złośliwe choćby ze względu na korzystanie z technik living off the land czyli wykorzystania narzędzi systemowych do prowadzenia aktywności. Przytoczmy przykład z raportu CrowdStrike Overwatch za rok 2020:

Jeżeli chcielibyśmy wykorzystać wymienione wyżej komendy jako podstawy do stworzenia automatycznych alertów, to zostaniemy szybko zasypani fałszywymi alertami będącymi skutkiem tego, że będą z nich korzystać administratorzy i zwykli użytkownicy. Stwierdzenie, że jest to złośliwa aktywność wymaga już spojrzenia na kontekst wykorzystania poleceń, tego kto je wykonywał i tak dalej. Zadaniem threat hunterów jest więc wyłuskiwanie z ogółu zachowań użytkowników elementów, które mogą świadczyć o działaniach napastników i ciągnięciu za sznurek tych wątków aby zrozumieć co dzieje się w środowisku.

Gdzie więc w tym wszystkim rola threat intelligence? Potencjalnych zachowań na które można zwrócić uwagę będą setki jeśli nie tysiące. Threat Hunterzy muszą więc być świadomi tego z jakich technik korzystają grupy aktywne w danym modelu zagrożeń aby wiedzieć gdzie skupić swoją uwagę i jak najefektywniej wykorzystać czas który mają do dyspozycji. Jest jednak wiele rodzajów indykatorów które analitycy CTI mogą dostarczyć polującym – jakie będą więc najbardziej użyteczne?

Aby skategoryzować indykatory jakie analitycy CTI mogą dostarczyć threat hunterom posłużymy się modelem piramidy bólu (pyramid of pain) autorstwa Davida Bianco. Czemu piramida bólu? Nie jest to bynajmniej ból obrońców, ale atakujących, którzy to zależnie od stopnia piramidy muszą poświęcić więcej czasu i wysiłku aby uniknąć detekcji. Przechodząc do rzeczy, model piramidy wygląda tak:

Emulating Attacker Activities and The Pyramid of Pain ...

Na samym dole widzimy więc „atomiczne” indykatory wrogiej aktywności – hashe i adresy IP. Zmiana tych wartości jest dla napastników bardzo łatwa – w przypadku hasha nawet minimalna zmiana pliku jak dodanie nie mającej żadnego znaczenia funkcji zmieni wartość. Podobnie jest z adresami IP. Zmiana infrastruktury na tym poziomie korzystając choćby z DDNS jest prosta i nie wymaga zbyt wiele wysiłku. Co ważniejsze jednak hashe i adresy IP, są nazwijmy to „bezosobowymi”. Przydzielane są automatycznie, przygotowujący operacje ma niewielki wpływ na ich wartość. Trudno więc polować tutaj na charakterystyczne elementy włamania umożliwiające wykrywanie aktywności na dużą skalę. Będąc precyzyjnym należy wskazać, że adresy IP znajdują się schodek wyżej ponieważ w przeciwieństwie do hasha IP ma dodatkowe charakterystyki – podmiot hostujący serwer, lokalizacja geograficzna.

Nazwy domen to już kolejny stopień, gdyż ostatecznie nazwa ta musi zostać „ręcznie” określona przez napastników. Nawet jeżeli mówimy o automatycznym generowaniu domen przez DGA to schemat działania algorytmu musiał zostać wybrany i skonfigurowany przez napastników. Analitycy CTI jednak lubią domeny dlatego, że często ich nazwy tworzone są w oparciu o czytelne dla ludzi wzory gdyż są stosowane m.in. jako adresy do wysyłki maili phishinogowych. Dlatego też analiza wykorzystanych nazw np.: udających adresy organizacji rządowych może służyć do mapowania infrastruktury. Jeżeli mówimy o huntingu jednak do najczęściej wciąż nie mają one dużej wartości – domeny zmieniają się na tyle szybko, że proaktywne wyszukiwanie na ich podstawie złośliwych działań nie przyniesie oczekiwanych rezultatów.

Sytuacja zmienia się kiedy wchodzimy na trzy górne poziomy piramidy na który znajdziemy odpowiednio artefakty sieciowe i pozostawiane na hostach, narzędzia i w końcu taktyki, techniki i procedury wykorzystywane przez atakujących. Przyjrzyjmy się więc bliżej tym kategoriom:

  1. Artefakty sieciowe to elementy znajdziemy w komunikacji pomiędzy maszynami ofiar i napastników. Mogą to być więc elementy w ruchu takiej jak user-agent string, wykorzystane usługi bądź metody HTTP.
  2. Artefakty na hostach to z kolei wszelkie ślady pozostawione na maszynie ofiary. Możemy tutaj wskazać klucze w rejestrze wykorzystywane przez implanty, utworzone foldery i pliki albo serwisy.
  3. Narzędzia to już konkretne implanty i software wspomagający włamania. Przykłady będą tutaj obejmować zarówno ogólno dostępne i otwarto źródłowe narzędzia jak Mimikatz czy Empire, jak i implanty tworzone przez grupy dla celów konkretnych operacji. Możliwość efektywnego wykrywania narzędzi jest już bardzo wysoko na naszej piramidzie, gdyż zmusza do zmian metod uzyskiwania dostępu, utrzymywania go w systemie czy eksfiltracji danych. W przypadku grup polegających na gotowych narzędziach i nie mających dostępu do developerów mogących odpowiednio przekształcić narzędzia lub stworzyć nowe, może to już być poważna przeszkoda w dalszych działaniach.
  4. W końcu na samym górze umieszczone są taktyki (wysoko poziomowy opis aktywności jak wykonanie określonej akcji), techniki (opis osiągnięcia celu aktywności jak wykorzystywanie PowerShella) i procedury (szczegółowy opis implementacji techniki jak kolejne kroki do obejścia AMSI w PowerShellu). Możliwość wykrywania tego szczebla aktywności jest tak cenna gdyż zmusza napastników do napisana od nowa pewnych elementów działań (lub może nawet całości) co nie zawsze będzie możliwe w ramach czasowych przeznaczonych na operację. W przypadku grup przestępczych korzystających z metod i planów działań, tak daleko idące utrudnienia mogą sprawić nawet, że operacja przestanie być rentowna, a atakujący zaczną szukać innych celów.

Prowadząc threat hunting będziemy więc zainteresowani trzema ostatnimi poziomami. Wykrywanie narzędzi i sposobów działania atakujących umożliwi nam realne działania proaktywne – zamiast liczyć, że „trafimy” z indykatorem takim jak domena, przechodzimy do ofensywy i możemy przeciwdziałać złośliwej aktywności na różnych etapach. Tak więc nawet jeśli napastnikom udało się uzyskać dostęp do systemu to wykrywając narzędzi z którego korzystają do eksfiltracji danych ostatecznie pokrzyżujemy ich plany. Dlatego też założeniem, które przyjmujemy zaczynając hunting jest „assume breach” czyli zakładamy, że atakującym udało się już uzyskać dostęp i są aktywni w środowisku. Może się to wydawać dziwne – w końcu chyba powinniśmy zapobiegać atakom? Tak powinniśmy, jednak nie zapominajmy, że udane włamanie kończy się gdy uda się osiągnąć cele (Actions on objectives). Z tej perspektywy więc nie jest istotne czy złapiemy, przykładowo ransomware, na etapie maila phishingowego czy eskalacji uprawnień dopóki zapobiegniemy ostatecznie szyfrowaniu danych. Po drugie zakładanie, że nie uda nam się powstrzymać wszelkie próby włamań na etapie uzyskiwania dostępu jest zwyczajnie nierealne. Dlatego lepsze rezultaty przyniesie jeżeli realistycznie podejdziemy do obrony i zaczniemy atakować atakujących swoimi działaniami w pełnym spektrum łańcucha.

Hunting zaczynamy od opracowania hipotez, które będziemy weryfikować w toku analizy środowiska. Tutaj właśnie kluczową rolę pełni współpraca z CTI dostarczającego nam informacji na temat metod działania stosowanych przez atakujących. Wiedząc jakie grupy są potencjalnie zainteresowane naszym środowiskiem możemy zacząć tworzyć hipotezy uwzględniające narzędzia z jakich stosują, to jak zachowują się stosowane implanty bądź jakie są ulubione metody poruszania się w środowisku. Załóżmy więc, że od CTI otrzymaliśmy informacje, że grupa korzysta z CobaltStrike’a i autorskiego implantu, który utrzymuje dostęp do systemu przez stworzenie serwisu o nazwie według schematu „sys[0-9]{3}[a-z]{4}”. Na podstawie tej informacji możemy stworzyć przykładowe hipotezy:

  1. Odnajdziemy w środowisku procesy rundll32.exe uruchamiane bez parametrów, które są używane przez CobaltStrike jako proces do wstrzyknięcia kodu.
  2. Znajdziemy artefakty funkcjonalności systemu Windows named pipes z nazwami, które wykorzystuje Cobalt Strike.
  3. W końcu odnajdziemy na hostach w środowisku serwisy z nazwami „sys[0-9]{3}[a-z]{4}”.

Następnym krokiem będzie ustalenie analiza logów i weryfikacja tego czy na ich podstawie możemy potwierdzić nasze założenia co do śladów złośliwej aktywności. Jeżeli takie odnajdziemy to zazwyczaj będzie to prowadzić do rozpoczęcia procesu reakcji na incydent. Dostępny wachlarz źródeł, które możemy wykorzystać w huntingu jest naturalnie dużo szerszy i ograniczony właściwie tylko widocznością środowiska. Wśród najbardziej popularnych źródeł danych wymienić możemy logi z:

  1. Dzienników zdarzeń systemu Windows.
  2. Proxy
  3. Firewall
  4. EDR
  5. VPN
  6. AD/LDAP

I można by jeszcze tak długo wymieniać. To z jakich źródeł będziemy korzystać zależy od tego jakie zachowania staramy się odnaleźć i oczywiście jakie logi są zbierane i faktycznie dla nas dostępne.

Co jeżeli jednak nic nie znaleźliśmy? Czy oznacza to, że możemy zająć się kolejnymi hipotezami i zapomnieć o tych już sprawdzonych? Byłaby to duża strata naszego wysiłku i czasu – mamy informacje o tym jak zachowują się threat actorzy, a nasze poszukiwania w środowisku pozwoliły nam ocenić czy zachowania te wyróżniają się wśród normalnej aktywności. Dlaczego więc nie zapisać efektów naszych działań i stworzyć reguły detekcyjnej, która pomoże w przyszłości odnaleźć podobne zachowania i być może naprowadzi SOC na aktywności, już bez pomocy huntingu. O współpracy pomiędzy zespołami detekcji, reagowania na incydenty i CTI mówiłem podczas mojego wystąpienia na x33fconie 2021, gdzie zaprezentowałem też schemat modelowych relacji między zespołami:

Dla efektywnego działania, relacja pomiędzy analitykami CTI i threat hunting musi być więc dwustronna – CTI dostarcza danych do budowania hipotez, a hunterzy mówią analitykom co widzą wzbogacając wiedze o atakach. Ten proces działania dobrze opisuje schemat F3EAD, który pojawia się na moim wykresie. F3EAD to wywodząca się z operacji wojskowych metodologia niejako łącząca cykl wywiadowczy z aktywnym wykrywaniem zagrożeń. Jego fazy przedstawiają się następująco:

  1. Find – na podstawie dostępnych danych CTI ustalamy zagrożenia dla naszego środowiska i metody jego wykrywania.
  2. Fix – stosowanie analityk i analiz środowiska (np.: logów) w celu odnalezienia złośliwej aktywności. Tutaj znajdujemy maszyny do których dostęp uzyskał atakujący i określamy zakres włamania. Można powiedzieć, że właściwy threat hunting ma miejsce właśnie tutaj.
  3. Finish – działania z zakresu reagowania na incydenty mające na celu usunięcie aktywności ze środowiska, odcięcie dostępu atakujących i naprawę skutków ataku.
  4. Exploit – po tym jak już powstrzymaliśmy wrogą aktywność zaczynamy przyglądać się jego działaniom i zbieramy jak najwięcej danych o włamaniu. Faza ta odpowiada więc fazie zbierania informacji z cyklu wywiadowczego.
  5. Analyze – po zebraniu danych analitycy podsumowują obserwacje co do zastosowanych TTP, analizują próbki malware’u w celu odkrycia ich funkcjonalności i tworzenia sygnatur, przetwarzają więc dane pozyskane w poprzednim kroku.
  6. Disseminate – w końcu efekty analiz są rozpowszechniane wśród zespołów tworzących organizację bezpieczeństwa (na poziomie taktycznym, operacyjnym i strategicznym) aby poszerzyć wiedzę o zagrożeniach i lepiej przygotować się do następnych prób włamania.

Jak widzimy więc threat hunting to potężne narzędzie pozwalające zmienić obronę w atak. Aktywnie poszukując złośliwej aktywności zmuszamy napastników do zmian w wykorzystywanych narzędziach i sposobach działania podnosząc koszt ich działań i zniechęcając do ataków przeciwko naszemu środowisku. Skuteczny hunting wymaga jednak nie tylko wiedzy technicznej ale współdziałania pomiędzy zespołami i wymiany informacji. Wtedy nawet najbardziej zaawansowane grupy będą musiały mieć się na baczności podczas prób ataków na nasze środowisko.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

pl_PLPolish