SOC Prime Bias: Médio

14 Apr 2026 15:48 UTC

JavaScript Ofuscado no Centro do Ataque

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
JavaScript Ofuscado no Centro do Ataque
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

Um email de phishing entregou um arquivo JavaScript malicioso dentro de um arquivo RAR, iniciando uma cadeia de infecção que termina com a execução de malware Formbook. Uma vez lançado, o script grava vários arquivos na pasta pública, estabelece persistência através de uma tarefa agendada e inicia uma carga útil do PowerShell que descriptografa conteúdo criptografado com AES para carregar uma DLL .NET maliciosa. Essa DLL é então injetada em um MSBuild.exe processo, onde continua a execução e implanta a fase final do malware. A campanha também incorpora vários métodos de evasão de defesa, incluindo a modificação de ETW e AMSI para reduzir a detecção.

Investigação

Durante a análise, os pesquisadores identificaram o dropper JavaScript cbmjlzan.JS, juntamente com uma tarefa agendada configurada para executar o script copiado a cada quinze minutos para persistência. Eles também rastrearam o comando PowerShell responsável por decodificar dados codificados em base64 escondidos dentro de arquivos de imagem. O conteúdo descriptografado revelou uma DLL .NET que foi injetada em MSBuild.exe e usado para entregar o Formbook. Indicadores adicionais, incluindo caminhos de arquivos, nomes de tarefas e material criptográfico, foram extraídos para apoiar uma investigação mais profunda e o desenvolvimento de detecções.

Mitigação

As organizações devem bloquear a execução de arquivos JavaScript não confiáveis e scripts PowerShell lançados a partir de diretórios acessíveis pelo usuário, ao mesmo tempo que monitoram de perto as tarefas agendadas criadas com nomes incomuns ou aleatórios. Controles de execução devem ser aplicados a MSBuild.exe para prevenir abusos em cadeias de malware. Ferramentas de segurança também devem detectar comportamento de injeção de DLL, modificação de ETW e AMSI, e assinaturas conhecidas relacionadas ao Formbook. O treinamento de conscientização do usuário continua importante para reduzir o risco representado por anexos de phishing.

Resposta

Os defensores devem gerar alertas quando o arquivo JavaScript identificado ou a tarefa agendada relacionada aparecer, isolar o ponto de extremidade afetado e coletar evidências voláteis para análise. Os arquivos maliciosos devem ser removidos, a tarefa agendada deletada e a DLL injetada examinada em sua totalidade para entender o fluxo completo de execução. Quaisquer componentes de sistema comprometidos devem ser reconstruídos ou restaurados para garantir a integridade. IOCs relevantes também devem ser compartilhados com a comunidade de segurança mais ampla para ajudar outros a detectar atividades semelhantes.

Fluxo de Ataque

Execução de Simulação

Pré-requisito: A Verificação Preliminar de Telemetria e Linha de Base deve ter sido aprovada.

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 visam gerar a telemetria exata esperada pela lógica de detecção.

  • Narrativa do Ataque & Comandos:
    Um atacante que violou uma conta de baixo privilégio deseja baixar uma carga maliciosa armazenada como uma string Base64 em um repositório de scripts comprometido. Para evitar a detecção, o atacante cria um PowerShell one-liner que (1) decodifica a string Base64, (2) a invoca via iex, e (3) cria um objeto AES para descriptografar dados incorporados adicionais. A linha de comando exata é escrita para corresponder aos literais da regra.

    powershell
    C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -Noexit -nop -c iex([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(('REPLACED_STRING'.Replace('VFHDVXDJCF',''))))) ; $aes_var = [System.Security.Cryptography.Aes]::Create()
    
    • O atacante substitui REPLACED_STRING por uma carga útil Base64 legítima após remover um marcador conhecido (VFHDVXDJCF).
    • The -Noexit -nop -c interruptores suprimem prompts e bypass da política de execução, correspondendo à condição de detecção.
    • The $aes_var nome da variável é mantido literal para satisfazer a segunda cláusula de seleção.
  • Script de Teste de Regressão: O seguinte script PowerShell reproduz a linha de comando exata de uma maneira controlada, garantindo que o SIEM receba telemetria idêntica.

    # Script de Teste de Regressão – aciona a detecção
    $payload = "U2FtcGxlIEJhc2U2NCBTdHJpbmc="   # "String Base64 de Exemplo"
    $marker  = "VFHDVXDJCF"
    $obfuscated = $payload.Replace($marker, "")   # simula o .Replace usado na detecção
    $command = @"
    C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -Noexit -nop -c iex([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(('${obfuscated}'.Replace('VFHDVXDJCF',''))))) ; $aes_var = [System.Security.Cryptography.Aes]::Create()
    "@
    
    # Executar a linha de comando criada
    Invoke-Expression $command
  • Comandos de Limpeza: Remova quaisquer objetos AES remanescentes e interrompa a sessão do PowerShell gerada.

    # Cleanup – termine o processo filho do PowerShell se ainda estiver em execução
    Get-Process -Name powershell -ErrorAction SilentlyContinue | Where-Object { $_.Path -like "*WindowsPowerShellv1.0powershell.exe" } | Stop-Process -Force
    
    # Opcionalmente, limpe quaisquer variáveis temporárias
    Remove-Variable -Name payload, marker, obfuscated, command -ErrorAction SilentlyContinue