freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Macro_Pack中的宏代码混淆方法分析
2019-09-05 10:00:05

宏混淆工具

Macro_Pack是一个用于自动化混淆及生成Office文档、VB脚本、快捷方式等文件的工具,其主要用于渗透测试、demo以及社会工程学评估。macro_pack的目标是简化利用流程,反恶意软件绕过,并自动化实现从vba生成到最终Office文档生成的过程。

Github:https://github.com/sevagas/macro_pack

Macro_Pack分为专业模式和普通模式,专业模式包含了更多的混淆手段,但源码现在并未公开出来。普通模式的混淆手段包括“名称混淆”、“字符串混淆”以及“格式混淆”。

如下为混淆执行流程,普通模式只会执行”ObfuscateNames”、”ObfuscateStrings”以及”ObfuscateForm”;而专业模式还会执行”AvBypass”、”UACBypass”等,通过函数名猜测其应该为杀软绕过、UAC绕过等功能,可以看出专业模式确实很强大且过于“武器化”,作者也是出于这方面考虑才没有公开。

名称混淆

通过关键字的正则匹配,查找出保留函数以外的自定义过程(Sub)及函数(Function)名称,并保存到列表vbaFunctions中:

保留函数为VBA的一些开始函数,如”AutoOpen”、”Workbook_Open”:

逐行查找vbaFunctions列表中的函数名,在定义及调用处将其替换为随机字符串:

同样的,通过“String”、”Integer”等关键字的正则匹配查找出变量声明,然后在其声明及使用处将其替换为随机字符串:

对常数“0”“1”“2”,在开头使用随机字符串定义为Const常量,然后在后面使用这3个常数的地方将其替换:

最后,用同样的方式将导入函数名替换为随机字符串:

 字符串混淆

识别到宏代码中的字符串后,将其随机进行切分后用“&”连接:

将字符串编码为16进制,并作为参数传给16进制解码函数“HexToStr”:

HexToStr函数如下,用于在VBA运行起来后解码字符串:

HexToStr函数名及其中使用的变量名用随机字符串替换:

格式混淆

移除宏代码中的注释:

将制表符替换为空格:

移除每行宏代码前的空格,即缩进,降低代码可读性:

 混淆效果

使用macro_pack可分别生成非混淆和混淆的宏,效果如下:

非混淆:

结构清晰,可读性强,能够看到包含明显的特征信息。

混淆:

上面的宏混淆后如下,可以看到混淆后的宏代码静态已经几乎不可读,并且也抹去了很多特征信息。

 写在最后

防止逆向工程并不是Macro_Pack混淆的主要目的,其主要目的是防止防病毒检测。以上内容主要是针对Macro_Pack工具对宏代码的混淆方法进行分析,供测试人员,安全研究人员或其他有学习目的的人交流学习使用。

*本文作者:深信服千里目安全实验室,转载须注明来自FreeBuf.COM

# 混淆 # 宏代码 # macro_pack
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录