CVE-2015-1641及利用样本分析
字数 2205 2025-08-19 12:41:20
CVE-2015-1641 Microsoft Word类型混淆漏洞分析与利用
漏洞概述
CVE-2015-1641是Microsoft Word中的一个类型混淆漏洞,影响多个Word版本:
受影响版本:
- Microsoft Word 2007 SP3
- Office 2010 SP2
- Word 2010 SP2
- Word 2013 SP1
- Word 2013 RT SP1
- Word for Mac 2011
- Office Compatibility Pack SP3
- Word Automation Services on SharePoint Server 2010 SP2 & 2013 SP1
- Office Web Apps Server 2010 SP2 & 2013 SP1
漏洞成因:Word在处理displacedByCustomXml属性时未对customXml标签对象进行有效性验证,攻击者可以通过传入其他标签对象(如smartTag),导致类型混淆进而实现任意内存写入。
漏洞分析环境
- 操作系统:Windows 7 SP1 (x86)
- Word版本:2007
- WWLIB.DLL版本:12.0.4518.1014
- 样本MD5:A69F778D1F511268019B1080F5E3B98B
漏洞利用机制
1. 类型混淆到任意地址写入
漏洞利用的核心在于通过displacedByCustomXml属性触发类型混淆:
-
文档结构:恶意RTF文档包含多个OLE对象
- 0号对象:用于加载OTKLOADR.DLL以引入MSVCR71.DLL(绕过ASLR)
- 1号对象:完成堆喷及Shellcode布局
- 2号对象:触发CVE-2015-1641漏洞
-
触发点:位于
styles.xml中的displacedByCustomXml属性 -
内存写入计算:
- 写入地址计算公式:
[[Parameter 1]+0x8]*[Parameter 2]+[[Parameter 1]+0xC]+[Parameter 1] - 通过精心构造的smartTag标签属性值控制写入地址
- 写入地址计算公式:
-
关键写入操作:
- 第一次写入:向0x7c38bd74地址处写入0xffffe696(用于后续计算)
- 第二次写入:覆盖MSVCR71.DLL虚函数表中函数调用地址
- 第三次写入:准备第四次写入所需的值
- 第四次写入:覆盖函数调用参数
2. 执行流劫持
- 堆喷布局:通过1号对象中的
activeX1.bin完成内存布局 - ROP链:
- 从0x7c3651EB开始执行ROP链
- 调用
VirtualProtect绕过DEP保护
- Shellcode执行:
- 跳转到
activeX1.bin内的Shellcode部分
- 跳转到
3. Shellcode分析
activeX1.bin Shellcode:
- 遍历当前进程的文件句柄,查找特定大小的文件
- 将文件映射到内存中
- 通过文件头特征判断是否为样本文件及Shellcode起始位置
- 复制Shellcode到新分配的内存空间
- 跳转到第二部分Shellcode执行
RTF文档Shellcode:
- 解密后续Shellcode
- 执行恶意行为(如文件创建、注册表修改等)
实际利用样本分析(Patchwork组织样本)
样本MD5:2C22EA1CED258346351EAD09B1DC6074
攻击链分析
-
初始感染:
- 创建隐藏文件:
~$Normal.dat - 在注册表中创建项:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\PLAs_NEW_ORBAT - 删除注册表禁用项
- 创建隐藏文件:
-
VBE脚本执行:
- 通过
wscript.exe执行Normal.domx(VBE格式) - 解密并写入迷惑性文档:
PLAs_NEW_ORBAT.doc - 释放三个PE文件并设置隐藏属性
- 通过
-
白文件利用:
- 执行带有数字签名的白文件
MicroScMgmt.exe - 加载恶意DLL:
jli.dll
- 执行带有数字签名的白文件
-
最终载荷:
jli.dll与Patchwork组织的BADNEWS木马相似- 提供完整的后门功能
漏洞修复与防御
补丁信息:
微软已发布安全更新修复此漏洞,建议用户及时更新。
防御措施:
- 保持Office软件最新
- 启用DEP和ASLR等缓解措施
- 谨慎打开来源不明的Office文档
- 使用杀毒软件检测恶意文档
- 禁用Office的ActiveX控件(如非必要)
技术细节补充
正常情况下的XML处理:
- 解析
customXml标签时会开辟新空间 - 解析
smartTag标签时处理方式不同 - 漏洞利用这种差异控制目标写入地址
内存布局技巧:
- 利用堆喷技术布置Shellcode
- 通过多次内存写入精确控制执行流
- 结合ROP绕过DEP保护
参考资源
- 微软官方安全公告
- CVE-2015-1641漏洞描述
- RTF文件格式文档
- Office内存管理机制文档
- 相关样本分析报告
总结
CVE-2015-1641是一个典型的Office类型混淆漏洞,通过精心构造的RTF文档触发,结合内存操作和Shellcode技术实现远程代码执行。该漏洞被多个攻击组织利用,具有较高的危害性。理解其利用机制有助于更好地防御类似攻击。