一款用于分析恶意 JavaScript 的工具。
只需通过 npm 安装 box-js:
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、shell 命令等);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中有记录——来区分不同类型的错误。
来自 git 的 box-js 仓库包含一个 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 命令行选项打印默认 box-js boilerplate.js 文件的完整路径。
虽然 box.js 通常用于单个文件,但它也可以运行批量分析。你可以简单地传递一个要分析的文件或文件夹列表:
box-js sample1.js sample2.js /var/data/mySamples ...
默认情况下,box.js 将并行处理样本,每个核心运行一个分析。你可以通过为 --threads 指定值来使用不同的设置:特别地,0 将移除限制,使 box-js 尽可能多地生成分析线程,从而实现非常快速的分析,但可能会导致系统过载(请注意,分析通常是 CPU 密集型,而非内存密集型)。
你可以使用 --loglevel=warn 来静默分析相关消息,仅显示进度信息。
分析完成后,你可以这样提取活跃的 URL:
cat ./*.results/active_urls.json | sort | uniq