Crypto Drainer als Konvergierende Bedrohung: Einblicke in Entstehende Hybride Angriffsökosysteme
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
Erkennungen
Mögliche Persistenzpunkte [ASEPs – Software/NTUSER Hive] (über registry_event)
Anzeigen
NodeJS-Binärdatei wird von ungewöhnlichem Ort ausgeführt (über cmdline)
Anzeigen
Mögliche Aufzählung von Antivirus- oder Firewall-Software (über process_creation)
Anzeigen
LOLBAS Conhost (über cmdline)
Anzeigen
Verdächtige Verwendung von CURL (über cmdline)
Anzeigen
Mögliche Evasionsprüfungen (über powershell)
Anzeigen
Möglicher Missbrauchsversuch des öffentlichen Ethereum als C2-Kanal (über dns_query)
Anzeigen
Mögliche Dateninfiltration/-exfiltration/C2 über Drittanbieter-Dienste/Tools (über proxy)
Anzeigen
Mögliche Dateninfiltration/-exfiltration/C2 über Drittanbieter-Dienste/Tools (über dns)
Anzeigen
Erkennung des EtherRAT-Persistenzmechanismus‘ unter Verwendung von conhost.exe im kopflosen Modus [Windows-Prozess-Erstellung]
Anzeigen
EtherRAT PowerShell Befehlsausführung zur Systemaufklärung [Windows Powershell]
Anzeigen
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 installiertenode.exeBinärdatei, umconhost.exeim kopflosen Modus zu starten, was dann die JavaScript-Nutzlast lädt. Diese Technik vermeidet sichtbare Konsolenfenster und fügt sich in normaleNodeNutzung ein.- Legen Sie die bösartige Nutzlast (
payload.js) an einem temporären Ort ab. - Ausführen
node.exemit einem Befehl, derconhost.exe --headlessaufruft und auf die Nutzlast verweist. - Erstellen Sie eine geplante Aufgabe , die denselben Befehl beim Systemstart ausführt, um Persistenz bereitzustellen.
- Legen Sie die bösartige Nutzlast (
-
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