Streszczenie

https://chacker.pl/

Zajęliśmy się tematem polowania na zagrożenia. Jak stwierdzono na początku rozdziału, Twoje umiejętności polowania na zagrożenia będą musiały być rozwijane przez lata praktyki, a ten rozdział pomógł w ustaleniu podstaw. Zaczęliśmy od omówienia źródeł danych i sposobu normalizacji danych za pomocą OSSEM. Następnie przeszliśmy do podstawowych procesów polowania na zagrożenia, w tym polowań opartych na danych i hipotezach. Przeszliśmy przez serię laboratoriów, których celem było poznanie wymaganych umiejętności i zapewnienie podstaw do poszerzenia wiedzy. Na koniec pokazaliśmy, jak rozszerzyć te umiejętności w prawdziwej sieci operacyjnej, poza laboratorium.

Zautomatyzowane podręczniki i udostępnianie analiz

https://chacker.pl/

UWAGA: zanim zaczniemy korzystać z tego laboratorium, prosimy o zrozumienie, że zmienimy środowisko nauczania, aby poszerzać naszą wiedzę i możliwości. Teraz w przyszłości możesz wrócić do wbudowanych podręczników, ale znowu będziesz potrzebować więcej zasobów systemowych, jak wyjaśniono wcześniej.

Aby dzielić się danymi analitycznymi i zapewnić solidniejsze środowisko szkoleniowe, bracia Rodriguez opracowali zestaw notatników Jupyter przechowywanych na platformie Binderhub. Najpierw odwiedź https://threathunterplaybook.com/introduction.html. Po lewej stronie ekranu kliknij łącze Bezpłatny notatnik telemetryczny. Spowoduje to załadowanie strony notatnika Jupyter, która zawiera zestaw danych Mordoru i wszystkie analizy gotowe do nauki.

Następnie kliknij ikonę rakiety u góry ekranu i uruchom łącze Binder.

Uruchomienie notatnika Jupyter może zająć kilka minut, ale należy uzbroić się w cierpliwość. Po załadowaniu kliknij pierwszy blok kodu, a następnie kliknij przycisk Uruchom u góry lub naciśnij SHIFT-ENTER, aby uruchomić ten blok kodu i załadować wymagane biblioteki. Pamiętaj, że niektóre kroki w tej bibliotece zajmą trochę czasu. Po lewej stronie bloku kodu zobaczysz symbol postępu, [*], a po jego zakończeniu pojawi się liczba. Zanim przejdziesz dalej, pamiętaj o ukończeniu tych bloków kodu.

Koniecznie przeczytaj tekst wyświetlany nad każdym blokiem kodu aby zrozumieć to; następnie klikaj przycisk Uruchom lub naciskaj SHIFT-ENTER, aby wykonać kolejne bloki kodu, aż dojdziesz do bloku kodu Decompress Dataset. W chwili pisania tego rozdziału podczas pobierania danych Mordoru w notatniku pojawia się błąd i należy zmienić polecenie na następujący adres URL (przed uruchomieniem tego bloku należy potwierdzić jak poniżej):

Kontynuuj wykonywanie bloków kodu i komentarzy, aż dojdziesz do następnego kroku

Następnym blokiem kodu, który wykonujesz, jest Spark SQL, który wybiera rekordy z widoku tymczasowego apt29Host z kanału Sysmon/Operational, gdzie EventID = 1, ParentImage zawiera „%explorer.exe”, a Image (nazwa pliku) zawiera „%3aka3% ”. Informacje te pochodzą z naszego poprzedniego polowania, podczas którego odkryliśmy, że Pam kliknęła wygaszacz ekranu o tej nazwie. Zobaczmy, jak głęboko sięga ta królicza nora!

Ten kod zwraca rekord z wpisem dziennika w następujący sposób:

To powinno być już znajome. Idź dalej, uważnie studiując każdy krok, patrząc przez ramię Roberto Rodrigueza, który przygotował to dla Ciebie. Zobaczysz połączenie sieciowe, które znaleźliśmy wcześniej; zobaczysz także uruchomienie cmd.exe. Interesujące jest obserwowanie procesu w innym kierunku. Pamiętaj, że powiedzieliśmy wcześniej, że często zaczniesz od środka struktury MITRE ATT&CK, a następnie będziesz pracować w lewo i prawo, aby znaleźć przeciwnika. Zapytania będą proste, dopóki nie dojdziesz do „1.B.2. PowerShell”, gdzie znajduje się nasza pierwsza instrukcja łączenia.

To powinno być już znajome. Idź dalej, uważnie studiując każdy krok, patrząc przez ramię Roberto Rodrigueza, który przygotował to dla Ciebie. Zobaczysz połączenie sieciowe, które znaleźliśmy wcześniej; zobaczysz także uruchomienie cmd.exe. Interesujące jest obserwowanie procesu w innym kierunku. Pamiętaj, że powiedzieliśmy wcześniej, że często zaczniesz od środka struktury MITRE ATT&CK, a następnie będziesz pracować w lewo i prawo, aby znaleźć przeciwnika. Zapytania będą proste, dopóki nie dojdziesz do „1.B.2. PowerShell”, gdzie znajduje się nasza pierwsza instrukcja łączenia.

To powinno być już znajome. Idź dalej, uważnie studiując każdy krok, patrząc przez ramię Roberto Rodrigueza, który przygotował to dla Ciebie. Zobaczysz połączenie sieciowe, które znaleźliśmy wcześniej; zobaczysz także uruchomienie cmd.exe. Interesujące jest obserwowanie procesu w innym kierunku. Pamiętaj, że powiedzieliśmy wcześniej, że często zaczniesz od środka struktury MITRE ATT&CK, a następnie będziesz pracować w lewo i prawo, aby znaleźć przeciwnika. Zapytania będą proste, dopóki nie dojdziesz do „1.B.2. PowerShell”, gdzie znajduje się nasza pierwsza instrukcja łączenia.

Spark i Jupyter

https://chacker.pl/

Istnieje kilka powodów, dla których Spark i Jupyter są potrzebne do usprawnienia naszej nauki. Chociaż Elasticsearch jest dobry, nie jest relacyjną bazą danych, więc okazuje się, że łączenia są kosztowne obliczeniowo. Łączenie to funkcja wspólna dla SQL, która pozwala nam łączyć dane w ramach zapytania, aby być bardziej przedmiotem naszych dochodzeń. Na przykład, gdybyśmy mieli dwa źródła danych, jedno z static_ip i nazwą_użytkownika, a drugie ze static_ip i nazwą_hosta, moglibyśmy je połączyć w następujący sposób. Lewe połączenie zwraca rekordy z lewego źródła z dopasowaniami z prawego źródła:

Pełne złączenie zewnętrzne zwraca rekordy, jeśli istnieje dopasowanie z któregokolwiek źródła:

Złączenia te można wykonać za pomocą Apache Spark, wykorzystując dane z Elasticsearch, co jest szczególnie przydatne podczas polowania na zagrożenia, umożliwiając nam ulepszanie lub wzbogacanie naszych danych poprzez połączenie kilku źródeł danych. Zobaczymy, jak to się rozegra w następnym laboratorium.

Poradnik łowcy zagrożeń

https://chacker.pl/

Jak dotąd nauczyłeś się czołgać, chodzić, a następnie biegać (no cóż, może biegać) w poszukiwaniu zagrożeń. Teraz nauczmy się sprintu, korzystając z Poradnika łowcy zagrożeń autorstwa, jak się domyślacie, braci Rodriguez. Na razie odchodzimy od HELK. Do tego momentu mogliśmy korzystać ze środowiska DetectionLab, rozszerzonego o HELK, aby (1) ćwiczyć znajdowanie izolowanych ataków za pomocą skryptów AtomicRedTeam oraz (2) wykorzystywać zbiory danych Mordoru  do ćwiczeń na bardziej wszechstronnych dane ataku. Teraz osiągnęliśmy limit naszego środowiska DetectionLab. Powodem jest jeden z wymaganych zasobów. Być może pamiętasz z rozdziału 8, że podczas instalacji HELK-a wybraliśmy 4. W tym kroku zainstalowano następujące elementy:

Ta selekcja (2) wymagała 5 GB pamięci RAM i to wszystko, co nam pozostało po zainstalowaniu reszty DetectionLab przy określonych wymaganiach systemowych wynoszących 16 GB pamięci RAM. Teraz, jeśli masz więcej niż 16 GB pamięci RAM dostępnej lub zainstalowanej w chmurze (wybierając większy system, np. Standard_D3_v2), możesz wybrać kolejny poziom 3:

Jak wskazano, ta wersja zawiera Spark i Jupyter, które są wymagane, aby przejść dalej w tym rozdziale. A co, jeśli nie masz takich wymagań systemowych i nie chcesz dodatkowych wydatków związanych z większą instancją w chmurze? Dbamy o Ciebie, więc nie martw się. W pozostałej części tego rozdziału wykorzystano podręcznik braci Rodriguez, Threat Hunter Playbook, wraz z internetowym środowiskiem wykonawczym, dzięki któremu możesz kontynuować naukę.

Hipoteza, że ktoś inny niż administrator uruchomił PowerShell

https://chacker.pl/

W tym laboratorium postaramy się udowodnić hipotezę, że ktoś inny niż administrator uruchomił PowerShell. Pamiętaj, że może to być złośliwe lub nie, ale jest to dobry punkt wyjścia. W zależności od rozmiaru sieci możesz używać dużo programu PowerShell, ale powinieneś być w stanie odizolować użytkowników administratorów, a następnie wykryć innych użytkowników programu PowerShell. Nawiasem mówiąc, jest to dobry pierwszy krok, ale ostatecznie będziesz chciał monitorować i badać także wszystkie swoje działania administracyjne. W końcu, jeśli jedno z nich zostanie naruszone, osoba atakująca chciałaby wykorzystać swoje uprawnienia w sieci. Aby zapoznać się ze wszystkimi sposobami uruchomienia programu PowerShell, wracamy do naszego notatnika OSSEM Jupyter z laboratorium 9-1. Jeśli upłynął limit czasu, może być konieczne ponowne uruchomienie — w końcu jest darmowy! Sprawdzając framework MITRE ATT&CK, widzimy, że T1059.001 to technika lokalnego uruchamiania PowerShell:

Spójrzmy na diagram OSSEM tej techniki, jak pokazano poniżej. Wyrób sobie w tym nawyk.

Widzimy tutaj kilka ścieżek wykrywania wykonania programu PowerShell za pośrednictwem skryptów, wiersza poleceń i tworzenia procesów. Ponieważ w poprzednim rozdziale załadowaliśmy dane Mordoru, utwórzmy indeks. Kliknij ikonę K w lewym górnym rogu portalu Kibana, aby przejść do strony głównej; następnie przewiń w dół i kliknij opcję Wzorce indeksowania w obszarze Zarządzaj i administruj stosem elastycznym:

Następnie kliknij niebieski przycisk Utwórz wzór indeksu u góry ekranu:

Wpisz logs-indexme-2020.05.02* w polu Wzorzec indeksu, a następnie kliknij przycisk Następny krok:

W polu Nazwa pola filtru czasu wybierz @timestamp i kliknij przycisk Utwórz wzorzec indeksu:

Po utworzeniu indeksu możesz go wybrać po lewej stronie Panel Kibany. Następnie wyszukaj „powershell.exe” z filtrem EventID: 1 i zakresem dat, jak pokazano poniżej:

Teraz, gdy mamy już wszystkie dzienniki programu PowerShell.exe w naszym środowisku, możemy filtrować pod kątem określonej wartości pola indeksowanego; na przykład moglibyśmy otworzyć (rozwinąć) dziennik i przewinąć w dół do LogonID (0x3731f3). LogonID pozostaje stały przez całą sesję użytkownika i jest przydatny do śledzenia jego innych działań. Zatem najedźmy kursorem na lupę (ze znakiem plus), jak pokazano poniżej, a następnie wybierz opcję Filtruj według wartości.

Spowoduje to dodanie filtra dla LogonId: 0x3731f3, pokazując nam resztę logów. Następnie wyszukaj „cmd.exe”, jak pokazano poniżej, aby wyszukać aktywność wiersza poleceń:

Widzimy siedem trafień. Przewijając logi w dół, widzimy wskazówkę: pole ParentImage (plik, który został użyty do utworzenia bieżącego procesu) ma dziwną nazwę. Wygląda jak plik wygaszacza ekranu.

Teraz, szukając tej nazwy pliku, widzimy, że mamy pięć trafień. Przewijając te logi, widzimy naszego użytkownika: DMEVALS\pbeesly.

Teraz znamy tę użytkownika i nie jest ona administratorem. Nie powinna używać programu PowerShell, więc szukajmy dalej. Dodając jej nazwę użytkownika do zapytania w następujący sposób, w logach znajdujemy połączenia sieciowe:

Czego się nauczyliśmy? Dzięki inżynierii wstecznej dotychczasowego ataku dowiedzieliśmy się, że osoba atakująca wykonała następujące czynności:

  1. Użytkownik DMEVALS\pbeees został wykonany

„C:\ProgramData\victim\‮cod.3aka3.scr”.

  1. Ten plik otworzył połączenie sieciowe.
  2. Następnie ten plik otworzył cmd.exe.
  3. Cmd.exe otworzył PowerShell.

Jak widzieliście, zaczęliśmy od hipotezy, ale w trakcie tego procesu znaleźliśmy się w środku frameworka MITRE ATT&CK, w fazie wykonania. Następnie pracowaliśmy wstecz, aby znaleźć źródło działania oraz użytkownika i maszynę. Teraz prawdopodobnie nadszedł czas, aby skontaktować się z zespołem reagowania na incydenty i współpracować z nim w celu ustalenia zasięgu ataku, ponieważ na tym etapie mamy dopiero początek — przynajmniej do następnego laboratorium!

Wejdź do Mordoru

https://chacker.pl/

W tej sekcji użyjemy zestawów danych Mordoru8, które zainstalowaliśmy w poprzednim rozdziale i zaczniemy biegać jako łowcy zagrożeń. Aby przyspieszyć, wykorzystamy wcześniej zarejestrowane dane atakującego, zebrane latem 2020 r. przez Roberto Rodrigueza w oparciu o wcześniejsze prace z raportu MITRE Engenuity ATT&CK Evaluations. Załadujemy wcześniej nagrane dane dotyczące ataków APT. autorstwa Rodrigueza, aby symulować grupę APT w naszej sieci z perspektywy danych. Jest to potężne, ponieważ możemy zaoszczędzić czas na skonfigurowanie i wykonanie wszystkich tych poleceń.

Czołgaj się, chodź, biegaj

https://chacker.pl/

Do tej pory nauczyłeś się czołgać (ręcznie) i chodzić (za pomocą automatycznych skryptów autorstwa AtomicRedTeam). Znasz podstawy polowania na zagrożenia, ale tylko w przypadku jednej podtechniki MITER ATT&CK. Aby chodzić szybciej, musisz teraz poćwiczyć z innymi technikami, przepracowując środowisko MITRE ATT&CK, upewniając się, że masz właściwe źródła danych, emulując atak, a następnie ucząc się, jak identyfikować go w logach. Z biegiem czasu będziesz zdobywać coraz więcej doświadczenia, a co najważniejsze, dowiesz się więcej o tym, jak działają dzienniki systemu Windows.Aby uzyskać dodatkowe punkty, uzyskaj dostęp do plików i rejestru dla T1003.002. Poświęć chwilę na przepracowanie kilku kolejnych przykładów przy użyciu skryptów AtomicRedTeam.

Hipoteza, że ktoś skopiował plik SAM

https://chacker.pl/

W tym laboratorium będziemy szukać (polować) w oparciu o hipotezę, że ktoś skopiował plik SAM w naszej domenie. Aby przyspieszyć cykl uczenia się, użyjemy funkcji automatycznego testowania narzędzi AtomicRedTeam, zwanej Invoke-AtomicTest, aby przeprowadzić test w spójny sposób i oszczędzić nam pisania związanego z atakami. W administracyjnym oknie programu PowerShell na hoście z systemem Windows 10 skonfiguruj środowisko za pomocą następującego polecenia (skopiuj/wklej z https://detectionlab.network/usage/atomicredteam/).

Następnie wywołaj test, używając pojedynczego testu, wielu testów lub pełnej sekwencji testowej dla T1003.002, jak pokazano w poniższym kodzie. Argument – ShowDetailsBrief pokaże akcje testowe, ale ich nie wykona, więc warto to zrobić w pierwszej kolejności.

Poniższy obraz przedstawia całą sekwencję testową dla ostatniego polecenia:

Świetnie! Teraz uruchom pierwsze polecenie (test 1), bez – ShowDetailsBrief, aby wykonać atak, jak pokazano poniżej:

Ponieważ już wiemy, że istnieją trzy sposoby kopiowania pliku SAM – polecenie, plik i rejestr -— możemy wykorzystać te informacje, aby rozpocząć polowanie. Przypominamy, że identyfikatory zdarzeń 4688 i 4103 są wskaźnikami wykonania polecenia. Ponieważ już sprawdziliśmy 4688, wyszukajmy tym razem 4103. Otwórz konsolę Kibana i wyszukaj „HKLM\sam” i event_id:4103, a powinieneś zobaczyć kilka trafień, jak pokazano poniżej:

Poświęć chwilę na zapoznanie się z wynikami dziennika; w szczególności spójrz na pole Ładunek. Rozwiń dziennik i przewiń w dół, aby zobaczyć szczegóły, jak pokazano tutaj:

Teraz wiesz, jak wygląda ładunek programu PowerShell w formacie dziennika. Jeśli spróbujesz tego w swojej sieci produkcyjnej, wyszukasz te same dzienniki, ale bez ograniczeń dat.

Emulacja atakującego AtomicRedTeam

https://chacker.pl/

Skupmy się na skryptach AtomicRedTeam emulujących ataki MITRE ATT&CK T1003.002 (SAM). Korzystając z tej samej konfiguracji laboratoryjnej, co w rozdziale 8, wpisz „cd” do folderu c\Tools\AtomicRedTeam\atomics\T1003.002 na hoście z systemem Windows 10.

UWAGA Jeśli nie widzisz folderu c:\Tools, prawdopodobnie wystąpił problem podczas instalacji; w takim przypadku przejdź do systemu hosta i w oknie PowerShell administratora uruchom vagrant require win10. To samo dotyczy serwerów DC i WEF. Co więcej, jeśli laboratorium opisane w tym rozdziale zawiesza się, może być konieczne ponowne uruchomienie poprzez vagrant halt system name, a następnie vagrant up system name. Jeśli zdarza się to często, rozważ dodanie większej ilości pamięci RAM lub uruchomienie z chmury (z większą ilością pamięci RAM). Laboratoria działały zgodnie z oczekiwaniami na hostach z systemem Windows 10, ale przebieg może się różnić w przypadku innych systemów operacyjnych. W przeglądarce internetowej otwórz także następujący adres URL:

https://github.com/redcanaryco/atomic-redteam/blob/master/atomics/T1003.002/T1003.002.md

Przewiń w dół, aby zobaczyć, jak narzędzie AtomicRedTeam będzie emulować atak, lub możesz wpisać te polecenia ręcznie. Czy wyglądają znajomo? Powinny, ponieważ są to te same polecenia, które widzieliśmy na stronie frameworka MITRE ATT&CK.

Teraz w wierszu poleceń administratora (na hoście z systemem Windows 10) wpisz polecenia pokazane na poprzedniej ilustracji, aby ręcznie zasymulować osobę atakującą.

Teraz otwórz pulpit Kibana (z poprzedniego rozdziału). Następnie dodajmy kolumnę do naszej listy wyników Kibana, znajdując #event_id w polu wyszukiwania w panelu po lewej stronie i klikając przycisk Dodaj.

Odtąd na górze listy wyników wyszukiwania będziesz mieć event_id jako nagłówek. Odśwież stronę, aby ją zobaczyć.

Następnie wyszukaj polecenie „reg save HKLM\sam”. Pamiętaj, że aby uniknąć ukośnika odwrotnego, musisz użyć cudzysłowów. Upewnij się, że kliknąłeś kalendarz, a następnie wybrałeś Dzisiaj:

Powinieneś zobaczyć następujące wyniki wyszukiwania:

W wynikach wyszukiwania widzimy identyfikator zdarzenia jako 4688 (pomiń przecinek). Przypomnijmy sobie z pokazanego wcześniej diagramu OSSEM, że jest to jeden z oczekiwanych identyfikatorów zdarzeń dla wykonania polecenia. To kluczowa lekcja: tym razem znaleźliśmy „event_id”, szukając bardzo specyficznej techniki atakującego. Idąc dalej, będziemy pracować w innym kierunku. Rozwijając ten dziennik i przewijając nieco wyniki dziennika, widzimy rzeczywistą linię poleceń wpisaną przez osobę atakującą, zgodnie z oczekiwaniami:

Oczywiście jest to podstawowy przykład w czystym środowisku testowym, ale nie martw się. Następnie będziemy to zwiększać.