DDE混淆的3种新方法

一、前言

最近一段时间,微软的Office产品已经成为滋养新型攻击方法的沃土,从相对比较简单的数据注入方法(如DDE注入以及CSV注入)到更加复杂的基于嵌入公式对象的攻击技术,不一而足。反病毒行业很快吸收了这些技术,有许多厂商可以正确检测并识别大多数攻击方法。然而万物都处于演化之中,因此攻击场景中出现攻击手段的混淆及变种也只是时间问题。思科Talos以及ReversingLabs曾发表过一篇联合文章,介绍与CSV DDE注入有关的两种新技术(一种混淆技术以及一个变种)。本文的目的是为大家解释这些技术背后的一些“原理”,也会介绍3种新的混淆技术。

[[245298]]

二、CSV/DDE代码注入

尽管网上关于DDE代码注入技术已经有许多参考资料,但这里我们还可以简单过一下这种技术的原理。CSV(使用逗号作为分隔符)是一种简单的数据格式,可以用来存储结构化数据,也可以作为Excel的数据源(Excel会解析该数据,然后将被分隔符切分的数据填充到单元格中)。实际上,如果文件格式与文件扩展名不匹配,但该文件扩展名可以使用Excel来打开,那么Excel似乎会采用CSV模式来导入数据。

根据微软的描述,DDE(Dynamic Data Exchange,动态数据交换)是应用之间传输数据的一种方法。Excel可以使用这种机制,根据外部应用的处理结果来更新单元格的内容。因此,如果我们制作包含DDE公式的CSV文件,那么在打开该文件时,Excel就会尝试执行外部应用,这个过程听起来非常简单。

三、DDE解析

虽然听起来简单,但工作过程却稍微复杂一些。当打开文件时,Excel会逐个检查文件的每一行。将该行的的内容分隔并拷贝到对应的单元格之前,Excel会检查当前行是否以某些命令字符开头。这些字符可能是内部函数所需的字符,如=、+、-以及@。根据命令的前缀,可能会出现以下两种情况:

  • 如果前缀为为=、+或者-,那么后续数据就会被当成表达式来处理;
  • 如果前缀为@,那么Excel会搜索内部函数(比如SUM()),将参数解析成表达式。

到目前为止,前面都是大家可以从网上找到的公开资料,但状态机如何处理表达式可能参考资料就相对较少。说到DDE时,相应的表达式大致可以表示为:

  1. command|’arguments’!cell 

命令本身也是一种表达式。如果表达式中仅包含可打印字符(甚至包含一些不可打印字符,如0xAA,具体取决于代码页),那么缓冲区大小就为256字节。由于命令前缀或者操作符占了1个字符,因此实际上表达式只有255个字节可用。表达式可以是名称、数字、字符串或者文件名。

即便缓冲区中有足够大的空间,内部程序的最大文件名长度为8个字符。这可能是MS-DOS文件名的历史遗留问题,当时系统最大只支持8字节长文件名(不包括扩展名)。

然而,表达式通常采用递归定义,可以采用算术及逻辑运算符(如&、^、/、+等等)链接起来,甚至还可以使用左括号(表示函数参数的开始)或者冒号(用作单元格分隔符)。虽然命令不应该被当成表达式来处理,但由于null字节会被全部忽略掉,而空格有时候后会被忽略(比如位于命令之前的空格),因此出现这种情况也不足为奇。

换句话说,表达式中可以包含数量不限的null字节。Excel会忽视参数以及单元格中的null字节。重要的是,单元格引用根本不必为有效值。一旦表达式被成功解析及转换,命令和参数就会传递给WinExec() API执行。

四、更多细节

思科Talos在文中提到,攻击样本会使用简单的混淆技术,比如在DDE公式之前或者之后附加文本或者二进制数据。这似乎只是冰山一角,这是因为数据解析规则不仅可以处理前缀(prefix)或后缀(suffix)形式的混淆命令,也能处理中缀(infix)形式的混淆数据。

表达式可以串联使用,我们也可以在实际命令之前注入任意数量的表达式(每个子表达式最多可以使用255个字符),命令甚至也可以串联起来使用,这也是命令可以使用混淆前缀的基础,如下所示:

  1. =AAAA+BBBB-CCCC&"Hello"/12345&cmd|'/c calc.exe'!A 
  2. =cmd|'/c calc.exe'!A*cmd|'/c calc.exe'!A 
  3. +thespanishinquisition(cmd|'/c calc.exe'!A 
  4. =         cmd|'/c calc.exe'!A 

目前在实际攻击中看到的载荷会选择cmd、msexcel或者msiexec作为可执行目标文件,,但我们可以任意选择其他外部应用,只要文件名少于8字符即可,而这个条件在实际环境中很容满足。比如,regsvr32、certutil以及rundll32都满足文件名长度要求,这为我们打开了后缀混淆攻击的新世界:

  1. =rundll32|'URL.dll,OpenURL calc.exe'!A 
  2. =rundll321234567890abcdefghijklmnopqrstuvwxyz|'URL.dll,OpenURL calc.exe'!A 

最后,我们可以在各处添加null字节或者空格,达到中缀混淆目的。空格不能嵌入到命令名称中,一旦嵌入就将拆分命令名,导致命令无法执行。但是命令名之前以及或者参数中的空间还可以为我们所用。当然,命令名不区分大小写,因此我们可以使用不同的大小写方案来进行混淆。大家可以访问此处下载前面我们描述的所有混淆样例(密码为infected)。

图1. A1000十六进制数据中的中缀混淆示例

这些混淆技术当然可以单独使用,或者可以组合使用。我们已经使用Excel 2013以及Excel 2017测试过本文提到的所有混淆技术,在本文撰写时没有任何杀毒软件厂商能够检测到这些技术。为了帮大家防御这类简单的混淆攻击,我们同样发布了匹配的YARA规则,大家可以访问此链接下载。

五、总结

在本文中,我们介绍了混淆DDE载荷的3种新技术:前缀、中缀以及后缀混淆技术。由于Office产品在过去27年中一直在不断完善,丰富的功能同样给正常用户和恶意用户带来广阔的表演舞台。在接下来的几年时间内,可以预见的是新的攻击方法及混淆技术将不断演化,我们也希望能看到推陈出新的技术用来投递攻击载荷。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/139155.html<

(0)
管理的头像管理
上一篇2025-03-03 08:36
下一篇 2025-03-03 08:37

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注