SOC Prime Bias: Mittel

09 Apr. 2026 18:30

ClickFix zu MaaS: Innenansicht eines modularen Windows RAT und seines Kontrollpanels

Author Photo
SOC Prime Team linkedin icon Folgen
ClickFix zu MaaS: Innenansicht eines modularen Windows RAT und seines Kontrollpanels
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Netskope Threat Labs beobachtete eine ClickFix-Kampagne, die ein maßgeschneidertes Windows RAT basierend auf Node.js über bösartige MSI-Installer bereitstellt. Die Nutzlast hält wichtige Module im Speicher und nutzt gRPC-Streaming über Tor für C2. Ein OPSEC-Fehler enthüllte das Admin-Panel-Protokoll und weist auf ein Malware-as-a-Service-Modell mit Wallet-Tracking hin. Die Persistenz wird über einen benutzerdefinierten HKCU-Run-Wert gesetzt.

Untersuchung

Forscher fingen das MSI ab, dekodierten das PowerShell-Bootstrap und verfolgten die dynamische Laden von Node.js-Modulen. Sie extrahierten und entschlüsselten den Konfigurations-Blob, um eine .onion-C2-Adresse wiederherzustellen. Eine geleakte admin.proto-Datei enthüllte MaaS-Funktionen wie Multi-Operator-Management und Wallet-Überwachung, und Analysten bemerkten einen selbstheilenden Watchdog sowie die Nutzung von Tor für anonymisierten Datenverkehr.

Abwehr

Blockieren Sie die Ausführung unsignierter MSIs von unzuverlässigen Quellen und überwachen Sie HKCU…Run auf neue, verdächtige Einträge. Erkennen Sie PowerShell, das MSI-Nutzlasten von Domains wie cloud-verificate.com herunterlädt. Alarmieren Sie bei conhost.exe oder node.exe, die mit versteckten Argumenten gestartet werden, und bei tor.exe, das auf Endpunkten erscheint, die es nicht erfordern.

Reaktion

Isolieren Sie betroffene Hosts, sammeln Sie Speicher für die Analyse von im Speicher befindlichen Modulen und entfernen Sie die HKCU-Run-Persistenz. Überprüfen Sie %LOCALAPPDATA%LogicOptimizer auf Staging-Artefakte und jegliche geplante tor.exe-Aktivität, blockieren Sie dann den Onion-Endpunkt und verwandte Domains/IPs. Durchsuchen Sie das gesamte Unternehmen nach denselben Installer-Artefakten und Prozessketten.

graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#cccccc classDef process fill:#ccffcc %% Nodes action_user_exec[„<b>Aktion</b> – <b>T1204.001 Benutzerausführung: Schädlicher Link</b><br/>Opfer klickt auf einen schädlichen Link und startet PowerShell“] class action_user_exec action process_powershell_cmd[„<b>Prozess</b> – <b>T1059.001 PowerShell</b><br/>Base64-Befehl lädt MSI-Installer herunter“] class process_powershell_cmd process action_msi_install[„<b>Aktion</b> – <b>T1546.016 Installer-Pakete</b><br/>Stille MSI-Installation von Node.js“] class action_msi_install action tool_msiexec[„<b>Tool</b> – msiexec.exe<br/>Systembinär-Proxy-Ausführung“] class tool_msiexec tool action_persistence[„<b>Aktion</b> – Run-Schlüssel Persistenz<br/>Schreibt in HKCU Run“] class action_persistence action tool_tor[„<b>Tool</b> – tor.exe<br/>Externer Proxy“] class tool_tor tool action_tor_proxy[„<b>Aktion</b> – Multi-Hop Proxy<br/>C2-Verkehr über Tor SOCKS5“] class action_tor_proxy action action_grpc_comm[„<b>Aktion</b> – gRPC Webdienst<br/>Kommunikation mit .onion C2“] class action_grpc_comm action action_encrypted_channel[„<b>Aktion</b> – Verschlüsselter Kanal<br/>AES-256-CBC oder XOR“] class action_encrypted_channel action action_collection[„<b>Aktion</b> – Host-Informationserfassung<br/>Sammelt Systemdaten“] class action_collection action action_archive[„<b>Aktion</b> – Benutzerdefiniertes Archiv<br/>Mehrschichtige Verschlüsselung“] class action_archive action action_config_repo[„<b>Aktion</b> – Konfigurationsdaten<br/>Extrahiert C2-Informationen“] class action_config_repo action action_dynamic_resolution[„<b>Aktion</b> – Dynamische Auflösung<br/>Löst .onion zur Laufzeit auf“] class action_dynamic_resolution action action_ip_discovery[„<b>Aktion</b> – IP-Erkennung<br/>Ermittelt externe IP“] class action_ip_discovery action %% Edges action_user_exec –>|triggers| process_powershell_cmd process_powershell_cmd –>|downloads| action_msi_install action_msi_install –>|uses| tool_msiexec action_msi_install –>|enables| action_persistence action_persistence –>|downloads| tool_tor tool_tor –>|enables| action_tor_proxy action_tor_proxy –>|routes| action_grpc_comm action_grpc_comm –>|encrypted via| action_encrypted_channel action_encrypted_channel –>|carries| action_collection action_collection –>|archives| action_archive action_archive –>|stores config in| action_config_repo action_config_repo –>|provides| action_dynamic_resolution action_dynamic_resolution –>|connects to| action_ip_discovery action_collection –>|discovers| action_ip_discovery

Angriffsfluss

Simulationsausführung

Voraussetzung: Der Telemetrie- & Basislinien-Pre-Flight-Check muss bestanden haben.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (TTP), die das Erkennungsregel auslösen soll. Die Befehle und Erzählungen MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.

  • Angriffserzählung und Befehle:

    1. Ziel: Der Angreifer möchte eine bösartige Node.js-Nutzlast starten (bootstrap.js) ohne Verdacht zu erregen.
    2. Methode: Verwende ein signiertes Windows-Binärprogramm (conhost.exe) als Proxy, um node.exe im headless-Modus zu starten und das Bootstrap-Skript als Argument zu übergeben.
    3. Schritte:
      • Legen Sie ein bösartiges bootstrap.js in ein beschreibbares Verzeichnis ab (z.B. %TEMP%).
      • Rufen Sie conhost.exe mit der exakten Argumentzeichenfolge auf, nach der die Regel sucht.
      • Der Befehl wird im Kontext des aktuellen Benutzers ausgeführt und imitiert das Spawnen eines legitimen Prozesses.
    # 1. Ablegen der bösartigen bootstrap.js (simulierte harmlose Inhalte für den Test)
    $bootstrapPath = "$env:TEMPbootstrap.js"
    Set-Content -Path $bootstrapPath -Value "// bösartige Bootstrap-Platzhalter"
    
    # 2. Führen Sie conhost.exe aus, um node.exe mit den erforderlichen Flags zu starten
    $conhost = "$env:windirsystem32conhost.exe"
    $args = '--headless "node.exe" "bootstrap.js"'
    Start-Process -FilePath $conhost -ArgumentList $args -WorkingDirectory $env:TEMP
  • Regressionstestskript:

    # -------------------------------------------------
    # Regressionstest: Trigger Conhost → Node-Bootstrap
    # -------------------------------------------------
    # Sicherstellen, dass Sysmon läuft und ProcessCreate-Ereignisse protokolliert.
    
    # Lege ein Dummy-Bootstrap-Skript ab
    $bootstrap = "$env:TEMPbootstrap.js"
    Set-Content -Path $bootstrap -Value "// Test-Bootstrap-Inhalt"
    
    # Definieren Sie die exakte Befehlszeile, die die Erkennungsregel sucht
    $conhostPath = "$env:windirsystem32conhost.exe"
    $cmdLine = '--headless "node.exe" "bootstrap.js"'
    
    # Starten Sie conhost mit den bösartigen aussehenden Argumenten
    Start-Process -FilePath $conhostPath -ArgumentList $cmdLine -WorkingDirectory $env:TEMP
    
    Write-Host "Simulation abgeschlossen – überprüfen Sie SIEM auf Alarm."
  • Bereinigungskommandos:

    # Stoppen Sie verbleibende Node- oder Conhost-Prozesse, die durch den Test gestartet wurden
    Get-Process -Name node, conhost -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Entfernen Sie das temporäre Bootstrap-Skript
    Remove-Item -Path "$env:TEMPbootstrap.js" -Force -ErrorAction SilentlyContinue
    
    Write-Host "Bereinigung abgeschlossen."