该题目贴合实际,在实战中经常遇到此类宏病毒
将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: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提取出来
代码很简单,将提取出来的代码放进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)
参考
原文始发于微信公众号(蚁景网络安全):逆向分析Office VBS宏类型文档
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论