疫情期间竟然还有这种病毒?解密古老而又神秘的宏病毒
字数 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 静态分析工具

  1. oledump.py:分析OLE文件,提取宏代码

    • 标记'M'的数据段表示含有VBA宏
    • GitHub地址:https://github.com/decalage2/oledump-contrib
  2. VBA_Password_Bypasser:绕过VBA工程密码保护

3.2 二进制分析工具

  • Office Visualization Tool:微软官方工具,解析doc/xls/ppt二进制格式
  • 010Editor:专业二进制编辑器
  • Structured Storage Viewer:解析Storage和Stream数据

四、宏病毒攻击实例

4.1 Cobalt Strike宏攻击

  1. 生成VBA代码:

    • 攻击 → 生成后门 → MS Office Macro
    • 创建监听器
  2. Word文档植入:

    • 视图 → 宏 → 创建宏
    • 清空默认代码,粘贴生成的VBA代码
    • 保存为启用宏的文档(.docm)
  3. 执行效果:

    • 目标打开文档并启用宏后,建立反弹shell
    • 系统创建rundll32.exe进程

4.2 Excel 4.0宏攻击

  1. 创建宏表:

    • 插入 → MS Excel 4.0宏表
  2. 输入恶意公式:

    =EXEC("calc.exe")  '执行计算器
    =ALERT("Hello World")  '显示对话框
    =HALT()  '结束宏执行
    
  3. 保存为.xls格式,启用内容后执行

五、宏病毒防御措施

5.1 基础防御

  1. 安装杀毒软件并保持更新
  2. 禁用Office宏功能
  3. 打开可疑文档时按住Shift键禁止自动宏

5.2 高级防御

  1. 宏行为监控:监控以下危险字符串
字符串 风险描述
Powershell 可能执行恶意脚本
Winmgmts 可能用于隐藏进程
Adodb.stream 可能用于文件操作
Savetofile 可能保存恶意文件
createObject 可能创建危险对象
  1. 文档分析

    • 使用oledump等工具检查文档是否包含宏
    • 分析宏代码是否包含危险函数调用
  2. 系统加固

    • 限制PowerShell执行策略
    • 监控异常进程创建(如rundll32.exe)

六、免杀技术分析

6.1 EvilClippy工具

  1. 创建迷惑性VB代码(fakecode.vb):

    Sub test()
    ' 无害代码,迷惑杀毒软件
    End Sub
    
  2. 执行免杀操作:

    EvilClippy.exe -s fakecode.vba malicious.doc
    
  3. 原理:

    • 插入无害代码混淆检测
    • 修改OLE结构绕过静态分析

七、相关漏洞参考

  1. Office远程代码执行漏洞

    • CVE-2017-11882
    • CVE-2018-0802
    • 复现方法:https://myzxcg.github.io/20180921.html
  2. IoC样本哈希

    b274f6ceda0083ee232ceaad1a4ff454cacd66e33cad53d8cde087dc906d7141
    cdb10cc6ce4e876cfbbc656d4b72f4fef5d97fe83fa1a07278c84b731b955c1e
    

通过全面了解宏病毒的技术原理、攻击手法和防御措施,可以有效提升对此类威胁的防护能力。在实际工作中,应结合行为监控、静态分析和系统加固等多种手段进行综合防御。

宏病毒分析与防御技术详解 一、宏病毒概述 宏病毒是一种寄存在文档或模板中的计算机病毒,利用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 菜单屏蔽技术 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宏表 输入恶意公式: 保存为.xls格式,启用内容后执行 五、宏病毒防御措施 5.1 基础防御 安装杀毒软件并保持更新 禁用Office宏功能 打开可疑文档时按住Shift键禁止自动宏 5.2 高级防御 宏行为监控 :监控以下危险字符串 | 字符串 | 风险描述 | |-------|---------| | Powershell | 可能执行恶意脚本 | | Winmgmts | 可能用于隐藏进程 | | Adodb.stream | 可能用于文件操作 | | Savetofile | 可能保存恶意文件 | | createObject | 可能创建危险对象 | 文档分析 : 使用oledump等工具检查文档是否包含宏 分析宏代码是否包含危险函数调用 系统加固 : 限制PowerShell执行策略 监控异常进程创建(如rundll32.exe) 六、免杀技术分析 6.1 EvilClippy工具 创建迷惑性VB代码(fakecode.vb): 执行免杀操作: 原理: 插入无害代码混淆检测 修改OLE结构绕过静态分析 七、相关漏洞参考 Office远程代码执行漏洞 : CVE-2017-11882 CVE-2018-0802 复现方法:https://myzxcg.github.io/20180921.html IoC样本哈希 : 通过全面了解宏病毒的技术原理、攻击手法和防御措施,可以有效提升对此类威胁的防护能力。在实际工作中,应结合行为监控、静态分析和系统加固等多种手段进行综合防御。