KREMLIN-Malware überschreibt Chromium-Vertrauensdaten und kapert brasilianische Banking-Sitzungen
KREMLIN überschreibt Chromium-Vertrauensdaten, installiert gefälschte Chrome- und Edge-Erweiterungen und stiehlt brasilianische Banking-Sitzungen.
Von künstlicher Intelligenz erzeugter Text, ohne menschliche Überprüfung veröffentlicht. KI-Transparenz
Illustration mit KI erzeugt
Eine finanziell motivierte Malware-Kampagne installiert nicht autorisierte Chrome- und Edge-Erweiterungen, indem sie die Integritätsdaten rekonstruiert, mit denen Chromium Browserprofile schützt. Die Erweiterungen können Zugangsdaten für brasilianische Bankkonten, Sitzungstoken und weitere vertrauliche Informationen abgreifen.
Elastic Security Labs verfolgt die Kampagne unter der Bezeichnung REF9334 und nennt das Malware-Ökosystem KREMLIN – ein Name, den der Autor Kr3mlin4rt1st gewählt hat. Die Kampagne ist seit Mai 2025 aktiv und umfasst sieben beobachtete Kampagnen mit Ködern, die sich als zwölf brasilianische Banken ausgeben.
Elastic veröffentlichte seine technische Untersuchung zu KREMLIN am 14. September 2026. Anschließend wurde die Kampagne in einen Malware-Überblick von Security Affairs aufgenommen, der am 20. September 2026 erschien.
Trotz ihres Namens wurde die Kampagne nicht Russland zugeschrieben. Portugiesischsprachige Nachrichten und Kommentare im Quellcode sowie Ethereum-Transaktionen, die sich auf die Arbeitszeiten in São Paulo konzentrieren, deuten vielmehr auf eine auf Brasilien ausgerichtete Kampagne hin.
Gefälschtes Dokument startet mehrstufige Windows-Infektion
KREMLIN-Infektionen beginnen damit, dass ein Benutzer manuell eine JavaScript-Datei ausführt, die als Bankdokument, Rechnung oder Unternehmensdatei getarnt ist. Der Loader verwendet eine begrenzte Verschleierung, darunter generische Funktionsnamen, indizierte String-Tabellen, Klammernotation und mehrere aufeinanderfolgende JavaScript-Stufen.
Ein analysierter initialer Loader weist den folgenden SHA-256-Hash auf:
106eac79396a3ff77b8f375c391260ce422be2ae4d55d3aa75b2635cbdc0fa42
Das Skript zeigt zunächst eine gefälschte Fehlermeldung an und erweckt beim Opfer den Eindruck, das vermeintliche Dokument habe sich lediglich nicht öffnen lassen. Es erstellt ein temporäres Skript, das shell.Popup aufruft, und löscht es anschließend wieder. Der Dateiname folgt diesem Muster:
popup_{date}_{random}.js
Ein weiteres mit dieser Phase verknüpftes Sample weist den folgenden Hash auf:
5ece7fd3766b0b7f8aadefa562313cea6c3c94f9398658dd389910e5be44f552
Bevor der Loader fortfährt, überprüft er seine Umgebung. Er zählt Dateien auf dem Desktop und fragt über Windows Management Instrumentation die Anzahl der laufenden Prozesse ab. Die Ausführung wird beendet, wenn sich weniger als fünf Dateien auf dem Desktop befinden oder das System über weniger als 50 Prozesse verfügt – Bedingungen, die häufig in neu eingerichteten Analyseumgebungen auftreten.
Der Loader meldet fehlgeschlagene Prüfungen über:
/api/log_loader?hash=
Das analysierte Sample kontaktierte:
hxxps://connection[.]upgradeonline[.]site
Besteht der Host die Überprüfung, lädt die erste Stufe eine Node.js-Laufzeitumgebung herunter. Außerdem verwendet sie das Microsoft-Tool certutil, um eine weitere JavaScript-Stufe zu dekodieren und zu extrahieren. Dadurch wird die Infektionskette mit legitimen Windows- und Entwicklerwerkzeugen vermischt.
Persistenz tarnt sich als Node.js-Updater-Aufgabe
Die zweite Stufe extrahiert eine geplante Aufgabe aus einem eingebetteten CAB-Archiv. Sie registriert die Aufgabe unter dem plausibel wirkenden Namen:
MicrosoftNodeRuntimeUpdater
Die Beschreibung der Aufgabe verweist auf die Node.js-V8-Laufzeitumgebung und Googles V8-Engine, sodass der Eintrag wie Bestandteil legitimer Software wirkt. Die Aufgabe wird eine Minute nach der Benutzeranmeldung ausgeführt und startet:
conhost.exe --headless node.exe
Der Befehl wird aus dem Verzeichnis ausgeführt, in dem sich das schädliche Skript befindet.
Diese Stufe fragt außerdem einen Ethereum-Smart-Contract ab, der als Dead-Drop-Resolver dient:
0xCD7360A83E5cdbBbbbcEB0e78748babA6740d07b
Anstatt feste Downloadserver in jeden Loader einzubetten, können die Betreiber die über den Contract gespeicherten Infrastrukturinformationen ändern. KREMLIN fordert drei Parameter an:
main-v2, der den primären Installer für die Browser-Erweiterung angibt.sub-module, der auf ein JPEG mit einem .NET-RunPE-Injektionskit verweist.sentinel, der ein JPEG mit einem CAB-Archiv und einer SentinelOne-Datei bereitstellt.
Der beobachtete Speicherort des primären Installers war:
hxxps://granderevolucao[.]store/5c92d3b8734b4f498752f735a1ca0987/{campaignId}
Die anderen Komponenten wurden über Archive.org gehostet:
hxxps://archive[.]org/download/hotelmoskva/hotelmoskva.jpg
hxxps://ia601808[.]us[.]archive[.]org/5/items/sentinel_20260722_0435/Sentinel.jpg
Elastic beobachtete nicht, dass der .NET-Injektor in der analysierten Aktivität eingesetzt wurde. Seine Präsenz zeigt jedoch, dass das Auslieferungs-Framework Fähigkeiten bereitstellen kann, die über die Browser-Erweiterung hinausgehen.
Die Payloads werden zusätzlich verborgen. Das primäre Modul ist als umgekehrtes Base64 kodiert, während die JPEG-Träger Base64-Daten zwischen Dateimarkierungen enthalten. Eine items.json-Datei im Archiv mit Bezug zu SentinelOne legt fest, welche Dateien im Installationsverzeichnis erscheinen sollen, und unterstützt den anschließenden Austausch von Dateien.
Gefälschte Chromium-Integritätswerte autorisieren die Erweiterung
Die zentrale KREMLIN-Binärdatei ist ein etwa 2,10 MB großes x64-C++-Programm:
c8c38634dd44d7c6162c66174a6ee23ee404265125166e8d757681bdd66a4268
Ihr Hauptzweck besteht darin, schädliche Erweiterungen in Google Chrome und Microsoft Edge zu installieren. KREMLIN kopiert die Erweiterungsdateien nicht einfach in ein Browserprofil. Stattdessen verändert die Malware Chromium-Einstellungsdaten und rekonstruiert die Werte, die normalerweise nicht autorisierte Änderungen erkennen würden.
Der Installer manipuliert:
- Chromium-Secure Preferences.
- Erforderliche HMAC-Integritätswerte.
- Verschlüsselte App-Bound-Hashes.
Dadurch wirkt die Erweiterung so, als sei sie vom Benutzer genehmigt worden, und kann die Integritätsprüfungen von Chromium für das Profil überstehen. Nach dem Laden kann sie Zugangsdaten für Bankkonten, Browser-Sitzungstoken und authentifizierte Banking-Sitzungen angreifen.
Der Diebstahl eines gültigen Sitzungstokens kann es einem Angreifer ermöglichen, einen bereits authentifizierten Browserzustand auszunutzen, statt sich ausschließlich auf ein abgefangenes Passwort zu stützen. Das genaue Verhalten gegenüber den einzelnen imitierten Banken wurde nicht veröffentlicht.
Es wurden keine betroffenen Chrome-, Edge- oder Windows-Versionen identifiziert. Ebenso gibt es keine CVE, keinen CVSS-Score, keinen Hersteller-Patch und keine korrigierte Softwareversion, die mit der Kampagne verbunden wären. Es handelt sich um eine Malware-Bereitstellungstechnik und nicht um eine offengelegte Browser-Schwachstelle mit einem herkömmlichen Updatepfad.
Side-Loading von SentinelOne und indirekte Systemaufrufe erschweren die Analyse
KREMLIN führt eine legitime SentinelOne-Komponente aus:
SentinelMemoryScanner.exe
Dieses Programm lädt eine nicht signierte, als folgende Datei getarnte schädliche Bibliothek:
SentinelAgentCore.dll
Durch dieses DLL-Side-Loading kann die Payload im Prozesskontext einer vertrauenswürdigen ausführbaren Datei ausgeführt werden. Verteidiger sollten daher nicht davon ausgehen, dass ein legitimer SentinelOne-Dateiname das umgebende Verzeichnis oder geladene Bibliotheken automatisch vertrauenswürdig macht.
Während der Initialisierung sucht die Malware LdrpLoaderLock und LdrpWorkInProgress innerhalb von ntdll.dll. Sie gibt die Loader-Sperre frei und setzt den Status „Work in Progress“ zurück. Dadurch kann ihr Worker-Thread starten, bevor DllMain zurückkehrt. Dieses Verhalten umgeht die normale Synchronisierung des Windows-Loaders und verhindert einen Deadlock, der andernfalls auftreten würde, wenn der Initialisierungscode auf den neu erstellten Thread warten würde.
KREMLIN verwendet außerdem indirekte Systemaufrufe. Die Malware ordnet Exporte aus ntdll.dll den nach Adressen sortierten RUNTIME_FUNCTION-Einträgen in .pdata zu, leitet System Service Numbers ab, indem sie vorangehende Zw*-Exporte zählt, und ruft die Funktionen über eine vorhandene syscall; ret-Sequenz auf. Ein eingebettetes Stub dient als Fallback.
Elastic brachte diese Implementierung mit dem Open-Source-Projekt PigSyscall in Verbindung. Die Manipulation der Loader-Sperre ähnelt ebenfalls der öffentlich beschriebenen Technik LdrLockLiberator.
Die Binärdatei ist nicht stark verschleiert, und sowohl im Installer als auch in der Erweiterung ist das Debugging weiterhin aktiviert. Diese Anzeichen einer noch unausgereiften Entwicklung stehen einer vergleichsweise ausgefeilten Auslieferungs- und Konfigurationsinfrastruktur gegenüber.
Anti-Analyse-Prüfungen beenden verdächtige Ausführungen
Die native Payload untersucht Prozessnamen, Speicher, Festplatteneigenschaften und ihren Host-Prozess auf Anzeichen von Sicherheitstools oder Virtualisierung. Die früheren JavaScript-Stufen führen zusätzlich eigene Prüfungen von Desktop-Dateien und Prozessanzahl durch.
KREMLIN sucht nach zahlreichen Analyseprogrammen, darunter:
procmon.exe
processhacker.exe
systeminformer.exe
wireshark.exe
windbg.exe
x32dbg.exe
x64dbg.exe
ida64.exe
ghidra.exe
fiddler.exe
frida-helper-64.exe
Außerdem sucht die Malware nach generischen, mit Sandbox-Umgebungen verbundenen Namen wie malware.exe, sandbox.exe, test.exe, joeboxcontrol.exe und fakenet.exe.
Bei vielen positiven Erkennungen greift die Malware absichtlich auf folgende Adresse zu:
0x1337
Diese ungültige Adresse verursacht eine Zugriffsverletzung und beendet die Ausführung auf eine Weise, die wie ein Absturz wirken kann. Elastic beobachtete keine expliziten Prüfungen auf Debugger oder API-Hooks, wobei einige erfasste Umgebungswerte nicht zwangsläufig eine Beendigung auslösen.
Elastic-Sperrschalter unterbrach mehr als 1.500 Infektionen
Elastic registrierte eine von der Kampagne verwendete Netzwerk-Canary-Domain und machte sie zu einem temporären Sperrschalter. Der Eingriff unterbrach mehr als 1.500 Infektionen; zum Zeitpunkt der Veröffentlichung der Untersuchung wurden weitere betroffene Systeme noch ermittelt.
Die Canary-Domain selbst wurde nicht offengelegt, und die Unterbrechung wird als vorübergehend beschrieben. Unternehmen sollten daher nach lokalen Spuren suchen und den Eingriff nicht als dauerhafte Bereinigung betrachten.
Zu den vorrangigen Prüfungen gehören:
- Die geplante Aufgabe
MicrosoftNodeRuntimeUpdaterlokalisieren. conhost.exe --headless node.exeuntersuchen, insbesondere bei Ausführung aus benutzerbeschreibbaren Verzeichnissen.- Endpunkt- und Netzwerk-Telemetrie nach den drei genannten SHA-256-Hashes durchsuchen.
- Chrome- und Edge-Profile auf unerwartete Änderungen an Secure Preferences, HMAC, App-Bound-Hashes oder Erweiterungen überprüfen.
- Nicht signierte
SentinelAgentCore.dll-Dateien identifizieren, die vonSentinelMemoryScanner.exegeladen werden. - SentinelOne-Binärdateien kennzeichnen, die außerhalb genehmigter Installationsverzeichnisse ausgeführt werden.
- Verdächtige
certutil-Aktivitäten im Zusammenhang mit JavaScript oder extrahierten Payloads untersuchen. - Nach Verbindungen zu den genannten Domains und der Ethereum-Contract-Adresse suchen.
- Verdächtige JavaScript-Dateien untersuchen, die als Rechnungen, Dokumente oder Unternehmensunterlagen empfangen wurden.
Benutzer, bei denen eine Infektion vermutet wird, sollten aktive Banking-Sitzungen und Zugangsdaten über vertrauenswürdige Kanäle ungültig machen, nachdem das betroffene Gerät isoliert und untersucht wurde. Wird nur die sichtbare Erweiterung entfernt, können die geplante Aufgabe, der Loader und die per Side-Loading geladenen Komponenten weiterhin vorhanden sein.
Quellen
Dieser Artikel ist eine eigenständige Aufbereitung auf Basis der folgenden Quellen.
- Primärquelleelastic.co
- Security Affairs
