JavaScript Ofuscado no Centro do Ataque
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.
graph TB %% Class definitions classDef action fill:#ffcccc classDef tool fill:#99ccff classDef process fill:#ffff99 classDef file fill:#ccffcc classDef malware fill:#ffcc99 %% Nodes email_phishing[“<b>Ação</b> – <b>T1566.001 Spearphishing com anexo</b><br/>Anexo RAR malicioso entregue por email”] class email_phishing action tool_wsh[“<b>Ferramenta</b> – <b>Nome</b>: Windows Script Host (JavaScript)<br/><b>Técnica</b>: T1559.001 Component Object Model”] class tool_wsh tool action_copy[“<b>Ação</b> – <b>T1559.001 Component Object Model</b><br/>Script copia-se para C:\\Users\\Public\\Libraries”] class action_copy action action_sched[“<b>Ação</b> – <b>T1053 Tarefa agendada</b><br/>Cria tarefa agendada para persistência”] class action_sched action tool_ps[“<b>Ferramenta</b> – <b>Nome</b>: PowerShell<br/><b>Técnica</b>: T1059.001 Interpretador de comandos”] class tool_ps tool action_decode[“<b>Ação</b> – <b>T1027.004 Compilar após entrega</b> & <b>T1140 Desofuscar/decodificar</b><br/>Decodificação Base64 e AES”] class action_decode action action_patch[“<b>Ação</b> – <b>T1027.005 Remoção de indicadores</b><br/>Patches em ETW e AMSI”] class action_patch action file_dll[“<b>Ficheiro</b> – <b>Nome</b>: Orio.png (contém DLL .NET encriptada)<br/><b>Técnica</b>: Payload oculto”] class file_dll file process_msbuild[“<b>Processo</b> – <b>Nome</b>: msbuild.exe<br/><b>Técnica</b>: T1127.001 Execução proxy de ferramentas de desenvolvimento”] class process_msbuild process action_inject[“<b>Ação</b> – <b>T1055.001 Injeção de processo</b><br/>Injeta DLL descodificada em msbuild.exe”] class action_inject action malware_formbook[“<b>Malware</b> – <b>Nome</b>: Formbook<br/><b>Origem</b>: Payload embutido em Brio.png”] class malware_formbook malware %% Edges / Flow email_phishing –>|delivers| tool_wsh tool_wsh –>|uses COM to| action_copy action_copy –>|leads to| action_sched tool_wsh –>|launches| tool_ps tool_ps –>|executes| action_decode tool_ps –>|applies| action_patch action_decode –>|produces| file_dll action_patch –>|prepares environment for| file_dll file_dll –>|loaded by| process_msbuild process_msbuild –>|receives| action_inject action_inject –>|extracts final payload from| malware_formbook
Fluxo de Ataque
Detecções
Strings de PowerShell Suspeitas (via cmdline)
Ver
Strings de PowerShell Suspeitas (via powershell)
Ver
LOLBAS WScript / CScript (via process_creation)
Ver
Execução Suspeita do Perfil de Usuário Público (via process_creation)
Ver
Chamada de Métodos .NET Suspeitos a partir do PowerShell (via powershell)
Ver
Arquivos Suspeitos no Perfil de Usuário Público (via file_event)
Ver
Persistência de JavaScript Ofuscado e Injeção de Carga Maliciosa [Criação de Processo no Windows]
Ver
Execução de PowerShell Ofuscado para Descriptografia [PowerShell do Windows]
Ver
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 viaiex, 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_STRINGpor uma carga útil Base64 legítima após remover um marcador conhecido (VFHDVXDJCF). - The
-Noexit -nop -cinterruptores suprimem prompts e bypass da política de execução, correspondendo à condição de detecção. - The
$aes_varnome da variável é mantido literal para satisfazer a segunda cláusula de seleção.
- O atacante substitui
-
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