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

时间:2022-04-29
本文章向大家介绍无需开启宏即可渗透:在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”关键字后面的是要执行的可执行程序的路径,后面跟随的是可执行程序的参数。

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

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

,并保存文档。

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

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

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

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

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

扩展

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

(执行PowerShell)

(执行bat脚本)