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ć.

Wizualizacja źródeł danych za pomocą OSSEM

https://chacker.pl/

Zacznij od odwiedzenia :

https://ossemproject.com/dm/mitre_attack/attack_techniques_to_events.html.

Następnie najedź kursorem na ikonę statku rakietowego (wystrzelenia) w prawym górnym rogu strony i kliknij Binder, aby bezpłatnie uruchomić notatnik Jupyter na stronie Binder.

Ten notatnik Jupyter umożliwia interaktywne przetwarzanie języka Python i wszystkich powiązanych bibliotek na żywo, wygodnie i bezpiecznie w przeglądarce. Załadowanie zajmie chwilę (w końcu jest bezpłatne dzięki hojnym darowiznom osób wymienionych na górze strony witryny). Po załadowaniu zobaczysz następujący ekran. Kliknij szary blok kodu, a następnie kliknij przycisk Uruchom u góry lub naciśnij SHIFT-ENTER, aby przetworzyć ten blok kodu.

Ten notatnik Jupyter umożliwia interaktywne przetwarzanie języka Python i wszystkich powiązanych bibliotek na żywo, wygodnie i bezpiecznie w przeglądarce. Załadowanie zajmie chwilę (w końcu jest bezpłatne dzięki hojnym darowiznom osób wymienionych na górze strony witryny). Po załadowaniu zobaczysz następujący ekran. Kliknij szary blok kodu, a następnie kliknij przycisk Uruchom u góry lub naciśnij SHIFT-ENTER, aby przetworzyć ten blok kodu.

Po krótkim oczekiwaniu możesz kontynuować wykonywanie kolejnych bloków kodu (każdy wyjaśniony nagłówkiem i tekstem poprzedzającym blok), który wykorzystuje OSSEM do pokazania źródeł danych i komponentów podtechniki T1003.002. Dostosuj kod, aby przetestować T1003.002, jak pokazano poniżej. Na tym polega piękno notatników Jupyter: są dynamiczne i można z nimi eksperymentować, aby się uczyć.

Tutaj widzimy, że źródła danych poleceń, rejestru i plików są przydatne odpowiednio do wykrywania wykonania poleceń, dostępu do klucza rejestru systemu Windows i dostępu do plików. Teraz zmodyfikuj następny blok kodu, aby ponownie reprezentował podtechnikę T1003.002.

Teraz widzimy identyfikatory zdarzeń użyte do znalezienia aktywności powiązanej z podtechniką T1003.002. Jest to przydatne, ponieważ możesz teraz rozpocząć polowanie z tymi danymi, nie martwiąc się o inne identyfikatory zdarzeń. Istnieją trzy ścieżki wyszukiwania tego działania: pliki, rejestr systemu Windows i dzienniki wiersza poleceń. Wykonaj następne polecenie i przewiń w prawo okna danych, aby zobaczyć szczegóły danych graficznych. Będziesz musiał zmodyfikować kod w bloku, jak pokazano poniżej, dla T1003.002:

Po prawej stronie tej listy znajdują się kanały dziennika i powiązani z nimi dostawcy dzienników (źródła). Widzimy więc na przykład, że szukając trasy wykonania polecenia tego ataku, możemy wyszukać identyfikatory zdarzeń 4688 i 4103, odpowiednio dla wykonania wiersza poleceń i wykonania programu PowerShell. Te identyfikatory zdarzeń są uruchamiane, gdy użytkownik lub proces wykonuje polecenie, więc jesteśmy zabezpieczeni, gdy osoba atakująca pisze w wierszu poleceń lub wykonuje skrypty uruchamiające procesy w celu wykonania poleceń – co jest dobre. Zauważamy również, że dzienniki Sysmon zawierają identyfikator zdarzenia równy 1 dla tego działania. Okazuje się, że identyfikator zdarzenia 1 jest powiązany z całym tworzeniem procesów i jest w tym przypadku mniej szczegółowy, dlatego pozostaniemy przy dwóch pozostałych identyfikatorach zdarzeń. Przewijając nieco w dół, widzimy podobne dane dla technik, które uzyskują bezpośredni dostęp do SAM z rejestru:

Jeszcze niżej widzimy dane z technik związanych z bezpośrednim dostępem do pliku obiektu SAM:

Teraz nauczmy się innej techniki emulacji zachowania atakującego, aby poćwiczyć odnajdywanie go w dziennikach. Emulacja zagrożeń cybernetycznych (CTE) zwiększa siłę i naprawdę przyspiesza naukę.