导语:使用OneNote中嵌入的Excel SpreadSheets实现DDE执行。它绕过了原有的Excel缓解规则(Microsoft已经发布补丁来缓解此问题)以及受保护的视图沙箱。
动态数据交换(DDE)已成为最近的热门话题。对于那些不熟悉DDE的人来说,它被设计为在两个应用程序之间传输数据。 2014年,Contextis发表了一篇关于在Microsoft Excel中使用DDE执行代码的好文章,使用“= DDE()”公式。之后,2017年10月9日,SensePost发表了一篇非常好的博文,滥用Microsoft Word中的DDEAUTO字段执行代码。不久之后,各种恶意软件家族采用了该技术,并迅速在野观测到。
在看到恶意使用高峰后,US-CERT的Will Dormann(@wdormann)发现修改一些注册表值,可以有效缓解大多数的DDE威胁。 这些更改禁用了DDE,并阻止了Word和Excel中的链接自动更新。Will在私下分享列出的细节后,添加了一个OneNote块。不幸的是,唯一的解决办法是彻底禁用嵌入式文件,这是不理想的。可以在这里找到注册表更改: https://gist.github.com/wdormann/732bb88d9b5dd5a66c9f1e1498f31a1b
此指导对于那些使用DDE技术的攻击者来说真的很有帮助。之后,2017年11月8日,微软发布了一份官方声明,概述了不在其环境中使用该协议的人如何减轻DDE威胁,该文件在ADV170021下发布,并附有其他文档。这些缓解主要针对Word,阻止所有的执行行为,而不是停止自动链接更新。除此之外,微软还表示,受保护的视图将阻止自动执行DDE,并提醒用户谨慎打开不受信任的文档。
在看到这些新的DDE缓解建议之后,我很好奇如何从不同的Office应用程序(如Publisher或OneNote)内执行这些操作。当时,Will Dormann的gist是其他Office应用程序(如Excel)缓解措施的唯一来源,因为微软只发布了针对Word的官方指南。
那么,为什么选择OneNote呢?它允许用户将Excel电子表格嵌入到笔记文档中,然后保存。这样最终用户就能够在OneNote中直接引用或使用Excel。不出所料,你可以在Excel中滥用DDE来执行代码! 理想情况下,Wil的Excel注册表更改阻止DDE攻击适用于在OneNote中嵌入的Excel表格。不幸的是,事实并非如此。
在执行Will的Excel注册表更改(特别是“DDEAllowed”设置为DWORD 0)时,打开包含DDE公式的电子表格时,您将看到类似下面的内容:
通过注册表缓解阻止Excel DDE
所以,Excel DDE正在按预期工作。现在,来看看OneNote。 为了在OneNote中使用Excel,可以转到“文件”(Files)选项卡下的SpreadSheet,来导入现有的Excel表格或创建一个新的电子表格。
因此OneNote允许导入现有的电子表格。 如果导入一个DDE电子表格会发生什么?首先,需要创建它。 Ryan Hanson(@ryhanson)发布了一条tweet,展示了可在DDE执行过程中操纵警告框并更改二进制名称。这非常有用,因为你可以将其改为MSEXCEL.exe,而不是直接显示cmd.exe或powershell.exe。
将该公式添加到Excel电子表格并保存后,现在我们可以对其进行测试,以确保正确。为此,先删除缓解Excel DDE的注册表项。
没有注册表缓解时顺利执行
很好,它起作用了。接下来,用Will的Excel注册表更改进行测试:
通过注册表缓解阻止Excel DDE
真棒,这些更改确实阻止了我们刚刚创建的Excel DDE POC。 现在我们已经准备好DDE电子表格,我们可以通过Insert-> SpreadSheet-> Existing Excel SpreadSheet将其导入到OneNote中
OneNote将浏览导入文件,即之前创建的DDE laced电子表格。 接下来,它会询问是否要附加文件或插入电子表格。选择插入电子表格(Insert SpreadSheet)
之后,OneNote将导入电子表格,并在该过程中尝试执行DDE命令。为防止这种情况,只需点击“否”。
导入武器化的Excel Sheet
最后,保存OneNote文件。此时,该OneNote文件具有直接嵌入DDE的Excel SpreadSheet。现在,来看看在OneNote文件中访问Excel SpreadSheet时,Excel DDE缓解注册表更改会发生什么。单击“是”将执行命令:
无论Excel 注册表更改与否DDE均执行
因此,尽管通过DDEAllowed阻止了Excel中的DDE,但通过OneNote访问时此功能仍然存在。与Will Dormann商讨后,唯一有效的缓解措施是将DisableEmbeddedFiles设置为1。这会将禁用所有文件嵌入功能,从可用性角度来说不太合适。
如上所述,微软的声明指出,受保护的视图可以阻止来自不受信任源(如Internet)的DDE向量。大多数Office应用程序均会如此,因为任何来自不受信任源的内容都先在沙箱中打开。然而,OneNote没有注册到受保护的视图中,并且从互联网下载时也不会触发它。
如果用户安装了OneNote,攻击者可以将武器化的Excel电子表格嵌入到OneNote文件中,并通过网页链接或电子邮件附件将其发送给受害者。 当用户收到OneNote文件并打开嵌入的电子表格时,它不会在受保护的视图中打开,并且只会显示DDE提示(可以按照上面的说明修改)。
值得注意的是,受保护的视图问题已于2017年4月20日向MSRC报告,微软并没有将其视为安全问题。
所以,可以做些什么?当时唯一的缓解就是彻底禁止OneNote中的嵌入。这是在2017年10月10日向微软报告的,2018年1月9日,微软推出了2007年以来所有Office版本的更新。Excel更新已添加到已有的Advisory ADV170021中,实现Excel和Word的缓解(因为以前只有Word是可用的)。
此更新创建了一个值,添加在注册表Microsoft Excel的安全选项中。通过将DisableDDEServerLaunch设置为DWORD 1,DDE将被有效地用于Excel。这很重要,因为OneNote本身并不存在此问题。只是因为嵌入Excel,才使此类攻击起作用。通过为Excel添加缓解选项,用户可以保护自己免受此类攻击。
另外,可以在Windows 10 1709中使用攻击面缩减(ASR)规则,防止DDE攻击及其他Office程序产生的子进程攻击。更多关于ASR的内容,参见here。