疫情期间竟然还有这种病毒?解密古老而又神秘的宏病毒
字数 2341 2025-08-15 21:32:31
宏病毒分析与防御技术详解
一、宏病毒概述
宏病毒是一种寄存在文档或模板中的计算机病毒,利用Office软件(如Word、Excel)的宏功能执行恶意代码。自上世纪90年代出现以来,随着技术进步,宏病毒已从简单的破坏性程序演变为复杂的攻击工具。
1.1 宏病毒工作原理
- 通过文档或模板传播,不直接感染可执行程序
- 当用户打开携带宏病毒的文档并启用内容时,其中的恶意宏代码会被执行
- 利用Office软件的自动执行功能(如AutoOpen、AutoClose)实现隐蔽运行
二、宏病毒技术分析
2.1 宏病毒执行机制
2.1.1 自动执行方法
- 用户操作触发:如
Sub botton(),当用户单击文档中的按钮控件时执行 - 自动执行宏:
Sub AutoOpen():文档打开时自动执行Sub AutoClose():文档关闭时自动执行
2.1.2 隐蔽技术
| 代码 | 功能 |
|---|---|
On Error Resume Next |
不显示错误对话框 |
Application.DisplayStatusBar = False |
隐藏宏运行状态 |
Options.SaveNormalPrompt = False |
后台自动保存修改 |
EnableCancelKey = wdCancelDisabled |
禁用ESC键取消宏执行 |
Application.ScreenUpdating = 0 |
禁用屏幕更新 |
Application.DisplayAlerts = wdAlertsNone |
不显示警告信息 |
2.1.3 菜单屏蔽技术
CommandBars("Tools").Controls("Macro").Enabled = 0 '屏蔽工具菜单中的"宏"按钮
CommandBars("Macro").Controls("Security").Enabled = 0 '屏蔽宏菜单的"安全性"
CommandBars("Macro").Controls("Macros").Enabled = 0 '屏蔽宏菜单的"宏"
2.2 宏病毒常用外部例程
| 外部例程 | 功能描述 |
|---|---|
MSXML2.ServerXMLHTTP |
模拟HTTP GET/POST请求 |
Net.WebClient |
提供网络下载服务 |
Adodb.Stream |
处理数据流,配合XMLHTTP下载文件 |
Wscript.shell |
运行程序、操作注册表、创建快捷方式 |
Poweshell |
执行PowerShell脚本 |
Application.Run |
运行.exe文件 |
WMI |
通过winmgmts:\.\root\CIMV2管理计算机 |
Shell.Application |
执行shell命令 |
2.3 字符串隐写技术
- 使用
Chr()函数拼接字符串 - 使用
Replace()函数替换关键字符 - 使用
CallByname函数动态调用方法 - 利用窗体、控件或文件属性隐藏恶意代码
三、宏病毒分析工具
3.1 静态分析工具
-
oledump.py:分析OLE文件,提取宏代码
- 标记'M'的数据段表示含有VBA宏
- GitHub地址:https://github.com/decalage2/oledump-contrib
-
VBA_Password_Bypasser:绕过VBA工程密码保护
3.2 二进制分析工具
- Office Visualization Tool:微软官方工具,解析doc/xls/ppt二进制格式
- 010Editor:专业二进制编辑器
- Structured Storage Viewer:解析Storage和Stream数据
四、宏病毒攻击实例
4.1 Cobalt Strike宏攻击
-
生成VBA代码:
- 攻击 → 生成后门 → MS Office Macro
- 创建监听器
-
Word文档植入:
- 视图 → 宏 → 创建宏
- 清空默认代码,粘贴生成的VBA代码
- 保存为启用宏的文档(.docm)
-
执行效果:
- 目标打开文档并启用宏后,建立反弹shell
- 系统创建rundll32.exe进程
4.2 Excel 4.0宏攻击
-
创建宏表:
- 插入 → MS Excel 4.0宏表
-
输入恶意公式:
=EXEC("calc.exe") '执行计算器 =ALERT("Hello World") '显示对话框 =HALT() '结束宏执行 -
保存为.xls格式,启用内容后执行
五、宏病毒防御措施
5.1 基础防御
- 安装杀毒软件并保持更新
- 禁用Office宏功能
- 打开可疑文档时按住Shift键禁止自动宏
5.2 高级防御
- 宏行为监控:监控以下危险字符串
| 字符串 | 风险描述 |
|---|---|
Powershell |
可能执行恶意脚本 |
Winmgmts |
可能用于隐藏进程 |
Adodb.stream |
可能用于文件操作 |
Savetofile |
可能保存恶意文件 |
createObject |
可能创建危险对象 |
-
文档分析:
- 使用oledump等工具检查文档是否包含宏
- 分析宏代码是否包含危险函数调用
-
系统加固:
- 限制PowerShell执行策略
- 监控异常进程创建(如rundll32.exe)
六、免杀技术分析
6.1 EvilClippy工具
-
创建迷惑性VB代码(fakecode.vb):
Sub test() ' 无害代码,迷惑杀毒软件 End Sub -
执行免杀操作:
EvilClippy.exe -s fakecode.vba malicious.doc -
原理:
- 插入无害代码混淆检测
- 修改OLE结构绕过静态分析
七、相关漏洞参考
-
Office远程代码执行漏洞:
- CVE-2017-11882
- CVE-2018-0802
- 复现方法:https://myzxcg.github.io/20180921.html
-
IoC样本哈希:
b274f6ceda0083ee232ceaad1a4ff454cacd66e33cad53d8cde087dc906d7141 cdb10cc6ce4e876cfbbc656d4b72f4fef5d97fe83fa1a07278c84b731b955c1e
通过全面了解宏病毒的技术原理、攻击手法和防御措施,可以有效提升对此类威胁的防护能力。在实际工作中,应结合行为监控、静态分析和系统加固等多种手段进行综合防御。