VBad 是完全可定制的 VBA 混淆工具,结合了 MS Office 文档生成器。它旨在帮助红蓝队进行进攻或防守。【可直接滑到底部点击阅读原文跳转到项目地址】
VBad 是一种工具,允许您以多种不同方式混淆(和加密)VBA 代码片段,并直接集成到生成的 MS Office 文档列表中。你将能够:
加密 VBA 代码中的所有字符串;
在 VBA 代码中加密来自 python 脚本的数据(例如域名或路径);
随机化您想要的每个函数(或变量)的名称;
删除所有制表/空格/回车
选择加密方法,加密密钥的存储方式和位置;
添加可自定义的假密钥(以避免一些容易检测的东西)
使用文件名列表和文档模板生成任意数量的独特 MS Office 文档(在 VBA 中具有不同的随机化);
一旦 VBA 被触发一次,启用加密密钥的自动销毁功能;
20/10/16:在#VBad 上实施假密钥以避免一些容易检测的东西
07/04/17:实施允许利用此漏洞的选项:http://seclists.org/fulldisclosure/2017/Mar/90。VBad 现在能够破坏对包含有效负载的模块的引用,以便使其在 VBA 开发人员工具中不可见,从而使分析和调试更加困难:-)
目前,仅支持一种类型的加密。
所有字符串和指示的变量都使用随机密钥(每个文件不同)加密(实际上是异或)。该密钥由 Python 程序存储到 Document.Variables 中,然后从 VBA 代码中删除初始化(不是变量本身)。
它使代码的解密变得更加困难,因为分析师必须使用特定方法取回此 Document.Variable 密钥(没有经典工具可以处理此问题)。
为了更有趣,一旦宏被触发一次(只要文件是从可写的地方打开的),这些键就会被删除。
新的存储方式和真正的加密算法即将到来。但是,记住它是 VBA,我们没有那么多选择。:-)。
Office (Excel/Word) 用于生成最终文档(使用 Office 2010 和 2013 测试),宏已完全激活并选中复选框“信任对 VBA 项目对象模型的访问”(在宏安全设置中,它允许 python 代码更改和创建宏)
Python 2.7
win32com
首先,您需要降价您的原始 VBA 以指示脚本您想要混淆/随机化或不:
默认情况下,所有 VBA 字符串都是加密的。此外,您可以通过在字符串末尾添加排除标记 ([!!]) 来排除对一个字符串的加密。例子 :
String_Encrypted = "This string will be encrypted"
String_Not_Encrypted = "This string will NOT be encrypted[!!]"
在变量或函数名称之前标记 [rdm::x] 将使用 ax 字符字符串将其随机化,示例:
Function [rdm::10]Test() '=> Test() will become randomized with a 10 characters string
[rdm::4]String_1 = "Test" '=> String_1 wil lbecome randomized with a 4 characters string
Mark [var::var_name] 将以加密方式在 VBA 中包含来自 const.py 的字符串 string_to_hide('var_name')。有了它,您可以从 python 文件生成字符串并将其直接包含在您的 VBA 中(例如 DGA 编码)。
Path_to_save_exe = [var::path] '=> string_to_hide("path") will be encrypted and put in the final VBA
Git 克隆和自定义 const.py 以满足您的需要,您必须至少指出:
template_file = r"C:\tmp\Vbad\Example\Template\template.doc" # The path to the template Office document you want to use to generate your files
filename_list = r"C:\tmp\Vbad\Example\Lists\filename_list.txt" #The path to the file that contains a list of different filenames you want to use for your generated files
path_gen_files = r"C:\tmp\Vbad\Example\Results" # Path where your generated Office documents will be saved
original_vba_file = r"C:\tmp\Vbad\Example\Orignal_VBA\original_vba.vbs" # The orignal VBA file you want to include, randomize and obfuscate in your malicious documents
trigger_function_name = "Test" # Function that you want to auto_trigger (in your original_vba_file)
string_to_hide = {"domain_name":"http://www.test.com", "path_to_save":r"C:\tmp\toto"} #Strings that you want to add in your
在 Example 文件夹中,你会发现一个已经标记好的 vba 文件,一个 template.doc,一个包含 3 个文件名的列表。您可以根据需要使用和调整它。
其他加密方式
其他密钥隐藏方法
.xls 代(谢谢@DPeltier)
.docx 和 .xlsx 生成
项目地址:https://github.com/Pepitoh/VBad