Analisi della Campagna del Pacchetto npm BigSquatRat
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
Rilevamenti
LOLBAS WScript / CScript (via process_creation)
Visualizza
Estensione di File Sospetta Aggiunta alle Chiavi di Esecuzione [ASEPs] (via registry_event)
Visualizza
Processi Figlio NodeJS Sospetti [Linux] (via cmdline)
Visualizza
Possibile Download di File da Github Iniziato da Processo Insolito (via network_connection)
Visualizza
IOC (Email) da rilevare: Analisi della Campagna Pacchetto npm BigSquatRat
Visualizza
IOC (HashSha1) da rilevare: Analisi della Campagna Pacchetto npm BigSquatRat
Visualizza
IOC (HashSha256) da rilevare: Analisi della Campagna Pacchetto npm BigSquatRat
Visualizza
Rilevamento di Esecuzione di Node.js RAT tramite wscript.exe [Creazione Processo Windows]
Visualizza
Rilevamento di Malware Node.js Utilizzo di Script Offuscati e systemctl per Persistenza [Creazione Processo Linux]
Visualizza
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, utilizzawscript.exe—un host script nativo di Windows—per lanciarenode.exeindirettamente, creando una relazione genitore/figlio che corrisponde alla regola di rilevamento. I passaggi sono:- Lasciare uno script dannoso (
malicious.js) che generi semplicementenode.execon il payload. - Creare un wrapper JavaScript (
launcher.js) che l’Host Script di Windows eseguirĂ ; questo wrapper utilizzaWScript.Shellper eseguirenode.execon il payload. - Eseguire il wrapper tramite
wscript.exe //B //Nologo launcher.js. - L’albero dei processi risultante è
wscript.exe → node.exe → malicious.js, generando la telemetria di destinazione.
- Lasciare uno script dannoso (
-
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