Microsoft Office之DDE攻击

Microsoft Office可以说是使用最广泛的办公软件。然而就是因为这样,也使它成为了黑客的主要攻击目标之一,例如在网络安全对抗赛中红队会用它来窃取域哈希,甚至执行任意代码。

从以往的攻击手法上看,在Microsoft Office中执行任意代码往往是通过宏来实现的。那么,有没有其它方法可以实现任意代码执行呢?答案是肯定的。SensePost就发现了一种利用DDE(动态数据交换)协议,来执行任意代码的方法。办公产品内有许多可通过DDE接收代码并执行的地方,本文我将为大家演示一些这类攻击的常用手法。此外,关于本文的payload可以结合DDE Payloads作为参考。

Word

在Microsoft Word中,最简单的方法是插入一个字段代码,如SensePost中所述,并在formula中嵌入payload。

Insert-> Quick Parts-> Field

Microsoft Office之DDE攻击

在括号内添加以下payload内容,将会在下次打开文件时弹出一个对话框。如果用户选择“Yes”选项,则payload将被执行。

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

Microsoft Office之DDE攻击

或者,我们也可以像Paul Ritchie在其博客中描述的那样,使用宏将payload插入字段代码。

''' 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  End Sub

Microsoft Office之DDE攻击

以上示例中的payload只是打开了计算器,但我们也可以将其修改为其它任意代码(甚至恶意的)。

Mike Czumaky在他的博客中也为我们提供了一种很好的思路,从外部托管的另一个Word文档加载恶意的DDE。 INCLUDE字段代码可被用来与该攻击向量结合外部URL使用。

Microsoft Office之DDE攻击

Excel

在Microsoft Excel DDE有效载荷可以通过formula的使用来利用。以下两个formula将执行代码(本例中为计算器),第二个formula将使警告消息框看上去更合理,以更好的欺骗用户。

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

Microsoft Office之DDE攻击

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

Microsoft Office之DDE攻击

第二个formula仍将执行代码,但对话框中的消息内容将被修改,此时我们可以看到不再是要求用户启动CMD.EXE,而是要求启动MSEXCEL.exe。

Microsoft Office之DDE攻击

Outlook

在Outlook中也有许多可执行DDE payload的地方。例如,你已经获取到了域凭据,则可以更好的伪装电子邮件发送给其他用户,以获取更多内部的shell。

Message

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

Microsoft Office之DDE攻击

但需要注意的是,因为某些电子邮件服务器会将所有电子邮件转换为HTML,为了避免我们的DDE payload失效,我们需要将电子邮件以RTF格式发送。

Microsoft Office之DDE攻击

当用户打开我们发送的邮件后,DDE payload将会被执行。

Microsoft Office之DDE攻击

Contact

创建新的联系人或修改现有的联系人,并将DDE payload放入Notes区域可导致执行代码。

Microsoft Office之DDE攻击

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

Microsoft Office之DDE攻击

当用户打开联系人时,将执行嵌入的DDE payload。

Microsoft Office之DDE攻击

Calendar Invite

同样,该方法也适用与calendar invitation功能。例如,发送一个添加了DDE paylaod的会议邀请,一旦目标用户与其进行了交互(打开或取消),则DDE paylaod就将被执行。

Microsoft Office之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/

*参考来源:pentestlab,FB小编 secist 编译,转载请注明来自FreeBuf.COM
s