SOC Prime Bias: Moyen

28 Avr 2026 18:45

Les Crypto Drainers comme Menace Convergente : Analyses des Nouveaux Écosystèmes d’Attaques Hybrides

Author Photo
SOC Prime Team linkedin icon Suivre
Les Crypto Drainers comme Menace Convergente : Analyses des Nouveaux Écosystèmes d’Attaques Hybrides
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Le rapport explique comment l’infrastructure cybercriminelle établie converge de plus en plus avec les opérations de drain de cryptomonnaies, donnant naissance à des écosystèmes d’attaques hybrides qui mettent en danger à la fois les actifs Web2 et Web3. Les acteurs de la menace s’appuient sur des pages de phishing sophistiquées autour des outils d’IA ou des services financiers pour convaincre les victimes de connecter leurs portefeuilles, d’autoriser des transactions de tokens et de transférer à leur insu des fonds sur plusieurs blockchains. Deux exemples présentés, StepDrainer et EtherRAT, montrent comment ce modèle s’étend à la fois à l’épuisement des portefeuilles basés sur navigateurs et aux malwares Windows avec des fonctionnalités conscientes de la blockchain. En conséquence, la menace s’étend désormais bien au-delà des utilisateurs natifs de cryptomonnaies et pénètre plus profondément dans les environnements d’entreprise traditionnels.

Enquête

Les chercheurs ont examiné l’opération malware-as-a-service de StepDrainer, y compris son infrastructure de mise en scène PHP et JavaScript et son utilisation de Web3Modal pour afficher des invites convaincantes de connexion de portefeuille. Ils ont également analysé le malware Windows EtherRAT, qui a été livré via un installateur TFTP trojanisé, maintenait la persistance via une clé de registre Run, et communiquait avec les points de terminaison RPC Ethereum et Solana. Lors de l’enquête, l’équipe a extrait des indicateurs tels que des domaines malveillants, des clés de registre et des artefacts en ligne de commande liés aux deux chemins d’attaque.

Atténuation

Les organisations doivent bloquer l’accès aux domaines malveillants connus, exiger une authentification multi-facteurs pour les extensions de portefeuille chaque fois que possible, et surveiller les systèmes pour détecter les entrées de registre Run suspectes et les processus Node.js inattendus. Les équipes de sécurité doivent également inspecter le trafic vers les services RPC blockchain publics pour un comportement anormal et examiner régulièrement les extensions de navigateur pour détecter des signes de manipulation ou d’abus.

Réponse

Si cette activité est détectée, isolez immédiatement l’hôte affecté, supprimez l’entrée de registre Run malveillante, terminez les processus Node.js non autorisés et révoquez toutes les autorisations de token accordées par les portefeuilles impactés. Les enquêteurs doivent ensuite procéder à une analyse judiciaire pour identifier toute charge utile ou mécanisme de persistance supplémentaire et mettre à jour les listes d’autorisation ou de blocage pour empêcher toute communication ultérieure avec l’infrastructure de commande et de contrôle identifiée.

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 através de 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 iniciar 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: One-Way 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 Base64 executado no navegador. »] class tool_js_payload tool process_installer[« <b>Process</b> – <b>Name</b>: Windows Installer<br/><b>Description</b>: Instala Runu2011key e 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

Flux d’attaque

Exécution de Simulation

Prérequis : La Vérification Préliminaire de la Télémétrie & de la Base De Référence doit avoir été validée.

  • Narratif & Commandes de l’Attaque

    L’adversaire a déjà placé un fichier JavaScript malveillant (payload.js) sur la cible. Pour obtenir la persistance, ils utilisent le node.exe binaire pour démarrer conhost.exe en mode sans tête, qui charge ensuite le charge utile JavaScript. Cette technique évite les fenêtres de console visibles et se fond dans l’utilisation normale de node usage.

    1. Déposez le charge utile malveillant (payload.js) à un emplacement temporaire.
    2. Exécutez node.exe avec une commande qui génère conhost.exe --headless pointant vers le charge utile.
    3. Créez une tâche planifiée qui exécute la même commande au démarrage du système, assurant la persistance.
  • Script de Test de Régression

    # Simulation de Persistance EtherRAT – PowerShell
    # -------------------------------------------------
    # 1. Préparez la charge utile JavaScript malveillante
    $payloadPath = "$env:TEMPpayload.js"
    @"
    // JS malveillant minimal – en réalité, cela chargerait l'implant EtherRAT
    const { exec } = require('child_process');
    exec('calc.exe'); // Exemple d'effet secondaire
    "@ | Set-Content -Encoding UTF8 $payloadPath
    
    # 2. Localisez node.exe (supposer qu'il est dans PATH)
    $node = (Get-Command node.exe).Source
    if (-not $node) {
        Write-Error "node.exe not found in PATH."
        exit 1
    }
    
    # 3. Construisez la ligne de commande conhost
    $conhostCmd = "C:WindowsSystem32conhost.exe --headless `"$payloadPath`""
    
    # 4. Lancer via node.exe (cela crée la relation parent-enfant)
    $script = "require('child_process').exec(`"$conhostCmd`")"
    & $node -e $script
    
    # 5. OPTIONNEL : Créez une tâche planifiée pour la persistance
    $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
  • Commandes de Nettoyage

    # Supprimez la tâche planifiée
    Unregister-ScheduledTask -TaskName "SystemUpdate" -Confirm:$false
    
    # Supprimez le charge utile
    Remove-Item -Path "$env:TEMPpayload.js" -Force
    
    # Arrêtez tous les processus conhost persistants générés par le test
    Get-Process conhost -ErrorAction SilentlyContinue | Where-Object {
        $_.Path -eq 'C:WindowsSystem32conhost.exe' -and $_.CommandLine -match '--headless'
    } | Stop-Process -Force