Na Kapitanie wielokrotnie pisaliśmy już o technice ClickFix, w której użytkownik zostaje nakłoniony do samodzielnego uruchomienia złośliwego polecenia pod pozorem rozwiązania problemu lub wykonania dodatkowej weryfikacji. Opisywaliśmy między innymi kampanie wykorzystujące fałszywe CAPTCHA oraz kolejne warianty tej techniki, pojawiające się na macOS.

Pod koniec sierpnia Microsoft opisał kampanię określaną jako TerminalFix, będącą kolejną odmianą ClickFix. Użytkownik trafia na przejętą stronę i widzi fałszywą weryfikację „Verify you are human”, stylizowaną na popularne mechanizmy CAPTCHA. Po wykonaniu instrukcji uruchamia jednak przygotowane przez atakujących polecenie PowerShell.

W przypadku TerminalFix ten etap jest dopiero początkiem łańcucha. Kampania wykorzystuje DLL sideloading, steganografię, rozpoznanie Active Directory, a następnie uruchamia mechanizm pozwalający wykorzystać przejęty komputer jako punkt pośredniczący do komunikacji z siecią wewnętrzną.

TerminalFix a ClickFix

W wielu wcześniejszych kampaniach ClickFix użytkownik otrzymywał instrukcję otwarcia okna Uruchamianie za pomocą Win+R, wklejenia znajdującego się już w schowku polecenia i jego wykonania.

TerminalFix wykorzystuje tę samą zasadę socjotechniczną, ale kieruje użytkownika do Windows Terminal lub PowerShell. Umożliwia to wykonanie bardziej rozbudowanych, wieloliniowych poleceń niż w przypadku klasycznego okna Run.

Różnica dotyczy również dalszej części ataku. Wcześniejsze kampanie ClickFix często służyły przede wszystkim do dostarczenia pojedynczego infostealera. W przypadku opisanym przez Microsoft początkowe polecenie uruchamia wieloetapowy łańcuch prowadzący ostatecznie do wykorzystania przejętego hosta jako punktu dostępu do sieci wewnętrznej.

Jak przebiega atak?

Po kliknięciu fałszywego pola Verify you are human złośliwe polecenie PowerShell zostaje skopiowane do schowka. Strona instruuje użytkownika, aby otworzył Terminal lub PowerShell i wkleił przygotowaną komendę.

Fałszywa weryfikacja Cloudflare Turnstile wyświetlana na przejętej stronie internetowej. Źródło: Microsoft

Atakujący stara się utrzymać wrażenie prawidłowej weryfikacji, wyświetlając komunikaty nawiązujące do Cloudflare. W tle pobiera jednak archiwum ZIP do C:\ProgramData, rozpakowuje je i uruchamia plik 1.bat. Ten z kolei otwiera legalny, podpisany przez Microsoft plik LockScreenContentServer.exe.

Początkowe polecenie PowerShell kopiowane do schowka użytkownika przez przynętę ClickFix. Źródło: Microsoft

W tym samym katalogu znajduje się przygotowana przez atakujących biblioteka dui70.dll. LockScreenContentServer.exe normalnie korzysta z biblioteki o tej nazwie, a mechanizm ładowania DLL sprawdza najpierw katalog aplikacji. W efekcie zamiast właściwej biblioteki ładowana jest wersja kontrolowana przez atakujących. Jest to klasyczny przykład DLL sideloadingu.

Złośliwa biblioteka uruchamia kolejny komponent, który po zdekodowaniu w pamięci odpowiada za pobranie dalszych elementów ataku.

Funkcja odpowiedzialna za steganograficzne wydobycie payloadu ukrytego w danych kanałów pikseli obrazu. Źródło: Microsoft

W kolejnym etapie atakujący nie przesyłają payloadów wprost jako plików wykonywalnych. Zamiast tego ukrywają je wewnątrz trzech obrazów PNG. PowerShell odczytuje wartości pikseli i odtwarza z nich właściwe dane: jeden plik wykonywalny oraz dwie części biblioteki DLL, które następnie są ze sobą łączone. Po zakończeniu ekstrakcji obrazy są usuwane. Microsoft opisuje ten mechanizm jako wykorzystanie steganografii do ukrycia payloadów podczas transmisji.

Po włączeniu malware tworzy dwa mechanizmy zapewniające jego automatyczne uruchamianie po restarcie systemu. Pierwszy wykorzystuje klucz Run w rejestrze Windows, a drugi zadanie w Harmonogramie zadań uruchamiane co 60 minut.

Fragment skryptu odpowiedzialnego za enumerację Active Directory, w tym pobieranie opisów kont użytkowników. Źródło: Microsoft

Następnie przechodzi do fazy rekonesansu. Sprawdzane są między innymi relacje zaufania domeny, członkowie grupy Domain Admins, użytkownicy i komputery Active Directory oraz dostępność serwerów pełniących role takie jak kontrolery domeny, serwery baz danych czy systemy backupowe.

Malware tworzy również prosty mechanizm zdalnego wykonywania poleceń oparty na plikach tekstowych. Jeden z uruchomionych komponentów regularnie sprawdza wskazany plik i wykonuje zapisane w nim polecenia PowerShell za pomocą Invoke-Expression. Wyniki działania są następnie zapisywane do osobnego pliku.

Mechanizm ten pozwala atakującemu przekazywać kolejne polecenia do zainfekowanego hosta i odbierać ich wyniki bez konieczności utrzymywania bezpośredniej sesji z przejętym systemem. Działa on więc jak prosty kanał sterowania oparty na wymianie plików.

Tunel do sieci wewnętrznej

Ostatnim etapem łańcucha jest uruchomienie mechanizmu tunelowania ruchu. Atakujący pobierają oficjalny runtime Pythona oraz własny skrypt client.py, uruchamiany przez pythonw.exe.

Skrypt nawiązuje połączenie z serwerem atakującego przez TLS na porcie 443 i utrzymuje kanał WebSocket. Dzięki temu przejęty komputer może pełnić rolę pośrednika pomiędzy infrastrukturą atakującego a systemami dostępnymi w sieci ofiary.

Mechanizm działa podobnie do proxy uruchomionego wewnątrz organizacji. Atakujący nie musi mieć bezpośredniego dostępu z Internetu do kolejnych hostów – może kierować ruch przez zainfekowaną stację i komunikować się z systemami widocznymi z jej poziomu.

Zalecenia

W przypadku TerminalFix najważniejsze jest ograniczenie możliwości uruchamiania nieautoryzowanych poleceń PowerShell przez standardowych użytkowników. Można to osiągnąć poprzez polityki kontroli aplikacji, odpowiednią konfigurację Group Policy oraz ograniczenie dostępu do PowerShella tam, gdzie nie jest on potrzebny do codziennej pracy.

Duże znaczenie ma również monitoring wykonywanych poleceń. Warto rejestrować skrypty PowerShell, w szczególności polecenia zakodowane lub ukryte w sposób utrudniający ich analizę, a także analizować nietypowe uruchomienia procesów związanych z Terminalem i PowerShellem.

W kontekście samego łańcucha TerminalFix istotne jest też wykrywanie DLL sideloadingu. W opisywanej kampanii wykorzystywany był legalny plik LockScreenContentServer.exe. Jego uruchomienie z lokalizacji spoza C:\Windows\SystemApps, szczególnie razem z biblioteką dui70.dll, powinno zostać potraktowane jako podejrzane i poddane dalszej analizie.

Nie można też pominąć edukacji użytkowników. Fałszywe CAPTCHA i instrukcje nakłaniające do kopiowania poleceń do Terminala, PowerShella lub okna Run powinny być sygnałem ostrzegawczym. To właśnie działanie użytkownika uruchamia pierwszy etap ataku.

Jeżeli zostaną wykryte oznaki tej kampanii, przejęty host należy traktować nie tylko jako zainfekowaną stację, ale również jako potencjalny punkt pośredniczący do dalszej komunikacji z siecią wewnętrzną. W takiej sytuacji warto przeanalizować poświadczenia dostępne na przejętym hoście, historię połączeń oraz możliwy dostęp do innych systemów.

Podsumowanie

TerminalFix wykorzystuje ten sam podstawowy mechanizm socjotechniczny co ClickFix. Użytkownik sam uruchamia polecenie przygotowane przez atakujących. Wyróżnia go jednak dalszy przebieg ataku, obejmujący DLL sideloading, steganografię, rozpoznanie Active Directory oraz utworzenie tunelu pozwalającego wykorzystać przejęty komputer jako punkt pośredniczący w dostępie do sieci wewnętrznej.

Kampania pokazuje również, jak duże znaczenie nadal ma edukacja użytkowników. Fałszywa CAPTCHA i kilka prostych instrukcji wystarczają, aby nakłonić ofiarę do samodzielnego uruchomienia pierwszego etapu wieloetapowego ataku na organizację.