宏利用样本分析
字数 1822 2025-08-24 07:48:22
恶意宏样本分析与利用技术详解
1. 宏恶意代码基础分析技术
1.1 宏样本基本信息提取
分析宏样本的第一步是获取其基本信息,包括:
- 文件哈希值(MD5、SHA1等)
- 文件大小
- 创建/修改时间
- 文档内容预览
示例命令:
md5sum malicious.doc
sha1sum malicious.doc
file malicious.doc
1.2 宏代码解密技术
大多数恶意宏会进行加密处理,常见解密方法:
-
VBA工程密码移除:
- 使用
remove_vba_project_password工具 - 使用
olevba工具的--decode选项
- 使用
-
常见加密方式:
- 简单的字符串反转
- Base64编码
- XOR加密
- 自定义加密算法
-
解密示例:
' 常见解密函数示例
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定位特定标签
攻击流程:
- 从文档XML中提取加密字符串
- 解密字符串并写入%APPDATA%目录
- 使用rundll32.exe执行解密后的PE文件
- 设置注册表实现持久化(UserInitMprLogonScript)
- 内存中解密第二阶段的PE文件
关键技术点:
' XML内容提取示例
xml = ActiveDocument.WordOpenXML
Set selected = xml.SelectNodes("//w:t")
encryptedStr = selected(1).Text
decryptedStr = Decrypt(encryptedStr)
2.2 海莲花组织样本分析
样本特征:
- MD5: 3fd2a37c3b8d9eb587c71ceb8e3bb085
- 多阶段攻击链
- 使用注册表修改VB访问权限
攻击流程:
- 复制文档到%TEMP%
- 解密文档倒数第五段文本获取VBA代码
- 修改AccessVBOM注册表键值
- 替换文档VBA代码并执行
- 三阶段加载最终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隧道回传信息
- 文档打开/关闭触发不同操作
攻击流程:
- Document_Open事件检测鼠标连接
- 创建b.doc并写入解密内容
- Document_Close事件重命名文件为exe
- 创建计划任务实现持久化
- 设置每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\DocumentsC:\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 持久化技术
-
注册表持久化:
- UserInitMprLogonScript
- Run/RunOnce键
- 文件关联劫持
-
计划任务:
- 使用WMI创建定时任务
- 设置多种触发器
-
快捷方式修改:
- 开始菜单启动项
- 特殊文件夹快捷方式
3.3 进程注入与执行
常见执行方式:
WScript.Shell的Run方法ShellExecuteCreateRemoteThread- 通过rundll32.exe执行DLL
示例:
Set wsh = CreateObject("WScript.Shell")
wsh.Run "rundll32.exe " & Environ("APPDATA") & "\malicious.dll,ExportFunction", 0, False
4. 宏样本复现技术
4.1 Cobalt Strike载荷嵌入
- 生成恶意DLL
- Base64编码
- 嵌入Word文档特定标签中
- 通过宏代码提取并执行
4.2 RTF文档利用
- 使用rtfobj.py提取嵌入对象
- 分析嵌入的Excel宏代码
- 替换\objdata对象内容
- 利用\objupdate控件触发执行
4.3 证书伪装技术
- 将恶意代码Base64编码
- 用证书标记包裹
- 使用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 检测技术
-
静态分析:
- 使用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 (编解码分析)
通过深入理解这些技术和案例,安全分析人员可以更有效地识别、分析和防御基于宏的恶意攻击。