{
	"id": "14c0de58-ee45-4fdf-a2f7-0df838140c39",
	"created_at": "2026-04-06T00:08:50.717665Z",
	"updated_at": "2026-04-10T13:11:49.841702Z",
	"deleted_at": null,
	"sha1_hash": "98b09e3bb63842c7b953abf8d30f0be962b17595",
	"title": "Gratisspiele mit ungeahnten Kosten",
	"llm_title": "",
	"authors": "",
	"file_creation_date": "0001-01-01T00:00:00Z",
	"file_modification_date": "0001-01-01T00:00:00Z",
	"file_size": 1117021,
	"plain_text": "Gratisspiele mit ungeahnten Kosten\r\nBy G DATA Security Center\r\nPublished: 2026-03-02 · Archived: 2026-04-06 00:03:39 UTC\r\nPiviGames, eine beliebte spanische Gaming-Plattform, ist in der Gaming-Community dafür bekannt, Download-Links zu raubkopierten PC-Spielen anzubieten. Eine solche Plattform bietet attraktiven Inhalt und hat im Laufe\r\nder Jahre einen Ruf innerhalb der Gaming-Community aufgebaut. Allerdings ist PiviGames mehr geworden als\r\nnur eine Quelle für kostenlose Unterhaltung; sie hat sich zu einem vollwertigen Malware-Verbreitungs-Hub\r\nentwickelt, über den bösartige Akteure ahnungslose Nutzer kompromittieren können.\r\nVon Karsten Hahn und John Dador\r\nIn diesem Artikel schauen wir uns an, wie diese Piraten-Gaming-Plattform Spaß und „kostenlose“ Unterhaltung in\r\neine Gelegenheit für Cyberkriminelle verwandelt – und warum ein einziger Download eines raubkopierten Spiels\r\nSie mehr kosten kann als nur ein paar Stunden Spielzeit.\r\nDiese Blogserie besteht aus zwei Teilen. Dieser Artikel ist Teil eins und behandelt die Erstinfektion sowie\r\nHijackLoader im Detail. Der zweite Teil beschreibt die ACRStealer-Payload.\r\nInitiale Infektion\r\nIm November 2025 stießen wir auf einen Reddit-Beitrag (Abbildung 1) über bösartige Aktivitäten. Der Reddit-Nutzer gab an, von einem unbekannten Infostealer kompromittiert worden zu sein, nachdem er ein Spiel\r\nheruntergeladen hatte. Die zunächst gemeldete Datei gab sich als Python-basiertes Setup aus, aber bei unserer\r\nUntersuchung stellte sich heraus, dass die heruntergeladene Datei inzwischen durch eine andere ersetzt worden\r\nwar. Das war für uns ein Hinweis darauf, dass die URL weiterhin aktiv ist und nach wie vor Infektionen\r\nverursacht.\r\nWir baten den betroffenen Nutzer um die Download-URL. Das führte uns zu PiviGames, einer Gaming-Seite.\r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 1 of 14\n\nAbb. 1: Reddit-Post zu dem verdächtigen Python-Setup\r\nPiviGames-Weiterleitung als Malvertising\r\nDie Analyse der Website zeigt, dass sie Cloudflares Challenge- und Telemetrie-Skripte einsetzt, um seriös zu\r\nwirken. Bei genauerer Betrachtung lädt sie jedoch gleich zu Beginn des Codes eine JavaScript-Datei\r\nnamens pgedshop.js. Diese JavaScript-Datei ist dafür verantwortlich, Nutzer auf bösartige Seiten weiterzuleiten.\r\nDas Skript enthält zwei fest definierte URLs und nutzt Browser-Cookies, um das Weiterleitungsverhalten der Seite\r\nzu steuern. Beim ersten Besuch eines Nutzers leitet das Skript auf hxxps://adbuho[.]shop/HIx0J weiter, was wie\r\nein Werbenetzwerk aussieht. Danach markiert es die verwendeten Cookies so, dass weitere Besuche\r\nzu hxxps://pulseadnetwork[.]com/jump/next.php?r=2558259 weitergeleitet werden – ebenfalls ein harmloses\r\nWerbenetzwerk (ohne Hosting einer schädlichen Datei).\r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 2 of 14\n\nAbb. 2: Weiterleitung von pgeshop.js\r\nDie URL hxxps://adbuho[.]shop/HIx0J leitet auf eine Domain weiter, die aus zufälligen Zeichen besteht, gefolgt\r\nvon einer Top-Level-Domain „.pro/“ und einem zusätzlichen zufälligen Pfad. Diese Weiterleitungskette führt\r\nschließlich zu einem MediaFire-Download-Link.\r\nDer MediaFire-Link hostet ein ZIP-Archiv mit dem Namen „Full Version Setup 6419 Open.zip“. Auffällig ist,\r\ndass das Passwort direkt im Dateinamen eingebettet ist („6419“).\r\nNach dem Entpacken der ZIP-Datei sind mehrere Ressourcendateien vorhanden sowie eine einzelne ausführbare\r\nDatei mit dem Namen Setup.exe[2].\r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 3 of 14\n\nAbb. 3: Inhalt des Ordners \"Full Version Setup 6419 Open.zip\"\r\nHijackLoader\r\nDie Setup.exe[2] ist ein sauberer Game-Launcher, führt jedoch über DLL-Sideloading bösartigen Code aus,\r\nwenn das Spiel Conduit.Broker.dll[3] lädt.\r\nConduit.Broker.dll[3] gehört zur HijackLoader-Familie. Bedeutende Analysen und Beschreibungen dieser\r\nLoader-Familie wurden bereits von Nikolaos Pantazopoulos in [zscaler23] und [zscaler25] sowie von Ryan Weil\r\nin [trellix25] veröffentlicht. Angesichts der Komplexität der Malware glauben wir, dass unsere Analyse einige\r\nbislang nicht dokumentierte Details ergänzt. Außerdem stellen wir für HijackLoader ein Tooling auf Github bereit.\r\nStufe 1: ConduitBroker.dll\r\nDie DLL exportiert 50 Funktionen und besteht größtenteils aus sauberem Code. Allerdings ist die\r\nFunktion BrokerManagerClient_AddPathMapping mit bösartigem Code gepatcht und reicht in andere Import-Funktionen hinein, etwa BrokerManagerClient_MapPath. Wer diesen Patch eingefügt hat, hat offenbar nicht\r\ngeprüft, ob die Größe überhaupt in diese Funktion passt. Das führt auch zu seltsamem Verhalten in IDA Pro, da\r\neinige dieser Funktionen mitten in gepatchten Instruktionen beginnen (siehe Abbildung 4) und IDA darauf besteht,\r\nFunktionsdefinitionen aus den Exports beizubehalten.\r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 4 of 14\n\nAbb. 4: BrokerManagerClient_MapPath startet ein Byte nach dem eigentlichen Start der Assembler-Befehle mov edx, cs:dword_1800748D7\r\nConduit.Broker.dll verwendet Inline-API-Resolving, d. h. es gibt keine dedizierte Funktion, die die Malware\r\nnutzt, um APIs dynamisch aufzulösen. Stattdessen ist der vollständige Code zum Durchlaufen des PEB („PEB\r\nwalking“) jedes Mal inline eingebettet, wenn ein Funktionsaufruf erfolgen soll. Inline-API-Resolving haben wir in\r\nden letzten zwei Jahren in verschiedenen Samples gesehen, zum Beispiel in RisePro – dort allerdings mit einem\r\nanderen Hash-Algorithmus.\r\nDer API-Hashing-Algorithmus ähnelt djb2; statt den Seed mit 5381 und den Multiplikator mit 33 zu initialisieren,\r\nverwendet die Malware jedoch 0x8798338 als Seed und 2 als Multiplikator. Der genaue Hash-Algorithmus lautet\r\nwie folgt (Python-3-Implementierung):\r\ndef calc_hash(apiname):\r\n hash = 0x8798338\r\n for c in apiname:\r\n hash = (ord(c) + 2 * hash) \u0026 0xFFFFFFFF\r\n return hash \u0026 0xFFFFFFFF\r\nDie Malware entschlüsselt Teile der Datei Groumcumgag.ic[4], die sich im selben Ordner wie die DLL befindet.\r\nDer Header des verschlüsselten Daten-Blobs beginnt bei Offset 0x4A19: Das erste DWORD ist die Größe der\r\nverschlüsselten Daten (0x2080), und das zweite DWORD ist ein XOR-Key, in diesem Fall 0x1CAB3515. Direkt\r\ndanach folgt der XOR-verschlüsselte Datenbereich selbst (siehe Abbildung 5).\r\nAbb 5: Der verschlüsselte Blob in der Datei Groumcumgag.ic beginnt mit Größe und dem Schlüssel\r\nbei Offset 0x4A19\r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 5 of 14\n\nWir haben ein Entschlüsselungsskript für Groumcumgag.ic erstellt, das Sie hier herunterladen können. Der\r\nentschlüsselte Blob enthält Shellcode für die nächste Stufe sowie den Namen einer DLL, in diesem\r\nFall „evr.dll“ (Enhanced Video Renderer).\r\nConduit.Broker.dll lädt anschließend die nächste Stufe mittels Module Stomping: Zuerst lädt sie die legitime\r\nSystem32-Bibliothek „evr.dll“ und injiziert den entschlüsselten Shellcode in den BaseOfCode von „evr.dll“.\r\nDanach ruft sie eine Funktion des Shellcodes auf und übergibt dabei eine Struktur als Argument, die unter\r\nanderem den Dateinamen „Zootkumbak.uhp“ enthält. Bei dieser Datei handelt es sich um die Konfiguration der\r\nMalware.\r\nStage 2: evr.dll-Shellcode und Module Table\r\nDer Shellcode in evr.dll hat hauptsächlich die Aufgabe, die Hauptkonfiguration aus der\r\nDatei Zootkumbak.uhp[5]zusammenzusetzen und zu entschlüsseln.\r\nZunächst löst er jedoch Imports auf und prüft, ob bestimmte Prozesse vorhanden sind, indem er Hashes für die\r\nProzessnamen berechnet. Findet er einen der anvisierten Prozesse, verzögert er die Ausführung um fünf Sekunden.\r\nDie Hash-Berechnungsfunktion für Imports und Prozessnamen basiert auf einem konstanten Multiplikator aus der\r\nvorherigen Stufe; wir erwarten daher, dass sich dieser Wert bei anderen HijackLoader-Varianten ändern kann.\r\nAbb 6: Die Import- und Prozess-Hashingfunktion der zweiten Stufe nutzt einen Multiplikator aus\r\naus vorigen Stufe\r\nAls Nächstes verarbeitet der Shellcode der zweiten Stufe die Datei Zootkumbak.uhp[5]. Die verschlüsselten\r\nDaten der Konfiguration sind in 90 Fragmente aufgeteilt, die über die Datei verteilt sind.\r\nUm herauszufinden, wo sich die einzelnen Fragmente befinden, führt HijackLoader eine Pattern-Suche durch.\r\nDafür verwendet er das Suchmuster ‘?????@IDAT’, das HijackLoader als ein Wildcard-behaftetes 4-Byte-Feld interpretiert, auf das direkt der String ‘IDAT’ folgt. Der Wildcard-Wert entspricht der Größe des aktuellen\r\nChunks. In unserem Sample gibt es insgesamt 90 Chunks.\r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 6 of 14\n\nNach dem ersten ‘IDAT’-Pattern beginnt der Header unserer verschlüsselten Konfiguration. Der vollständige\r\nHeader inklusive Suchpattern sieht so aus:\r\nchunk_size | ‘IDAT’ | magic | xor_key | compressed_size | uncompressed_size\r\nJeder dieser Werte ist vier Bytes lang. Der XOR-Key entschlüsselt alle Chunks der\r\nKonfiguration. compressed_size ist die Gesamtgröße aller Chunks vor der\r\nDekompression, uncompressed_size entsprechend die Gesamtgröße nach der Dekompression. Nach diesem\r\nHeader beginnen die verschlüsselten Daten des ersten Chunks.\r\nBei allen weiteren ‘IDAT’-Chunks beginnen die verschlüsselten Daten direkt nach dem ‘IDAT’-Pattern.\r\nUm die Konfigurationsdatei Zootkumbak.uhp zu deobfuskieren, entschlüsseln wir jeden Chunk mit dem XOR-Key aus dem Header, hängen die Chunks in der Reihenfolge aneinander, in der sie gefunden wurden, und\r\ndekomprimieren sie anschließend mit LZNT1.\r\nDie Konfiguration enthält unter anderem die verschlüsselte Payload, verschiedene Einstellungen sowie\r\neine Module Table mit Namen und Offsets zu weiterer Konfigurations-Daten.\r\nWir haben einen Konfigurations-Extractor erstellt, der Zootkumbak.uhp deobfuskiert, daraus Einstellungen\r\nextrahiert, die Payload dump’t und alle Einträge der Module Table ausgibt.\r\nWir verwenden hier den Begriff „Module Table“, um konsistent mit der Terminologie früherer Artikel zu bleiben\r\n([zscaler23, zscaler25, trellix25]). Der Inhalt ist jedoch nicht strikt auf Module beschränkt. Die Tabelle kann\r\ntatsächlich jegliche Art von Daten enthalten. In einigen Fällen –\r\nkonkret MUTEX, COPYLIST, SM und CUSTOMINJECTPATH– sind die Einträge string-basierte\r\nEinstellungen oder Listen von Strings. In anderen Fällen sind es Konfigurationswerte, Shellcode oder vollständige\r\nPE-Images.\r\nDas vorliegende Sample enthält die folgenden Module-Table-Einträge (für String-Einträge sind die Werte\r\nangegeben). Beschreibungen zu diesen Einträgen finden sich in [zscaler23, zscaler25]:\r\nModule Value\r\nAVDATA\r\nbenutzerdefinierte strukturierte Daten mit CRC-Hashes von AV-Prozessnamen\r\nund Flags; kann mit avdata_decoder.py decodiert werden.\r\nESAL Shellcode, unterstützt bei Injection\r\nESAL64 Shellcode, unterstützt bei Injection\r\nESLDR Shellcode, unterstützt bei Injection\r\nESLDR64 Shellcode, unterstützt bei Injection\r\nESWR Shellcode, unterstützt bei Injection\r\nESWR64 Shellcode, unterstützt bei Injection\r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 7 of 14\n\nModule Value\r\nFIXED\r\nPE-Datei, hier zip.exe signiert von „VMWare Inc“, dient als Host für Process\r\nDoppelgänging\r\nLauncherLdr64 PE-Datei zum Laden der Payload\r\nmodCreateProcess Shellcode, hilft bei Prozess-Erstellung\r\nmodCreateProcess64 Shellcode, hilft bei Prozess-Erstellung\r\nmodTask Shellcode, für Persistenz\r\nmodTask64 Shellcode, für Persistenz\r\nmodUAC Shellcode, UAC-Bypass\r\nmodUAC64 Shellcode, UAC-Bypass\r\nmodWD Shellcode, Defender-Evasion\r\nmodWD64 Shellcode, Defender-Evasion\r\nmodWriteFile Shellcode\r\nmodWriteFile64 Shellcode\r\nrshell Shellcode, lädt die Payload via Module Stomping\r\nrshell64 Shellcode, lädt die Payload via Module Stomping\r\nti Shellcode, Hauptmodul, 32-bit\r\nti64 Shellcode, Hauptmodul, 64-bit\r\ntinycallProxy Shellcode, führt API-Calls aus\r\ntinycallProxy64 Shellcode, führt API-Calls aus\r\ntinystub PE file stub\r\ntinystub64 PE file stub\r\ntinyutilitymodule.dll PE-Datei\r\ntinyutilitymodule64.dll PE-Datei\r\nSM String „mpr.dll“, Name der sauberen Ziel-DLL für Module Stomping\r\nCOPYLIST\r\nString-Luiste mit den folgenden Dateinamen:\r\nConduit.Broker.dll \r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 8 of 14\n\nModule Value\r\nD_C.exe \r\nGroumcumgag.ic \r\nTE.Common.dll \r\nTE.Host.dll \r\nTE.Loaders.dll \r\nTE.WinRT.dll \r\nWex.Common.dll \r\nWex.Communication.dll \r\nWex.Logger.dll \r\nZootkumbak.uhp \r\n!D_C.exe \r\n~TE.Loaders.dll \r\nMUTEX  String „RXRCJOIAVDWOEK“, als Mutex-Name genutzt\r\nCUSTOMINJECT PE-Datei (MicrosoftEdgeUpdate), wird als Injection-Host verwendet\r\nCUSTOMINJECTPATH \r\nString „%TEMP%\\d0eccdb9\\MicrosoftEdgeUpdate.exe“, Zielpfad zum Ablegen\r\nvon CUSTOMINJECT\r\nX64L Shellcode\r\nDer Shellcode der zweiten Stufe lädt das Hauptmodul aus der Module Table – in diesem Fall den Shellcode ti64.\r\nDie Konfigurationsdatei enthält außerdem den Ziel-DLL-Pfad für die nächste Stufe in ihrem Haupt-Header (nicht\r\nin der Module Table): %windir%\\SysWOW64\\rasapi32.dll.\r\nWie in der vorherigen Stufe „stompt“ HijackLoader auch hier das Modul: Er lädt die Ziel-DLL rasapi32.dll,\r\ninjiziert den Shellcode der nächsten Stufe in den BaseOfCode des Targets und führt ihn aus.\r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 9 of 14\n\nAbb 7: HijackLoader extrahiert den Shellcode von ti64 und injiziert ihn per Module Stomping in die\r\nrasapi32.dll\r\nDer evr.dll-Shellcode übergibt die deobfuskierte Konfigurations-Daten sowie die Module Table als Argumente an\r\ndie dritte Stufe.\r\nStufe 3: ti64 module in rasapi32.dll\r\nDer Code dieses Shellcodes ist umfangreich, weil er alle möglichen Einstellungen der Konfiguration und die\r\nModule-Table-Einträge abarbeitet, die HijackLoader verwenden kann. Da er den größten Teil des interessanten\r\nCodes dieser Loader-Familie enthält, wird er häufig als Hauptmodul von HijackLoader bezeichnet.\r\nDer ti64-Shellcode beginnt damit, Import-Funktionen über API-Hashing aufzulösen. Dieses Mal nutzt\r\ner CRC32 als Hash-Algorithmus.\r\nDanach holt er sich den SM-Eintrag aus der Module Table (hier: „mpr.dll“) und speichert ihn als Ziel-DLL für\r\nModule Stomping.\r\nAnschließend prüft das Sample NTDLL auf Inline-Hooks und entfernt sie, falls welche gefunden werden.\r\nFalls der Module-Table-Eintrag ANTIVM vorhanden ist, führt er verschiedene Anti-VM-Checks aus. Im\r\nvorliegenden Sample gibt es diesen Eintrag jedoch nicht.\r\nWenn ein bestimmtes Flag in der Konfiguration gesetzt ist, kopiert HijackLoader alle Dateien, die im Module-Table-Eintrag COPYLIST aufgeführt sind, in ein Unterverzeichnis unter %ALLUSERSPROFILE% und startet\r\nsich dort neu. Die Konfiguration definiert dieses Unterverzeichnis bei Offset 0x13; in unserem Sample ist\r\ndas „d0eccdb9“.\r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 10 of 14\n\nDer ti64-Shellcode lädt außerdem die verschlüsselte Payload aus der Konfiguration. Dazu ermittelt er drei\r\nWerte: relativer Daten-Offset, Key-Größe und Größe der verschlüsselten Daten.\r\nBei Offset 0xeec (ausgehend von der Module Table) steht der relative Offset zu den verschlüsselten Daten.\r\nDieser Offset ist relativ zum Feld module count bei 0xee4, d. h. der tatsächliche Offset lautet: module\r\ntable offset + 0xee4 + relative offset\r\nBei Offset module table + 0xca4 steht die Key-Größe in DWORDs.\r\nBei Offset module table + 0xca8 steht die Größe der verschlüsselten Daten.\r\nDie verschlüsselten Daten beginnen mit dem XOR-Key, der die Payload in den verbleibenden Daten entschlüsselt.\r\nUnser Tool entschlüsselt und dumpt die Payload als Datei namens PAYLOAD in denselben Ordner wie die\r\nModule-Table-Einträge.\r\nZusammengefasst ist der ti64-Shellcode ein Orchestrator für die meisten Module in der Module Table und\r\nverantwortlich für folgende HijackLoader-Funktionen:\r\nErkennung von AV-Produkten und anpassbares Verhalten basierend auf AVDATA-Flags, Prozess-CRC-Hashes und erkannten Produkten\r\nPersistenz-Module\r\nAnti-VM-Module\r\nUAC-Bypass-Module\r\nAuswahl einer von sechs Payload-Injection- bzw. Lade-Techniken\r\nAnpassbare Injection-Host-Dateien über FIXED und CUSTOMINJECT\r\nInterprozess-Kommunikation\r\nErkennung und Entfernung von NTDLL-Hooks\r\nProzess-Injection in ti64 und nach Stufe 3\r\nProcess Injection in ti64 und über Stufe 3\r\nHijackLoader implementiert mehrere Methoden, um die Payload in ti64 zu laden und zu injizieren.\r\nVerschiedene injection_flag-Bitmasks sowie das Vorhandensein eines Relocation Directory bestimmen, welche\r\nInjection-Funktion ausgewählt wird. Es ist nicht möglich, die Bedeutung all dieser Flags anhand dieses Samples\r\nallein vollständig zu bestimmen, da einige lediglich aus der Konfiguration gelesen werden.\r\nAußerdem gibt es viel duplizierten Code, und die Teile von ti64, die die passende Injection-Funktion auswählen,\r\nsind zwischen dem riesigen Entry-Point und verschiedenen Entscheidungsbäumen in Unterfunktionen verteilt.\r\nDas macht es insgesamt schwierig, die exakten Bedingungen zu bestimmen, unter denen HijackLoader welche\r\nInjection-Funktion wählt.\r\nInsgesamt fanden wir mindestens sechs unterschiedliche Methoden zum Laden bzw. Injizieren der Payload (ohne\r\nminimale Unterschiede ansonsten duplizierter Funktionen mitzuzählen):\r\nZwei Varianten von Process Hollowing\r\nZwei Varianten eines Hybrids aus Process Doppelgänging und Mapped Section Injection\r\nMapped Section Injection\r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 11 of 14\n\nPayload ausführen über das ESWR-Modul\r\nPayload ausführen über Process Doppelgänging und ESWR-Modul\r\nPayload ausführen über das LauncherLdr/LauncherLdr64-Modul\r\nWir beschreiben nachfolgend zwei repräsentative Techniken (1 und 2).\r\nBeim Process Hollowing kopiert HijackLoader das in CUSTOMINJECT gespeicherte PE-Image an den\r\nin CUSTOMINJECTPATHangegebenen Pfad. In diesem Sample lautet der\r\nPfad %TEMP%\\d0eccdb9\\MicrosoftEdgeUpdate.exe, und die CUSTOMINJECT-Executable ist tatsächlich\r\neine legitime 32-Bit-MicrosoftEdgeUpdate.exe.\r\nAnschließend lädt und startet das ti64-Modul das modCreateProcess64-Modul, um einen\r\nsuspendierten MicrosoftEdgeUpdate.exe-Prozess zu erstellen. Es injiziert den 32-Bit-Shellcode des rshell-Moduls in die 32-Bit-MicrosoftEdgeUpdate.exe und führt ihn aus. Das injizierte rshell nutzt dann Heaven’s\r\nGate mit einem call-add-retf-Trampolin, um in 64-Bit-Code zu wechseln, und verwendet Module Stomping, um\r\ndie Payload zu laden.\r\nDer ti64-Shellcode beim Process-Doppelgänging-Hybrid schreibt das saubere PE aus dem Module-Table-Eintrag FIXED auf die Festplatte und nennt es „com_web_filter_v4_0“ (dieser Name ist Teil der Konfiguration\r\naußerhalb der Module Table).\r\nIn unserem Sample ist FIXED ein sauberes zip.exe, signiert von „VMWare Inc“. Das Modul ti64 nutzt diese\r\nsaubere Datei als Host für Process Doppelgänging, indem es eine neue .dat-Section zur Datei hinzufügt und\r\ndas rshell-Modul über transaktionales Schreiben und Rollback-Operationen in diese Section schreibt.\r\nAnschließend führt es Mapped Section Injection aus, um die .dat-Section in den Remote-Prozess\r\nvon MicrosoftEdgeUpdate.exe zu laden. Dieser Prozess führt wiederum rshell aus, um die Payload über Module\r\nStomping zu laden.\r\nHijackLoaders Interprozess-Kommunikation\r\nHijackLoader verwendet zwei Wege für Interprozess-Kommunikation.\r\nErstens speichert er verschlüsselte Daten – darunter die Module Table und Injection-Informationen – in\r\ntemporären Dateien.\r\nZweitens speichert er Daten in Umgebungsvariablen, einschließlich der Dateinamen der oben genannten\r\ntemporären Dateien. Die Variablennamen dieser Umgebungsvariablen sind kodiert. Der Generator für die\r\nVariablennamen erhält einen Hash, der repräsentiert, wofür die Variable steht. Zuerst erzeugt HijackLoader einen\r\nsystemspezifischen Seed, indem er den CRC32-Hash des Ergebnisses von GetComputerNameW berechnet.\r\nDann XORt er den Seed mit dem Hash-Wert. Anschließend übergibt er den Wert an srand(). Nachfolgende\r\nAufrufe von rand() erzeugen einen Großbuchstaben-String variabler Länge.\r\nDie Bedeutung einiger dieser Hashes ist in der Tabelle unten aufgeführt und kann für Logging der Interprozess-Kommunikation genutzt werden.\r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 12 of 14\n\nAbb 10: Erstellung der Umgebungsvariablen für die Interprozess-Kommunikation\r\nDie Bedeutung einiger dieser Hashes ist in der Tabelle unten aufgeführt und kann für Logging der Interprozess-Kommunikation genutzt werden.\r\nInitial hash Meaning\r\n0xe1abd1c2 temporary file name, contains injection information\r\n0xf1e5a323 command line string\r\n0xaabbccdd injection flags 1\r\n0xaaeecedb injection flags 2\r\n0xccbbccdd injection size\r\n0xbbaaccdd injection address\r\n0xaebecede injection meta data\r\n0xdabecede image base of inject PE\r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 13 of 14\n\nInitial hash Meaning\r\n0xa5b5c41a \"cmd.exe /start\" command line string\r\nLovecraftsche Malware: eine Geduldsprobe\r\nDiese HijackLoader-Analyse ist keineswegs vollständig; wir haben uns auf die Details konzentriert, die für das\r\nvorliegende Sample am wichtigsten sind.\r\nIn früheren Artikeln über HijackLoader gab es mehrere kleine, aber bemerkenswerte Hinweise auf die\r\nCodequalität – und nachdem wir uns selbst durch diesen Code gearbeitet haben, verstehen wir, warum.\r\nDas ti64-Modul ist ein großes Stück Spaghetti-Software in Form von purem Shellcode. Im Decompiler dauert es\r\nmehrere Sekunden, durch die lokalen Variablen-Deklarationen der Entry-Point-Funktion zu scrollen – obwohl der\r\nCode nicht obfuskiert ist, abgesehen vom Hash-Resolving von APIs, Modulen und Prozessnamen. Das\r\nUmbenennen einer einzigen Variablen im Decompiler friert die Anwendung für drei Sekunden ein. Die mehreren\r\nStrukturen, die wir erstellt haben, um den Code verständlicher zu machen, haben Größen von 0x100 bis 0x500\r\nBytes. Diese Strukturen werden in anderen Modulen des Codes wiederverwendet.\r\nVerglichen mit anderen tiefgehenden Analysearbeiten, die wir zuvor durchgeführt haben, ist das keine Erfahrung,\r\ndie wir sehr bald wiederholen möchten.\r\nUnser nächster Artikel wird die Payload dieses HijackLoader-Samples im Detail beschreiben – ACRStealer.\r\nSample hashes\r\n[1] FuII Verslon Setup 6419 σρєи Download.zip (sic!), archive with all files \r\n418a1a6b08456c06f2f4cc9ad49ee7c63e642cce1fa7984ad70fc214602b3b1 \r\n[2] Setup.exe, loads Conduit.Broker.dll  \r\n5d11218f67cfe78347280b0e1a06ade63c890ac78f970f57b0200ff5be8aa77c \r\n[3] Conduit.Broker.dll, sideloaded DLL with malicious patch \r\n772fde719a53147 6740db34df6bdb530f4e96acfd9a92e30ec0476fe65f588f5  \r\n[4] Groumcumgag.ic, encrypted stage 2 shellcode \r\nfed719608185e516c70a1e801b5c568406ef6e1c292e381ba32825c6add93995 \r\n[5] Zootkumbak.uhp, encrypted configuration \r\naf2ade19542dde58b424618b928e715ebf61dffb6d8ca9d4b299e532dfa3b763 \r\n[6] ACRStealer, payload\r\n59202cb766c3034c308728c2e5770a0d074faa110ea981aa88f570eb402540d2\r\nSource: https://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nhttps://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader\r\nPage 14 of 14",
	"extraction_quality": 1,
	"language": "DE",
	"sources": [
		"Malpedia"
	],
	"origins": [
		"web"
	],
	"references": [
		"https://blog.gdata.de/2026/02/38376-pivigames-verbreitet-hijackloader"
	],
	"report_names": [
		"38376-pivigames-verbreitet-hijackloader"
	],
	"threat_actors": [
		{
			"id": "2864e40a-f233-4618-ac61-b03760a41cbb",
			"created_at": "2023-12-01T02:02:34.272108Z",
			"updated_at": "2026-04-10T02:00:04.97558Z",
			"deleted_at": null,
			"main_name": "WildCard",
			"aliases": [],
			"source_name": "ETDA:WildCard",
			"tools": [
				"RustDown",
				"SysJoker"
			],
			"source_id": "ETDA",
			"reports": null
		},
		{
			"id": "256a6a2d-e8a2-4497-b399-628a7fad4b3e",
			"created_at": "2023-11-30T02:00:07.299845Z",
			"updated_at": "2026-04-10T02:00:03.484788Z",
			"deleted_at": null,
			"main_name": "WildCard",
			"aliases": [],
			"source_name": "MISPGALAXY:WildCard",
			"tools": [],
			"source_id": "MISPGALAXY",
			"reports": null
		}
	],
	"ts_created_at": 1775434130,
	"ts_updated_at": 1775826709,
	"ts_creation_date": 0,
	"ts_modification_date": 0,
	"files": {
		"pdf": "https://archive.orkl.eu/98b09e3bb63842c7b953abf8d30f0be962b17595.pdf",
		"text": "https://archive.orkl.eu/98b09e3bb63842c7b953abf8d30f0be962b17595.txt",
		"img": "https://archive.orkl.eu/98b09e3bb63842c7b953abf8d30f0be962b17595.jpg"
	}
}