Podstawy polowania na zagrożenia

https://chacker.pl/

Polowanie na zagrożenia to systematyczny proces polowania na przeciwnika, który już znajduje się w sieci. Mówimy o włamaniu, które już się rozpoczęło, a celem jest skrócenie czasu, jaki osoba atakująca może przebywać w sieci. Po wykryciu atakującego można zastosować odpowiednią reakcję na incydent, aby usunąć go z sieci i przywrócić normalne działanie. Dlatego też polowanie na zagrożenia nie jest reakcją na incydenty, chociaż pod wieloma względami oba te podmioty współpracują ze sobą i często w ich skład wchodzą osoby o tych samych umiejętnościach. Jednak w idealnym przypadku istnieje oddzielny zespół poszukujący zagrożeń, który cały czas poluje na wszelkich przeciwników w sieci. W organizacji o ograniczonych budżetach myśliwy może zmienić kapelusz po wykryciu przeciwnika i pełnić funkcje reagowania na incydenty. Podobnie łowca zagrożeń nie jest testerem penetracji. Ponownie, obaj mogą mieć podobne doświadczenie i umiejętności, ale sposób myślenia jest inny. Tester penetracji szuka sposobów na wejście do sieci i przez nią, aby odkryć luki w zabezpieczeniach i je naprawić, zanim znajdzie je przeciwnik. Łowca zagrożeń zakłada, że ​​naruszenie już miało miejsce i jest bardziej skupiony na znalezieniu tropu przeciwnika i wykryciu go po wejściu do sieci, niż (początkowo) na tym, jak przeciwnik się tam dostał.

Wprowadzenie do polowania na zagrożenia

https://chacker.pl/

Co to jest polowanie na zagrożenia? Polowanie na zagrożenia opiera się na założeniu, że przeciwnik jest już w sieci i należy go wyśledzić. Jest to temat wymagający sporej wiedzy na temat (1) sposobu działania przeciwników i (2) normalnego działania systemów oraz ataków. Dlatego też jest to temat, którego nie da się w pełni omówić w tym rozdziale. Naszym celem jest jednak przedstawienie przeglądu podstaw, które z czasem będziesz mógł rozszerzać.

Mordor

https://chacker.pl/

Mordor został stworzony przez… zgadliście, Roberto i Jose Rodriguez. Po raz kolejny mamy wobec tych chłopaków dług wdzięczności. Mordor to zbiór zbiorów danych dotyczących aktywności APT. Tak, możesz pobrać zestawy danych i poćwiczyć znajdowanie prawdziwych APT w swoim laboratorium. Zainstalujemy go tutaj, a następnie będziemy się nim bawić w następnej części. Postępuj zgodnie z instrukcjami na GitHub, aby pobrać i zainstalować zestawy danych Mordoru (https://github.com/OTRF/mordor), zaczynając od zależności kafkacat:

Przejdź z powrotem do katalogu domowego w Loggerze:

Teraz pobierz i zainstaluj zestawy danych Mordoru ze swojego środowiska laboratoryjnego (host Logger):

Zainstaluj unzip, a następnie rozpakuj zestaw danych:

Teraz uruchom kafkacat, aby pozyskać zestaw danych Mordoru:

Po zakończeniu działania narzędzia kafkacat (około 20 minut) otwórz Kibanę i dostosuj stronę Discover, ustawiając przedział czasowy na 1 stycznia 2020 r. do chwili obecnej. Powinniście zobaczyć wydarzenia z połowy 2020 roku. W kolejnej części znów podejmiemy polowanie.

Podstawowe zapytania

https://chacker.pl/

Aby pomóc Ci nauczyć się wysyłać zapytania do Kibany (interfejs użytkownika Elasticsearch), dajmy mu coś ciekawego do znalezienia. Otwórz hosta Win10 z poziomu interfejsu internetowego Guacamole, bezpośrednio na maszynie wirtualnej (w przypadku laboratoriów opartych na hoście) lub za pośrednictwem protokołu RDP (jeśli korzystasz z laboratorium w chmurze). Na hoście Win10 otwórz Eksploratora i przejdź do folderu c:\users\vagrant\tools, jak pokazano poniżej:

Kliknij dwukrotnie plik mimikatz.exe. Program ten umożliwia wyświetlanie haseł użytkowników systemu w postaci zwykłego tekstu. Wpisz następujące polecenia w konsoli Mimikatz:

Teraz, wracając na stronę internetową Kibana, powinieneś móc zobaczyć wydarzenie, wpisując mimikatz.exe w górnym panelu wyszukiwania strony Odkryj, z wybranymi ramami czasowymi Ostatnie 15 minut po prawej stronie:

Teraz możemy zrobić coś więcej; możemy użyć pól w dzienniku, aby znaleźć to w ten sposób. W górnym polu wyszukiwania wpisz nazwa procesu:”mimikatz.exe” i identyfikator zdarzenia:1 i naciśnij ENTER. Powinieneś zobaczyć takie same wyniki. Po lewej stronie ekranu wybierz strzałkę w dół obok etykiety dzienników* i wybierz nasz indeks, dzienniki* Gray Hat. Powinieneś nadal zobaczyć ten sam wynik. Teraz jest dużo więcej do nauczenia się o Kibanie i Elasticsearch, ale to są podstawy, które musisz znać na razie.

Podstawy Kibany

https://chacker.pl/

Wzorce indeksów są używane przez Kibanę do uzyskiwania dostępu do danych w Elasticsearch. Określa grupowanie danych (do przeszukiwania) i sposób definiowania pól (poprzez właściwości). Pokażemy, jak tworzyć wzorce indeksów, a następnie jak używać Kibany do podstawowych zapytań.

Wzory indeksów

Często przydatne jest tworzenie własnych wzorców indeksowania w Elasticsearch. Zacznij od wybrania logo Kibana w lewym górnym rogu, aby przejść do strony głównej. Następnie przewiń w dół i wybierz opcję Index Patterns:

Następnie wybierz przycisk Utwórz wzór indeksu po prawej stronie:

Następnie wykonaj krok 1 z 2, filtrując dostępne źródła dzienników. W naszym przykładzie utworzymy po prostu główny indeks wszystkich logów zaczynający się od „log”. Wpisz log* w polu wzorca indeksu, a następnie kliknij Następny krok:

Następnie wykonaj krok 2 z 2, wskazując, na którym polu przeprowadzić filtry czasowe. Wybierz @timestamp, aby było to proste. Wybierz listę rozwijaną Opcje zaawansowane i nadaj nazwę nowemu indeksowi. W tym przypadku nazwaliśmy to dziennikami* Szary Kapelusz. Następnie kliknij opcję Utwórz wzorzec indeksu.

W ten sposób mamy własny indeks. To mogło nie wydawać się imponujące, szczególnie biorąc pod uwagę, że Elasticsearch stworzył już dla nas indeks o nazwie logs-*. Jednak w przyszłości możesz chcieć utworzyć własne indeksy (na przykład dla mniejszego zestawu źródeł logów lub dla logów z konkretnego dnia lub tygodnia), aby przyspieszyć wyszukiwanie, ponieważ masz już podzbiór indeksowane dane.

Zainstaluj Winlogbeata

[wp_ad_camp_1}

https://chacker.pl/

Aby uzyskać logi do Logstash, a ostatecznie do dashboardu Kibana pokazanego na poprzedniej ilustracji, musisz zainstalować beaty (czyli filebeat, packagebeat, winlogbeat i inne). Dla naszych celów interesują nas logi plików systemu Windows, dlatego skorzystamy z winlogbeat. Używając terminala Guacamole (http://192.268.38.105:8080/guacamole) w przypadku laboratorium opartego na hoście lub protokołu RDP w przypadku laboratorium w chmurze, połącz się z serwerem WEF, a następnie pobierz i zainstaluj winlogbeat z https://www.elastic .co/downloads/beats/winlogbeat. Rozpakuj plik winlogbeat.x.zip do c:\program files\ i zmień nazwę rozpakowanego folderu na c:\programfiles\winlogbeat.Następnie na tym serwerze WEF otwórz w przeglądarce następujący plik i zapisz go zamiast domyślnego pliku winlogbeat.yml w folderze c:\programfiles\winlogbeat\:

Następnie zainstaluj i uruchom usługę z poziomu PowerShell, korzystając z uprawnień administratora:

Teraz sprawdź panel Usługi i upewnij się, że usługa działa, jak pokazano poniżej.

Jeśli wrócisz do pulpitu nawigacyjnego Kibana, jeśli klikniesz ikonę Odkryj znajdującą się po lewej stronie (druga ikona od dołu), powinieneś zobaczyć nowe dane z winlogbeat, jak pokazano poniżej.

Zainstaluj HELK

https://chacker.pl/

Możesz zainstalować HELK z terminala Logger (Linux). Jeśli masz laboratorium w chmurze, możesz użyć następującego polecenia:

W przeciwnym razie, jeśli masz lokalną wersję laboratorium, możesz uzyskać dostęp do powłoki SSH za pośrednictwem Vagrant (z poziomu administratora PowerShell):

Następnie, tak czy inaczej, możesz zainstalować HELK w następujący sposób:

W przypadku laboratoriów w chmurze adres IP zostanie ustawiony automatycznie. W przypadku laboratoriów opartych na hoście pamiętaj najpierw o sprawdzeniu adresu IP dla eth1, zanotuj go i użyj go w skrypcie, gdy zostaniesz poproszony o podanie adresu IP:

Teraz zainstaluj HELK:

Jeśli postępowałeś zgodnie z poprzednimi instrukcjami dotyczącymi chmury, wybierz opcję 2, jak pokazano poniżej. Później możesz poeksperymentować z innymi opcjami; są świetne, ale nie potrzebne tutaj.

Teraz uruchom przeglądarkę i uzyskaj dostęp do konsoli HELK (Kibana), albo z adresem IP pokazanym w poprzednim kodzie (jeśli laboratorium zbudowałeś lokalnie), albo z adresem publicznym w chmurze (jeśli korzystasz z chmury). Ponieważ w tej sekcji korzystamy z laboratorium opartego na hoście, użyjemy adresu IP https://192.168.38.105.

Rozglądając się po laboratorium

https://chacker.pl/

Niezależnie od tego, czy skonfigurujesz laboratorium na hoście w ramach 1, czy w chmurze w ramach 2, możesz teraz zacząć otwierać dostępne narzędzia i rozglądać się. Adresy IP i adresy URL są wymienione w Laboratorium 2. Dane uwierzytelniające do narzędzi laboratoryjnych i adresy IP lokalnych laboratoriów opartych na hostach można znaleźć pod adresem https://www.detectionlab.network/images/lab.png. (Ważne jest, aby pamiętać, że w przypadku lokalnych laboratoriów opartych na hoście dostęp do tych narzędzi będzie można uzyskać tylko z samego hosta, ponieważ dostęp tylko do hosta jest zapewniany przez eth1). Inne, już zainstalowane narzędzia znajdziesz na liście https ://www.detectionlab.network/usage/. Poświęć chwilę, żeby się rozejrzeć.

NOTATKA . Jeśli jedno z laboratoriów na hoście zawiesza się, co jest częste w przypadku VirtualBox, możesz po prostu je zamknąć, wybierając Wyłącz, a następnie uruchamiając vagrant reload [dc|wef|win10|logger] (wybierając zawieszoną maszynę wirtualną) z wiersza poleceń. Podczas moich testów zauważyłem, że nawet jeśli na siłę wyłączę hosta, początkowo polecenie przeładowania będzie narzekać na zablokowaną maszynę wirtualną, ale po kilku chwilach skrypt Vagrant ponownie się połączy i uruchomi ją ponownie.

Rozszerzanie swojego laboratorium

DetectionLab zawiera już większość narzędzi, których będziesz potrzebować, ale dodamy kilka, jak opisano w poniższych sekcjach.

HELK

Wersja myśliwska ELK, HELK, została opracowana przez Roberto Rodrigueza. Roberto i jego brat Jose poświęcili swoje życie badaniom nad bezpieczeństwem i naprawdę zmienili naszą dziedzinę. Autor jest wdzięczny za ich wkład i ma nadzieję podzielić się z Tobą odrobiną tej dobroci. Główną witryną HELK jest https://github.com/Cyb3rWard0g/HELK.

Zainstaluj laboratorium w chmurze

https://chacker.pl/

Jeśli nie masz dostępnych 16 GB pamięci RAM, będziesz chciał skorzystać z chmury. W tym laboratorium będziemy używać platformy Azure. Jako bonus za rejestrację otrzymasz środki w wysokości 200 USD, które należy wykorzystać w ciągu pierwszych 30 dni, czyli wystarczająco dużo czasu, aby kopnąć opony i sprawdzić, czy chcesz korzystać z laboratorium przez dłuższy czas. Jeśli jednak wolisz korzystać z AWS, repozytorium DetectionLab GitHub zawiera również łatwe instrukcje instalacji.

PRZESTROGA: Nie trzeba dodawać, że chmura nie jest bezpłatna i jeśli będziesz z niej korzystać poza posiadanymi środkami, poniesiesz znaczne opłaty. Dobra wiadomość jest taka, że ​​możesz wyłączyć obrazy, gdy ich nie potrzebujesz, aby zaoszczędzić koszty. Zostałeś ostrzeżony. Aby to zmienić, tym razem uruchomimy nasze instancje w chmurze z hosta Mac. Ponownie obsługiwany jest każdy host; wystarczy odwiedzić witrynę DetectionLab, aby zapoznać się z innymi systemami operacyjnymi. Aby uruchomić to laboratorium w chmurze (Azure), najpierw zainstaluj Brew, Terraform, Ansible, i narzędzia interfejsu wiersza polecenia platformy Azure

Pobierz kod źródłowy z repozytorium DetectionLab GitHub:

Skopiuj przykładowy plik tfvars i edytuj go, aby uwzględnić Twój adres IP (whatismyip.com) i informacje o lokalizacji pliku użytkownika:

Edytuj plik za pomocą swojego ulubionego edytora. Ponownie pamiętaj o zaktualizowaniu zmiennej ip_whitelist, a także lokalizacji kluczy publicznych i prywatnych, zmieniając „/home/user” na lokalizację pokazanego wyjścia generatora kluczy. Jeśli pominiesz ten krok, dostęp do laboratoriów zostanie zablokowany, ponieważ dostęp do laboratoriów będą miały tylko adresy IP z białej listy.

NOTATKA. Jeśli w przyszłości zmienisz swój adres IP, koniecznie przejdź do Azure Portal, wyszukaj „Sieciowe grupy zabezpieczeń” u góry, znajdź swoją grupę zabezpieczeń i tam zmień swój adres IP na regułach przychodzących. Następnie edytuj plik main.tf, aby zmienić rozmiar systemu Linux (aby uwzględnić późniejsze kroki). Wyszukaj w pliku main.tf następującą sekcję i upewnij się, że ostatnia linia została zmieniona z D1 na D2, jak pokazano:

Teraz skonfiguruj swoje konto Azure, jeśli jeszcze tego nie zrobiłeś. Jeśli masz już tam darmowe konto lub zostaniesz o to zapytany podczas rejestracji, będziesz musiał wybrać opcję Pay As You Go, ponieważ ta opcja jest wymagana do zwiększenia limitu procesora i pozwala na uruchomienie wymaganego rozmiaru i liczby maszyn laboratorium. W chwili pisania tego tekstu nadal będziesz otrzymywać kredyt w wysokości 200 USD do wykorzystania w pierwszym miesiącu (na przykład moje testy wykazały około 12,16 USD dziennie podczas opracowywania tego laboratorium). Tak długo, jak zamkniesz laboratoria, kiedy z nich nie korzystasz, powinieneś mieć mnóstwo korzyści z tego kredytu w wysokości 200 USD. Pamiętaj, jak wspomniano wcześniej, musisz zdawać sobie sprawę z kosztów przekraczających kwotę kredytu w wysokości 200 USD i odpowiednio je monitorować.

NOTATKA. Jeśli zapomnisz wybrać płatność zgodnie z rzeczywistym użyciem lub później pojawi się następujący błąd, konieczne będzie przejście do rozliczeń i przejście na opcję płatności zgodnie z rzeczywistym użyciem:

I Error: compute.VirtualMachinesClient#CreateOrUpdate: Failure  sending request: StatusCode=0 – Original Error: autorest/azure: Service returned an error. Status=<nil> Code=“OperationNotAllowed” Message=“Operation could not be completed as it results in exceeding approved Total Regional Cores quota. Additional details …

Więcej informacji na temat limitów przydziałów można znaleźć na stronie https://docs.microsoft.com/en-us/azure/azure-supportability/regional-quotarequests.” Następnie, aby uwierzytelnić się przy użyciu nowego konta Azure, uruchom następujące polecenie, które uruchomi witrynę internetową umożliwiającą uwierzytelnienie na platformie Azure:

% az login

Następnie utwórz klucz SSH, którego Terraform może używać do zarządzania systemem Logger (Linux), jak pokazano poniżej. Pamiętaj, aby nadać nowemu kluczowi hasło.

Następnie przechowuj klucz w ssh-agent (pamiętaj, że Terraform musi uzyskać dostęp do klucza bez hasła, a ssh-agent to umożliwia):

Na koniec możesz uruchomić laboratoria z wiersza poleceń, używając następującego kodu.

Teraz możesz wyświetlić dane wyjściowe skryptów, aby zobaczyć swoje adresy IP:

Jesteś prawie gotowy! Należy dokończyć aprowizację WEF, Win10 i DC. Aby to zrobić, najpierw przejdź do katalogu Ansible:

Teraz edytuj plik Inventory.yml za pomocą swojego ulubionego edytora, aby zaktualizować wartości IP x.x.x.x każdego hosta, używając wartości public_ip z polecenia wyjściowego Terraform. Pamiętaj, aby nie usuwać wcięć, ponieważ są one ważne. Następnie uruchom podręcznik Ansible, ustawiając najpierw zmienną środowiskową, aby obejść błąd w systemie macOS za pomocą Ansible: