
Sandbox pour l'analyse semi-automatique de malwares JavaScript, la désobfuscation et l'extraction de payloads. Écrit pour Node.js.
Sandbox pour l'analyse semi-automatique de malwares JavaScript, la désobfuscation et l'extraction de charges utiles. Écrit pour Node.js
malware-jail est écrit pour le sandbox 'vm' de Node. Implémente actuellement le contexte WScript (Windows Scripting Host) env/wscript.js, du moins la partie fréquemment utilisée par les malwares. Le contexte du navigateur Internet est partiellement implémenté env/browser.js.
Fonctionne sur tous les systèmes d'exploitation. Développé et testé sur Linux, Node.js v6.6.0.
En raison de l'utilisation de certaines fonctionnalités ES6, vous aurez besoin de Node.js >= 6.x.
Voir EXEMPLES pour des échantillons de malwares analysés.
Si vous avez de nouveaux échantillons de malwares, veuillez les soumettre à javascript-malware-collection, soit par issue soit par pull request.
Énumère les requêtes WMI dans un fichier : wmis.json
Ajout d'un nouveau paramètre :
--t404 - les requêtes http retournent toujours HTTP/404 et lèvent une exception. Cela permet d'énumérer toutes les URL distantes.
Les URL sont maintenant sauvegardées dans urls.json. Voir les derniers EXEMPLES#malware-of-issue-14.
Diverses corrections de bugs et améliorations.
Diverses corrections de bugs et améliorations.
Ajout de nouveaux paramètres :
-t msecs - limite le temps d'exécution à "msecs" millisecondes, par défaut 60 secondes.
--h404 - les requêtes http retournent toujours HTTP/404 et ne lèvent pas d'exception. Cela permet d'énumérer toutes les URL distantes.
Vous aurez besoin de Node.js et npm installés.
malware-jail est construit sur minimist, iconv-lite et entities.
Récupérez la source avec git :
git clone https://github.com/HynekPetrak/malware-jail.git
cd malware-jail
Ensuite, installez toutes les dépendances (minimist, entities, iconv-lite) avec :
npm install
Pas encore disponible, bientôt...
Soyez prudent lorsque vous travaillez avec un véritable malware. Un malware qui connaît ce sandbox pourrait tenter de s'en échapper et nuire à votre PC. Il est recommandé de l'exécuter soit depuis un compte Linux non privilégié, soit depuis une machine Windows virtualisée. Les fichiers Angler dans le dossier malware ne sont PAS désarmés.
bash@linux# node jailme.js -h -b list
7 May 20:54:52 - malware-jail, a malware sandbox ver. 0.19
7 May 20:54:52 - ------------------------
7 May 20:54:52 - Usage: node jailme.js [[-e file1] [-e file2] .. ] [-c ./config.json] \
7 May 20:54:52 - [-o ofile] [-b id] \
7 May 20:54:52 - [-s odir] [--down] [malware1 [malware2] .. ]
7 May 20:54:52 - -c config .. use alternative config file, preceed with ./
7 May 20:54:52 - -e ifile ... js that simulates specific environment
7 May 20:54:52 - -o ofile ... name of the file where sandbox shall be dumped at the end
7 May 20:54:52 - -s odir ... output directory for generated files (malware payload)
7 May 20:54:52 - -b id ... browser type, use -b list for possible values
7 May 20:54:52 - -t msecs ... number of miliseconds before terminating execution, default 1 minute
7 May 20:54:52 - --trace ... print stack trace with every log line
7 May 20:54:52 - --down ... allow downloading malware payloads from remote servers
7 May 20:54:52 - --h404 ... on download return always HTTP/404
7 May 20:54:52 - malware ... js with the malware code
7 May 20:54:52 - If no arguments are specified the default values are taken from config.json
7 May 20:54:52 - Possible -b values: [ 'IE11_W10', 'IE8', 'IE7', 'iPhone', 'Firefox', 'Chrome' ]
Dans le dossier exemples, vous trouverez un fichier malware désactivé. Lancez l'analyse avec :
node jailme.js -c ./config_wscript_only.json --down=y malware/example.js
Les malwares basés sur navigateur Internet peuvent être testés avec
node jailme.js -b IE11_W10 malware/example_browser.js
À la fin de l'analyse, le contexte complet du sandbox est vidé dans un fichier 'sandbox_dump_after.json'.
Vous pouvez examiner les entrées suivantes de 'sandbox_dump_after.json' :
'sandbox_dump_after.json' utilise JSONPath, implémenté par JSON-js/cycle.js, pour sauvegarder les références dupliquées ou cycliques vers un même objet.