
Ein Tool zum Studieren von JavaScript-Malware.
Ein Dienstprogramm zur Analyse bösartiger JavaScripts.
Installieren Sie box-js einfach über npm:
npm install box-js --global
box-js ist auch verfügbar:
- als Cuckoo-Modul (siehe das
integrations-Verzeichnis und Nwinternights/Cuckoo_Boxjs);- als Dockerfile (siehe
integrations/README.md);- als Paket in Distributionen für Sicherheitsexperten (REMnux, BlackArch);
- als Teil von Open-Source-Anwendungen (Intel Owl);
- als Teil von kommerziellen Drittanbieterdiensten (any.run).
Angenommen, Sie haben eine Probe namens sample.js: Um sie zu analysieren, führen Sie einfach aus
box-js sample.js
Wahrscheinlich möchten Sie auch Payloads herunterladen; verwenden Sie die Option --download, um das Herunterladen zu aktivieren. Andernfalls simuliert die Engine einen 404-Fehler, sodass das Script denkt, die Verteilungsseite sei nicht erreichbar, und kontaktieren etwaige Fallback-Seiten.
Box.js emuliert eine Windows-JScript-Umgebung, gibt eine Zusammenfassung der Emulation auf der Konsole aus und erstellt einen Ordner namens sample.js.results (falls er bereits existiert, wird sample.js.1.results usw. erstellt). Dieser Ordner enthält:
analysis.log, ein Protokoll der Analyse, wie sie auf dem Bildschirm ausgegeben wurde;snippets.json, eine Liste von Codefragmenten, die von der Probe ausgeführt wurden (JavaScript, Shell-Befehle usw.);urls.json, eine Liste der kontaktierten URLs;active_urls.json, eine Liste von URLs, die offenbar aktive Malware abwerfen;resources.json, die ADODB-Streams (d.h. die Dateien, die das Skript auf die Festplatte geschrieben hat) mit Dateitypen und Hashes;IOC.json, eine Liste von Verhaltensweisen, die als IOCs (Indikatoren für Kompromittierung) identifiziert wurden. Dazu gehören Registry-Zugriffe, geschriebene Dateien, HTTP-Anfragen usw.Sie können diese selbst analysieren oder automatisch an Malwr, VirusTotal oder eine Cuckoo-Sandbox übermitteln: für weitere Informationen führen Sie box-export --help aus.
Für eine bessere Isolierung wird empfohlen, die Analyse in einem temporären Docker-Container durchzuführen. Weitere Informationen finden Sie in
integrations/README.md.
Wenn Sie die Analyse automatisieren möchten, können Sie die Rückgabecodes - dokumentiert in
integrations/README.md- verwenden, um zwischen verschiedenen Fehlerarten zu unterscheiden.
Das box-js-Repository von Git enthält eine Datei boilerplate.js. Diese Datei definiert einige Stub-Versionen gängiger Browserobjekte wie document. Versuchen Sie, Ihre Analyse mit der Option --prepended-code=DIR/boilerplate.js erneut auszuführen, wobei DIR das Verzeichnis des geklonten box-js-Repositories ist, oder mit --prepended-code=default. Die Option --prepended-code weist box-js an, das JavaScript in der angegebenen Datei der zu analysierenden Probe voranzustellen.
Beachten Sie, dass Sie boilerplate.js kopieren und nach Bedarf eigene Stub-Klassen, -Objekte usw. hinzufügen können. Verwenden Sie die Befehlszeilenoption --prepended-code=show-default, um den vollständigen Pfad zur standardmäßigen box-js boilerplate.js-Datei auszugeben.
Während box.js typischerweise für einzelne Dateien verwendet wird, kann es auch Batch-Analysen durchführen. Sie können einfach eine Liste von Dateien oder Ordnern zur Analyse übergeben:
box-js sample1.js sample2.js /var/data/mySamples ...
Standardmäßig verarbeitet box.js Proben parallel und führt eine Analyse pro Kern durch. Sie können eine andere Einstellung verwenden, indem Sie einen Wert für --threads angeben: Insbesondere hebt 0 die Begrenzung auf, sodass box-js so viele Analyse-Threads wie möglich startet, was zu einer sehr schnellen Analyse führt, aber möglicherweise das System überlastet (beachten Sie, dass Analysen in der Regel CPU-intensiv sind, nicht RAM-intensiv).
Sie können --loglevel=warn verwenden, um analysebezogene Nachrichten zu unterdrücken und nur Fortschrittsinformationen anzuzeigen.
Nach Abschluss der Analyse können Sie die aktiven URLs wie folgt extrahieren:
cat ./*.results/active_urls.json | sort | uniq