Análise da Campanha do Pacote npm BigSquatRat
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
O relatório perfila um pacote npm malicioso, bigmathix, que instala um trojan de acesso remoto Node.js. Ele usa código multiestágio ofuscado para buscar cargas adicionais a partir de conteúdo no GitHub controlado por atacantes e aurevian.cloud. A detecção é dificultada por chaves de decriptação dinâmicas e um argumento inicializador necessário que bloqueia a execução, consistente com um ataque direcionado à cadeia de suprimentos em desenvolvedores JavaScript.
Investigação
Pesquisadores desofuscaram o pacote para reconstruir uma cadeia que gera um processo filho, realiza a resolução de DNS e decripta URLs embutidas usando chaves derivadas. Forçando o valor do inicializador, eles recuperaram uma carga de segunda fase de aurevian.cloud, que introduziu ofuscação adicional na lógica final do RAT. Analistas também correlacionaram repositórios GitHub relacionados e pacotes npm adicionais publicados em prazos semelhantes para mapear o alcance da campanha.
Mitigação
Evite dependências npm não confiáveis — especialmente pacotes recém-publicados e com poucos downloads, ou módulos com mudanças abruptas de versão — e valide a integridade via hashes/controles de proveniência. Monitore processos filhos suspeitos gerados por node.exe e buscas externas inesperadas para domínios desconhecidos. Aplique filtragem de saída para aurevian.cloud e alerte para persistência, como chaves Run do Windows ou serviços systemd do Linux criados por processos Node.js.
Resposta
Se o bigmathix for identificado, isole o endpoint, remova o pacote e termine processos Node.js gerados. Exclua chaves de execução criadas ou unidades systemd, bloqueie domínios/IPs associados e colete logs que mostrem DNS, ancestralidade de processo e saída de rede. Realize uma análise forense para identificar cargas baixadas e persistência, como lançadores wscript.exe ou serviços agendados, depois procure artefatos correspondentes em todo o ambiente.
“graph TB %% Class Definitions Section classDef action fill:#99ccff classDef process fill:#ffcc99 classDef persistence fill:#ccffcc classDef c2 fill:#ccccff classDef cleanup fill:#ffccff %% Nodes Definitions node_supply_chain[“<b>Técnica</b> – T1195.001 Comprometimento da Cadeia de Suprimentos<br/><b>Descrição</b>: Comprometer a cadeia de suprimentos de software para distribuir código malicioso.<br/><b>Detalhes</b>: Pacote npm malicioso ‘bigmathix’ publicado.”] class node_supply_chain action node_obfuscation[“<b>Técnica</b> – T1027 Arquivos ou Informações Ofuscados<br/><b>Subtécnicas</b>: T1027.009 (Esteganografia), T1027.004 (Compilar Após Entrega)<br/><b>Descrição</b>: O pacote contém JavaScript altamente ofuscado que é desofuscado em tempo de execução.”] class node_obfuscation action node_process_creation[“<b>Técnica</b> – T1543 Criar ou Modificar Processo do Sistema<br/><b>Subtécnica</b>: T1543.001 (Lançar Agente)<br/><b>Descrição</b>: Loader gera um processo filho do Node.js e quebra a árvore de processos para ocultar a execução (T1036.009).”] class node_process_creation process node_dns_key_derivation[“<b>Técnica</b> – T1071.004 Protocolo de Camada de Aplicação DNS<br/><b>Adicional</b>: T1590.002 (Domínio/IP), T1596.001 (Obter Material Criptográfico)<br/><b>Descrição</b>: Gera argumento numérico, realiza consulta DNS para IP, combina IP com hash SHA-256 do README remoto para derivar chaves de decriptação.”] class node_dns_key_derivation action node_encrypted_download[“<b>Técnica</b> – T1573.001 Canal Criptografado Criptografia Assimétrica<br/><b>Descrição</b>: Usa canal criptografado AES-GCM para buscar carga de segunda fase de aurevian.cloud.”] class node_encrypted_download action node_persistence_linux[“<b>Técnica</b> – T1543.002 Serviço Systemd<br/><b>Descrição</b>: Cria um serviço systemd e o inicia via systemctl para persistência no Linux.”] class node_persistence_linux persistence node_persistence_windows[“<b>Técnica</b> – T1547.014 Chaves de Execução do Registro Pasta de Inicialização<br/><b>Descrição</b>: Cria uma chave de execução ASEP que lança wscript.exe → node.exe para persistência no Windows.”] class node_persistence_windows persistence node_c2[“<b>Técnica</b> – T1104 Transferência de Ferramentas de Entrada (C2)<br/><b>Descrição</b>: RAT consulta C2, executa comandos recebidos e verifica a extensão MetaMask para Chrome.”] class node_c2 c2 node_cleanup[“<b>Técnica</b> – T1070.004 Exclusão de Arquivos, T1070.009 Limpar Registro<br/><b>Descrição</b>: A etapa final exclui seus arquivos e remove entradas de registro/chave de execução para apagar evidências.”] class node_cleanup cleanup %% Connections Showing Attack Flow node_supply_chain u002du002d>|leads_to| node_obfuscation node_obfuscation u002du002d>|leads_to| node_process_creation node_process_creation u002du002d>|uses| node_dns_key_derivation node_dns_key_derivation u002du002d>|uses| node_encrypted_download node_encrypted_download u002du002d>|enables| node_persistence_linux node_encrypted_download u002du002d>|enables| node_persistence_windows node_persistence_linux u002du002d>|supports| node_c2 node_persistence_windows u002du002d>|supports| node_c2 node_c2 u002du002d>|triggers| node_cleanup “
Fluxo de Ataque
Detecções
LOLBAS WScript / CScript (via criação_de_processo)
Ver
Extensão de Arquivo Suspeita Adicionada às Chaves de Execução [ASEPs] (via evento_de_registro)
Ver
Processos Filhos NodeJS Suspeitos [Linux] (via linha_de_comando)
Ver
Possível Download de Arquivo do Github Iniciado por Processo Incomum (via conexão_de_rede)
Ver
IOCs (Emails) para detectar: Análise da Campanha do Pacote npm BigSquatRat
Ver
IOCs (HashSha1) para detectar: Análise da Campanha do Pacote npm BigSquatRat
Ver
IOCs (HashSha256) para detectar: Análise da Campanha do Pacote npm BigSquatRat
Ver
Detecção de Execução de RAT Node.js via wscript.exe [Criação de Processo do Windows]
Ver
Detecção de Malware Node.js Usando Scripts Ofuscados e systemctl para Persistência [Criação de Processo do Linux]
Ver
Execução de Simulação
Pré-requisito: O Pré-teste de Telemetria & Linha de Base deve ter sido aprovado.
Racional: Esta seção detalha a execução precisa da técnica adversária (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e buscar gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a um diagnóstico incorreto.
-
Narrativa de Ataque & Comandos:
O atacante possui uma carga maliciosa JavaScript que necessita do runtime Node.js para executar. Para evadir da lista de permissões padrão de aplicativos, eles usamwscript.exe—um host de scripts nativo do Windows—para lançarnode.exeindiretamente, criando uma relação pai/filho que corresponde à regra de detecção. As etapas são:- Soltar um script malicioso (
malicious.js) que simplesmente geranode.execom a carga. - Criar um JavaScript intermediário (
launcher.js) que o Host de Scripts do Windows executará; esse intermediário usaWScript.Shellpara executarnode.execom a carga. - Execute o intermediário via
wscript.exe //B //Nologo launcher.js. - A árvore de processos resultante é
wscript.exe → node.exe → malicious.js, gerando a telemetria alvo.
- Soltar um script malicioso (
-
Script de Teste de Regressão:
O seguinte script PowerShell automatiza toda a cadeia em um host de teste Windows.# ------------------------------------------------- # Teste de Regressão – Execução de RAT Node.js via wscript # ------------------------------------------------- # Variáveis $tempPath = "$env:TEMP" $launcherPath = Join-Path $tempPath "launcher.js" $payloadPath = Join-Path $tempPath "malicious.js" $nodePath = "C:Program Filesnodejsnode.exe" # Ajustar se instalado em outro local # 1. Escrever a carga maliciosa (simples log de console para demonstração) $payloadContent = @" console.log('Carga maliciosa executada'); // O código real do RAT estaria aqui "@ $payloadContent | Out-File -FilePath $payloadPath -Encoding ASCII # 2. Escrever o intermediário que o wscript executará $launcherContent = @" var shell = WScript.CreateObject("WScript.Shell"); // Executar node.exe com o script malicioso var cmd = "`"$nodePath`" `"$payloadPath`""; shell.Run(cmd, 0, false); "@ $launcherContent | Out-File -FilePath $launcherPath -Encoding ASCII # 3. Executar a cadeia via wscript Write-Host "Lançando cadeia maliciosa..." wscript.exe //B //Nologo $launcherPath # Pausar para permitir que a telemetria seja capturada Start-Sleep -Seconds 5 # 4. Opcional: verificar se o processo node está em execução (para observação manual) Get-Process -Name node -ErrorAction SilentlyContinue # ------------------------------------------------- # Fim do teste de regressão # ------------------------------------------------- -
Comandos de Limpeza: Remover artefatos e terminar processos remanescentes.
# Script de Limpeza – executar após a validação $tempPath = "$env:TEMP" Remove-Item -Path (Join-Path $tempPath "launcher.js") -ErrorAction SilentlyContinue Remove-Item -Path (Join-Path $tempPath "malicious.js") -ErrorAction SilentlyContinue # Finalizar qualquer processo node.exe remanescente gerado pelo teste Get-Process -Name node -ErrorAction SilentlyContinue | Stop-Process -Force