Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Malware z przejętych kont na YouTube – zaciemniony kod i wykrywanie sanboxów
Badacze Sven Rath i Jaromír Hořejší z Check Point Research analizowali sieć przejętych kont YouTube, które wykorzystują platformę do rozpowszechniania malware. Pokazali przykład jednej z kampanii, w której wykorzystano ciekawą metodę do ładowania złośliwego payloadu.
TLDR:
- Badacze z Check Point Research odkryli kampanię malware na YouTube wykorzystującą przejęte konta do dystrybucji złośliwego oprogramowania, głównie cheatów do gier i cracków.
- Główne malware, GachiLoader, to zaciemniony loader Node.js, który po kilku etapach uruchamia infostealer Rhadamanthys.
- Malware weryfikuje RAM, CPU, nazwy użytkowników i hostów oraz uprawnienia użytkownika, aby potwierdzić że nie działa w środowisku VM/sandbox.
- Kampania pokazuje ryzyko jakie niesie za sobą crackowane oprogramowanie, a także uruchamianie programów z uprawnieniami administratora.
- Drugi etap malware jest realizowany przez loader Kidkadi (.node), który używa techniki Vectored Overloading z Vectored Exception Handlers (VEH) do przechwytywania funkcji Windows loadera i wstrzykiwania binarki do pamięci.
Podobnie jak we wcześniej analizowanych kampaniach, pierwszym elementem łańcucha jest przejęte konto zamieszczające filmy mające skłonić widzów do pobrania programu (malware) z zewnętrznego adresu. Mowa m.in. o cheatach do gier (narzędziach do oszukiwania podczas rozgrywek) oraz crackowanych wersjach różnych programów.

Opisy filmów zawierają hasło do archiwum zawierającego malware (które użytkownik ma pobrać z zewnętrznej strony), a także instrukcje, które zwykle obejmują wyłączenie Windows Defender.
Badacze zidentyfikowali ponad 100 filmów w ramach tej kampanii, które zgromadziły łącznie ok. 220 tys. wyświetleń. Filmy były rozpowszechniane przez 39 przejętych kont, a pierwszy film został przesłany 22 grudnia 2024 r. Oznacza to, że kampania trwa już ponad rok.
Po zgłoszeniu tych filmów do YouTube większość z nich została usunięta, choć nowe filmy będą zapewne nadal pojawiać się na przejmowanych kontach.
Badacze ustalili, że w ramach kampanii dostarczany był infostealer Rhadamanthys jako finalny payload, który dystrybuowano przez niestandardowy loader, któremu badacze nadali nazwę GachiLoader.
GachiLoader to zaciemniony malware Node.js (JavaScript) używany do wdrażania dodatkowych payloadów na zainfekowanej maszynie. Ponieważ analiza zaciemnionego kodu JavaScript wymaga dużo czasu i wysiłku, badacze stworzyli tracer dla skryptów Node.js, który umożliwia dynamiczną analizę tego typu malware.
Niektóre z analizowanych próbek GachiLoader korzystają z osobnego loadera do drugiego etapu, który badacze nazwali Kidkadi. Jest on szczególnie interesujący, ponieważ implementuje nową technikę wstrzykiwania, która “oszukuje” loader Windows, aby ładował złośliwy plik wykonywalny z pamięci zamiast oryginalnej biblioteki DLL (Dynamic-link Library).
Moduł JavaScript GachiLoader jest spakowany do samodzielnego pliku wykonywalnego przy użyciu packera nexe. Jest to narzędzie do kompilowania aplikacji Node.js do pojedynczego pliku wykonywalnego z dołączonym runtime Node.js. Choć rozmiar takiego pliku jest dość duży, ofiara spodziewa się otrzymać oprogramowanie, więc nie wzbudza to podejrzeń.
Badacze skorzystali z narzędzia nexe_unpacker do wyodrębnienia zaciemnionego kodu źródłowego JavaScript ze skompilowanego pliku.

Aby utrudnić analizę moduł GachiLoader stosuje kilka “zabezpieczeń”. Sprawdza, czy całkowita ilość RAM wynosi co najmniej 4 GB oraz czy dostępne są co najmniej 2 rdzenie CPU.
Porównuje także nazwę użytkownika z listą znanych nazw wykorzystywanych w ramach sandboxów i systemów do analizy. Wykonuje analogiczne sprawdzenie dla nazwy hosta.
Dodatkowo przeszukuje listę uruchomionych programów porównując je z listą programów sugerujących, że malware zostało uruchomione w ramach sandboxa lub maszyny wirtualnej.
Jeśli malware uzna, że środowisko nie jest sandboxem, weryfikuje uprawnienia z jakimi działa, uruchamiając net session – polecenie, które nie powinno się wykonać, jeśli zostanie uruchomione przez zwykłego użytkownika (bez uprawnień administratora). Pozwala to sprawdzić, czy dalsze etapy zadziałają wykonają się na poziomie administratora.
Jeśli polecenie się nie powiedzie, malware próbuje uruchomić się ponownie w kontekście podwyższonych uprawnień, używając następującego polecenia PowerShell:
powershell -WindowStyle Hidden -Command "Start-Process cmd.exe -Verb RunAs -WindowStyle Hidden -ArgumentList '/c "<path_to_program_itself>"'"
Chociaż wywołuje to monit UAC (User Account Control), zapewne atakujący zakładają jego zatwierdzenie przez ofiarę, ponieważ świadomie uruchamia ona instalator jakiegoś oprogramowania, co może wymagać uprawnień administracyjnych.
Aby uniknąć wykrycia payloadów wykorzystywanych w dalszych etapach, malware próbuje zakończyć proces SecHealthUI.exe (jeden z procesów Windows Defendera), uruchamiając polecenie taskkill (co ma raczej wątpliwą skuteczność, tymbardziej że SecHealthUI odpowiada tylko za interfejs graficzny) oraz dodając wykluczenia do Defendera dla ścieżek:
C:\Users\
C:\ProgramData\
C:\Windows\
oraz dla wszystkich pozostałych dysków, np. D:.
Sposób pobierania payloadu kolejnego etapu jest zależny od wersji malware. Pierwsza pobiera payload ze zdalnego URL, natomiast druga korzysta z kolejnego loadera – kidkadi.node – który ładuje finalny payload.

GachiLoader najpierw zbiera informacje o hoście, na którym działa (np. używane programy antywirusowe i wersja systemu operacyjnego), i wysyła je (POST na endpoint /log) do serwerów C2. Badacze zidentyfikowali wiele adresów C2 stworzonych zapewne w celu zapewnienia niezawodności infrastruktury.
Następnie wykonywane jest żądanie GET do endpointu /richfamily/<key> (gdzie <key> jest wartością unikalną dla każdej próbki) z nagłówkiem X-Secret: gachifamily. W odpowiedzi serwer zwraca zakodowany w base64 adres URL finalnego payloadu.
Ten finalny payload może zostać pobrany tylko przy użyciu poprawnego nagłówka X-Secret – tym razem jako wartość wstawiany jest unikalny klucz osadzony w binarce.
Finalny payload jest zapisywany pod losową nazwą z puli “wiarygodnych” (m.in. KeePass, GoogleDrive itp.) w katalogu %TEMP%. W rzeczywistości plik zawiera stealer Rhadamanthys.
Drugi wariant nie łączył się z serwerem C2 w celu pobrania drugiego payloadu. Posiadał już osadzony w kodzie payload, który był wykonywany przez inny loader zapisywany w katalogu %TEMP% jako kidkadi.node:

Pliki .node są natywnymi dodatkami dla Node.js, które w istocie są po prostu bibliotekami DLL wywoływanymi z poziomu kodu Node.js. Loader przekazywał payload jako binarkę do Kidkadi.
Badacze odkryli, że wykorzystano do tego nową odmianę Module Overloading, wykorzystującą Vectored Exception Handlers (VEH), aby “oszukać” system Windows i uruchomić finalny payload podczas wywoływania LoadLibrary w celu załadowania dowolnej biblioteki DLL. Nazwali tę metodę Vectored Overloading.
VEH to mechanizm obsługi wyjątków na poziomie użytkownika, który pozwala programowi reagować na błędy/wyjątki generowane przez system operacyjny lub procesor. W tej kampanii malware wykorzystuje VEH do manipulacji działaniem loadera Windows.
Technika polega na ustawieniu hardware breakpoint, który wyzwala wyjątek w momencie wykonania konkretnej instrukcji. Gdy wyjątek zostanie zgłoszony, jego obsługa trafia do zarejestrowanego VEH. Dzięki temu malware może przechwycić wywołania funkcji loadera Windows, takich jak NtOpenSection czy NtMapViewOfSection oraz zmienić ich zachowanie.
W praktyce oznacza to, że malware emuluje wybrane wywołania systemowe (syscall) zamiast faktycznie przekazywać je do kernela. Badacze opublikowali implementację 64-bitowego wariantu tej metody.
We wszystkich wariantach tej kampanii analizowanych przez badaczy końcowe malware stanowił stealer Rhadamanthys. Po pełną analizę techniczną odsyłamy do tekstu badaczy.
Kampania opiera się m.in. na zaufaniu do platformy YouTube, gdzie ofiary są nakłaniane do instalacji malware. Polecamy unikać crackowanego oprogramowania i cheatów, ponieważ – jak widać na przykładzie tej kampanii – jest to jeden z obszarów chętnie wykorzystywanych przez atakujących.
Instalowanie programu z zaszyfrowanego archiwum, do którego link znaleźliśmy w poradniku na YouTube już powinno wzbudzić nasze podejrzenia. Warto też zwrócić szczególną uwagę na programy żądające uprawnień administratora i/lub proszące o wyłączenie narzędzi antywirusowych.
Źródło: research.checkpoint.com
~Tymoteusz Jóźwiak
