Sommario
Il 24 maggio 2024, la piattaforma automatizzata di rilevamento dei rischi di Phylum ha segnalato una pubblicazione sospetta di un RAT su npm. Il pacchetto in questione, chiamato glup-debugger-log
, è stato pubblicato con due file offuscati che lavorano insieme per compromettere i sistemi bersaglio, scaricare ulteriori componenti di malware e fornire all’attaccante un meccanismo di accesso remoto persistente.
L’Attacco
Quando si esaminano pacchetti npm sospetti, il file package.json
è sempre un buon punto di partenza. Questo file contiene informazioni cruciali sulla configurazione del pacchetto, le dipendenze e gli script. Gli attaccanti spesso sfruttano questo file inserendo comandi dannosi nei vari hook di installazione. In questo caso, il package.json
del pacchetto glup-debugger-log
mostrava script insoliti e l’uso di javascript-obfuscator
per offuscare i file ./lib/play.js
e ./lib/play-share.js
.
Analisi del Codice
File index.js
Il file index.js
richiama diverse librerie, tra cui gulplog
e glogg
, legittime e correlate a Gulp, ma anche un file locale ./lib/play
. Il file play.js
è offuscato, il che rende difficile analizzarlo direttamente.
Funzione bind()
La funzione bind()
nel file play.js
viene utilizzata per eseguire le funzioni start()
e share()
. La funzione start()
scarica ed esegue comandi o file da URL specificati, mentre la funzione share()
esegue un server HTTP per ricevere ed eseguire comandi da remoto.
La Dropper
La funzione start()
verifica l’ambiente della macchina target e decide se eseguire comandi localmente o scaricare ed eseguire file da un URL. Utilizza child_process
per eseguire comandi sulla macchina compromessa.
Server HTTP per RCE Arbitrario
La funzione share()
imposta un server HTTP che ascolta le richieste sulla porta 3004 e esegue i comandi forniti come query cmd
. Questo consente all’attaccante di eseguire comandi arbitrari sulla macchina compromessa in modo remoto.
Conclusioni di Phylum
Secondo la ricerca, questo RAT (Remote Access Trojan) è sia grezzo che sofisticato. È minimalista e focalizzato sulle funzionalità principali del RAT, implementato completamente in JavaScript senza bisogno di binari esterni. È sofisticato nella sua strategia di offuscamento, nei controlli ambientali e nella sua modularità. Questa combinazione lo rende particolarmente interessante dal punto di vista dell’analisi del malware, evidenziando l’evoluzione continua del panorama delle minacce nel mondo open source.