VBA Stomping
字数 1249 2025-08-07 00:35:04

VBA Stomping 技术分析与防御指南

1. 技术概述

VBA Stomping是一种通过破坏Microsoft Office文档中的VBA源代码,同时保留编译后的p-code来实现恶意代码隐藏的技术。

核心原理

  • 双存储机制:Office文档同时存储VBA源代码和编译后的p-code
  • 执行优先级:默认情况下,Office会优先执行p-code而非重新编译源代码
  • 版本依赖性:p-code与特定VBA版本绑定,跨版本会触发重新编译

2. 手动实现方法

2.1 环境准备

  • Windows 10操作系统
  • Office 2016
  • 解压缩软件(如7-Zip)
  • 十六进制编辑器(如HxD)

2.2 操作步骤

  1. 创建测试文档

    • 新建Excel文件(.xlsm格式)
    • 通过"开发工具"→"Visual Basic"创建宏
    • 示例代码:
      Sub test()
          MsgBox "ABC"
      End Sub
      
  2. 修改VBA项目文件

    • 使用解压缩软件打开.xlsm文件
    • 提取xl/vbaProject.bin文件
    • 用十六进制编辑器修改源代码部分(如将"ABC"改为"XYZ")
    • 保存并替换原文件中的vbaProject.bin
  3. 行为观察

    • 未启用宏时:显示修改后的源代码(MsgBox "XYZ")
    • 启用宏后:实际执行原始p-code(显示"ABC")
    • 启用宏后查看代码:显示反编译的p-code(恢复为MsgBox "ABC")

3. 自动化工具实现(Evil Clippy)

3.1 工具准备

  • 下载EvilClippy
  • 编译生成可执行文件:
    csc /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe *.cs
    

3.2 使用流程

  1. 准备两个文件:

    • 原始xlsm文件(含MsgBox "ABC")
    • 替换用vba文件(含MsgBox "XYZ")
  2. 执行命令:

    EvilClippy -s replacement.vba original.xlsm
    
  3. 生成文件行为:

    • 显示替换代码(MsgBox "XYZ")
    • 实际执行原始p-code(MsgBox "ABC")

4. 技术要点分析

4.1 关键机制

  • p-code优先:Office默认执行已编译的p-code而非重新编译源代码
  • 版本限制:p-code与特定VBA版本绑定,跨版本会强制重新编译
  • 侦察需求:攻击者需预先了解目标Office版本或准备多版本攻击文档

4.2 攻击特点

  • 隐蔽性:静态分析显示无害代码
  • 持久性:启用宏后才会暴露真实行为
  • 针对性:需精确匹配目标环境

5. 防御措施

5.1 检测方法

  • 对比源代码与反编译代码差异
  • 检查vbaProject.bin文件异常
  • 使用专业VBA分析工具

5.2 防护建议

  1. 宏安全设置

    • 禁用所有宏,仅允许签名宏
    • 启用"禁用所有宏并发出通知"
  2. 文档分析

    • 使用最新版Office打开可疑文档
    • 强制触发重新编译(p-code失效)
  3. 环境控制

    • 限制Office版本一致性
    • 部署宏行为监控方案
  4. 用户教育

    • 警惕未经验证的Office文档
    • 启用内容前进行代码验证

6. 总结

VBA Stomping利用Office文档的双重代码存储机制实现恶意代码隐藏,具有高度隐蔽性。防御需要结合技术控制与用户意识培养,重点在于强制代码重新编译和严格宏安全策略。

VBA Stomping 技术分析与防御指南 1. 技术概述 VBA Stomping是一种通过破坏Microsoft Office文档中的VBA源代码,同时保留编译后的p-code来实现恶意代码隐藏的技术。 核心原理 双存储机制 :Office文档同时存储VBA源代码和编译后的p-code 执行优先级 :默认情况下,Office会优先执行p-code而非重新编译源代码 版本依赖性 :p-code与特定VBA版本绑定,跨版本会触发重新编译 2. 手动实现方法 2.1 环境准备 Windows 10操作系统 Office 2016 解压缩软件(如7-Zip) 十六进制编辑器(如HxD) 2.2 操作步骤 创建测试文档 新建Excel文件(.xlsm格式) 通过"开发工具"→"Visual Basic"创建宏 示例代码: 修改VBA项目文件 使用解压缩软件打开.xlsm文件 提取 xl/vbaProject.bin 文件 用十六进制编辑器修改源代码部分(如将"ABC"改为"XYZ") 保存并替换原文件中的vbaProject.bin 行为观察 未启用宏时:显示修改后的源代码(MsgBox "XYZ") 启用宏后:实际执行原始p-code(显示"ABC") 启用宏后查看代码:显示反编译的p-code(恢复为MsgBox "ABC") 3. 自动化工具实现(Evil Clippy) 3.1 工具准备 下载 EvilClippy 编译生成可执行文件: 3.2 使用流程 准备两个文件: 原始xlsm文件(含MsgBox "ABC") 替换用vba文件(含MsgBox "XYZ") 执行命令: 生成文件行为: 显示替换代码(MsgBox "XYZ") 实际执行原始p-code(MsgBox "ABC") 4. 技术要点分析 4.1 关键机制 p-code优先 :Office默认执行已编译的p-code而非重新编译源代码 版本限制 :p-code与特定VBA版本绑定,跨版本会强制重新编译 侦察需求 :攻击者需预先了解目标Office版本或准备多版本攻击文档 4.2 攻击特点 隐蔽性 :静态分析显示无害代码 持久性 :启用宏后才会暴露真实行为 针对性 :需精确匹配目标环境 5. 防御措施 5.1 检测方法 对比源代码与反编译代码差异 检查vbaProject.bin文件异常 使用专业VBA分析工具 5.2 防护建议 宏安全设置 禁用所有宏,仅允许签名宏 启用"禁用所有宏并发出通知" 文档分析 使用最新版Office打开可疑文档 强制触发重新编译(p-code失效) 环境控制 限制Office版本一致性 部署宏行为监控方案 用户教育 警惕未经验证的Office文档 启用内容前进行代码验证 6. 总结 VBA Stomping利用Office文档的双重代码存储机制实现恶意代码隐藏,具有高度隐蔽性。防御需要结合技术控制与用户意识培养,重点在于强制代码重新编译和严格宏安全策略。