Les Crypto Drainers comme Menace Convergente : Analyses des Nouveaux Écosystèmes d’Attaques Hybrides
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.
Flux d’attaque
Détections
Points De Persistance Possibles [ASEPs – Hive Logiciel/NTUSER] (via registry_event)
Voir
Binaire NodeJS Exécutant Depuis Un Emplacement Inhabituel (via cmdline)
Voir
Énumération Possible d’Antivirus ou de Logiciel Pare-feu (via process_creation)
Voir
LOLBAS Conhost (via cmdline)
Voir
Utilisation Suspecte de CURL (via cmdline)
Voir
Vérifications d’Évasion Possibles (via powershell)
Voir
Tentative Possibilité d’Abus Publicnode Ethereum Comme Canal C2 (via dns_query)
Voir
Infiltration / Exfiltration de Données / C2 Possibles via des Services / Outils Tiers (via proxy)
Voir
Infiltration / Exfiltration de Données / C2 Possibles via des Services / Outils Tiers (via dns)
Voir
Détection du Mécanisme de Persistance EtherRAT Utilisant conhost.exe en Mode Sans Tête [Création de Processus Windows]
Voir
Exécution de Commandes EtherRAT PowerShell pour la Reconnaissance Système [Powershell Windows]
Voir
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 lenode.exebinaire pour démarrerconhost.exeen 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 denodeusage.- Déposez le charge utile malveillant (
payload.js) à un emplacement temporaire. - Exécutez
node.exeavec une commande qui génèreconhost.exe --headlesspointant vers le charge utile. - Créez une tâche planifiée qui exécute la même commande au démarrage du système, assurant la persistance.
- Déposez le charge utile malveillant (
-
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