Crypto Drainer come Minaccia Convergente: Approfondimenti sui Nuovi Ecosistemi di Attacchi Ibridi
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Il rapporto spiega come le infrastrutture consolidate del crimine informatico stiano sempre più convergendo con le operazioni di drainer di criptovalute, dando origine ad ecosistemi di attacco ibridi che mettono a rischio sia i beni Web2 che Web3. Gli attori delle minacce si affidano a pagine di phishing ben elaborate a tema strumenti di IA o servizi finanziari per convincere le vittime a collegare i loro wallet, autorizzare le transazioni di token e trasferire inconsapevolmente fondi su più blockchain. Due esempi emblematici, StepDrainer e EtherRAT, dimostrano come questo modello si estenda sia al draining dei wallet basati su browser sia al malware Windows con funzionalità consapevole della blockchain. Di conseguenza, la minaccia ora si estende ben oltre gli utenti nativi di criptovalute e raggiunge più in profondità gli ambienti aziendali mainstream.
Indagine
I ricercatori hanno esaminato l’operazione StepDrainer malware-as-a-service, compresa la sua infrastruttura di staging PHP e JavaScript e il suo utilizzo di Web3Modal per visualizzare prompt di connessione al wallet convincenti. Hanno anche analizzato il malware Windows EtherRAT, che è stato distribuito tramite un installer TFTP trojanizzato, mantenendo la persistenza attraverso una chiave di registro Run, e comunicava con gli endpoint RPC di Ethereum e Solana. Durante l’indagine, il team ha estratto indicatori come domini malevoli, chiavi di registro e artefatti da riga di comando legati a entrambi i percorsi di attacco.
Mitigazione
Le organizzazioni dovrebbero bloccare l’accesso ai domini noti come malevoli, richiedere l’autenticazione multi-fattore per le estensioni del wallet ove possibile, e monitorare i sistemi per registrare voci di Run sospette e processi Node.js inaspettati. I team di sicurezza dovrebbero anche ispezionare il traffico verso i servizi pubblici RPC della blockchain per comportamenti anomali e rivedere regolarmente le estensioni del browser per segni di manomissione o abuso.
Risposta
Se viene rilevata questa attività, isolare immediatamente l’host interessato, rimuovere l’ingresso di registro Run malevolo, terminare i processi Node.js non autorizzati e revocare tutte le approvazioni di token concesse dai wallet colpiti. Gli investigatori dovrebbero quindi eseguire un’analisi forense per identificare eventuali payload aggiuntivi o meccanismi di persistenza e aggiornare le allow-list o blocklist per prevenire ulteriori comunicazioni con le infrastrutture di comando e controllo identificate.
graph TB %% Class Definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef operator fill:#ff9900 %% Nodes – Techniques initial_access[“<b>Technique</b> – <b>T1204.001 User Execution: Malicious Link</b><br/><b>Description</b>: As vítimas clicam num link criado que inicia conteúdo malicioso.”] class initial_access technique delivery_html_smuggling[“<b>Technique</b> – <b>T1027.006 Obfuscated Files or Information: HTML Smuggling</b><br/><b>Description</b>: JavaScript malicioso é entregue via uma página web que esconde a carga útil em HTML.”] class delivery_html_smuggling technique delivery_compile_after[“<b>Technique</b> – <b>T1027.004 Obfuscated Files or Information: Compile After Delivery</b><br/><b>Description</b>: A carga útil é montada no host após a entrega inicial.”] class delivery_compile_after technique delivery_embedded_payloads[“<b>Technique</b> – <b>T1027.009 Obfuscated Files or Information: Embedded Payloads</b><br/><b>Description</b>: A carga útil está escondida dentro de outro ficheiro, como JavaScript.”] class delivery_embedded_payloads technique delivery_deobfuscate[“<b>Technique</b> – <b>T1140 Deobfuscate/Decode Files or Information</b><br/><b>Description</b>: Dados Base64 são decodificados no navegador antes da execução.”] class delivery_deobfuscate technique persistence_run_key[“<b>Technique</b> – <b>T1127.002 Trusted Developer Utilities Proxy Execution: ClickOnce</b><br/><b>Description</b>: O instalador cria uma Runu2011key para lançar um node.exe malicioso.”] class persistence_run_key technique persistence_appcert[“<b>Technique</b> – <b>T1546.009 Event Triggered Execution: AppCert DLLs</b><br/><b>Description</b>: DLLs assinadas com certificado confiável são carregadas para persistência.”] class persistence_appcert technique recon_hardware[“<b>Technique</b> – <b>T1592.001 Gather Victim Host Information: Hardware</b><br/><b>Description</b>: O malware consulta detalhes de hardware do sistema comprometido.”] class recon_hardware technique recon_firmware[“<b>Technique</b> – <b>T1592.003 Gather Victim Host Information: Firmware</b><br/><b>Description</b>: O malware recolhe versão de firmware e informações da BIOS.”] class recon_firmware technique c2_web_protocols[“<b>Technique</b> – <b>T1071.001 Application Layer Protocol: Web Protocols</b><br/><b>Description</b>: Utiliza tráfego web padrão (HTTP/HTTPS) para comando e controlo.”] class c2_web_protocols technique c2_bidirectional[“<b>Technique</b> – <b>T1102.002 Web Service: Bidirectional Communication</b><br/><b>Description</b>: Permite comunicação bidirecional entre o implante e o servidor.”] class c2_bidirectional technique c2_oneway[“<b>Technique</b> – <b>T1102.003 Web Service: Oneu2011Way Communication</b><br/><b>Description</b>: Envia dados ao servidor sem esperar resposta.”] class c2_oneway technique c2_encrypted[“<b>Technique</b> – <b>T1573 Encrypted Channel</b><br/><b>Description</b>: O tráfego C2 é encriptado para evitar deteção.”] class c2_encrypted technique c2_data_encoding[“<b>Technique</b> – <b>T1132 Data Encoding</b><br/><b>Description</b>: Os dados são codificados (ex: base64) antes da transmissão.”] class c2_data_encoding technique c2_config_repo[“<b>Technique</b> – <b>T1602 Data from Configuration Repository</b><br/><b>Description</b>: Dados de configuração são obtidos de repositórios onu2011chain.”] class c2_config_repo technique asset_drain[“<b>Technique</b> – <b>T1204.002 User Execution: Token Approval</b><br/><b>Description</b>: A vítima aprova permissões de tokens via Web3Modal injetado, permitindo transferência de ativos.”] class asset_drain technique %% Nodes – Tools / Processes tool_malicious_link[“<b>Tool</b> – <b>Name</b>: Malicious Phishing Link<br/><b>Description</b>: URL criada que carrega o portal falso de trading.”] class tool_malicious_link tool tool_js_payload[“<b>Tool</b> – <b>Name</b>: Obfuscated JavaScript Payload<br/><b>Description</b>: Código codificado em Base64 executado no navegador.”] class tool_js_payload tool process_installer[“<b>Process</b> – <b>Name</b>: Windows Installer<br/><b>Description</b>: Cria Runu2011key e instala node.exe.”] class process_installer process tool_node_exe[“<b>Tool</b> – <b>Name</b>: node.exe<br/><b>Description</b>: Executa JavaScript malicioso após persistência.”] class tool_node_exe tool tool_web3modal[“<b>Tool</b> – <b>Name</b>: Web3Modal UI<br/><b>Description</b>: Interface injetada que solicita aprovação de transferências de tokens.”] class tool_web3modal tool %% Operators op_and((“AND”)) class op_and operator %% Connections – 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
Flusso di Attacco
Rilevamenti
Punti di Persistenza Possibili [ASEPs – Alveare Software/NTUSER] (via registry_event)
Visualizza
NodoJS Binario che Esegue Da Posizione Insolita (via cmdline)
Visualizza
Enumerazione Possibile Software Antivirus o Firewall (via process_creation)
Visualizza
LOLBAS Conhost (via cmdline)
Visualizza
Uso Sospetto di CURL (via cmdline)
Visualizza
Controlli di Evasione Possibili (via powershell)
Visualizza
Tentativo di Abuso Publicnode Ethereum come Canale C2 (via dns_query)
Visualizza
Infiltrazione / Esfiltrazione dei Dati Possibile / C2 tramite Servizi / Strumenti di Terze Parti (via proxy)
Visualizza
Infiltrazione / Esfiltrazione dei Dati Possibile / C2 tramite Servizi / Strumenti di Terze Parti (via dns)
Visualizza
Rilevamento del Meccanismo di Persistenza di EtherRAT Utilizzando conhost.exe in Modalità Senza Testa [Creazione Processo Windows]
Visualizza
Esecuzione del Comando PowerShell di EtherRAT per Ricognizione del Sistema [Windows Powershell]
Visualizza
Esecuzione di Simulazione
Prerequisito: Il Controllo Prevolo della Telemetria e della Base deve essere passato.
-
Narrativa di Attacco & Comandi
L’avversario ha già collocato un file JavaScript malevolo (
payload.js) sul bersaglio. Per ottenere la persistenza, utilizza ilnode.exebinario installato per avviareconhost.exein modalità senza testa, che quindi carica il payload JavaScript. Questa tecnica evita finestre console visibili e si integra nel normalenodeutilizzo.- Collocare il payload malevolo (
payload.js) in una posizione temporanea. - Esegui
node.execon un comando che generaconhost.exe --headlesspunta al payload. - Crea un’attività programmata che esegue lo stesso comando all’avvio del sistema, fornendo persistenza.
- Collocare il payload malevolo (
-
Script di Test di Regressione
# Simulazione di Persistenza EtherRAT – PowerShell # ------------------------------------------------- # 1. Preparare payload JavaScript malevolo $payloadPath = "$env:TEMPpayload.js" @" // JS malevolo minimo – in realtà questo caricherebbe l'implant EtherRAT const { exec } = require('child_process'); exec('calc.exe'); // Esempio di effetto collaterale "@ | Set-Content -Encoding UTF8 $payloadPath # 2. Individuare node.exe (si suppone sia nel PATH) $node = (Get-Command node.exe).Source if (-not $node) { Write-Error "node.exe non trovato nel PATH." exit 1 } # 3. Costruire la linea di comando conhost $conhostCmd = "C:WindowsSystem32conhost.exe --headless `"$payloadPath`"" # 4. Avvia tramite node.exe (questo crea la relazione genitore-figlio) $script = "require('child_process').exec(`"$conhostCmd`")" & $node -e $script # 5. OPZIONALE: Creare un'attività programmata per la persistenza $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 -
Comandi di Pulizia
# Rimuovi attività programmata Unregister-ScheduledTask -TaskName "SystemUpdate" -Confirm:$false # Elimina payload Remove-Item -Path "$env:TEMPpayload.js" -Force # Ferma qualsiasi processo conhost persistente generato dal test Get-Process conhost -ErrorAction SilentlyContinue | Where-Object { $_.Path -eq 'C:WindowsSystem32conhost.exe' -and $_.CommandLine -match '--headless' } | Stop-Process -Force