无需开启宏即可渗透:在Office文档中利用DDE执行命令

概述

最近,国外的安全研究员发现了一种在文档中使用DynamicData Exchange (DDE)协议发起渗透的方法。使用该方法可以绕过MSWord和MSExcel宏限制,不需要使用MSWord和MSExcel的漏洞就可以执行命令。腾讯反病毒实验室哈勃系统第一时间复现了该渗透方法,本文将详细介绍该渗透方法的构造过程。

背景

Windows提供了应用程序间数据传输的若干种方法。其中一种就是使用动态数据交换(DDE)协议。DDE协议是一套消息和指示的集合。通过发送消息以及共享内存实现应用程序的数据共享和交换。应用程序可以使用DDE协议实现一次性数据传输以及持续的数据交换(当新数据可用时,应用程序发送更新通知给另一个应用程序)[1]。

在MSWord和MSExcel里,可以使用DDE来执行命令。下面我们以MSWord为例进行说明。

方法

新建一个Word文档,通过Ctrl+F9添加一个域,然后修改域代码为:

{ DDEAUTOc://windows//system32//cmd.exe "/k notepad.exe" }

“DDEAUTO”关键字指示Word这是一个DDE域,并且在打开文档时自动执行域代码。在域代码中,紧跟“DDEAUTO”关键字后面的是要执行的可执行程序的路径,后面跟随的是可执行程序的参数。

无需开启宏即可渗透:在Office文档中利用DDE执行命令

此外,也可以修改关键字“DDEAUTO”为“DDE”,即修改域代码为:

{ DDEc://windows//system32//cmd.exe "/k notepad.exe" }

,并保存文档。

无需开启宏即可渗透:在Office文档中利用DDE执行命令

而此时,如果希望嵌入的DDE能够在打开文档时自动执行,需要在word/settings.xml嵌入以下代码:

<w:updateFieldsw:val="true"/>

无需开启宏即可渗透:在Office文档中利用DDE执行命令

此时,当我们打开包含DDE域代码的文档时,会有显示两次提示信息:

无需开启宏即可渗透:在Office文档中利用DDE执行命令

无需开启宏即可渗透:在Office文档中利用DDE执行命令

当均点击“是”,会执行DDE域代码,弹出记事本:

无需开启宏即可渗透:在Office文档中利用DDE执行命令

上述两个对话框风险提示属性较弱,不像是一个安全风险的提示,用户很容易忽视该类提示进而允许执行恶意的域代码。当然,也可以在正文中加入一些诱导性和迷惑性很强的文字,诱导用户点击以上两个对话框,从而使用户暴露在风险之中。

扩展

除了弹出记事本外,配合PowerShell或者各类脚本程序的强大能力,可以下载或者释放恶意payload,此类渗透方法的危害将显现无疑。

无需开启宏即可渗透:在Office文档中利用DDE执行命令

无需开启宏即可渗透:在Office文档中利用DDE执行命令

(执行PowerShell)

无需开启宏即可渗透:在Office文档中利用DDE执行命令

无需开启宏即可渗透:在Office文档中利用DDE执行命令

(执行bat脚本)

参考

[1] https://baike.baidu.com/item/Dynamic%20Data%20Exchange?fr=aladdin

[2] https://sensepost.com/blog/2017/macro-less-code-exec-in-msword

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/54748.html

(0)
上一篇 2021年8月7日
下一篇 2021年8月7日

相关推荐

发表回复

登录后才能评论