先看宏入口再决定是否运行
文档类样本的分析顺序应当是静态优先:先用宏分析工具列出文档里是否存在宏、宏的自动执行入口(AutoOpen、Document_Open、AutoClose 等)以及可疑的调用,再决定是否需要跑动态。很多恶意文档的逻辑量很小,靠静态输出就能看清下载地址与执行方式。
编码字符串要看解码前后
宏里的关键字符串常被拼接或编码,直接搜索 URL 可能一无所获。分析工具的解码功能会把常见的编码形式展开,解码后再搜关键字命中率明显提高。报告里同时保留原始片段与解码结果,说明结论是怎么得到的。
基本信息
| 适用平台 | 跨平台(oletools 套件中的 olevba,可分析 .doc/.docm/.xls/.xlsm 等) |
|---|---|
| 核心输出 | 宏是否存在、自动执行入口、可疑 API 调用、解码后的字符串 |
| 常见关键字 | AutoOpen、Document_Open、Shell、CreateObject、URLDownloadToFile |
| 编码形式 | 十六进制串、Chr 拼接、Base64 与字符串反转 |
| 隔离要求 | 文档样本在隔离环境打开,宏一律禁用 |
典型使用场景
- 邮件附件是启用宏的文档:确认宏是否存在以及入口函数名
- 静态搜索不到地址:先用解码功能展开再搜关键字
- 判断是否需要动态分析:宏逻辑简单时静态输出已足够支撑结论
- 同源样本比对:宏代码结构与解码方式相似可辅助关联
- 为报告取证:导出宏源码与解码结果作为附件
宏检查
宏检查
# 概览:宏是否存在、入口函数与可疑调用
olevba sample.docm | sed -n '1,60p'
# 展开编码字符串后再搜关键字,命中率更高
olevba --decode sample.docm | grep -iE 'AutoOpen|Document_Open|Shell|CreateObject|URLDownload'
# 只看宏源码部分,便于逐行精读
olevba --code sample.docm
# 保留原始文件哈希,附件归档时一并登记
sha256sum sample.docm常见入口与调用读法
| 名称 | 触发时机 | 分析用法 |
|---|---|---|
| AutoOpen / Document_Open | 文档打开时 | 最常见的自动执行入口 |
| AutoClose / Document_Close | 文档关闭时 | 常用于清理痕迹 |
| Shell / WScript.Shell | 执行系统命令 | 看后续命令行内容 |
| CreateObject | 创建 COM 对象 | 对象类型决定后续能力 |
| URLDownloadToFile | 下载远端文件 | 记录地址并与流量日志互证 |
文档类样本必须在隔离环境打开,宏安全设置保持禁用;任何「打开看看效果」的动作都可能直接触发载荷执行。
doc 与 docm 的宏存储位置不同,工具会自动处理;如果工具报告没有宏,仍应结合文件结构与来源判断,不要据此排除恶意可能。