宏利用样本分析
字数 1822 2025-08-24 07:48:22

恶意宏样本分析与利用技术详解

1. 宏恶意代码基础分析技术

1.1 宏样本基本信息提取

分析宏样本的第一步是获取其基本信息,包括:

  • 文件哈希值(MD5、SHA1等)
  • 文件大小
  • 创建/修改时间
  • 文档内容预览

示例命令:

md5sum malicious.doc
sha1sum malicious.doc
file malicious.doc

1.2 宏代码解密技术

大多数恶意宏会进行加密处理,常见解密方法:

  1. VBA工程密码移除

    • 使用remove_vba_project_password工具
    • 使用olevba工具的--decode选项
  2. 常见加密方式

    • 简单的字符串反转
    • Base64编码
    • XOR加密
    • 自定义加密算法
  3. 解密示例

' 常见解密函数示例
Function DecryptString(encrypted As String) As String
    Dim result As String
    For i = 1 To Len(encrypted)
        result = result & Chr(Asc(Mid(encrypted, i, 1)) Xor 123)
    Next i
    DecryptString = result
End Function

2. 典型APT组织宏样本分析

2.1 APT28组织样本分析

样本特征

  • MD5: 9B10685B774A783EABFECDB6119A8AA3
  • 使用WordOpenXML获取XML内容
  • 通过SelectNodes定位特定标签

攻击流程

  1. 从文档XML中提取加密字符串
  2. 解密字符串并写入%APPDATA%目录
  3. 使用rundll32.exe执行解密后的PE文件
  4. 设置注册表实现持久化(UserInitMprLogonScript)
  5. 内存中解密第二阶段的PE文件

关键技术点

' XML内容提取示例
xml = ActiveDocument.WordOpenXML
Set selected = xml.SelectNodes("//w:t")
encryptedStr = selected(1).Text
decryptedStr = Decrypt(encryptedStr)

2.2 海莲花组织样本分析

样本特征

  • MD5: 3fd2a37c3b8d9eb587c71ceb8e3bb085
  • 多阶段攻击链
  • 使用注册表修改VB访问权限

攻击流程

  1. 复制文档到%TEMP%
  2. 解密文档倒数第五段文本获取VBA代码
  3. 修改AccessVBOM注册表键值
  4. 替换文档VBA代码并执行
  5. 三阶段加载最终Shellcode

关键技术点

' 注册表修改示例
Set wsh = CreateObject("WScript.Shell")
originalValue = wsh.RegRead("HKEY_CURRENT_USER\...\AccessVBOM")
wsh.RegWrite "HKEY_CURRENT_USER\...\AccessVBOM", 1, "REG_DWORD"

2.3 APT34组织样本分析

样本特征

  • MD5: 6615c410b8d7411ed14946635947325e
  • 使用DNS隧道回传信息
  • 文档打开/关闭触发不同操作

攻击流程

  1. Document_Open事件检测鼠标连接
  2. 创建b.doc并写入解密内容
  3. Document_Close事件重命名文件为exe
  4. 创建计划任务实现持久化
  5. 设置每5分钟运行一次的触发器

关键技术点

' 计划任务创建示例
Set service = CreateObject("Schedule.Service")
service.Connect
Set rootFolder = service.GetFolder("\")
Set taskDef = service.NewTask(0)
' 设置触发器、动作等

3. 恶意宏利用技术详解

3.1 文件释放技术

常见文件释放位置:

  • %APPDATA%
  • %TEMP%
  • C:\Users\Public\Documents
  • C:\Windows\Tasks

示例代码:

Set fso = CreateObject("Scripting.FileSystemObject")
tempPath = Environ("APPDATA") & "\mrset.bat"
Set file = fso.CreateTextFile(tempPath, True)
file.Write decryptedContent
file.Close
SetAttr tempPath, vbHidden  ' 设置隐藏属性

3.2 持久化技术

  1. 注册表持久化

    • UserInitMprLogonScript
    • Run/RunOnce键
    • 文件关联劫持
  2. 计划任务

    • 使用WMI创建定时任务
    • 设置多种触发器
  3. 快捷方式修改

    • 开始菜单启动项
    • 特殊文件夹快捷方式

3.3 进程注入与执行

常见执行方式:

  • WScript.Shell的Run方法
  • ShellExecute
  • CreateRemoteThread
  • 通过rundll32.exe执行DLL

示例:

Set wsh = CreateObject("WScript.Shell")
wsh.Run "rundll32.exe " & Environ("APPDATA") & "\malicious.dll,ExportFunction", 0, False

4. 宏样本复现技术

4.1 Cobalt Strike载荷嵌入

  1. 生成恶意DLL
  2. Base64编码
  3. 嵌入Word文档特定标签中
  4. 通过宏代码提取并执行

4.2 RTF文档利用

  1. 使用rtfobj.py提取嵌入对象
  2. 分析嵌入的Excel宏代码
  3. 替换\objdata对象内容
  4. 利用\objupdate控件触发执行

4.3 证书伪装技术

  1. 将恶意代码Base64编码
  2. 用证书标记包裹
  3. 使用certutil解码
certText = "-----BEGIN CERTIFICATE-----" & base64Payload & "-----END CERTIFICATE-----"
Set fso = CreateObject("Scripting.FileSystemObject")
Set tmp = fso.CreateTextFile(Environ("TEMP") & "\payload.txt", True)
tmp.Write certText
tmp.Close
Shell "certutil -decode " & Environ("TEMP") & "\payload.txt " & Environ("APPDATA") & "\malicious.exe"

5. 防御与检测建议

5.1 宏安全设置

  • 禁用所有宏,仅允许经过数字签名的宏
  • 启用"禁用所有宏,并发出通知"
  • 使用受保护的视图

5.2 检测技术

  1. 静态分析

    • 使用olevba、oleid等工具分析
    • 查找可疑函数调用(WScript.Shell, ShellExecute等)
    • 检测编码/加密字符串
  2. 动态分析

    • 沙箱执行监控
    • API调用监控
    • 文件系统/注册表变更监控

5.3 企业防护措施

  • 应用白名单
  • 宏执行审计
  • 终端检测与响应(EDR)
  • 用户安全意识培训

6. 分析工具推荐

  1. 静态分析工具

    • olevba (ViperMonkey)
    • oleid
    • OfficeMalScanner
    • pcodedmp
  2. 动态分析工具

    • Cuckoo Sandbox
    • FireEye FLARE VM
    • ANY.RUN
  3. 辅助工具

    • rtfdump
    • oledump
    • CyberChef (编解码分析)

通过深入理解这些技术和案例,安全分析人员可以更有效地识别、分析和防御基于宏的恶意攻击。

恶意宏样本分析与利用技术详解 1. 宏恶意代码基础分析技术 1.1 宏样本基本信息提取 分析宏样本的第一步是获取其基本信息,包括: 文件哈希值(MD5、SHA1等) 文件大小 创建/修改时间 文档内容预览 示例命令: 1.2 宏代码解密技术 大多数恶意宏会进行加密处理,常见解密方法: VBA工程密码移除 : 使用 remove_vba_project_password 工具 使用 olevba 工具的 --decode 选项 常见加密方式 : 简单的字符串反转 Base64编码 XOR加密 自定义加密算法 解密示例 : 2. 典型APT组织宏样本分析 2.1 APT28组织样本分析 样本特征 : MD5: 9B10685B774A783EABFECDB6119A8AA3 使用WordOpenXML获取XML内容 通过SelectNodes定位特定标签 攻击流程 : 从文档XML中提取加密字符串 解密字符串并写入%APPDATA%目录 使用rundll32.exe执行解密后的PE文件 设置注册表实现持久化(UserInitMprLogonScript) 内存中解密第二阶段的PE文件 关键技术点 : 2.2 海莲花组织样本分析 样本特征 : MD5: 3fd2a37c3b8d9eb587c71ceb8e3bb085 多阶段攻击链 使用注册表修改VB访问权限 攻击流程 : 复制文档到%TEMP% 解密文档倒数第五段文本获取VBA代码 修改AccessVBOM注册表键值 替换文档VBA代码并执行 三阶段加载最终Shellcode 关键技术点 : 2.3 APT34组织样本分析 样本特征 : MD5: 6615c410b8d7411ed14946635947325e 使用DNS隧道回传信息 文档打开/关闭触发不同操作 攻击流程 : Document_ Open事件检测鼠标连接 创建b.doc并写入解密内容 Document_ Close事件重命名文件为exe 创建计划任务实现持久化 设置每5分钟运行一次的触发器 关键技术点 : 3. 恶意宏利用技术详解 3.1 文件释放技术 常见文件释放位置: %APPDATA% %TEMP% C:\Users\Public\Documents C:\Windows\Tasks 示例代码: 3.2 持久化技术 注册表持久化 : UserInitMprLogonScript Run/RunOnce键 文件关联劫持 计划任务 : 使用WMI创建定时任务 设置多种触发器 快捷方式修改 : 开始菜单启动项 特殊文件夹快捷方式 3.3 进程注入与执行 常见执行方式: WScript.Shell 的Run方法 ShellExecute CreateRemoteThread 通过rundll32.exe执行DLL 示例: 4. 宏样本复现技术 4.1 Cobalt Strike载荷嵌入 生成恶意DLL Base64编码 嵌入Word文档特定标签中 通过宏代码提取并执行 4.2 RTF文档利用 使用rtfobj.py提取嵌入对象 分析嵌入的Excel宏代码 替换\objdata对象内容 利用\objupdate控件触发执行 4.3 证书伪装技术 将恶意代码Base64编码 用证书标记包裹 使用certutil解码 5. 防御与检测建议 5.1 宏安全设置 禁用所有宏,仅允许经过数字签名的宏 启用"禁用所有宏,并发出通知" 使用受保护的视图 5.2 检测技术 静态分析 : 使用olevba、oleid等工具分析 查找可疑函数调用(WScript.Shell, ShellExecute等) 检测编码/加密字符串 动态分析 : 沙箱执行监控 API调用监控 文件系统/注册表变更监控 5.3 企业防护措施 应用白名单 宏执行审计 终端检测与响应(EDR) 用户安全意识培训 6. 分析工具推荐 静态分析工具 : olevba (ViperMonkey) oleid OfficeMalScanner pcodedmp 动态分析工具 : Cuckoo Sandbox FireEye FLARE VM ANY.RUN 辅助工具 : rtfdump oledump CyberChef (编解码分析) 通过深入理解这些技术和案例,安全分析人员可以更有效地识别、分析和防御基于宏的恶意攻击。