Przewodnik po analizie zagrożeń Sysmon, część 1

Przewodnik po analizie zagrożeń Sysmon, część 1

Artykuł ten jest pierwszą częścią serii dotyczącej analizy zagrożeń Sysmon. Pozostałe części serii to:

Część 1. Wprowadzenie do analizy logów Sysmon (jesteśmy tutaj)
Część 2. Wykorzystanie danych z wydarzeń Sysmon do identyfikacji zagrożeń
Część 3. Zaawansowana analiza zagrożeń Sysmon przy użyciu grafów

Jeśli zajmujesz się bezpieczeństwem informacji, z pewnością często musisz zbadać występujące ataki. Jeśli masz już wprawne oko, możesz poszukać nietypowej aktywności w "surowych" nieprzetworzonych logach — na przykład skryptu PowerShell z uruchomioną komendą DownloadString lub skryptem VBS udającym plik Word — przeglądając ostatnią aktywność w dzienniku zdarzeń Windows. Ale to naprawdę duży ból głowy. Na szczęście Microsoft stworzył Sysmon, który znacznie ułatwia analizę ataków.

Chcesz zrozumieć podstawowe idee kryjące się za wyświetlanymi w logu Sysmon zagrożeniami? Pobierz nasz przewodnik Wydarzenia WMI jako narzędzie szpiegostwa i zrozumiesz, jak insiderzy mogą dyskretnie obserwować innych pracowników. Głównym problemem pracy z dziennikiem zdarzeń Windows jest brak informacji o procesach macierzystych, to znaczy nie można zrozumieć hierarchii procesów. W zapisach logu Sysmon z kolei znajdują się identyfikator procesu macierzystego, jego nazwa i uruchamiana linia poleceń. Dziękujemy, Microsoft.

W pierwszej części naszej serii przyjrzymy się, co można zrobić z podstawowymi informacjami z Sysmon. W drugiej części w pełni skorzystamy z informacji o procesach macierzystych, aby stworzyć bardziej złożone struktury zgodności, znane jako grafy zagrożeń. W trzeciej części zaprezentujemy prosty algorytm, który skanuje graf zagrożeń w poszukiwaniu nietypowej aktywności poprzez analizę "wagi" grafu. A na koniec jako nagrodę czeka na Ciebie zgrabna (i zrozumiała) probabilistyczna metoda wykrywania zagrożeń.

Część 1: Wprowadzenie do analizy logów Sysmon

Co pomoże zrozumieć złożoności dziennika zdarzeń? Ostatecznie – SIEM. Normalizuje zdarzenia i upraszcza ich późniejszą analizę. Ale nie musimy od razu iść tak daleko, przynajmniej na początku. Na początek dla zrozumienia zasad SIEM wystarczy spróbować wspaniałego, darmowego narzędzia Sysmon. Zaskakująco łatwo się z nim pracuje. Tak trzymaj, Microsoft!

Jakie możliwości ma Sysmon?

Krótko mówiąc – przydatne i czytelne informacje o procesach (zobacz zdjęcia poniżej). Odkryjesz mnóstwo przydatnych szczegółów, których brakuje w dzienniku zdarzeń systemu Windows, ale najważniejsze to następujące pola:

  • ID procesu (w postaci dziesiętnej, a nie hex!)
  • ID procesu macierzystego
  • Linia poleceń procesu
  • Linia poleceń procesu macierzystego
  • Hash obrazu pliku
  • Nazwy obrazów plików

Sysmon jest instalowany jednocześnie jako sterownik urządzenia i jako usługa – więcej informacji tutaj. Jego kluczową zaletą jest możliwość analizy logów z kilku źródeł, korelacja informacji i wydobycie wynikowych wartości do jednego folderu dziennika zdarzeń, znajdującego się pod ścieżką Microsoft -> Windows -> Sysmon -> Operacyjny. W moich własnych dochodzeniach w logach Windows, które przyprawiały mnie o dreszcze, nieustannie musiałem przełączać się między na przykład folderem z logami PowerShell a folderem „Bezpieczeństwo”, przeglądając dzienniki zdarzeń w heroicznej próbie dopasowania wartości między nimi. To zadanie wcale nie jest łatwe, a jak potem zrozumiałem, najlepiej było od razu zaopatrzyć się w aspirynę.

Sysmon dokonuje jakościowego skoku naprzód, dostarczając przydatne (lub jak wolą mówić dostawcy – efektywne) informacje, które pomagają w zrozumieniu podstawowych procesów. Na przykład uruchomiłem ukrytą sesję wmiexec, symulującą ruch przebiegłego insajdera w sieci. Oto co zobaczysz w dzienniku zdarzeń systemu Windows:

Przewodnik po analizie zagrożeń Sysmon, część 1

W dzienniku Windows widoczna jest jakaś informacja o procesie, ale jest ona mało przydatna. Plus identyfikatory procesów w formie szesnastkowej???

U profesjonalnego specjalisty IT zrozumienie podstaw hakowania powinno budzić podejrzenia wobec linii poleceń. Użycie cmd.exe do uruchomienia innej komendy z przekierowaniem wyjścia do pliku o dziwnej nazwie – zdecydowanie przypomina działania oprogramowania do kontroli i zarządzania. dowodzenie i kontrola (C2): w ten sposób tworzony jest pseudosh shell za pomocą usług WMI.
Teraz przyjrzyjmy się odpowiednikowi zapisu z Sysmon, zwracając uwagę na to, ile dodatkowych informacji daje nam on:

Przewodnik po analizie zagrożeń Sysmon, część 1

Możliwości Sysmon w jednym zrzucie ekranu: szczegółowe informacje o procesie w czytelnej formie

Nie tylko widzisz polecenie, ale także nazwę pliku, ścieżkę do uruchamialnej aplikacji, co Windows o tym wie („procesor poleceń systemu Windows”), identyfikator procesu nadrzędnego polecenie nadrzędnego, który uruchomił powłokę cmd, a także rzeczywistą nazwę pliku procesu nadrzędnego. Wszystko w jednym miejscu, w końcu!
Z logu Sysmon możemy wywnioskować, że z wysokim prawdopodobieństwem ten podejrzany wiersz polecenia, który widzieliśmy w "surowych" logach, nie jest wynikiem normalnej pracy pracownika. Przeciwnie, został wygenerowany przez proces podobny do C2 — wmiexec, jak wspomniałem wcześniej — i był bezpośrednio wygenerowany przez proces usługi WMI (WmiPrvSe). Teraz mamy wskaźnik, że zdalny atakujący lub insider sprawdza infrastrukturę firmy.

Przedstawiamy Get-Sysmonlogs

Oczywiście świetnie, gdy Sysmon posiada logi w jednym miejscu. Ale byłoby jeszcze lepiej, gdybyśmy mogli uzyskać dostęp do poszczególnych pól logu w sposób programowy – na przykład przez polecenia PowerShell. W takim przypadku można by napisać mały skrypt PowerShell, który zautomatyzowałby poszukiwanie potencjalnych zagrożeń!
Nie tylko ja miałem taki pomysł. I dobrze, że w niektórych postach na forach i projektach GitHub już wyjaśniono, jak używać PowerShell do parsowania logu Sysmon. W moim przypadku chciałem uniknąć potrzeby pisania oddzielnych linii skryptu parsowania dla każdego pola Sysmon. Dlatego zastosowałem zasadę leniwego człowieka i, jak mi się wydaje, udało mi się wymyślić coś interesującego. Pierwszym ważnym punktem jest możliwość komendy
Get-WinEvent czytania logów Sysmon, filtrowania potrzebnych zdarzeń i wyprowadzania wyników do zmiennej PS, jak tutaj: $events = Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}

$events = Get-WinEvent  -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}

Jeśli chcesz samodzielnie sprawdzić działanie zespołu, możesz uzyskać serię tekstowych ciągów w bardzo prostym formacie, korzystając z wyświetlenia zawartości w pierwszym elemencie tablicy $events, $events[0].Message: nazwa pola Sysmon, dwukropek, a następnie sama wartość.

Przewodnik po analizie zagrożeń Sysmon, część 1

Hurra! Wyjście logu Sysmon w gotowym formacie JSON

Myślisz o tym samym, co ja? Przy odrobinie wysiłku można przekonwertować wyjście na sformatowany ciąg JSON, a następnie załadować go bezpośrednio do obiektu PS z użyciem potężnej komendy ConvertFrom-Json .
Pokażę kod PowerShell do konwersji – jest bardzo prosty – w następnej części. A tymczasem przyjrzyjmy się, co potrafi mój nowy zespół o nazwie get-sysmonlogs, który zainstalowałem jako moduł PS.
Zamiast wgłębiać się w analizę logów Sysmon poprzez niewygodny interfejs dziennika zdarzeń, możemy bez problemu przeszukiwać inkrementalną aktywność bezpośrednio z sesji PowerShell oraz korzystać z polecenia PS gdzie (alias – „?”) dla skrócenia wyników:

Przewodnik po analizie zagrożeń Sysmon, część 1

Lista cmd-shelów uruchomionych przez WMI. Analiza zagrożeń tanio za pomocą naszego własnego polecenia Get-Sysmonlogs

Niesamowite! Stworzyłem narzędzie do badania logów Sysmon, jak gdyby było bazą danych. W naszym artykule o EQL wspomniano, że tę funkcję wykona opisane w nim świetne narzędzie, chociaż formalnie korzysta z rzeczywistego interfejsu podobnego do SQL. Tak, EQL jest eleganckie, ale do tematu wrócimy w trzeciej części.

Sysmon i analiza grafów

Zastanówmy się na chwilę, co właśnie stworzyliśmy. W zasadzie mamy teraz bazę danych zdarzeń Windows dostępną przez PowerShell. Jak wcześniej zauważyłem, między wpisami istnieją połączenia lub relacje — przez ParentProcessId — dlatego możemy uzyskać pełną hierarchię procesów.

Jeśli czytałeś serię „Przygody nieuchwytnej złośliwego oprogramowania”, to wiesz, że hakerzy uwielbiają tworzyć złożone ataki wieloetapowe, w których każdy proces odgrywa swoją małą rolę i przygotowuje grunt pod następny krok. Tego rodzaju rzeczy są niezwykle trudne do wychwycenia tylko z „surowego” logu.
Jednak z moim poleceniem Get-Sysmonlogs i dodatkowymi strukturami danych, które omówimy później (oczywiście, jest to graf), będziemy mieć praktyczny sposób na wykrywanie zagrożeń – wystarczy wykonać odpowiednie wyszukiwanie w węzłach.
Jak zawsze w naszych projektach blogowych DYI, im więcej pracy wkładacie w analizę szczegółów zagrożeń w małej skali, tym lepiej rozumiecie, jak złożone jest wykrywanie zagrożeń na poziomie organizacyjnym. I ta świadomość jest niezwykle ważnym aspektem.

Natrafimy na pierwsze interesujące trudności w drugiej części artykułu, gdzie zaczniemy łączyć ze sobą wydarzenia Sysmon w znacznie bardziej złożone struktury.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster