
Инструмент для изучения JavaScript-вредоносного ПО.
Утилита для анализа вредоносного JavaScript.
Просто установите box-js из npm:
npm install box-js --global
box-js также доступен:
- как модуль Cuckoo (см. каталог
integrationsи Nwinternights/Cuckoo_Boxjs);- как Dockerfile (см.
integrations/README.md);- как пакет в дистрибутивах для специалистов по безопасности (REMnux, BlackArch);
- как часть приложений с открытым исходным кодом (Intel Owl);
- как часть коммерческих сторонних сервисов (any.run).
Предположим, у вас есть образец с именем sample.js: для его анализа просто выполните
box-js sample.js
Вероятно, вы также захотите загрузить полезные нагрузки; используйте флаг --download, чтобы включить загрузку. В противном случае движок будет имитировать ошибку 404, чтобы скрипт думал, что сайт распространения недоступен, и обращался к запасным сайтам.
Box.js будет эмулировать среду Windows JScript, выведет сводку эмуляции в консоль и создаст папку с именем sample.js.results (если она уже существует, будет создана sample.js.1.results и так далее). Эта папка будет содержать:
analysis.log — журнал анализа, выведенный на экран;snippets.json — список фрагментов кода, выполненных образцом (JavaScript, команды оболочки и т.д.);urls.json — список обработанных URL;active_urls.json — список URL, которые, по-видимому, загружают активное вредоносное ПО;resources.json — потоки ADODB (т.е. файлы, записанные скриптом на диск) с типами файлов и хешами;IOC.json — список поведений, идентифицированных как IOC (индикаторы компрометации). Сюда входят обращения к реестру, записанные файлы, HTTP-запросы и так далее.Вы можете проанализировать их самостоятельно или автоматически отправить на Malwr, VirusTotal или в песочницу Cuckoo: для получения дополнительной информации выполните box-export --help.
Для дополнительной изоляции рекомендуется запускать анализ во временном Docker-контейнере. См.
integrations/README.mdдля получения дополнительной информации.
Если вы хотите автоматизировать анализ, вы можете использовать коды возврата — они описаны в
integrations/README.md— чтобы различать разные типы ошибок.
Репозиторий box-js из Git включает файл boilerplate.js. Этот файл определяет некоторые заглушки распространённых браузерных объектов, таких как document. Попробуйте перезапустить анализ с опцией --prepended-code=DIR/boilerplate.js, где DIR — каталог клонированного репозитория box-js, или с --prepended-code=default. Опция --prepended-code указывает box-js добавить JavaScript из указанного файла в начало анализируемого образца.
Обратите внимание, что вы можете скопировать boilerplate.js и добавить свои собственные заглушенные классы, объекты и т.д. по мере необходимости. Используйте опцию командной строки --prepended-code=show-default, чтобы вывести полный путь к файлу boilerplate.js по умолчанию.
Хотя box.js обычно используется для отдельных файлов, он также может выполнять пакетный анализ. Вы можете просто передать список файлов или папок для анализа:
box-js sample1.js sample2.js /var/data/mySamples ...
По умолчанию box.js обрабатывает образцы параллельно, запуская по одному анализу на ядро. Вы можете использовать другой параметр, указав значение для --threads: в частности, 0 снимет ограничение, заставляя box-js запускать как можно больше потоков анализа, что приведёт к очень быстрому анализу, но может перегрузить систему (обратите внимание, что анализ обычно ограничен по CPU, а не по RAM).
Вы можете использовать --loglevel=warn, чтобы скрыть сообщения, связанные с анализом, и отображать только информацию о ходе выполнения.
После завершения анализа вы можете извлечь активные URL следующим образом:
cat ./*.results/active_urls.json | sort | uniq