微软Office文档中的DDE攻击演示

微软的Office是在每个企业或组织中部署的常见应用程序。这种广泛的使用将微软的Office变成了一个可以用来执行攻击并使红队可以收集域哈希或执行任意代码的工具。

从历史上看,在微软的Office中执行代码是通过使用宏来执行的。然而,SensePost发现了另一种使用DDE(动态数据交换)协议执行任意代码的方法。Office的产品内部有很多地方可以通过DDE来接受代码执行,本文将演示大部分这些攻击媒介。文章DDE Payloads可以与这篇文章一起用于生成有效载荷。

Word

在微软Office Word中最简单的利用方法是插入字段码,这种方法由SensePost发表的这篇文章描述过并且在公式内嵌入有效载荷。

Insert-> Quick Parts-> Field

Word - 通过字段码的DDE

在括号内添加以下有效内容将在下次打开文件时弹出一些对话框。如果用户选择“是”选项,则有效载荷将被执行。

Word - DDE有效载荷

或者,可以使用宏将有效载荷插入字段代码,正如Paul Ritchie在其博客中所描述的那样。

''' Programmatically inserts a new field code into a word document at the current selection index.

''' This is of type "wdFieldDDEAuto" which is a field code which executes Dynamic Data Exchange (DDE)

''' When the document is opened. This includes an example PoC which launches calc.exe

Public Sub FieldCodeFun()

' Payload String

Dim payload As String

payload = """c:\windows\system32\calc.exe"" ""/c calc.exe"""

' Insert our payload as a field code

Selection.Collapse Direction:=wdCollapseEnd

ActiveDocument.Fields.Add Range:=Selection.Range, _

Type:=wdFieldDDEAuto, Text:=payload

Word -通过宏执行DDE

上面演示的有效载荷只是执行了计算器,但可以修改它来包含任何其他有效载荷。

Mike Czumak做了一个很好的研究,在他的博客中讨论了从外部托管的另一个Word文档中加载恶意的DDE。INCLUDE字段码可以与这个攻击向量和外部URL结合使用。

Word - 从另一个外部文档中加载DDE有效载荷

Excel

在微软的Excel 中可以通过使用公式嵌入 DDE来执行有效载荷。以下两个公式都可以利用DDE执行代码(本例中为计算器),但是第二个公式会混淆对话框消息来更好的进行伪装来使其看起来更合理。

=cmd|'/c calc.exe'!A1

=MSEXCEL|'\..\..\..\Windows\System32\cmd.exe /c calc.exe'!''

Excel - DDE命令

当用户打开恶意的Excel电子表格时,将出现以下对话框。

Excel - DDE对话框

第二个公式仍将执行代码,但对话框中的消息内容将被修改,不是要求用户启动CMD.EXE,而是要求他启动MSEXCEL.exe。

Excel -第二个命令执行DDE

Outlook

在Outlook中有很多位置可以利用DDE执行有效载荷。根据情况的不同,每种方法都可能有用。例如,如果已经获得了域凭据,则可能更容易伪造电子邮件并发送给多个其他用户,以便在企业或组织内获得更多的Shell。

消息

发送包含DDE的Outlook消息也可以自动执行代码。这同样适用于以附件形式发送的电子邮件。

Outlook消息 – 执行DDE有效负载

但是,电子邮件信息需要以RTF格式(RTF)发送,并以RTF格式进行投递,因为某些邮件服务会将所有电子邮件转换为HTML,这将使DDE有效内容无效。

Outlook消息 - DDE和RTF

当消息到达受害者用户的收件箱时,DDE将在该消息被浏览时执行。

Outlook消息 - RTF电子邮件消息

联系人

创建一个新的联系人或修改一个现有的联系人并将DDE载荷放入注释区域就可以导致执行代码。

Outlook - 联系人备注中的DDE负载

联系人需要发送给目标用户。

Outlook - 联系人注释区域的DDE代码执行

当用户打开联系人时,将执行嵌入的DDE有效载荷。

Outlook - DDE执行

日历邀请

相同的思路可以适用于通过日历邀请的情况。如果用户与该邀请进行交互(打开或取消),则使用DDE有效载荷发送会议邀请就可以导致代码执行。

Outlook -通过日历邀请嵌入DDE执行代码

参考

https://medium.com/red-team/dde-payloads-16629f4a2fcd

http://staaldraad.github.io/2017/10/23/msword-field-codes/

http://willgenovese.com/office-ddeauto-attacks/

https://www.secarma.co.uk/labs/is-dynamic-data-exchange-dde-injection-a-thing/

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180118A0P3UV00?refer=cp_1026

扫码关注云+社区