逆向分析Office VBS宏类型文档

admin 2024年10月28日19:03:01评论9 views字数 2085阅读6分57秒阅读模式

逆向分析Office VBS宏类型文档

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

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

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

逆向分析Office VBS宏类型文档

1、初步分析

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

逆向分析Office VBS宏类型文档

逆向分析Office VBS宏类型文档

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

2、oletools

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

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

这里采用pip安装模式

pip install -U oletools

运行命令

olevba -c protected_secret.docm > code.vbs
逆向分析Office VBS宏类型文档

3、分析vbs代码

直接搜索:AutoOpen

里面有太多垃圾代码了

逆向分析Office VBS宏类型文档

首先将输入的flag异或7

逆向分析Office VBS宏类型文档
逆向分析Office VBS宏类型文档

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

4、运行Vbs得到exe

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

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

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

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

batPath ="D:temp11temp.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提取出来

逆向分析Office VBS宏类型文档

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

逆向分析Office VBS宏类型文档

5、分析exe

逆向分析Office VBS宏类型文档

很简单的代码,就是位移

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

逆向分析Office VBS宏类型文档

原文始发于微信公众号(蚁景网络安全):逆向分析Office VBS宏类型文档

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月28日19:03:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   逆向分析Office VBS宏类型文档https://cn-sec.com/archives/3325429.html

发表评论

匿名网友 填写信息