SOC Prime Bias: Critique

05 Nov 2025 09:07

Curly COMrades : Activation Anormale de Hyper-V

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Curly COMrades : Activation Anormale de Hyper-V
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Activation Hyper-V Anormale

La recherche révèle un nouvel acteur menaçant, Curly COMrades, qui exploite Windows Hyper‑V pour faire tourner un VM Alpine Linux caché sur des hôtes Windows 10 compromis. Le VM exécute des malwares personnalisés (CurlyShell et CurlCat) pour fournir des capacités de shell inversé persistant et de proxy tout en échappant à la détection typique des EDR. Les techniques supplémentaires incluent l’injection de ticket Kerberos basée sur PowerShell, la création de comptes locaux livrée par Group Policy, et l’utilisation d’outils proxy open-source.

Ce que Curly COMrades Utilise pour Cacher des Malwares dans des VMs Linux ?

Curly COMrades cache des malwares en créant de petits invités Alpine Linux à l’intérieur de Microsoft Hyper-V sur des hôtes Windows compromis, exécutant des implants personnalisés (signalés comme CurlyShell et CurlCat) à l’intérieur de ces VMs cachés tout en utilisant le réseau de Hyper-V (Default Switch) pour que le trafic sortant semble provenir de l’hôte.

Ils déploient des assistants PowerShell et curl.exe sur l’hôte, donnent des noms de VM trompeurs et restreignent les interfaces de gestion Hyper-V pour éviter la détection, et ont été documentés dans une analyse Bitdefender avec des indicateurs techniques et des conseils de remédiation.

Atténuation

Déployez une inspection réseau basée sur l’hôte (par exemple, Bitdefender NAD) pour détecter un trafic sortant anormal depuis la pile réseau de l’hôte. Renforcez Windows en désactivant ou en contrôlant strictement l’activation des fonctionnalités Hyper-V et en restreignant l’utilisation de DISM et des cmdlets PowerShell qui importent/démarrent les VMs. Appliquez le Renforcement Proactif et la Réduction de la Surface d’Attaque (PHASR) pour bloquer l’utilisation non autorisée de binaires natifs (curl, rar, Import‑VM, Start‑VM). Surveillez la création de nouvelles VMs Hyper-V, les fichiers VHDX/VMCX inhabituels dans ProgramData, et les modifications de crontab sur les VMs Linux. Détectez l’accès à LSASS et l’injection de ticket Kerberos en utilisant les alertes d’accès aux informations d’identification EDR/XDR. Appliquez le principe du moindre privilège pour les scripts Group Policy et auditez la création de comptes locaux. Utilisez la détection basée sur des signatures et des comportements pour les implants personnalisés CurlyShell/CurlCat et les outils proxy connus.

Réponse

Isolez les hôtes affectés, désactivez Hyper-V, et supprimez les fichiers VM cachés et les images VHDX/VMCX associées. Effectuez une analyse complète du système de fichiers et du registre pour les scripts PowerShell (kb_upd.ps1, screensaver.ps1, locals.ps1) et supprimez-les. Réinitialisez ou éliminez les comptes locaux non autorisés et modifiez les mots de passe. Bloquez les connexions sortantes vers les IPs C2 identifiées (par exemple, 45.43.91.10, 88.198.91.116) et mettez à jour les règles de pare-feu. Déployez des règles de détection pour les signatures DLL/ELF spécifiques de CurlyShell et CurlCat, et pour les outils proxy observés. Effectuez une chasse aux menaces en utilisant les IOCs du dépôt public GitHub. Engagez-vous avec les CERTs pour le partage d’intelligence et surveillez toute activité ultérieure. Appliquez les correctifs et mettez à jour pour atténuer les CVEs exploités (le cas échéant).

mermaid graph TB %% Définition des classes classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff %% Nœuds – Actions action_initial_setup[« <b>Action</b> – Configuration Initiale<br/><b>Techniques</b> : T1564.006 Cacher les Artéfacts : Exécuter une Instance Virtuelle, T1497 Évasion de Virtualisation/Sandbox, T1059.012 CLI de l’Hyperviseur<br/>Activer Hyper‑V via DISM et désactiver les clients de gestion »] class action_initial_setup action action_vm_deployment[« <b>Action</b> – Déploiement de VM<br/><b>Techniques</b> : T1059.012 CLI de l’Hyperviseur<br/>Télécharger Alpine Linux VHDX avec curl, extraire avec WinRAR, importer et démarrer la VM via PowerShell »] class action_vm_deployment action action_vm_persistence[« <b>Action</b> – Persistance dans la VM<br/><b>Techniques</b> : T1037.004 Scripts RC, T1543 Créer/Modifier un Processus Système<br/>Un cron job lance /bin/alpine_init toutes les 4 heures pour démarrer CurlyShell »] class action_vm_persistence action action_c2_communication[« <b>Action</b> – Communication C2<br/><b>Techniques</b> : T1071.001 Protocoles Web, T1102.002 Service Web Bidirectionnel<br/>CurlyShell contacte le point terminal HTTPS en utilisant libcurl (GET/POST) »] class action_c2_communication action action_proxy_tunneling[« <b>Action</b> – Proxy & Tunneling<br/><b>Techniques</b> : T1090.001 Proxy Interne, T1090.003 Proxy Multi‑hop<br/>Proxy inverse SSH configuré via ProxyCommand, transfère le trafic via un proxy SOCKS local »] class action_proxy_tunneling action action_credential_abuse[« <b>Action</b> – Abus de Crédential<br/><b>Techniques</b> : T1550.003 Passer le Ticket, T1059.001 PowerShell<br/>Le script PowerShell kb_upd.ps1 injecte des tickets Kerberos forgés dans LSASS »] class action_credential_abuse action action_lateral_movement[« <b>Action</b> – Mouvement Latéral<br/><b>Techniques</b> : T1021.002 Partages Admin SMB/Windows, T1135 Découverte de Partage Réseau<br/>Utiliser les tickets injectés avec net use et les commandes SMB pour énumérer les partages et exécuter des commandes à distance »] class action_lateral_movement action action_persistence_accounts[« <b>Action</b> – Persistance via Comptes Locaux<br/><b>Techniques</b> : T1136.001 Créer un Compte Local, T1037.003 Script de Connexion Réseau<br/>Les scripts Group-policy créent ou réinitialisent des comptes locaux (par ex., camera) pour un accès continu »] class action_persistence_accounts action action_defense_evasion[« <b>Action</b> – Évasion de Défense<br/><b>Techniques</b> : T1059.003 Shell de Commande Windows, T1202 Exécution Indirecte de Commande, T1001.003 Impersonation de Protocole, T1599 Connectivité Inter-Réseau<br/>Exécutez tous les binaires malveillants à l’intérieur de la VM cachée, utilisez un encodage personnalisé Base64 pour réduire l’empreinte forensique »] class action_defense_evasion action %% Nœuds – Outils / Processus / Malwares tool_dism[« <b>Outil</b> – DISM<br/><b>Description</b> : Déploie des fonctionnalités Windows telles que Hyper-V »] class tool_dism tool tool_powershell[« <b>Outil</b> – PowerShell<br/><b>Description</b> : Environnement de script utilisé pour l’importation de VM, l’injection de tickets et d’autres automatisations »] class tool_powershell tool process_curl[« <b>Processus</b> – curl<br/><b>Description</b> : Télécharge Alpine VHDX et effectue des requêtes C2 HTTPS »] class process_curl process process_winrar[« <b>Processus</b> – WinRAR<br/><b>Description</b> : Extrait l’archive VHDX téléchargée »] class process_winrar process malware_curlyshell[« <b>Malware</b> – CurlyShell<br/><b>Description</b> : Porte dérobée personnalisée exécutée à l’intérieur de la VM Alpine cachée »] class malware_curlyshell malware malware_ssh_reverse[« <b>Malware</b> – Proxy Inverse SSH<br/><b>Description</b> : Configuré via ~/.ssh/config pour tunneler le trafic via SOCKS »] class malware_ssh_reverse malware script_kb_upd[« <b>Malware</b> – kb_upd.ps1<br/><b>Description</b> : Script PowerShell qui forge des tickets Kerberos et les injecte dans LSASS »] class script_kb_upd malware %% Connexions – Flux action_initial_setup u002du002d>|utilise| tool_dism action_initial_setup u002du002d>|utilise| tool_powershell action_vm_deployment u002du002d>|télécharge avec| process_curl action_vm_deployment u002du002d>|extrait avec| process_winrar action_vm_deployment u002du002d>|importe/démarre via| tool_powershell action_vm_persistence u002du002d>|crée un cron job dans| malware_curlyshell action_c2_communication u002du002d>|communique via| process_curl action_c2_communication u002du002d>|porte dérobée| malware_curlyshell action_proxy_tunneling u002du002d>|établit| malware_ssh_reverse action_credential_abuse u002du002d>|exécute| script_kb_upd action_credential_abuse u002du002d>|utilise| tool_powershell action_lateral_movement u002du002d>|utilise les tickets de| script_kb_upd action_lateral_movement u002du002d>|utilise les commandes SMB| tool_powershell action_persistence_accounts u002du002d>|crée des comptes via| tool_powershell action_defense_evasion u002du002d>|exécute les binaires à l’intérieur| action_vm_deployment action_defense_evasion u002du002d>|obscurcit les données avec| process_curl %% Fin du diagramme

Chaîne d’Attaque des Machines Virtuelles Hyper-V Cachées

Instructions de Simulation

Exécution de la Simulation

Prérequis : Le Contrôle Préliminaire de Télémétrie & Baseline doit avoir réussi.

Justification : Cette section décrit l’exécution précise de la technique de l’adversaire (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 entraîneront un diagnostic incorrect.

  • Narratif d’Attaque & Commandes :
    L’attaquant a déjà compromis un compte utilisateur à faible privilège et escaladé vers un compte service qui possède des droits d’Administrateur Hyper-V. Pour maintenir une persistance furtive, ils conçoivent une image VM cachée stockée dans le répertoire de cache AppV (c:programdatamicrosoftAppVappVirtual Machines1DBCC80B-5803-4AF1-8772-712C688F408A.vmcx). En utilisant PowerShell, ils importent cette VM silencieusement et la démarrent avec le nom WSL, en se faisant passer pour une instance légitime du Sous-système Windows pour Linux. Cette ligne de commande exacte correspond aux chaînes codées en dur de la règle Sigma, garantissant que l’alerte se déclenche.

  • Script de Test de Régression :

    # -------------------------------------------------
    # Simulation de la persistance Curly COMrades Hyper‑V
    # -------------------------------------------------
    # Variables (correspondant exactement aux chaînes dans la règle)
    $vmPath = 'c:programdatamicrosoftAppVappVirtual Machines1DBCC80B-5803-4AF1-8772-712C688F408A.vmcx'
    $vmName = 'WSL'