SOC Prime Bias: Medio

05 Dec 2025 14:36 UTC

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 Seguir
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.

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