乐于分享
好东西不私藏

逆向分析Office VBS宏类型文档

逆向分析Office VBS宏类型文档

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

将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=2tempfile.WriteLine xpkdbtempfile.ClosebatPath ="D:\temp11\temp.bat"Set batFile = fso.CreateTextFile(batPath,True)fso.GetFile(batPath).Attributes=2batFile.WriteLine"@echo off"batFile.WriteLine"certutil -decode temp1 temp|certutil -decode temp temp.exe"batFile.CloseSet objExec = objShell.Exec(batPath)

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

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

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

5、分析exe

很简单的代码,就是位移

6、解密

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

评论 抢沙发

7 + 6 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮