SOC Prime Bias: Crítico

22 Jan 2026 16:09 UTC

Análise da Campanha do Pacote npm BigSquatRat

Author Photo
Ruslan Mikhalov Chief of Threat Research at 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.

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