Macro 4.0 样本分析

前言

最近闲来无事逛博客准备学一下Yara后续的一些食用方法,偶然间翻到了一个宏恶意样本,在此之前还没有接触过对应的宏样本,只是知道一般这类样本是通过嵌入宏来进行执行代码,和之前的WPS、Office的漏洞相似并且不执行宏问题是不大的。

而本文将对宏样本有关内容内容进行简单的学习分析。

本次样本Hash:615a6f806f2f8db67536c5d8636787ceda9d0de0bae38fabdddc5d4b62b10dc9

Excel 4.0 Marco

宏最初适用于对重复性任务进行自动化以及用户自定义函数进行编程,在Excel的早期版本中,这些程序是用宏语言编写的,其语句具有公式语法,并驻留在专用宏工作表的单元格中(在 Windows 中以文件扩展名.xml存储)。XLM是Excel到Excel 4.0的默认宏语言。

我们可以在Excel的信任中心中打开对应的Excel 4.0 宏(其默认受到限制,以保护用户)。

比如我们插入一个宏,在下面的Sheet右键->插入,可以看到有我们的Macro 4.0,插入后我们可以看到多了一个Sheet命名为宏,我们可以对其进行修改来掩饰对宏的特点,或是直接隐藏Sheet,做到“无痕”

我们可以在单元格输入以下内容,可能会提示公式错误,但是不管就是

1
2
3
=EXEC("calc.exe")
=HALT()

自动加载代码

现在主流的自动加载的方式分别是Auto_OpenAuto_Close

  • Auto_Open会在用户打开文档的时候自动运行
  • Auto_Close会在用户关闭文档的时候自动运行

上述两种方式自动运行都需要用户允许执行宏代码。

将单元格名称改为Auto_Open,就实现了宏的自动加载。

对于宏通常分为两种格式:xlsm(启动宏的工作簿)、xlsb(二进制工作簿)

我们可以将对应的表另存为xlsm格式,之后打开便会自动执行上面代码,如果我们设置了安全性,可以看到会出现安全警告信息,提示宏被禁用,如果我们启用宏便会执行对应代码。

对于这种宏代码我们无法通过Alt+F11来进行查看对应的源代码

但是我们可以将源文件的后缀修改为.zip打开,在对应的macrosheets中的xml文件里可以看到对应的宏代码

但是这种查看方式,只适用于xlsm格式的文件,如果是xlsb的文件,就没办法看了。可以看到里面都是bin文件,查看不了里面的具体内容。

对于xlsm来说,里面的内容都是基于XML的,可以直接打开进行阅读,而xlsb的文件内容则是二进制文件,是没办法直接阅读的。

分析工具 —— oletools

oletools可以帮助我们快速的对ole文件进行分析,并对宏代码进行查看

Office 文档(如:.doc、.ppt、.xls等)很多是复合文档(OLE文件),所有文件数据都是存储在一个或多个流中。

每个流都有一个相似的数据结构,用于存储元数据数据结构。这些元数据有用户和系统的信息、文件属性、格式信息、文本内容、媒体内容。宏代码信息也是以这种方式存储在复合文档中的。

下载方式

1
pip install oletools

食用方式

分析恶意样本文件:

1
2
3
4
5
6
7
oleid:分析OLE文件以检测通常在恶意文件中发现的特定特征。
olevba:从MS Office文档(OLE和OpenXML)中提取和分析VBA Macro源代码。
MacroRaptor:检测恶意的VBA宏
msodde:检测并从MS Office文档,RTF和CSV中提取DDE / DDEAUTO链接
pyxswf:检测,提取和分析可能嵌入在MS Office文档(例如Word,Excel)和RTF等文件中的Flash对象(SWF),这对于恶意软件分析特别有用。
oleobj:从OLE文件中提取嵌入式对象。
rtfobj:从RTF文件中提取嵌入式对象。

分析ole文件结构的工具:

1
2
3
4
5
olebrowse:一个简单的GUI,可浏览OLE文件(例如MS Word,Excel,Powerpoint文档),以查看和提取单个数据流。
olemeta:从OLE文件中提取所有标准属性(元数据)。
oletimes:提取所有流和存储的创建和修改时间戳。
oledir:显示OLE文件的所有目录条目,包括空闲和孤立的条目。
olemap:显示OLE文件中所有扇区的映射。

一些问题

我们使用oleid来对之前所测试的宏文件进行查看时,其无法被识别

1
oleid xxx.xlsm # 查看文件是否含有宏代码

不知道什么原因,尝试写了一个ALERT()好像也没识别出来,此处使用的为Office 365,在对应项目下也看到许多差不多的issue,可能是项目不完善?

样本

此样本为Excel Macro4.0的xlsb版本,这意味着其是有一个加密的bin文件我们无法直接获取源宏代码来对其进行分析处理,其默认的表一为一个提示信息,要我们打开宏

显然是个明眼人都知道不要打开宏,不然就完蛋了,当我们尝试使用Alt+F11来查看对应的宏代码的时候发现其没有宏代码

当我们查看隐藏的Sheet表单时可以其内部藏有两个,我们将其取消,可以发现里面少了几列

当我们想要移动对应列将其展开时,会提示有数据保护,我们无法查看对应的内容信息,接下来我们重点便是获取对应的宏代码文件

宏获取

方法一

我们参考以下文章,可以大概了解到ole分析工具不起作用了,因为找不到任何ole对象

XLSB: Analyzing a Microsoft Excel Binary Spreadsheet - Malware Analysis - Malware Analysis, News and Indicators

我们将其另存为xlsm格式,从而绕过受保护的工作表,这也会让 xml 文件从.bin转转换为.xml,我们找到里面的 xml 文件后,找到sheetProtection将其删除后替换源文件中的 xml,之后重新修改后缀为xlsm即可绕过

之后调整列,看到的是空白内容,但是当我们修改对应字体颜色为黑色时便可以看到对应插入的宏代码

查看单元格名称时也可以看到对应的Auto_Open特征

方法二

使用工具Cerbero Suite

这里没下破解版本,就不展示了,这个可以直接看到对应插入的宏代码,而不需要我们进行绕过处理

方法三

使用XLMMacroDeobfuscator

1
pip install XLMMacroDeobfuscator --force

之后我们使用以下命令即可提取对应的宏代码

1
xlmdeobfuscator --file xxx.xlsm

宏分析

大致上我们可以看到其通过网络连接进行下载了多个文件,但是通过抓取对应流量包发现请求相应信息的相应状态码均为404,与此同时其下载的文件和时间戳有点关系,不知道是不是因为时间有点久了所以对应服务器找不到相应的文件下载。

在此之后也没有了什么值得分析了东西了…

参考资料

[What is Excel 4.0 Macro? - Stack Overflow](https://stackoverflow.com/questions/41402120/what-is-excel-4-0-macro#:~:text=The purpose of MS Excel 4.0 Macro sheets,is most extensively used by malicious parties (hackers).)

office 复合文档数据结构解析“初探”_ole dll 分析 52pojie-CSDN博客

[Macro 4.0总结 - b1ackie’blog (b1ack1e.github.io)](https://b1ack1e.github.io/2021/12/13/Macro 4.0总结/)

信息安全 | 利用oletools-python分析恶意文档样本_海绵行动的博客-CSDN博客

XLSB: Analyzing a Microsoft Excel Binary Spreadsheet - Malware Analysis - Malware Analysis, News and Indicators


Macro 4.0 样本分析
https://equinox-shame.github.io/2023/10/23/Macro 4.0 样本分析/
作者
梓曰
发布于
2023年10月23日
许可协议