
Uno strumento per studiare malware JavaScript.
Uno strumento per analizzare JavaScript malevolo.
Basta installare box-js tramite npm:
npm install box-js --global
box-js è disponibile anche:
- come modulo di Cuckoo (vedi la directory
integrationse Nwinternights/Cuckoo_Boxjs);- come Dockerfile (vedi
integrations/README.md);- come pacchetto nelle distribuzioni per professionisti della sicurezza (REMnux, BlackArch);
- come parte di applicazioni open source (Intel Owl);
- come parte di servizi commerciali di terze parti (any.run).
Supponiamo di avere un campione chiamato sample.js: per analizzarlo, basta eseguire
box-js sample.js
Probabilmente vorrai anche scaricare eventuali payload; usa il flag --download per abilitare il download. Altrimenti, il motore simulerà un errore 404, in modo tale che lo script venga ingannato pensando che il sito di distribuzione non sia raggiungibile e contatti eventuali siti di fallback.
Box.js emulerà un ambiente Windows JScript, stamperà un riepilogo dell'emulazione sulla console e creerà una cartella chiamata sample.js.results (se già esiste, creerà sample.js.1.results e così via). Questa cartella conterrà:
analysis.log, un log dell'analisi così come stampata a schermo;snippets.json, un elenco di frammenti di codice eseguiti dal campione (JavaScript, comandi shell, ecc.);urls.json, un elenco di URL contattati;active_urls.json, un elenco di URL che sembrano distribuire malware attivo;resources.json, gli stream ADODB (cioè i file che lo script ha scritto su disco) con tipi di file e hash;IOC.json, un elenco di comportamenti identificati come IOC (Indicatori di Compromissione). Questi includono accessi al registro, file scritti, richieste HTTP e così via.Puoi analizzarli da solo, oppure puoi inviarli automaticamente a Malwr, VirusTotal o una sandbox Cuckoo: per maggiori informazioni, esegui box-export --help.
Per un ulteriore isolamento, si consiglia di eseguire l'analisi in un contenitore Docker temporaneo. Consulta
integrations/README.mdper maggiori informazioni.
Se desideri automatizzare l'analisi, puoi utilizzare i codici di ritorno - documentati in
integrations/README.md- per distinguere tra diversi tipi di errori.
Il repository box-js da git include un file boilerplate.js. Questo file definisce alcune versioni stub di oggetti comuni del browser come document. Prova a rieseguire l'analisi con l'opzione --prepended-code=DIR/boilerplate.js, dove DIR è la directory del repository clonato di box-js, oppure con --prepended-code=default. L'opzione --prepended-code dice a box-js di anteporre il JavaScript nel file dato al campione in analisi.
Nota che puoi copiare boilerplate.js e aggiungere le tue classi stub, oggetti, ecc. secondo necessità. Usa l'opzione da riga di comando --prepended-code=show-default per stampare il percorso completo del file boilerplate.js predefinito di box-js.
Sebbene box.js sia tipicamente usato su singoli file, può anche eseguire analisi batch. Puoi semplicemente passare un elenco di file o cartelle da analizzare:
box-js sample1.js sample2.js /var/data/mySamples ...
Di default box.js elaborerà i campioni in parallelo, eseguendo un'analisi per core. Puoi usare un'impostazione diversa specificando un valore per --threads: in particolare, 0 rimuoverà il limite, facendo sì che box-js generi quanti più thread di analisi possibile, risultando in un'analisi molto veloce ma possibilmente sovraccaricando il sistema (nota che le analisi sono solitamente CPU-bound, non RAM-bound).
Puoi usare --loglevel=warn per silenziare i messaggi relativi all'analisi e mostrare solo le informazioni di avanzamento.
Dopo che l'analisi è terminata, puoi estrarre gli URL attivi in questo modo:
cat ./*.results/active_urls.json | sort | uniq