工具使用

恶意 Office 样本分析工具之 oletools 的使用介绍

凡凡 · 9月19日 · 2019年 · · 83次已读

1 关于恶意 Office 文件

在正式讲解 oletools 之前,我们先聊下恶意 Office 文件。

1.1 恶意 Office 文件发展历程简单介绍

1995 年,第一个 宏病毒 WM 问世,Office 文档攻击拉开了序幕。1999年,梅丽莎病毒 爆发,人们才真正意识到恶意文档攻击所带来的危害。之后,各大安全厂商和微软公司加强了安全防范,Office 文档攻击进入沉寂期。 2015年,恶意 Office 文档数量激增,攻击者将 Office 文档视为开启高级攻击的“敲门砖”。2018 年以后,Office 文档攻击技术逐渐成熟,攻击手段不断更新,Office 文档攻击已经到了鼎盛时期,针对中国境内目标发动攻击的境内外组织(海莲花白象穷奇蓝宝菇 等)均使用 Office 文档进行攻击。

1.2 恶意 Office 文件为何如此受攻击者青睐

主要分为两个因素来说,一是内部因素,二是外部因素。

内部因素:

  • 安全机制的脆弱性:微软为 Office 配置的安全机制已被证明可以轻松绕过。
  • 内部结构的脆弱性:Office 软件由于开发时间长,功能复杂,所以难免会有大量漏洞,并且,Office 软件可以嵌入 OLE 对象 和多种类型文件,为攻击者创造了更为方便的供给条件。

外部因素:

  • 反病毒技术发展:随着反病毒技术的快速发展和免费安全软件在全球的高度普及,可执行恶意程序传播变得越来越困难。
  • 用户安全意识淡薄:用户普遍认为文档是安全的,并且不及时更新漏洞补丁。
  • 攻击手段多,门槛低:目前已经出现大量成功案例,攻击技术逐渐成熟。
  • 用户基数大,传播迅速:Office 产品市场渗透率高达 97.31%,而且是政府办公人员最常用的软件,一旦感染成功,扩散十分迅速。

1.3 恶意 Office 文件攻击方式

恶意 Office 文件攻击方式按照攻击方式可分为 水坑攻击鱼叉攻击。按照传播方式可分为 主动传播被动传播。按照攻击利用的对象可分为 嵌入恶意代码攻击(基于宏和 DDE 攻击)利用漏洞(0 day 和 N day)攻击内嵌 OLE 对象攻击嵌入恶意文件攻击。 以下为以上列举出来的攻击方式说明。

水坑攻击: 即在攻击目标必经之路设置一个陷阱,最常见的做法是,攻击者分析攻击目标的上网活动规律,寻找攻击目标经常访问的网站的弱点,并将此网站“攻破”并植入事先准备好的恶意 Office 文档,这种攻击多用于网络间谍活动。

鱼叉攻击: 指攻击者借助欺骗性文字的邮件主题或正文(钓鱼邮件),向特定受害者发送带有恶意 Office 文档附件的邮件,诱导其下载并打开附件,一旦用户打开文档,文档中内嵌的恶意代码便会执行。通常,恶意代码会从远控地址中下载并运行恶意可执行程序,例如远控木马或者勒索病毒等,达到攻击目的。

按攻击方式

主动传播:指由攻击者主动的将恶意文档发送给被攻击者,包括邮件传播和 APT 攻击定向传播等。

被动传播:指攻击者将恶意文档挂在到网络上,等待受害者自己获取恶意文档到本地计算机,也叫路过式传播。

按攻击利用对象

2 oletools

相信大家看了以上内容对恶意 Office 文件有了一定的了解。假如你手头上有一份恶意的 Office 文件,那该怎么办?如果此时恰巧需要知道它到底干了哪些事,那么就需要对它进行分析,当然需要借助于工具,因为我们不会在自已的实体机去双击运行恶意 Office 文件,用肉眼对观察变化,正确的做法是放到虚拟机上运行,并用恰当的工具进行“解剖”分析。

其实分析恶意 Office 文件的工具非常多(oledump、OfficeMalScanner……),这里只为大家详细介绍其中一款功能非常强大的 oletools 工具,该工具基于 Python2 环境,所以需要安装 Python2,并且需要 olefile 模块的支持,我们来看下官方文档对其的介绍。

python-oletools 是分析 Microsoft OLE2 文件(也称为结构化存储、复合文件二进制格式或复合文件文件格式)的 python 工具包,如 Microsoft Office 文档或 Outlook 消息,主要用于恶意软件分析、取证和调试。它基于 olefile 解析器。

以上信息来自 python-oletools 官方文档介绍

python-oletools 是一个工具包,分为两个方面,分析恶意文档工具和分析 OLE 文件结构:

分析恶意文档工具:

  • oleid:分析 OLE 文件,检测恶意文件中常见的特定特征。
  • olevba:从 MS Office 文档(OLE 和 OpenXML)中提取和分析 VBA 宏源代码。
  • mraptor:检测恶意的 VBA 宏。
  • msodde:从 MS Office 文档、RTF 和 CSV 中检测和提取 DDE/DDEAUTO 链接。
  • pyxswf:检测、提取和分析可能嵌入在 MS Office 文档(如 Word、Excel)和 RTF 等文件中的Flash对象(SWF),这对于恶意软件分析尤其有用。
  • oleobj:从 OLE 文件中提取嵌入对象。
  • rtfobj:从 RTF 文件中提取嵌入的对象。

分析 OLE 文件结构工具:

  • olebrowse:一个简单的 GUI 浏览 OLE 文件(如 MS Word, Excel, Powerpoint 文档),查看和提取单独的数据流。
  • olemeta:从 OLE 文件中提取所有标准属性(元数据)。
  • oletimes:提取所有流和存储的创建和修改时间戳。
  • oledir:显示 OLE 文件的所有目录项,包括自由目录项和孤立目录项。
  • olemap:在 OLE 文件中显示所有扇区的映射。
  • ……

安装方式:

# Linux、Mac OSX、Unix
sudo -H pip install -U https://github.com/decalage2/oletools/archive/master.zip

# Windows
pip install -U https://github.com/decalage2/oletools/archive/master.zip

当前工具版本为 0.54。

2.1 oleid

oleid 是一个脚本,用于分析 OLE 文件,如 MS Office 文档(如 Word、Excel),检测恶意文件(如恶意软件)中常见的特定特征。例如,它可以检测 VBA 宏和嵌入式 Flash 对象。

主要特性:

  • 从内部结构(如 Word、Excel、PowerPoint 等)中检测 OLE 文件类型。
  • 检测 VBA 宏。
  • 检测嵌入式 Flash 对象。
  • 检测嵌入的 OLE 对象。
  • 检测 MS Office 加密。
  • 可以用作命令行工具。
  • Python API 将其集成到您的应用程序中。

改进计划:

  • 提取最重要的元数据字段。
  • 支持 OpenXML 文件和嵌入的 OLE 文件。
  • 通用 VBA 宏检测。
  • 检测自动执行的 VBA 宏。
  • 扩展 OLE 文件类型检测。
  • 检测异常 OLE 结构(碎片、未使用扇区等)。
  • 扫描多个文件的选项。
  • 从加密的 zip 归档文件扫描文件的选项。
  • CSV 输出。

用法:

oleid <file>

举个例子:

oleid <file>

2.2 olevba

olevba 是一个脚本解析 OLE 和 OpenXML 文件如微软 Office 文档(例如 Word、Excel),检测 VBA 宏,在明文中提取他们的源代码,并检测与安全相关的模式如 auto-executable 宏,可疑的 VBA 恶意软件使用的关键词,anti-sandboxing 和 anti-virtualization 技术,和潜在的国际石油公司(IP 地址、网址、可执行文件名等)。它还检测和解码几种常见的混淆方法,包括十六进制编码、StrReverse、Base64、Dridex、VBA 表达式,并从解码的字符串中提取 IOCs。

它既可以作为命令行工具使用,也可以作为您自己的应用程序中的 python 模块使用。它是 python-oletools 包的一部分。 olevba 基于 John William Davison 编写的 officeparser 源代码,并进行了重大修改。

支持的格式:

  • Word 97-2003(.doc, .dot)。
  • Word 2007+(.docm, .dotm)。
  • Word 2003 XML(.xml)。
  • Word/Excel MHTML, aka Single File Web Page(.mht)。
  • Excel 97-2003(.xls)。
  • Excel 2007+(.xlsm, .xlsb)。
  • PowerPoint 2007+(.pptm, .ppsm)。
  • 包含 VBA 或 VBScript 源代码的文本文件。
  • 包含上述任何一种的受密码保护的 Zip 归档文件。

主要特性:

  • 检测 VBA 宏在 MS Office 97-2003 和 2007+文件,XML, MHT。
  • 提取 VBA 宏源代码。
  • 检测 auto-executable 宏。
  • 检测可疑的 VBA 关键字经常使用恶意软件。
  • 检测反沙箱和反虚拟化技术。
  • 检测和解码与十六进制 /Base64/StrReverse/Dridex 混淆的字符串。
  • 使用 pyparser 构建的 VBA 解析器,包括自定义十六进制和 Base64 编码,使用 Chr、Asc、Val、StrReverse、env、+ 和 & 的任何组合来消除 VBA 表达式的混淆。
  • 提取感兴趣的 IOCs/ 模式,如 IP 地址、url、电子邮件地址和可执行文件名。
  • 扫描多个文件和示例集合(通配符,递归))。
  • 用于多个文件的摘要视图的分类模式。
  • 扫描恶意软件样本在密码保护的 Zip 档案。
  • 从应用程序中使用 olevba 的 Python API。

还支持使用密码加密的 MS Office 文件,因为 VBA 宏代码从来不加密,只加密文档的内容。

它是如何工作的:

  • olevba 检查文件类型:如果它是一个 OLE 文件(i.e MS Office 97-2003),它被立即解析。
  • 如果是 zip 文件(即 MS Office 2007+)、XML 或 MHTML, olevba 将查找其中存储的所有 OLE 文件(例如 vbaProject)。然后打开它们。
  • olevba 标识 OLE 结构中存储的所有 VBA 项目。
  • 对每个 VBA 项目进行解析,以找到包含宏代码的相应 OLE 流。
  • 在每个 OLE 流中,都会提取和解压 VBA 宏源代码(RLE 压缩)。
  • olevba 查找与各种算法(十六进制、Base64、StrReverse、Dridex、VBA 表达式)混淆的特定字符串。
  • olevba 扫描宏源代码和去混淆的字符串,以找到可疑的关键字、自动执行宏和潜在的 IOCs(url、IP 地址、电子邮件地址、可执行文件名等)。

用法:

olevba [options] <filename> [filename2 ...]

选项:

Options:
  -h, --help            show this help message and exit
  -r                    find files recursively in subdirectories.
  -z ZIP_PASSWORD, --zip=ZIP_PASSWORD
                        if the file is a zip archive, open all files from it,
                        using the provided password.
  -p PASSWORD, --password=PASSWORD
                        if encrypted office files are encountered, try
                        decryption with this password. May be repeated.
  -f ZIP_FNAME, --zipfname=ZIP_FNAME
                        if the file is a zip archive, file(s) to be opened
                        within the zip. Wildcards * and ? are supported.
                        (default:*)
  -a, --analysis        display only analysis results, not the macro source
                        code
  -c, --code            display only VBA source code, do not analyze it
  --decode              display all the obfuscated strings with their decoded
                        content (Hex, Base64, StrReverse, Dridex, VBA).
  --attr                display the attribute lines at the beginning of VBA
                        source code
  --reveal              display the macro source code after replacing all the
                        obfuscated strings by their decoded content.
  -l LOGLEVEL, --loglevel=LOGLEVEL
                        logging level debug/info/warning/error/critical
                        (default=warning)
  --deobf               Attempt to deobfuscate VBA expressions (slow)
  --relaxed             Do not raise errors if opening of substream fails

  Output mode (mutually exclusive):
    -t, --triage        triage mode, display results as a summary table
                        (default for multiple files)
    -d, --detailed      detailed mode, display full results (default for
                        single file)
    -j, --json          json mode, detailed in json format (never default)

0.54 版本说明:

现在可以使用 -p 选项使用提供的密码解密加密的文档。

每次用到时再添加

0 条回应