0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

VBA脚本文件重定向简析

蛇矛实验室 来源:蛇矛实验室 2023-05-15 10:24 次阅读

1. 简介0017898e-f10e-11ed-90ce-dac502259ad0.png

通过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文件,其解压结果如下。

0065ecd2-f10e-11ed-90ce-dac502259ad0.png

当文档中包含宏时,在word目录下会有一个二进制文件,其名字为vbaProject.bin,该文件保存了宏代码。

00824fda-f10e-11ed-90ce-dac502259ad0.png

vbaProject是宏默认工程的名字,那如果我们修改宏工程的名字,Office文档的解压文件是否会改变?答案是不会,即使改了工程名,在Office文档中依然使用vbaProject.bin作为脚本的名字。例:我们创建一个新的Office文档,编写宏代码,将宏代码工程的名字名为为myproj,之后将Office文档解压,发现解压后vbaProject.bin的名字没有变化。

00a2bf04-f10e-11ed-90ce-dac502259ad0.png

3. 脚本重定向

假设我们有这样的需求,将vbaProject.bin文件进行伪装,如一个WORD文档中有styles.xml的文件,我们将vbaProject.bin替换为styIes.xmI(使用大写的i来伪装小写L),用以欺骗分析者的眼睛,使其很难找到脚本文件,无法进行密码替换,这便是脚本重定向。

00f2e7f4-f10e-11ed-90ce-dac502259ad0.png

要实现脚本重定向,需要将vbaProject.bin的名称修改为styIes.xmI,之后还需要再修改三个文件,保证该文件可以被正常打开,其中一个文件是根目录的[Content_Types].xml,另外两个文件在解压目录的word\_rels文件夹中。

011deeb8-f10e-11ed-90ce-dac502259ad0.png

[Content_Types].xml中需要添加一个标签,内容为:

这一步是为了让Office文档去读取xmI(I是大写的i)文件来获取宏代码,在添加时我们可以观察原始配置信息,WORD文档是通过读取.bin为后缀的文件来获取宏代码。

012b82e4-f10e-11ed-90ce-dac502259ad0.png

完成标签添加后,打开word\_rels文件夹,修改vbaProject.bin.rles文件的名字,将其修改为styIes.xmI.rels,然后打开document.xml.rels,搜索vbaProject.bin,找到后将其修改为styIes.xmI,与文件进行关联。

017affea-f10e-11ed-90ce-dac502259ad0.png

上诉内容修改完成后,将word文件重新压缩,并修改后缀即可,打开文件发现文件可以正常打开,宏也可以正常运行,在做重定向时文件名和配置信息可以根据个人需求进行替换。

4. 总结

VBA脚本文件重定向通过修改Office文件加载宏方式,替换脚本文件来达到伪装的目的,反之,我们可以通过查看[Content_Types].xml和document.xml.rels文件查看Office文档是否对脚本文件进行重定向来发现其中的威胁。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • XML
    XML
    +关注

    关注

    0

    文章

    188

    浏览量

    33084
  • VBA
    VBA
    +关注

    关注

    0

    文章

    18

    浏览量

    11911

原文标题:VBA脚本文件重定向

文章出处:【微信号:蛇矛实验室,微信公众号:蛇矛实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MATLAB函数和脚本文件的详细解释

    MATLAB中的函数和脚本文件是用来组织和执行代码的两种不同方式。下面是对MATLAB函数和脚本文件的详细解释。
    发表于 07-05 12:24 4594次阅读

    嵌入式 学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之输入输出重定向

    shell脚本编写之输入输出重定向shell输出重定向通常是指将执行命令的输出信息从默认的标准输出(即当前终端)重新定向到指定文件中。输入
    发表于 09-24 10:06

    printf重定向怎么做

    要求显示效果:分析过程:1.printf重定向怎么做?翻书找到2.逻辑怎么写?纸**3.自己生成源代码,添加代码,测试逻辑添加的代码#ifdef _GNUC_#define
    发表于 08-11 07:51

    实现printf函数的重定向

    目录重定向函数属性设置重定向函数在配置好串口之后需要在相关文件中添加以下函数以实现printf函数的重定向//注意添加头文件#include
    发表于 08-24 07:09

    单片机printf重定向的函数免费下载

    本文档的主要内容详细介绍的是单片机printf重定向的函数免费下载。
    发表于 07-03 17:42 0次下载
    单片机printf<b class='flag-5'>重定向</b>的函数免费下载

    管道符、重定向与环境变量

    1.标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。 3.错误输出重定向(STDERR,文件描述符
    发表于 04-29 08:48 619次阅读

    ADV7182A评估板脚本文件

    ADV7182A评估板脚本文件
    发表于 05-28 11:19 5次下载
    ADV7182A评估板<b class='flag-5'>脚本文件</b>

    ADV7281A-M评估板脚本文件

    ADV7281A-M评估板脚本文件
    发表于 05-29 12:53 3次下载
    ADV7281A-M评估板<b class='flag-5'>脚本文件</b>

    ADV7280A-M评估板脚本文件

    ADV7280A-M评估板脚本文件
    发表于 06-01 21:36 9次下载
    ADV7280A-M评估板<b class='flag-5'>脚本文件</b>

    Keil下使用STlink重定向printf的配置

    Keil下使用STlink重定向printf的配置1. printf 重定向Keil默认下使用Micro LIB库,该库调用 fputs 实现 printf,所以需要重新定义fputs函数,以重定向
    发表于 12-27 18:43 18次下载
    Keil下使用STlink<b class='flag-5'>重定向</b>printf的配置

    shell脚本基础:重定向和管道符

    标准输出的目标位置通常指向的是终端屏幕。可以使用>符号修改标准输出的目标位置。比如下面的示例就会将ps命令的输出重定向到result.txt文件。描述符和>之间不能有空格
    的头像 发表于 05-04 11:09 1209次阅读
    shell<b class='flag-5'>脚本</b>基础:<b class='flag-5'>重定向</b>和管道符

    Linux I/O重定向详解

    Linux I/O重定向可以定义为,更改从命令读取输入到命令发送输出的方式。你可以重定向命令的输入和输出。对于重定向符号,可以是 或者 | 。
    的头像 发表于 05-04 14:34 836次阅读

    在bash中如何进行各种文件重定向呢?

    本文会用以下测试程序,来演示在bash中,如何进行各种文件重定向
    的头像 发表于 08-25 09:31 1226次阅读
    在bash中如何进行各种<b class='flag-5'>文件</b><b class='flag-5'>重定向</b>呢?

    Oracle如何执行sql脚本文件

    Oracle是一种关系型数据库管理系统,可用于存储、查询和管理大量的数据。在Oracle中,可以通过执行SQL脚本文件来一次性地执行多个SQL语句或者批量处理数据。在下面的文章中,我将详细介绍
    的头像 发表于 12-06 10:51 6718次阅读

    2分钟搞懂输出重定向

    视频最后我们通过重定向把标准输出写到了文件中,但是错误输出还是留在了屏幕上。
    的头像 发表于 01-15 16:41 564次阅读