SOC Prime Bias: Crítico

22 Jan 2026 19:09

Análise da Campanha do Pacote npm BigSquatRat

Author Photo
Ruslan Mikhalov Chefe de Pesquisa de Ameaças na SOC Prime linkedin icon Seguir
Análise da Campanha do Pacote npm BigSquatRat
shield icon

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

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 usam wscript.exe—um host de scripts nativo do Windows—para lançar node.exe indiretamente, criando uma relação pai/filho que corresponde à regra de detecção. As etapas são:

    1. Soltar um script malicioso (malicious.js) que simplesmente gera node.exe com a carga.
    2. Criar um JavaScript intermediário (launcher.js) que o Host de Scripts do Windows executará; esse intermediário usa WScript.Shell para executar node.exe com a carga.
    3. Execute o intermediário via wscript.exe //B //Nologo launcher.js.
    4. A árvore de processos resultante é wscript.exe → node.exe → malicious.js, gerando a telemetria alvo.
  • 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