逆向分析OfficeVBS宏类型文档

admin 2026-03-18 03:16:47 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详述了对内嵌VBA宏的Office文档进行逆向分析的过程。首先利用oletools工具还原被混淆的宏代码,发现其通过Base64解码释放并运行恶意exe程序。随后提取exe文件,分析其核心算法为简单的位移操作,最终编写Python脚本成功解密出flag。文章展示了从文档解压、宏提取到二进制逆向的完整实战流程,具有较高的实操参考价值。 综合评分: 78 文章分类: 逆向分析,CTF,恶意软件,安全工具


cover_image

逆向分析Office VBS宏类型文档

Ba0 Ba0

蚁景网络安全

2026年3月6日 17:46 湖南

该题目贴合实际,在实战中经常遇到此类宏病毒

将Office文档中嵌入以VBA(Visual Basic for Applications)编写的宏代码脚本,当运行Office文档时,便可以执行各种命令。

VBA脚本文件重定向能够将脚本默认文件vbaProject.bin进行替换,在打开文本时加载其他文件,增加分析者的分析复杂程度。

1、初步分析

在 Office 2007 之后的 Office 文档格式采用的是 OOXML 标准格式。那什么是 OOXML 标准?这里的 OOXML 的全称是 Office Open XML File Formats 或被称为 OpenXML 格式,这是一个基于 zip+xml 定义的文档格式。简单的说就是Office文档是一些xml文档压缩文件,因此我们将一个word文档进行zip解压,可以获得一些xml文件

打开发现是一堆乱码,此时就需要借助大佬们的工具了。

2、oletools

oletools对该文件进行分析,oletools将宏源码完整的还原了出来。

官网:https://github.com/decalage2/oletools/releases

这里采用pip安装模式

pip install -U oletools

运行命令

olevba -c protected_secret.docm > code.vbs

3、分析vbs代码

直接搜索:AutoOpen

里面有太多垃圾代码了

首先将输入的flag异或7

有点意思了,解码exe的base64编码,然后运行exe执行操作,最后再删除exe程序

4、运行Vbs得到exe

将重要的代码拿出来,然后生成exe

Set fso =CreateObject("Scripting.FileSystemObject")
Set objShell =CreateObject("WScript.Shell")

/*
省略了一大堆 base64赋值串
*/

tempPath ="D:\temp11\temp"
Set tempfile = fso.CreateTextFile(tempPath,True)
fso.GetFile(tempPath).Attributes=2
tempfile.WriteLine xpkdb
tempfile.Close

batPath ="D:\temp11\temp.bat"
Set batFile = fso.CreateTextFile(batPath,True)
fso.GetFile(batPath).Attributes=2
batFile.WriteLine"@echo off"
batFile.WriteLine"certutil -decode temp1 temp|certutil -decode temp temp.exe"
batFile.Close
Set objExec = objShell.Exec(batPath)

保存为vbs运行,但是我电脑有点小问题没跑运行起来

因此我们采取另一种方法,直接将base64提取出来

代码很简单,将提取出来的代码放进Cyberchef进行提取即可

5、分析exe

很简单的代码,就是位移

6、解密

v9 = [0]*54
v9[0]=4288
v9[1]=4480
v9[2]=5376
v9[3]=4352
v9[4]=5312
v9[5]=4160
v9[6]=7936
v9[7]=5184
v9[8]=6464
v9[9]=6528
v9[10]=5632
v9[11]=3456
v9[12]=7424
v9[13]=5632
v9[14]=6336
v9[15]=6528
v9[16]=6720
v9[17]=6144
v9[18]=6272
v9[19]=7488
v9[20]=6656
v9[21]=7296
v9[22]=7424
v9[23]=2432
v9[24]=2432
v9[25]=2432
v9[26]=5632
v9[27]=4416
v9[28]=3456
v9[29]=7168
v9[30]=6528
v9[31]=7488
v9[32]=6272
v9[33]=5632
v9[34]=3520
v9[35]=6208
v9[36]=5632
v9[37]=4736
v9[38]=6528
v9[39]=6400
v9[40]=7488
v9[41]=3520
v9[42]=5632
v9[43]=5184
v9[44]=3456
v9[45]=7488
v9[46]=7296
v9[47]=3200
v9[48]=6272
v9[49]=7424
v9[50]=2432
v9[51]=2432
v9[52]=2432
v9[53]=7808

flag =''
for i in range(54):
    flag += chr(v9[i]>>6^7)

print(flag)

参考

https://mp.weixin.qq.com/s/QbX84NmVXNdV42W4PkNl_A

https://mp.weixin.qq.com/s/VmVdvD9c6p9Hdo9MZiIyZg


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:蚁景网络安全 Ba0 Ba0《逆向分析Office VBS宏类型文档》

Ai安全研究 网络安全文章

Ai安全研究

文章总结: 本文介绍了GhostWolfLab开源的AI安全知识库项目,涵盖AI基础算法、威胁建模、红队进攻与蓝队防御四大板块。核心内容包括OWASPML/LL
评论:0   参与:  0