SOC Prime Bias: Critico

22 Gen 2026 19:09

Analisi della Campagna del Pacchetto npm BigSquatRat

Author Photo
Ruslan Mikhalov Capo della Ricerca sulle Minacce presso 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.

“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>Technica</b> – T1195.001 Compromissione della Supply Chain<br /><b>Descrizione</b>: Compromettere la supply chain del software per distribuire codice dannoso.<br /><b>Dettaglio</b>: Pacchetto npm dannoso ‘bigmathix’ pubblicato.”] class node_supply_chain action node_obfuscation[“<b>Tecnica</b> – T1027 File o Informazioni Offuscate<br /><b>Subu2011Tecniche</b>: T1027.009 (Steganografia), T1027.004 (Compilazione Dopo la Consegna)<br /><b>Descrizione</b>: Il pacchetto contiene JavaScript fortemente offuscato che viene deoffuscato a runtime.”] class node_obfuscation action node_process_creation[“<b>Tecnica</b> – T1543 Creare o Modificare Processo di Sistema<br /><b>Subu2011Tecnica</b>: T1543.001 (Lancio Agente)<br /><b>Descrizione</b>: Il caricatore genera un processo figlio Node.js e rompe l’albero dei processi per nascondere l’esecuzione (T1036.009).”] class node_process_creation process node_dns_key_derivation[“<b>Tecnica</b> – T1071.004 Protocollo DNS Livello Applicazione<br /><b>Aggiuntivo</b>: T1590.002 (Dominio/IP), T1596.001 (Ottenere Materiale Criptografico)<br /><b>Descrizione</b>: Genera argomento numerico, esegue una ricerca DNS per IP, combina IP con hash SHAu2011256 del README remoto per derivare chiavi di decrittografia.”] class node_dns_key_derivation action node_encrypted_download[“<b>Tecnica</b> – T1573.001 Canale Cifrato a Crittografia Asimmetrica<br /><b>Descrizione</b>: Utilizza canale cifrato AESu2011GCM per recuperare un payload di secondo stadio da aurevian.cloud.”] class node_encrypted_download action node_persistence_linux[“<b>Tecnica</b> – T1543.002 Servizio Systemd<br /><b>Descrizione</b>: Crea un servizio systemd e lo avvia tramite systemctl per persistenza su Linux.”] class node_persistence_linux persistence node_persistence_windows[“<b>Tecnica</b> – T1547.014 Chiavi di Avvio Registro di Sistema<br /><b>Descrizione</b>: Crea una chiave di esecuzione ASEP che avvia wscript.exe u2192 node.exe per persistenza su Windows.”] class node_persistence_windows persistence node_c2[“<b>Tecnica</b> – T1104 Trasferimento Strumento Ingress (C2)<br /><b>Descrizione</b>: RAT interroga C2, esegue i comandi ricevuti e verifica l’estensione MetaMask di Chrome.”] class node_c2 c2 node_cleanup[“<b>Tecnica</b> – T1070.004 Eliminazione File, T1070.009 Pulizia Registro<br /><b>Descrizione</b>: L’ultima fase elimina i suoi file e rimuove voci del registro/chiavi di esecuzione per cancellare le prove.”] class node_cleanup cleanup %% Connessioni che Mostrano il Flusso d’Attacco node_supply_chain u002du002d>|porta_a| node_obfuscation node_obfuscation u002du002d>|porta_a| node_process_creation node_process_creation u002du002d>|usa| node_dns_key_derivation node_dns_key_derivation u002du002d>|usa| node_encrypted_download node_encrypted_download u002du002d>|abilita| node_persistence_linux node_encrypted_download u002du002d>|abilita| node_persistence_windows node_persistence_linux u002du002d>|supporta| node_c2 node_persistence_windows u002du002d>|supporta| node_c2 node_c2 u002du002d>|attiva| node_cleanup “

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