1. 简介
通过Office文档进行宏攻击是一种非常常见的手段,宏的功能十分强大,将Office文档中嵌入以VBA(Visual Basic for Applications)编写的宏代码脚本,当运行Office文档时,便可以执行各种命令。但是宏代码通常很难隐藏,分析人员可以直接打开宏编辑器查看宏的源码,分析脚本的功能。虽然微软提供了工程加密工具对脚本进行保护,在打开编辑器时需要输入密码进行验证后才能查看脚本,但是这种加密可以通过替换脚本中的加密模块进行验证绕过。VBA脚本文件重定向能够将脚本默认文件vbaProject.bin进行替换,在打开文本时加载其他文件,增加分析者的分析复杂程度。
2. vbaProject.bin
在 Office 2007 之后的 Office 文档格式采用的是 OOXML 标准格式。那什么是 OOXML 标准?这里的 OOXML 的全称是 Office Open XML File Formats 或被称为 OpenXML 格式,这是一个基于 zip+xml 定义的文档格式。简单的说就是Office文档是一些xml文档压缩文件,因此我们将一个word文档进行zip解压,可以获得一些xml文件,其解压结果如下。
当文档中包含宏时,在word目录下会有一个二进制文件,其名字为vbaProject.bin,该文件保存了宏代码。
vbaProject是宏默认工程的名字,那如果我们修改宏工程的名字,Office文档的解压文件是否会改变?答案是不会,即使改了工程名,在Office文档中依然使用vbaProject.bin作为脚本的名字。例:我们创建一个新的Office文档,编写宏代码,将宏代码工程的名字名为为myproj,之后将Office文档解压,发现解压后vbaProject.bin的名字没有变化。
3. 脚本重定向
假设我们有这样的需求,将vbaProject.bin文件进行伪装,如一个WORD文档中有styles.xml的文件,我们将vbaProject.bin替换为styIes.xmI(使用大写的i来伪装小写L),用以欺骗分析者的眼睛,使其很难找到脚本文件,无法进行密码替换,这便是脚本重定向。
要实现脚本重定向,需要将vbaProject.bin的名称修改为styIes.xmI,之后还需要再修改三个文件,保证该文件可以被正常打开,其中一个文件是根目录的[Content_Types].xml,另外两个文件在解压目录的word\_rels文件夹中。
[Content_Types].xml中需要添加一个标签,内容为:
这一步是为了让Office文档去读取xmI(I是大写的i)文件来获取宏代码,在添加时我们可以观察原始配置信息,WORD文档是通过读取.bin为后缀的文件来获取宏代码。
完成标签添加后,打开word\_rels文件夹,修改vbaProject.bin.rles文件的名字,将其修改为styIes.xmI.rels,然后打开document.xml.rels,搜索vbaProject.bin,找到后将其修改为styIes.xmI,与文件进行关联。
上诉内容修改完成后,将word文件重新压缩,并修改后缀即可,打开文件发现文件可以正常打开,宏也可以正常运行,在做重定向时文件名和配置信息可以根据个人需求进行替换。
4. 总结
VBA脚本文件重定向通过修改Office文件加载宏方式,替换脚本文件来达到伪装的目的,反之,我们可以通过查看[Content_Types].xml和document.xml.rels文件查看Office文档是否对脚本文件进行重定向来发现其中的威胁。
审核编辑:刘清
-
XML
+关注
关注
0文章
188浏览量
33084 -
VBA
+关注
关注
0文章
18浏览量
11911
原文标题:VBA脚本文件重定向
文章出处:【微信号:蛇矛实验室,微信公众号:蛇矛实验室】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论