Podstawy polowań na zagrożenia
Polowanie na zagrożenia – z ang. Threat hunting to termin, którym często posługują się w swoich publikacjach vendorzy i agencje analityczne. Przypadła nam do gustu definicja IBM, która brzmi: „Polowanie na zagrożenia to proaktywne podejście do identyfikacji nieznanych wcześniej lub trwających, nienaprawionych zagrożeń w sieci i infrastrukturze IT organizacji.” I o ile w internecie nie brakuje informacji o narzędziach i technikach polowania na konkretne zagrożenie… Brakuje ogólnych pomysłów, wstępu do analizy danych w służbie bezpieczeństwa IT, czy też po prostu punktu wyjścia do zastosowania szczegółowych metod i zaawansowanych narzędzi.
W tym artykule omawiamy klika obszarów, od których możemy zacząć nasze czynności w zakresie threat huntingu. Dobra hipoteza na temat ataku to tylko pierwszy krok w rozpoczęciu zorganizowanego polowania na zagrożenia.Dobrym pomysłem jest rozpoczęcie od rozróżnienia rodzajów polowań na zagrożenia:
- Strukturalne są bardziej formalnym poszukiwaniem taktyk stosowanych przez napastników, w szczególności poprzez przyglądanie się konkretnym technikom i wzorcom zachowań, które stosują. Nazywa się je strukturalnymi polowaniami na zagrożenia, ponieważ każde z nich jest zbudowane wokół centralnej hipotezy dotyczącej konkretnych napastników i związanych z nimi taktyk, technik i procedur (TTP). Twierdzenie to zwykle przybiera formę falsyfikowalnego, sformalizowanego stwierdzenia, które jest oparte na zewnętrznych źródłach informacji o zagrożeniach.
- Niestrukturalne- mają zwykle charakter swobodnego przepływu danych ad hoc, które są w głównej mierze oparte na danych pochodzących z wewnętrznych źródeł logów. Łowcy oportunistycznie przekopują się przez logi i wykorzystują proste techniki manipulacji danymi, takie jak wyszukiwanie za pomocą tabel przestawnych lub innych metod stosowanych przez analityków, i często opierają się przede wszystkim na metodologii śledczej, takiej jak zasada najmniejszego widoku, w celu wyłapania anomalii w danych.
Wiedza, w który rodzaj polowania zaangażować się w danym momencie pozwala na sprawną reakcję i uniemożliwienie ataku. Dalej pomagają koncepcje analizy danych, które w połączeniu z kontekstem bezpieczeństwa stanowią kolejny krok do sukcesu.
Oto kwestie, na które należy zwrócić uwagę analizując dane podczas threat huntingu:
ILOŚĆ/LICZBA: spójrz na elementy numeryczne danych, aby dać sobie punkt wyjścia. Pierwszym elementem liczbowym, na który należy spojrzeć, jest ilość danych analizowanych w poszczególnym obszarze, ilość wystąpień poszczególnych wartości…
Przykładem takiego polowania mogą być logi z zapory sieciowej. Patrząc na wszystkie wysokie porty używane, na przykład, i szukać tych z większą liczbą połączeń.
CZĘSTOTLIWOŚĆ: Czy ta podejrzana domena jest obserwowana mniej więcej o tej samej porze każdego dnia? Czy widzisz jakiś zauważalny wzór? Lub anoDmalię?
Sprawdzając detale wątpliwych połączeń wykonywanych regularnie możesz np. odkryć komunikację G2 lub trwającą eksfiltrację małych ilości danych (tzw. Drip-leakage)
GRUPOWANIE: przydatne, zwłaszcza gdy masz dostęp do szczegółowych danych. Pozwala na szukanie wartości odstających w szczegółach. Na przykład, jeśli masz dane z programów zainstalowanych w systemach, szukaj tych, które nie mają oznaczenia dostawcy.
Interesujące jest szczególnie grupowanie wg poleceń, które użytkownicy uruchomili w terminalu lub linii poleceń. Szukaj nie-administratorów wykonujących „interesujące” polecenia takie jak whoami, net use, ipconfig czy nmap.
LICZENIE STOSÓW: jednaz najskuteczniejszych metod polowania na zagrożenia niestrukturalne. Można na przykład:
- odłożyć na stos wszystkie dane dotyczące wykonania programu (Windows Event ID 4688) z danego działu lub organizacji. Następnie możesz szukać nazw procesów, które nie są znane, lub które nie są uważane za „autoryzowane” przez firmę.
- Ułożyć w stos najczęstsze hasła dla istniejących programów. Szukaj haszy, które mogą się wyróżniać, lub porównaj je z listami znanych dobrych haszy dla tych programów.
- Ujawnić nazwy, które są podobne, ale różne, zwłaszcza dla wspólnych nazw procesów. Należy szukać procesów, które mogą używać znaków innych niż rzymskie, aby próbować się ukryć.
- Analizować logi AV dotyczące zarówno czyszczenia, jak i kwarantanny plików. Sprawdź, gdzie odbywa się czyszczenie i kwarantanna. Plik wyczyszczony w folderze „My Downloads” jest znacznie mniej niepokojący niż ten w „system32″.
- Liczyć wystąpienia wspólnych nazw plików, takich jak Calc.exe. Czy plik jest tam, gdzie powinien być? Jeśli nie, może być czas, aby zanurkować w danych, aby dowiedzieć się dlaczego.
- Liczyć takie rzeczy jak metadane sieciowe, aby szukać wzorców. Na przykład, analitycy mogą układać w stosy ciągi znaków agenta użytkownika i szukać podejrzanie krótkich lub długich. Albo nawet takich, które mają małe zmiany, jak kropka na końcu.
ZACHOWANIA PROCESÓW: Jednym z najłatwiejszych strukturalnych polowań, jakie mogą przeprowadzić analitycy, jest przyjrzenie się relacjom rodzic-dziecko w poszczególnych procesach i podmiotach do nich przyporządkowanych. Na przykład, czy Microsoft Word naprawdę powinien wywoływać PowerShell? Dlaczego svchost jest wywoływany przez proces inny niż services.exe? Analitycy mogą również poszukać wykonywania procesów z lokalizacji, które wyglądają nienormalnie.
ZACHOWANIA UŻYTKOWNIKÓW: Inną świetną metodą, którą można wykorzystać do polowania strukturalnego, jest przyjrzenie się zachowaniu użytkowników. Na przykład analityk może:
- Przyjrzeć się użytkownikom dodanym do grup uprzywilejowanych (szukajcie ID 4728, 4732, 4756). Czy osoby dokonujące tych zmian są do tego upoważnione? Czy dodawane konta są normalne?
- Wyszukać użytkowników logujących się za pomocą alternatywnych poświadczeń (ID 4648). Czy takie zachowanie jest spójne z podniesieniem uprawnień przez administratora? A może coś bardziej podstępnego?
- Sprawdzić użytkowników uruchamiających interpretery skryptów. Najpopularniejsze z tych interpreterów to cscript i wscript, a zwykli użytkownicy raczej ich nie używają.
- Szukać plików wykonywalnych takich jak Rundll32. Chociaż te programy wykonawcze pełnią uzasadnioną funkcję, użytkownik w swojej codziennej pracy nie będzie ich używał. Jeśli więc zauważysz, że użytkownik je wywołuje, być może nadszedł czas, aby pogrzebać głębiej.
- Szukać aktywności wokół zaplanowanych zadań. Może to oznaczać podejrzane tworzenie zadań, ale także wyłączanie i ponowne włączanie ich przez użytkowników.
AKTYWNOŚĆ TERMINALI: Jednym z najlepszych źródeł informacji o przeciwniku podczas lub po naruszeniu jest aktywność terminalowa. Terminale takie jak PowerShell, cmd.exe, BASH i inne powinny być centralnie przechowywane. Dane te mogą dostarczyć łowcom wiele opcji polowania. Łowcy mogą szukać:
- administratorów używających niebezpiecznych procedur, takich jak przekazywanie haseł w sposób jawny. Łowcy mogą szukać poleceń zawierających argument „-p” lub bardziej eponimiczne ciągi „pass” lub „password”. Ten typ aktywności powinien być oznaczony do śledzenia.
- użytkowników przekazujących polecenia przy użyciu zakodowanego parametru polecenia.
- innych podejrzanych aktywności PowerShell i BASH, takich jak połączenia wychodzące (PowerShell jest jednym z najlepszych przyjaciół aktora zagrożeń, a to dlatego, że jest bardzo wszechstronny)
Ale aktywność terminalowa nie jest ograniczona do szukania niebezpiecznych procedur. Innym pożytecznym polowaniem może być analizowanie argumentów i przełączników przekazywanych do poleceń lub programów wykonywalnych. Niektóre argumenty (jak „sekurlsa::”) mogą często ostrzegać łowcę o obecności narzędzia – jak mimikatz – nawet jeśli jego nazwa została zmieniona.
ENTROPIA: najprościej rzecz ujmując, jest miarą losowości dowolnego atrybutu. Entropia może być skomplikowana do zrozumienia, ale po jej opanowaniu może być bardzo przydatna do wykrywania zwykłej aktywności w środowisku. Na przykład łowcy mogą przyjrzeć się entropii nazw plików lub procesów w całym systemie, aby wykryć nazwy, które nie wydają się właściwe. Łowcy mogą również przyjrzeć się entropii nazw domen, szukając algorytmów generowanych przez domeny (DGA).
ZWYCZAJNIE PODEJRZANE SYTUACJE: Niektóre polowania nie pasują do żadnej kategorii, ale jeśli są widoczne, to i tak uruchamiają alarm. Doskonałym przykładem jest przeglądanie logów AV i szukanie podejrzanych detekcji. Co rozumiemy przez podejrzane wykrycia?
- Zdarzenia związanych z kwarantanną lub czyszczeniem ofensywnych narzędzi bezpieczeństwa. Są to narzędzia, które użytkownik musiałby pobrać samodzielnie – jak np. ogólny mimikatz – i jest mniej prawdopodobne, że znajduje się w nich złośliwe oprogramowanie.
- Połączenia bezpośrednio do IP bez powiązanego zapytania DNS. Podczas gdy może to być powszechne zachowanie dla ludzi z działu technicznego, jest to znacznie mniej powszechne w finansach.
- Standardowe połączenia HTTP przechodzące przez niestandardowe porty. Może to ujawnić wiele interesujących działań, od sieciowych serwerów proxy do złośliwego oprogramowania typu command and control.
Znalezienie inspiracji dla strukturalnych i niestrukturalnych polowań może być czasem wyzwaniem. Niezależnie od zastosowanych metod należy pamiętać o zachowaniu higieny łańcucha aktywności. Pozwoli to znaleźć dodatkową wartość wynikającą z korelacji i grupowania danych dotyczących poszczególnych faz ataku według cyber kill chain.