一次office样本漏洞分析
字数 1909 2025-08-23 18:31:18
Office样本漏洞分析教学文档
1. 初始分析准备
1.1 样本基本信息
- 样本类型:XML格式的Office文档
- MD5哈希:619b8a3156730f610a27b3357731089f
1.2 初始分析工具
- oleid 和 oleobj (来自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:
- 打开原始文件
- 定位到偏移量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对象
- 对下载的可执行文件进行沙箱分析