由 NCC Group Plc 以开源形式发布 - http://www.nccgroup.trust/
由 Richard Warren 开发, richard [dot] warren [at] nccgroup [dot] trust
http://www.github.com/nccgroup/demiguise
基于 AGPL 发布,详见 LICENSE 文件
该项目的目标是生成.html文件,这些文件包含一个加密的 HTA 文件。其思路是,当目标访问页面时,获取密钥,并在浏览器中动态解密 HTA,然后直接推送给用户。这是一种绕过某些安全设备实施的内容/文件类型检查的规避技术。该工具并非设计用于创建优秀的 HTA 内容。有许多其他工具/技术可以帮助您实现这一点。它可能帮助您的是,首先将您的 HTA 送入某个环境,并且(如果您使用环境密钥)避免它被沙盒捕获。
这是通过使用 RC4 加密 HTA 文件,然后在运行时使用 navigator.msSaveBlob “保存”该文件来实现的——而不是直接从服务器获取 HTA。这意味着在任何时候,都没有任何 HTTP 请求/响应包含明文形式的 HTA 文件——代理只会看到一个包含加密 blob 的 text/html 文件。在最新版本的 Edge 中,这会导致用户被提示“运行”HTA。
虽然不是本工具的主要目标,但还是为基础 HTA 提供了几种有效载荷选项。每种选项使用了之前由 Matt Nelson、Matthew Demaske、Ryan Hanson 和 Etienne Stalmans 记录的不同技术。使用这些技术的好处是,您的代码不会作为 mshta.exe 的子进程执行。如前所述,HTA 的内容并非本工具的主要目标。我鼓励您修改 HTA 模板以包含您自己的自定义代码 :)
运行 demiguise.py 文件,提供您的加密密钥、有效载荷类型、输出文件名以及您希望 HTA 运行的命令。
示例:python demiguise.py -k hello -c "notepad.exe" -p Outlook.Application -o test.hta


为了规避沙盒,您不应将密钥直接嵌入 HTA 中。相反,您应该从目标所处的环境中动态获取密钥。一个示例可能是使用客户的外部 IP 地址作为密钥。这样做的好处是,如果代码在第三方沙盒中运行,HTA 将无法解密。实际上,文件名甚至都不会被解密,意味着没有人会知道您的有效载荷是什么/做什么 :)
环境密钥的一些示例在 examples/externalip.js 和 examples/virginkey.js 中给出。
由于该工具输出一个包含 JavaScript 的 HTML 文件,您可以简单地获取这个 JS 并将其托管在任何您喜欢的地方。这意味着,如果您客户的网站存在反射型 XSS 漏洞,您可以使用它从其(高度可信的)域名提供您的 HTA 文件。
另外,Outlook 默认不会阻止 .html 附件,其他一些应用程序也是如此——发挥您的想象力吧!:)
目前它未被 VT 检测到:
尽管混淆技术可能难以签名化,但防御 HTA 攻击的一种方法是首先阻止 HTA 本身运行。这可以通过使用软件限制策略 (SRP)、设备防护 (Windows 10 和 Server 2016),或更改与 .hta 文件关联的默认文件处理程序来实现。
请注意,这些更改可能会影响依赖 HTA 运行的软件。因此,建议在您自己的环境中对修复进行全面测试。
使用 SRP:

更改默认文件处理程序:
ftype htafile=%SystemRoot%\system32\NOTEPAD.EXE %1

改回默认值 (x64):
ftype htafile=C:\Windows\SysWOW64\mshta.exe "%1" {1E460BD7-F1C3-4B2E-88BF-4E770A288AF5}%U{1E460BD7-F1C3-4B2E-88BF-4E770A288AF5} %*
WbemScripting.SWbemLocator 和 ShellBrowserWindow COM 执行技术WbemScripting.SWbemLocator COM 执行 PoCExcel.Application.RegisterXLL COM 执行技术Outlook.Application.CreateObject COM 执行技术