El Malware CoinMiner Sigue Propagándose a través de Unidades USB
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
Detecciones
Detección de Actividades de Acceso Directo USB y Malware BAT [Evento de Archivo de Windows]
Ver
Detectar Comunicación de XMRig con el Servidor C&C a través de un Nombre de Host Específico [Conexión de Red de Windows]
Ver
Ejecución de Archivos Maliciosos a través de Printui.exe y Svcinsty64.exe [Creación de Proceso de Windows]
Ver
IOC (HashMd5) para detectar: Malware CoinMiner siendo distribuido continuamente a través de USB
Ver
IOC (IPDestination) para detectar: Malware CoinMiner siendo distribuido continuamente a través de USB
Ver
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:
- Etapa 1 – Soltar una DLL maliciosa: El adversario copia un
printui.dllcreado al mismo directorio queprintui.exe(simulando una carga útil de controlador entregada a través de un dispositivo USB). - Etapa 2 – Ejecutar
printui.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. - Etapa 3 – Ejecutar
svcinsty64.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.
- Etapa 1 – Soltar una DLL maliciosa: El adversario copia un
-
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