Office DDE漏洞攻击

本文作者:pull

本文属于安全脉搏原创金币奖励计划

转载请参考:https://www.secpulse.com/archives/61458.html

本文参考Sensepost的Etienne Stalmans和Saif El-Sherei发表的介绍Ms office在不需要宏情况下,使用DDE进行攻击一篇博客文章:https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/

DDE简介

动态数据交换(DDE),它是在Microsoft Windows操作系统中实现的客户端/服务器通信方法,自1987年早期的Windows 2.0基于Windows Messaging,并使用其功能来启动双方之间的连接,服务器侦听某些主题和消息,对其进行响应到客户端并终止连接。它被用于向诸如办公产品和浏览器的应用程序发送参数,发送命令到shell -explorer-来创建开始菜单组和链接,并在不同的应用程序和服务之间进行集成。

Microsoft将DDE定义为允许应用程序共享数据的一组消息和准则。 Microsoft文档说明,应用程序可以使用DDE协议进行一次数据传输,以便应用程序在新数据可用时将更新发送给彼此

攻击原理

DDE只不过是一个自定义字段,用户可插入文档。这些字段允许用户输入简单的说明,包括插入到新文档中的数据及插入位置。问题是恶意软件制作者可以创建包含DDE字段的恶意Word文件(而不需要打开另一个Office应用程序)、打开命令提示符和运行恶意代码。通常情况下,Office应用程序会显示两项告警内容。第一个是关于包含指向其他文件的链接的文档告警,第二个是关于打开远程命令提示符的错误告警

攻击还原

Word

新建一个Word文档,通过Ctrl+F9添加一个域,输入POC:

DDEAUTO c:\\windows\\system32\\cmd.exe "/k calc.exe"

当然你也可以通过手工方式添加域:插入—文档部件—域

图片[1]-Office DDE漏洞攻击-Pikachu Hacker

图片[2]-Office DDE漏洞攻击-Pikachu Hacker

此时会有一段文字显示“!异常的公式结尾”

图片[3]-Office DDE漏洞攻击-Pikachu Hacker

然后选中此文字,右键点击“切换域代码”,此时变成大框号,同时有默认代码在里面。

图片[4]-Office DDE漏洞攻击-Pikachu Hacker

替换代码成为:DDEAUTO c:\\windows\\system32\\cmd.exe "/k calc.exe"即可。

图片[5]-Office DDE漏洞攻击-Pikachu Hacker

然后保存,然后重新打开此文档,则会进行提示是否需要更新。

图片[6]-Office DDE漏洞攻击-Pikachu Hacker

当用户一旦点击“是”则自动运行域中的命令。

图片[7]-Office DDE漏洞攻击-Pikachu Hacker

点击“是”则执行代码。

图片[8]-Office DDE漏洞攻击-Pikachu Hacker

RTF

和word相同的方法,在CTF文件中创建域,在域中添加代码即可。

图片[9]-Office DDE漏洞攻击-Pikachu Hacker

保存后打开此RTF文档,提示和word一样,执行成功后,会在D盘根目录创建一个1.txt,文件内容是:你是谁。

Outlook

1.正常邮件

此漏洞针对outlook 2013和2016版本,并且需要利用RTF模式下代码才生效。创建邮件,设置好文本格式:设置文本格式—AA RTF。

图片[10]-Office DDE漏洞攻击-Pikachu Hacker

在正文中插入RTF文档的payload即可。

图片[11]-Office DDE漏洞攻击-Pikachu Hacker

插入之后会弹窗提示是否需要更新链接,点击“否”,同时插入的代码是看不到的。

图片[12]-Office DDE漏洞攻击-Pikachu Hacker

插入后显示:

图片[13]-Office DDE漏洞攻击-Pikachu Hacker

完成后发生,接收者在回复的时候回执行命令(当然过程需要点击“是”允许才可以)。

图片[14]-Office DDE漏洞攻击-Pikachu Hacker

图片[15]-Office DDE漏洞攻击-Pikachu Hacker

2.约会邀请

打开outlook,约会邀请,将WORD中的Payload粘贴在约会邀请正文中,当你复制Payload到正文时,会弹出窗口,选择"否"后,发送约会邀请。当接收则收到邀请时查看则会触发payload。

图片[16]-Office DDE漏洞攻击-Pikachu Hacker

点击“是”

图片[17]-Office DDE漏洞攻击-Pikachu Hacker

触发payload

图片[18]-Office DDE漏洞攻击-Pikachu Hacker

其他office命令执行

在Excel里面输入=cmd|'/c calc'!A0保存打开会有意想不到的结果。

图片[19]-Office DDE漏洞攻击-Pikachu Hacker

图片[20]-Office DDE漏洞攻击-Pikachu Hacker

图片[21]-Office DDE漏洞攻击-Pikachu Hacker

检测

利用一些规则检测,此处采用NVISO的规则,参考链接https://blog.nviso.be/2017/10/11/detecting-dde-in-ms-office-documents/。

代码如下:

// YARA rules Office DDE// NVISO 2017/10/10 - 2017/10/12// https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/ rule Office_DDEAUTO_field {  strings:    $a = /<w:fldChar\s+?w:fldCharType="begin"\/>.+?\b[Dd][Dd][Ee][Aa][Uu][Tt][Oo]\b.+?<w:fldChar\s+?w:fldCharType="end"\/>/  condition:    $a} rule Office_DDE_field {  strings:    $a = /<w:fldChar\s+?w:fldCharType="begin"\/>.+?\b[Dd][Dd][Ee]\b.+?<w:fldChar\s+?w:fldCharType="end"\/>/  condition:    $a}rule Office_OLE_DDEAUTO {  strings:    $a = /\x13\s*DDEAUTO\b[^\x14]+/ nocase  condition:    uint32be(0) == 0xD0CF11E0 and $a}rule Office_OLE_DDE {  strings:    $a = /\x13\s*DDE\b[^\x14]+/ nocase  condition:    uint32be(0) == 0xD0CF11E0 and $a}

当然你还可以通过windows事件查看器中查看响应的事件信息。事件ID号为300。消息体包含文本“是否启动应用程序c:\windows\system32\cmd.exe?"等相关内容。

图片[22]-Office DDE漏洞攻击-Pikachu Hacker

防御

1、注册表防御参考wdormann在GitHub代码库中上传的.reg文件,快速在注册表中禁用DDEAUTO功能。

图片[23]-Office DDE漏洞攻击-Pikachu Hacker

2、禁止office相关“自动更新链接”功能

图片[24]-Office DDE漏洞攻击-Pikachu Hacker

3、漏洞补丁

微软并未将此作为真正意义上的是漏洞来看待,表示Office在文件打开前已给出告警,不属于安全问题,所以没有官方补丁,不过可以下载0patch团队出了dde的补丁(非微软官方)

https://0patch.blogspot.be/2017/10/0patching-office-dde-ddeauto.html

本文作者:pull

本文属于安全脉搏原创金币奖励计划

转载请参考:https://www.secpulse.com/archives/61458.html

本文作者:pull

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/64588.html

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容