VBA 混淆工具与 MS Office 文档生成器相结合
2023-4-4 08:1:20 Author: Ots安全(查看原文) 阅读量:13 收藏

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/90VBad 现在能够破坏对包含有效负载的模块的引用,以便使其在 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


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjYyMzkwOA==&mid=2247497181&idx=2&sn=97e5182b9785983ea0c2b58d6e867895&chksm=9badbc96acda3580ac4111047dddfa5fde6c26c67414415d957f4a78f0e5d725b219d8b337df#rd
如有侵权请联系:admin#unsafe.sh