SOC Prime Bias: Critico

22 Jan 2026 16:09 UTC

Analisi della Campagna del Pacchetto npm BigSquatRat

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
Analisi della Campagna del Pacchetto npm BigSquatRat
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riassunto

Il rapporto profila un pacchetto npm dannoso, bigmathix, che installa un trojan di accesso remoto Node.js. Utilizza codice a più stadi offuscato per recuperare payload successivi da contenuti GitHub controllati dagli aggressori e da aurevian.cloud. Il rilevamento è ostacolato da chiavi di decrittografia dinamiche e da un argomento inizializzatore richiesto che limita l’esecuzione, coerente con un attacco mirato alla supply chain contro gli sviluppatori JavaScript.

Indagine

I ricercatori hanno deoffuscato il pacchetto per ricostruire una catena che genera un processo figlio, esegue una risoluzione DNS e decrittografa gli URL incorporati utilizzando chiavi derivate. Forzando l’argomento inizializzatore, hanno recuperato un payload di secondo stadio da aurevian.cloud, che ha introdotto ulteriore offuscamento nella logica finale del RAT. Gli analisti hanno anche correlato repository GitHub correlati e ulteriori pacchetti npm pubblicati intorno a timestamp simili per mappare l’ambito della campagna.

Mitigazione

Evitare dipendenze npm non fidate—soprattutto pacchetti appena pubblicati, con pochi download, o moduli con cambiamenti di versione improvvisi—e convalidare l’integrità tramite controlli di hash/provenienza. Monitorare processi figli sospetti generati da node.exe e ricerche in uscita inaspettate verso domini sconosciuti. Applicare il filtraggio di uscita per aurevian.cloud e attivare avvisi per persistenza come chiavi Run di Windows o servizi systemd su Linux creati da processi Node.js.

Risposta

Se bigmathix viene identificato, isolare l’endpoint, rimuovere il pacchetto e terminare i processi Node.js generati. Eliminare chiavi Run o unità systemd create, bloccare domini/IP associati e raccogliere log che mostrano DNS, genealogia dei processi e uscita di rete. Eseguire la forense per identificare i payload scaricati e persistenza come launcher wscript.exe o servizi pianificati, quindi ricercare in tutto l’ambiente per artefatti corrispondenti.

Flusso d’Attacco

Esecuzione di Simulazione

Prerequisito: Il Controllo Pre-volo Telemetria & Baseline deve essere passato.

Razionale: Questa sezione illustra l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e il racconto DEVONO riflettere direttamente i TTP identificati e mirare a generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.

  • Narrazione dell’Attacco & Comandi:
    L’attaccante possiede un payload JavaScript dannoso che necessita del runtime Node.js per essere eseguito. Per eludere il whitelisting standard delle applicazioni, utilizza wscript.exe—un host script nativo di Windows—per lanciare node.exe indirettamente, creando una relazione genitore/figlio che corrisponde alla regola di rilevamento. I passaggi sono:

    1. Lasciare uno script dannoso (malicious.js) che generi semplicemente node.exe con il payload.
    2. Creare un wrapper JavaScript (launcher.js) che l’Host Script di Windows eseguirà; questo wrapper utilizza WScript.Shell per eseguire node.exe con il payload.
    3. Eseguire il wrapper tramite wscript.exe //B //Nologo launcher.js.
    4. L’albero dei processi risultante è wscript.exe → node.exe → malicious.js, generando la telemetria di destinazione.
  • Script di Test di Regressione:
    Il seguente script PowerShell automatizza l’intera catena su un host di test Windows.

    # -------------------------------------------------
    # Test di Regressione – Esecuzione di Node.js RAT tramite wscript
    # -------------------------------------------------
    
    # Variabili
    $tempPath = "$env:TEMP"
    $launcherPath = Join-Path $tempPath "launcher.js"
    $payloadPath  = Join-Path $tempPath "malicious.js"
    $nodePath     = "C:Program Filesnodejsnode.exe"   # Regola se installato altrove
    
    # 1. Scrivi il payload dannoso (semplice console log per demo)
    $payloadContent = @"
    console.log('Payload dannoso eseguito');
    // Il vero codice RAT sarebbe qui
    "@
    $payloadContent | Out-File -FilePath $payloadPath -Encoding ASCII
    
    # 2. Scrivi il launcher che wscript eseguirà
    $launcherContent = @"
    var shell = WScript.CreateObject("WScript.Shell");
    // Esegui node.exe con lo script dannoso
    var cmd = "`"$nodePath`" `"$payloadPath`"";
    shell.Run(cmd, 0, false);
    "@
    $launcherContent | Out-File -FilePath $launcherPath -Encoding ASCII
    
    # 3. Esegui la catena tramite wscript
    Write-Host "Avviando catena dannosa..."
    wscript.exe //B //Nologo $launcherPath
    
    # Pausa per consentire la cattura della telemetria
    Start-Sleep -Seconds 5
    
    # 4. Facoltativo: verifica che il processo node sia in esecuzione (per osservazione manuale)
    Get-Process -Name node -ErrorAction SilentlyContinue
    
    # -------------------------------------------------
    # Fine del test di regressione
    # -------------------------------------------------
  • Comandi di Pulizia: Rimuovere gli artefatti e terminare i processi persistenti.

    # Script di pulizia – eseguire dopo la validazione
    $tempPath = "$env:TEMP"
    Remove-Item -Path (Join-Path $tempPath "launcher.js") -ErrorAction SilentlyContinue
    Remove-Item -Path (Join-Path $tempPath "malicious.js") -ErrorAction SilentlyContinue
    
    # Elimina eventuali processi node.exe rimanenti generati dal test
    Get-Process -Name node -ErrorAction SilentlyContinue | Stop-Process -Force