SOC Prime Bias: Mittel

28 Apr. 2026 18:45

Crypto Drainer als Konvergierende Bedrohung: Einblicke in Entstehende Hybride Angriffsökosysteme

Author Photo
SOC Prime Team linkedin icon Folgen
Crypto Drainer als Konvergierende Bedrohung: Einblicke in Entstehende Hybride Angriffsökosysteme
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Der Bericht erklärt, wie sich etablierte Cybercrime-Infrastrukturen zunehmend mit Kryptowährungs-Drainer-Operationen vermischen, was zu hybriden Angriffsökosystemen führt, die sowohl Web2- als auch Web3-Assets gefährden. Bedrohungsakteure verlassen sich auf ausgefeilte Phishing-Seiten, die um KI-Tools oder Finanzdienstleistungen thematisiert sind, um Opfer zu überzeugen, ihre Wallets zu verbinden, Token-Transaktionen zu autorisieren und unwissentlich Gelder über mehrere Blockchains zu transferieren. Zwei hervorgehobene Beispiele, StepDrainer und EtherRAT, zeigen, wie dieses Modell sowohl browserbasierte Wallet-Leerung als auch Windows-Malware mit blockchain-spezifischer Funktionalität umfasst. Dadurch reicht die Bedrohung nun weit über kryptowährungs-native Benutzer hinaus und dringt tiefer in Mainstream-Unternehmensumgebungen ein.

Untersuchung

Forscher untersuchten die StepDrainer Malware-as-a-Service-Operation, einschließlich ihrer PHP- und JavaScript-Staging-Infrastruktur und ihrer Nutzung von Web3Modal zur Anzeige überzeugender Wallet-Verbindungsaufforderungen. Sie analysierten auch die EtherRAT-Windows-Malware, die durch einen trojanisierten TFTP-Installer geliefert wurde, Persistenz über einen Run-Registrierungsschlüssel aufrechterhielt und mit Ethereum- und Solana-RPC-Endpunkten kommunizierte. Während der Untersuchung extrahierte das Team Indikatoren wie bösartige Domains, Registrierungsschlüssel und Befehlszeilen-Artefakte, die mit beiden Angriffswegen verbunden sind.

Abschwächung

Organisationen sollten den Zugang zu bekannten bösartigen Domains blockieren, wo immer möglich Multi-Faktor-Authentifizierung für Wallet-Erweiterungen verlangen und Systeme auf verdächtige Run-Registrierungseinträge und unerwartete Node.js-Prozesse überwachen. Sicherheitsteams sollten auch den Traffic zu öffentlichen Blockchain-RPC-Diensten auf anomalem Verhalten inspizieren und Browser-Erweiterungen regelmäßig auf Anzeichen von Manipulationen oder Missbrauch überprüfen.

Reaktion

Wird diese Aktivität entdeckt, isolieren Sie den betroffenen Host sofort, entfernen Sie den bösartigen Run-Registrierungseintrag, beenden Sie unautorisierte Node.js-Prozesse und widerrufen Sie alle von den betroffenen Wallets gewährten Token-Zulassungen. Ermittler sollten dann eine forensische Analyse durchführen, um zusätzliche Payloads oder Persistenzmechanismen zu identifizieren und erlaubte Listen oder Blocklisten zu aktualisieren, um weitere Kommunikation mit der identifizierten Command-and-Control-Infrastruktur zu verhindern.

graph TB %% Class Definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef operator fill:#ff9900 %% Nodes u2013 Techniques initial_access[„<b>Technik</b> – <b>T1204.001 Benutzerausführung: bösartiger Link</b><br/><b>Beschreibung</b>: Opfer klicken auf einen präparierten Link, der schädlichen Inhalt ausführt.“] class initial_access technique delivery_html_smuggling[„<b>Technik</b> – <b>T1027.006 Verschleierte Dateien oder Informationen: HTML-Smudging</b><br/><b>Beschreibung</b>: Schädliches JavaScript wird über eine Webseite geliefert, die die Nutzlast in HTML verbirgt.“] class delivery_html_smuggling technique delivery_compile_after[„<b>Technik</b> – <b>T1027.004 Verschleierte Dateien oder Informationen: Kompilierung nach Zustellung</b><br/><b>Beschreibung</b>: Die Nutzlast wird nach der initialen Zustellung auf dem Host zusammengesetzt.“] class delivery_compile_after technique delivery_embedded_payloads[„<b>Technik</b> – <b>T1027.009 Verschleierte Dateien oder Informationen: Eingebettete Nutzlasten</b><br/><b>Beschreibung</b>: Die Nutzlast ist in einer anderen Datei wie JavaScript verborgen.“] class delivery_embedded_payloads technique delivery_deobfuscate[„<b>Technik</b> – <b>T1140 Dateien oder Informationen deobfuskieren/decodieren</b><br/><b>Beschreibung</b>: Base64-Daten werden vor der Ausführung im Browser dekodiert.“] class delivery_deobfuscate technique persistence_run_key[„<b>Technik</b> – <b>T1127.002 Vertrauenswürdige Entwickler-Tools: ClickOnce Proxy-Ausführung</b><br/><b>Beschreibung</b>: Der Installer erstellt einen Runu2011Key zum Start von bösartigem node.exe.“] class persistence_run_key technique persistence_appcert[„<b>Technik</b> – <b>T1546.009 Ereignisgesteuerte Ausführung: AppCert DLLs</b><br/><b>Beschreibung</b>: Mit vertrauenswürdigem Zertifikat signierte DLLs werden zur Persistenz geladen.“] class persistence_appcert technique recon_hardware[„<b>Technik</b> – <b>T1592.001 Erfassung von Opfer-Hostinformationen: Hardware</b><br/><b>Beschreibung</b>: Malware fragt Hardwaredetails des kompromittierten Systems ab.“] class recon_hardware technique recon_firmware[„<b>Technik</b> – <b>T1592.003 Erfassung von Opfer-Hostinformationen: Firmware</b><br/><b>Beschreibung</b>: Malware sammelt Firmware-Versionen und BIOS-Informationen.“] class recon_firmware technique c2_web_protocols[„<b>Technik</b> – <b>T1071.001 Anwendungsschichtprotokoll: Web-Protokolle</b><br/><b>Beschreibung</b>: Verwendet standardmäßigen Webverkehr (HTTP/HTTPS) für C2-Kommunikation.“] class c2_web_protocols technique c2_bidirectional[„<b>Technik</b> – <b>T1102.002 Webdienst: bidirektionale Kommunikation</b><br/><b>Beschreibung</b>: Ermöglicht bidirektionale Kommunikation zwischen Implantat und Server.“] class c2_bidirectional technique c2_oneway[„<b>Technik</b> – <b>T1102.003 Webdienst: unidirektionale Kommunikation</b><br/><b>Beschreibung</b>: Sendet Daten an den Server ohne Antworterwartung.“] class c2_oneway technique c2_encrypted[„<b>Technik</b> – <b>T1573 Verschlüsselter Kanal</b><br/><b>Beschreibung</b>: C2-Verkehr ist verschlüsselt, um Erkennung zu vermeiden.“] class c2_encrypted technique c2_data_encoding[„<b>Technik</b> – <b>T1132 Datenkodierung</b><br/><b>Beschreibung</b>: Daten werden vor der Übertragung (z. B. Base64) kodiert.“] class c2_data_encoding technique c2_config_repo[„<b>Technik</b> – <b>T1602 Daten aus Konfigurations-Repository</b><br/><b>Beschreibung</b>: Konfigurationsdaten werden aus On-Chain-Repositories abgerufen.“] class c2_config_repo technique asset_drain[„<b>Technik</b> – <b>T1204.002 Benutzerausführung: Token-Genehmigung</b><br/><b>Beschreibung</b>: Opfer genehmigt Token-Berechtigungen über injizierte Web3Modal UI, wodurch Asset-Transfer ermöglicht wird.“] class asset_drain technique %% Nodes u2013 Tools / Processes tool_malicious_link[„<b>Tool</b> – <b>Name</b>: bösartiger Phishing-Link<br/><b>Beschreibung</b>: Präparierte URL, die ein gefälschtes Trading-Portal lädt.“] class tool_malicious_link tool tool_js_payload[„<b>Tool</b> – <b>Name</b>: verschleierte JavaScript-Nutzlast<br/><b>Beschreibung</b>: Base64-kodierter Code, der im Browser ausgeführt wird.“] class tool_js_payload tool process_installer[„<b>Prozess</b> – <b>Name</b>: Windows-Installer<br/><b>Beschreibung</b>: Legt Runu2011Key und node.exe ab.“] class process_installer process tool_node_exe[„<b>Tool</b> – <b>Name</b>: node.exe<br/><b>Beschreibung</b>: Führt nach Persistenz bösartiges JavaScript aus.“] class tool_node_exe tool tool_web3modal[„<b>Tool</b> – <b>Name</b>: Web3Modal UI<br/><b>Beschreibung</b>: Eingebettete UI, die Benutzer zur Genehmigung von Token-Transfers auffordert.“] class tool_web3modal tool %% Operators (optional) op_and((„AND“)) class op_and operator %% Connections u2013 Attack Flow initial_access –>|leads_to| delivery_html_smuggling delivery_html_smuggling –>|uses| tool_malicious_link delivery_html_smuggling –>|uses| tool_js_payload delivery_html_smuggling –>|enables| delivery_compile_after delivery_compile_after –>|enables| delivery_embedded_payloads delivery_embedded_payloads –>|triggers| delivery_deobfuscate delivery_deobfuscate –>|creates| process_installer process_installer –>|drops| persistence_run_key process_installer –>|may_use| persistence_appcert persistence_run_key –>|executes| tool_node_exe persistence_app_cert –>|loads| tool_node_exe tool_node_exe –>|collects| recon_hardware tool_node_exe –>|collects| recon_firmware recon_hardware –>|feeds| c2_web_protocols recon_firmware –>|feeds| c2_web_protocols c2_web_protocols –>|supports| c2_bidirectional c2_web_protocols –>|supports| c2_oneway c2_bidirectional –>|uses| c2_encrypted c2_oneway –>|uses| c2_encrypted c2_encrypted –>|encodes| c2_data_encoding c2_data_encoding –>|stores_config_in| c2_config_repo c2_config_repo –>|provides| asset_drain asset_drain –>|uses| tool_web3modal

Angriffsablauf

Simulation der Ausführung

Voraussetzung: Der Telemetrie- und Basislinsenvorbereitscheck muss bestanden sein.

  • Angriffserzählung & Befehle

    Der Angreifer hat bereits eine bösartige JavaScript-Datei (payload.js) auf dem Ziel platziert. Um Persistenz zu erreichen, verwenden sie die installierte node.exe Binärdatei, um conhost.exe im kopflosen Modus zu starten, was dann die JavaScript-Nutzlast lädt. Diese Technik vermeidet sichtbare Konsolenfenster und fügt sich in normale Node Nutzung ein.

    1. Legen Sie die bösartige Nutzlast (payload.js) an einem temporären Ort ab.
    2. Ausführen node.exe mit einem Befehl, der conhost.exe --headless aufruft und auf die Nutzlast verweist.
    3. Erstellen Sie eine geplante Aufgabe , die denselben Befehl beim Systemstart ausführt, um Persistenz bereitzustellen.
  • Regressionstest-Skript

    # EtherRAT-Persistenzsimulation – PowerShell
    # -------------------------------------------------
    # 1. Bösartige JavaScript-Nutzlast vorbereiten
    $payloadPath = "$env:TEMPpayload.js"
    @"
    // Minimal bösartiges JS – in Wirklichkeit würde dies das EtherRAT-Implantat laden
    const { exec } = require('child_process');
    exec('calc.exe'); // Beispielseitenwirkung
    "@ | Set-Content -Encoding UTF8 $payloadPath
    
    # 2. Suchen Sie node.exe (gehen Sie davon aus, dass es im PATH ist)
    $node = (Get-Command node.exe).Source
    if (-not $node) {
        Write-Error "node.exe nicht im PATH gefunden."
        exit 1
    }
    
    # 3. Bauen Sie die conhost-Befehlszeile
    $conhostCmd = "C:WindowsSystem32conhost.exe --headless `"$payloadPath`""
    
    # 4. Starten Sie über node.exe (dies erstellt die Eltern-Kind-Beziehung)
    $script = "require('child_process').exec(`"$conhostCmd`")"
    & $node -e $script
    
    # 5. OPTIONAL: Geplante Aufgabe zur Persistenz erstellen
    $taskName = "SystemUpdate"
    $action = New-ScheduledTaskAction -Execute $node -Argument "-e `"$script`""
    $trigger = New-ScheduledTaskTrigger -AtLogOn
    Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -RunLevel Highest -Force
  • Bereinigungskommandos

    # Geplante Aufgabe entfernen
    Unregister-ScheduledTask -TaskName "SystemUpdate" -Confirm:$false
    
    # Nutzlast löschen
    Remove-Item -Path "$env:TEMPpayload.js" -Force
    
    # Jegliche verbleibenden conhost-Prozesse, die durch den Test ausgelöst wurden, stoppen
    Get-Process conhost -ErrorAction SilentlyContinue | Where-Object {
        $_.Path -eq 'C:WindowsSystem32conhost.exe' -and $_.CommandLine -match '--headless'
    } | Stop-Process -Force