三种新型的DDE混淆方法
字数 1399 2025-08-20 18:18:17
三种新型DDE混淆方法详解
引言
Microsoft Office产品已成为各种新型攻击手法的滋生地,从简单的数据注入(如DDE和CSV注入)到针对嵌入式遗留公式对象的高级攻击方法。随着反病毒行业对这些技术的检测能力提升,攻击者也在不断进化其混淆和变异技术。本文将详细介绍三种新型的DDE混淆方法。
CSV/DDE代码注入基础
CSV文件特性
- CSV(逗号分隔值)是一种简单的结构化数据格式
- Excel能够解析CSV文件并使用分隔符间的数据填充单元格
- 当文件格式与扩展名不一致时,Excel会回退到CSV模式
DDE机制
- DDE(动态数据交换)是应用程序间传输数据的方法之一
- 在Excel中,DDE可用于根据外部应用程序结果更新单元格内容
- 包含DDE公式的CSV文件被打开时,Excel会尝试执行外部应用程序
DDE工作原理深入
文件解析过程
- Excel逐行检查文件内容
- 检查行是否以命令字符开头(
:、@、=、+、-) - 根据前缀不同有两种处理方式:
- 前缀为
=、+或-:其余部分视为表达式 - 前缀为
@:搜索内部函数并将参数解释为表达式
- 前缀为
表达式结构
- 基本格式:
command | 'arguments'!cell - 表达式可以是名称、数字、字符串或文件名
- 表达式缓冲区大小为256字节(前缀占1字节,表达式最多255字节)
- 外部应用程序文件名最大长度为8字符(沿袭MS-DOS限制)
表达式特性
- 支持递归定义
- 可使用常见算术和逻辑运算符(
+、-、&等)链接 - 可使用括号表示函数参数
- 可使用冒号作为单元格分隔符
- Null字节会被完全忽略
- 空格有时会被忽略(如命令前的空格)
- 单元格引用不必有效
三种新型混淆方法
1. 前缀型混淆
原理:利用表达式链接特性,在实际命令前注入任意数量子表达式
特点:
- 每个子表达式最多255字符
- 可链接多个命令
- 可在实际命令前添加大量无关表达式
示例:
= AAAA+BBBB-CCCC & "Hello" /12345 & cmd | '/c calc.exe' !A
= cmd | '/c calc.exe' !A*cmd | '/c calc.exe' !A+thespanishinquisition
( cmd | '/c calc.exe' !A
= cmd | '/c calc.exe' !A
2. 后缀型混淆
原理:利用8字符文件名限制,在合法命令后添加无关字符
特点:
- 适用于文件名恰好8字符的外部程序(如
regsvr32、certutil、rundll32) - 可在命令名后添加任意字符(只要不超过255字节限制)
示例:
= rundll32 | 'URL.dll,OpenURL calc.exe' !A
= rundll321234567890abcdefghijklmnopqrstuvwxyz | 'URL.dll,OpenURL calc.exe' !A
3. 中缀型混淆
原理:在命令各部分间插入空字节或空格
特点:
- 可在命令前或参数间插入混淆内容
- 不能嵌入到命令名称中(会分隔命令名)
- 命令名不区分大小写,可利用大小写变化混淆
实现方式:
- 插入空字节(完全被忽略)
- 插入空格(在某些位置被忽略)
- 混合大小写命令名
混淆技术组合使用
上述三种混淆方法可以单独使用,也可以组合使用以增强规避效果。在实际攻击中,攻击者通常会采用多种混淆技术的组合。
检测方法
为检测简单的混淆技术,可以使用YARA规则进行识别。相关规则可从原文提供的链接下载。
防御建议
- 禁用Office产品的DDE功能
- 保持Office和防病毒软件更新
- 对可疑文件进行沙箱分析
- 教育用户不要打开来源不明的Office文档
- 实施应用程序白名单策略
总结
DDE攻击技术仍在不断进化,本文介绍的三种混淆方法(前缀型、后缀型和中缀型)展示了攻击者如何利用Office功能的合法特性来规避检测。随着时间推移,预计会出现更多创新的混淆和攻击技术。安全团队需要持续关注这类攻击的发展,并采取多层次的防御措施。