一次office样本漏洞分析
字数 1909 2025-08-23 18:31:18

Office样本漏洞分析教学文档

1. 初始分析准备

1.1 样本基本信息

  • 样本类型:XML格式的Office文档
  • MD5哈希:619b8a3156730f610a27b3357731089f

1.2 初始分析工具

  • oleidoleobj (来自oletools工具包)
    • 安装:pip install oletools
    • 用途:解析Office文档中的OLE对象

2. 第一阶段分析:Office文档

2.1 提取外部链接

使用oleobj分析文档,发现一个外部短链接:

http://bit.do/fQTgM

2.2 短链接解析

使用PowerShell模拟请求:

$respond = Invoke-WebRequest -Uri 'http://bit.do/fQTgM' -UserAgent "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/7.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)"

2.3 流量分析

使用NetworkMiner从流量包中提取到三个文件,其中重点关注:

  • dot.rtf:RTF格式文档,包含可疑的OLE对象数据

3. RTF文档分析

3.1 RTF分析工具

  • rtfdump:用于分析RTF文档中的嵌入对象
    • 注意:rtfdump需要Python 2环境运行
    • 命令:rtfdump.py .\dot.rtf -s 1 (查看十六进制数据)

3.2 发现Equation Editor利用

  • 文档启动了EquationEditor进程
  • 这是CVE-2017-11882漏洞的典型利用标志
  • 攻击者利用此漏洞执行特定的shellcode

3.3 提取RTF中的对象

使用rtfobj提取RTF中的数据:

  • 提取出两个文件:第一个是Equation Editor中的shellcode,第二个是空文件

4. Shellcode分析

4.1 准备分析环境

  • 使用xorsearch工具寻找shellcode起始位置
    • 命令:xorsearch.exe -W .\dot.raw
    • 发现偏移量0xBB可能是shellcode开始位置

4.2 清理shellcode

使用010 Editor:

  1. 打开原始文件
  2. 定位到偏移量0xBB处
  3. 删除前面的内容,得到纯净的shellcode

4.3 静态分析

使用IDA Pro打开shellcode:

  • 入口处跳转到一个地址
  • 该地址调用一个函数,函数直接pop ebp,这是寻找内存位置的常见技巧

x86汇编知识点:

在x86架构中,callpop指令组合常用于:

  • call指令将下一条指令地址压入堆栈
  • pop指令紧跟在call后,用于获取当前函数地址
  • 这种技术在shellcode中常见,用于构建基于偏移量的引用

4.4 动态分析工具

使用scDbg (ShellCode调试专家):

  1. 将shellcode二进制文件载入scDbg
  2. 选中"FindSc"寻找shellcode起始点
  3. 点击"Launch"开始搜索
  4. 确认偏移量为0x01FE

5. 动态调试分析

5.1 调试环境设置

  1. 运行dot.rtf文件
  2. 使用Procmon.exe监控进程树
  3. 将调试器附加到EQNEDT32.exe进程

5.2 调试技巧

  • 关注urlmon.dll库文件,因为shellcode会下载文件
  • 动态分析发现下载了vbc.exe文件

6. 第二阶段分析:vbc.exe

6.1 初始检查

使用工具检查基本信息:

  • PEStudio
  • DIE (Detect It Easy)
  • Exeinfo PE

发现特征:

  • .text和.rsrc区段有加密
  • 使用VB编写的程序,无壳
  • 包含大量API解密函数调用

6.2 动态分析

  1. CryptDecrypt函数下断点
  2. 运行到返回地址
  3. 在堆栈中寻找解密的内存地址指针

6.3 分析结论

  • vbc.exe是一个加载器
  • 主要功能是从内存中解密并执行payload
  • 解密后的内存空间格式异常,不是标准PE文件

7. 攻击链总结

  1. 恶意Office文档利用CVE-2017-11882漏洞
  2. 通过Equation Editor执行shellcode
  3. shellcode从短链接下载RTF文档
  4. RTF文档进一步下载vbc.exe加载器
  5. vbc.exe解密并执行最终payload

8. 关键工具列表

  1. oletools (oleid, oleobj)
  2. rtfdump (Python 2环境)
  3. xorsearch
  4. 010 Editor
  5. IDA Pro
  6. scDbg (ShellCode调试)
  7. Procmon
  8. PE分析工具 (PEStudio, DIE, Exeinfo PE)

9. 防御建议

  1. 及时修补Office漏洞,特别是CVE-2017-11882
  2. 禁用Equation Editor组件
  3. 监控短链接域名的访问
  4. 检测RTF文档中的异常OLE对象
  5. 对下载的可执行文件进行沙箱分析
Office样本漏洞分析教学文档 1. 初始分析准备 1.1 样本基本信息 样本类型:XML格式的Office文档 MD5哈希:619b8a3156730f610a27b3357731089f 1.2 初始分析工具 oleid 和 oleobj (来自oletools工具包) 安装: pip install oletools 用途:解析Office文档中的OLE对象 2. 第一阶段分析:Office文档 2.1 提取外部链接 使用oleobj分析文档,发现一个外部短链接: 2.2 短链接解析 使用PowerShell模拟请求: 2.3 流量分析 使用NetworkMiner从流量包中提取到三个文件,其中重点关注: dot.rtf :RTF格式文档,包含可疑的OLE对象数据 3. RTF文档分析 3.1 RTF分析工具 rtfdump :用于分析RTF文档中的嵌入对象 注意:rtfdump需要Python 2环境运行 命令: rtfdump.py .\dot.rtf -s 1 (查看十六进制数据) 3.2 发现Equation Editor利用 文档启动了 EquationEditor 进程 这是CVE-2017-11882漏洞的典型利用标志 攻击者利用此漏洞执行特定的shellcode 3.3 提取RTF中的对象 使用rtfobj提取RTF中的数据: 提取出两个文件:第一个是Equation Editor中的shellcode,第二个是空文件 4. Shellcode分析 4.1 准备分析环境 使用xorsearch工具寻找shellcode起始位置 命令: xorsearch.exe -W .\dot.raw 发现偏移量0xBB可能是shellcode开始位置 4.2 清理shellcode 使用010 Editor: 打开原始文件 定位到偏移量0xBB处 删除前面的内容,得到纯净的shellcode 4.3 静态分析 使用IDA Pro打开shellcode: 入口处跳转到一个地址 该地址调用一个函数,函数直接 pop ebp ,这是寻找内存位置的常见技巧 x86汇编知识点: 在x86架构中, call 和 pop 指令组合常用于: call 指令将下一条指令地址压入堆栈 pop 指令紧跟在 call 后,用于获取当前函数地址 这种技术在shellcode中常见,用于构建基于偏移量的引用 4.4 动态分析工具 使用 scDbg (ShellCode调试专家): 将shellcode二进制文件载入scDbg 选中"FindSc"寻找shellcode起始点 点击"Launch"开始搜索 确认偏移量为0x01FE 5. 动态调试分析 5.1 调试环境设置 运行dot.rtf文件 使用Procmon.exe监控进程树 将调试器附加到EQNEDT32.exe进程 5.2 调试技巧 关注 urlmon.dll 库文件,因为shellcode会下载文件 动态分析发现下载了 vbc.exe 文件 6. 第二阶段分析:vbc.exe 6.1 初始检查 使用工具检查基本信息: PEStudio DIE (Detect It Easy) Exeinfo PE 发现特征: .text和.rsrc区段有加密 使用VB编写的程序,无壳 包含大量API解密函数调用 6.2 动态分析 在 CryptDecrypt 函数下断点 运行到返回地址 在堆栈中寻找解密的内存地址指针 6.3 分析结论 vbc.exe是一个加载器 主要功能是从内存中解密并执行payload 解密后的内存空间格式异常,不是标准PE文件 7. 攻击链总结 恶意Office文档利用CVE-2017-11882漏洞 通过Equation Editor执行shellcode shellcode从短链接下载RTF文档 RTF文档进一步下载vbc.exe加载器 vbc.exe解密并执行最终payload 8. 关键工具列表 oletools (oleid, oleobj) rtfdump (Python 2环境) xorsearch 010 Editor IDA Pro scDbg (ShellCode调试) Procmon PE分析工具 (PEStudio, DIE, Exeinfo PE) 9. 防御建议 及时修补Office漏洞,特别是CVE-2017-11882 禁用Equation Editor组件 监控短链接域名的访问 检测RTF文档中的异常OLE对象 对下载的可执行文件进行沙箱分析