freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

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

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

FreeBuf+小程序

FreeBuf+小程序

对 VBAProject 的密码保护学习
2020-08-03 14:55:19

前言

VBA项目可以使用只读密码进行保护,需要输入密码才能在VBA IDE中查看和编辑VBA项目。不过这是一种由IDE实施的保护,而VBA代码本身未经编码或加密,可以使用工具oledump.py或Philippe的工具olevba.py进行查看,不会有任何问题。实际上,如果使用上述工具,甚至都不会注意到它受到密码保护。

实践

查看VBA项目是否受密码保护,可以看一下PROJECT流。此流是纯文本,结构类似于INI文件。会在里面找到一个ID条目,通常是第一行,这是GUID值。该GUID对于每个VBA项目都是唯一的,除非VBA项目受密码保护。受密码保护的VBA项目的GUID值具有“ NULL” 值:ID =“ {00000000-0000-0000-0000-000000000000}”
 
这是一个不带密码的VBA项目的PROJECT流示例,如下。
这是带有密码的VBA项目的PROJECT流的示例,如下。

原理

请注意,DPB(ProjectPassword)字段值很长,是因为此ID包含密码的哈希( https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms-ovba/79685426-30fe-43cd-9cbf-7f161c3de7d8)。VBA项目密码使用了salt,密码生成使用格式(sha1(MBCS(password)+salt))进行哈希处理,然后使用自定义可逆XOR编码进行编码,最后将其作为参数DPB的十六进制值存储在PROJECT流中。
 

插件

也有一个oledump插件来提取哈希并以与John Ripper和Hashcat兼容的格式表示它。此插件还会执行字典攻击,并在可以破解的情况下显示密码。
# 宏病毒
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者