SOC Prime Bias: Medio

05 Dic 2025 17:36

El Malware CoinMiner Sigue Propagándose a través de Unidades USB

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
El Malware CoinMiner Sigue Propagándose a través de Unidades USB
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

RESUMEN

El malware CoinMiner continúa propagándose a través de unidades USB en Corea del Sur, aprovechando un acceso directo oculto que activa scripts VBS y BAT, los cuales a su vez configuran múltiples componentes que finalmente entregan una carga útil de minería de criptomonedas.

Investigación

El informe describe la estructura de directorios en el USB infectado, la cadena de ejecución desde el acceso directo a través de múltiples fases de gota, el registro bajo el servicio DcomLaunch y el despliegue de los mineros de criptomonedas PrintMiner y XMRig.

Mitigación

Los usuarios deben mantener el sistema operativo y el software actualizados, bloquear la ejecución de archivos de acceso directo no confiables, usar herramientas antivirus actualizadas y negar el acceso a infraestructuras maliciosas conocidas.

Respuesta

Detectar el acceso directo malicioso y sus scripts relacionados, monitorear la creación de archivos de lanzadera y registros DCOM, y bloquear el tráfico de red a los dominios de comando y control de minería y la dirección IP identificada.

graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#66cc66 classDef file fill:#ffcc66 classDef process fill:#c266ff classDef malware fill:#ff6666 classDef network fill:#cccccc %% Nodes action_usb_insert[«<b>Acción</b> – <b>T1204.002 Ejecución del Usuario: Archivo Malicioso</b>: El usuario inserta una unidad USB comprometida que contiene un acceso directo oculto.»] class action_usb_insert action tool_shortcut[«<b>Herramienta</b> – <b>T1547.009 Modificación de Accesos Directos</b>: Acceso directo LNK oculto \»USB Drive.lnk\» visible para el usuario.»] class tool_shortcut tool tool_vbscript[«<b>Herramienta</b> – <b>T1059.005 Visual Basic</b>: El acceso directo inicia un script de Visual Basic.»] class tool_vbscript tool tool_batch[«<b>Herramienta</b> – <b>T1059.003 Intérprete de Comandos de Windows</b>: El VBScript ejecuta un archivo por lotes.»] class tool_batch tool file_malicious_dll[«<b>Archivo</b> – <b>T1036.005 Suplantación: Coincidencia con Nombre Legítimo</b> & <b>T1036.008 Suplantación: Doble Extensión</b>: DLL maliciosa \»printui.dll\» (renombrada desde .dat) depositada en C:\\Windows\\System32 usando directorios ocultos.»] class file_malicious_dll file process_printui[«<b>Proceso</b> – <b>T1055.001 Inyección de Procesos</b> & <b>T1574.001 Secuestro de DLL</b>: El ejecutable legítimo printui.exe carga la DLL maliciosa.»] class process_printui process tool_dcom[«<b>Herramienta</b> – <b>T1546.015 Componente de Software del Servidor</b> & <b>T1021.003 DCOM</b>: Registra la DLL en un servicio DCOM para persistencia.»] class tool_dcom tool file_svcinsty[«<b>Archivo</b>: Ejecutable \»svcinsty64.exe\» creado por el dropper para instalar la carga final.»] class file_svcinsty file file_svctrl[«<b>Archivo</b>: Ejecutable \»svctrl64.exe\» creado por el dropper como auxiliar.»] class file_svctrl file malware_printminer[«<b>Malware</b> – PrintMiner: Añade exclusiones a Windows Defender, falsifica alertas de seguridad y prepara la descarga del minero.»] class malware_printminer malware tool_defender_exclusion[«<b>Herramienta</b> – <b>T1564.012 Suplantación de Contenido en Disco</b> & <b>T1562.011 Modificar el Registro</b>: Modifica la lista de exclusiones de Defender para ocultar la actividad.»] class tool_defender_exclusion tool network_c2[«<b>Red</b> – <b>T1071.001 Protocolos Web</b>, <b>T1102.002 Servicios Web</b>, <b>T1102.003 Transferencia de Herramientas Entrantes</b>: Comunicación HTTPS con el comando‑y‑control para obtener configuración y descargar el minero.»] class network_c2 network malware_xmrig[«<b>Malware</b> – XMRig: Minero de Monero de código abierto descargado y ejecutado.»] class malware_xmrig malware action_compute_hijack[«<b>Acción</b> – <b>T1496.001 Secuestro de Recursos</b>: Ejecuta XMRig para minar criptomonedas mientras evade herramientas de análisis.»] class action_compute_hijack action action_replication[«<b>Acción</b> – <b>T1091 Replicación a Través de Medios Extraíbles</b>: Recrea el acceso directo y los archivos ocultos en otras unidades USB.»] class action_replication action %% Connections action_usb_insert u002du002du003e|crea| tool_shortcut tool_shortcut u002du002du003e|inicia| tool_vbscript tool_vbscript u002du002du003e|ejecuta| tool_batch tool_batch u002du002du003e|deposita| file_malicious_dll file_malicious_dll u002du002du003e|cargado por| process_printui process_printui u002du002du003e|establece persistencia mediante| tool_dcom tool_dcom u002du002du003e|crea| file_svcinsty tool_dcom u002du002du003e|crea| file_svctrl file_svcinsty u002du002du003e|instala| malware_printminer file_svctrl u002du002du003e|soporta| malware_printminer malware_printminer u002du002du003e|añade exclusión usando| tool_defender_exclusion malware_printminer u002du002du003e|se comunica con| network_c2 network_c2 u002du002du003e|entrega| malware_xmrig malware_xmrig u002du002du003e|ejecuta| action_compute_hijack action_compute_hijack u002du002du003e|dispara| action_replication action_replication u002du002du003e|coloca| tool_shortcut

Flujo de Ataque

Ejecución de Simulación

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

Justificación: 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 la narrativa DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados llevarán a un diagnóstico erróneo.

  • Narrativa del Ataque y Comandos:

    1. Etapa 1 – Soltar una DLL maliciosa: El adversario copia unprintui.dllcreado al mismo directorio queprintui.exe(simulando una carga útil de controlador entregada a través de un dispositivo USB).
    2. Etapa 2 – Ejecutarprintui.exe: Invocandoprintui.execon el/mlconmutador (carga maliciosa), se carga la DLL maliciosa, generando un evento de creación de proceso que coincide con laselección (Imagen termina con printui.exe) mientras también se satisface lafiltrocondición (Imagen contiene printui.dll). La reglaexcluyeeste caso, por lo que el atacante añade un segundo paso para eludirlo.
    3. Etapa 3 – Ejecutarsvcinsty64.exe: El atacante registra un nuevo servicio señalando a un binario de carga útil (payload.exe) almacenado en la unidad USB. Esta acción crea un evento de creación de proceso parasvcinsty64.exe, satisfaciendo la selección de la regla sin activar el filtro, generando así una alerta.
  • Script de Prueba de Regresión:El script a continuación automatiza las tres etapas, asegurando la reproducibilidad.

    # -------------------------------------------------
    # Prueba de Regresión – Activar regla Sigma para printui.exe / svcinsty64.exe
    # -------------------------------------------------
    $dllPath = "$env:TEMPprintui.dll"
    $exePath = "$env:SystemRootSystem32printui.exe"
    $svcInstPath = "$env:SystemRootSystem32svcinsty64.exe"
    $payloadPath = "$env:TEMPpayload.exe"
    
    # 1️⃣ Deja caer una DLL maliciosa ficticia (contenido binario no importante para la detección)
    Write-Host "[*] Creando DLL maliciosa ficticia en $dllPath"
    Set-Content -Path $dllPath -Value ([byte[]](0..255)) -Encoding Byte
    
    # 2️⃣ Ejecuta printui.exe (carga benigna) – NO debería activarse debido a filtro
    Write-Host "[*] Ejecutando printui.exe benigna (será filtrada)"
    Start-Process -FilePath $exePath -ArgumentList "/p" -Wait
    
    # 3️⃣ Ejecuta printui.exe con carga de DLL maliciosa – filtrado (esperado)
    Write-Host "[*] Ejecutando printui.exe con DLL maliciosa (caso filtrado)"
    Start-Process -FilePath $exePath -ArgumentList "/ml `$dllPath`" -Wait
    
    # 4️⃣ Prepara un ejecutable de carga útil ficticia (script CMD simple compilado a exe)
    Write-Host "[*] Creando ejecutable de carga útil ficticia"
    $payloadSource = @"
    @echo off
    echo Payload ejecutado > $env:TEMPpayload_output.txt
    "@
    $payloadScript = "$env:TEMPpayload.bat"
    $payloadSource | Set-Content -Path $payloadScript -Encoding ASCII
    # Convierte .bat a .exe usando iexpress (integrado)
    $iexpress = "$env:SystemRootSystem32iexpress.exe"
    $config = "$env:TEMPiexpress.sed"
    @"
    [Version]
    Version=3.0
    [Options]
    ExtractTitle=Payload
    ExtractLocation=%TEMP%
    ShowProgress=0
    HideExtractWindow=1
    [SourceFiles]
    SourceFiles=0
    %TEMP%payload.bat
    [Run]
    RunCommand="%TEMP%payload.bat"
    "@ | Set-Content -Path $config -Encoding ASCII
    & $iexpress /N /Q /M $config
    Move-Item -Path "$env:TEMPPayload.exe" -Destination $payloadPath -Force
    
    # 5️⃣ Registra un servicio malicioso usando svcinsty64.exe – DEBERÍA ACTIVARSE
    Write-Host "[*] Registrando servicio malicioso vía svcinsty64.exe"
    $svcName = "MaliciousSvc"
    $svcDisplay = "Servicio Malicioso"
    $svcCmd = "`"$payloadPath`""
    $svcArgs = "/install `$svcName` `$svcDisplay` `$svcCmd`"
    Start-Process -FilePath $svcInstPath -ArgumentList $svcArgs -Wait
    
    # 6️⃣ Limpia el servicio
    Write-Host "[*] Eliminando servicio malicioso"
    $removeArgs = "/uninstall `$svcName`"
    Start-Process -FilePath $svcInstPath -ArgumentList $removeArgs -Wait
    
    # 7️⃣ Elimina artefactos temporales
    Write-Host "[*] Limpiando archivos temporales"
    Remove-Item -Path $dllPath -Force -ErrorAction SilentlyContinue
    Remove-Item -Path $payloadPath -Force -ErrorAction SilentlyContinue
    Remove-Item -Path $payloadScript -Force -ErrorAction SilentlyContinue
    Write-Host "[+] Prueba completada"
  • Comandos de Limpieza:(Si el script anterior falla o prefieres la limpieza manual)

    # Elimina el servicio malicioso si aún está presente
    $svcName = "MaliciousSvc"
    $svcInstPath = "$env:SystemRootSystem32svcinsty64.exe"
    & $svcInstPath /uninstall $svcName
    
    # Elimina DLL y carga útil temporales
    Remove-Item -Path "$env:TEMPprintui.dll" -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPpayload.exe" -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPpayload.bat" -Force -ErrorAction SilentlyContinue
    
    # (Opcional) Verifica que no queden servicios
    Get-Service -Name $svcName -ErrorAction SilentlyContinue