標籤:

微軟Office文檔中的DDE攻擊演示

微軟的Office是在每個企業或組織中部署的常見應用程序。這種廣泛的使用將微軟的Office變成了一個可以用來執行攻擊並使紅隊可以收集域哈希或執行任意代碼的工具。

從歷史上看,在微軟的Office中執行代碼是通過使用宏來執行的。然而,SensePost發現了另一種使用DDE(動態數據交換)協議執行任意代碼的方法。Office的產品內部有很多地方可以通過DDE來接受代碼執行,本文將演示大部分這些攻擊媒介。文章DDE Payloads可以與這篇文章一起用於生成有效載荷。

Word

在微軟Office Word中最簡單的利用方法是插入欄位碼,這種方法由SensePost發表的這篇文章描述過並且在公式內嵌入有效載荷。

Insert-> Quick Parts-> Fieldn

Word – 通過欄位碼的DDE

在括弧內添加以下有效內容將在下次打開文件時彈出一些對話框。如果用戶選擇「是」選項,則有效載荷將被執行。

{DDEAUTO c:windowssystem32cmd.exe "/k calc.exe"}n

Word – DDE有效載荷

或者,可以使用宏將有效載荷插入欄位代碼,正如Paul Ritchie在其博客中所描述的那樣。

Programmatically inserts a new field code into a word document at the current selection index.n This is of type "wdFieldDDEAuto" which is a field code which executes Dynamic Data Exchange (DDE)n When the document is opened. This includes an example PoC which launches calc.exenPublic Sub FieldCodeFun()n Payload StringnDim payload As Stringnpayload = """c:windowssystem32calc.exe"" ""/c calc.exe"""n Insert our payload as a field codenSelection.Collapse Direction:=wdCollapseEndnActiveDocument.Fields.Add Range:=Selection.Range, _nType:=wdFieldDDEAuto, Text:=payloadn

Word -通過宏執行DDE

上面演示的有效載荷只是執行了計算器,但可以修改它來包含任何其他有效載荷。

Mike Czumak做了一個很好的研究,在他的博客中討論了從外部託管的另一個Word文檔中載入惡意的DDE。INCLUDE欄位碼可以與這個攻擊向量和外部URL結合使用。

Word – 從另一個外部文檔中載入DDE有效載荷

Excel

在微軟的Excel 中可以通過使用公式嵌入 DDE來執行有效載荷。以下兩個公式都可以利用DDE執行代碼(本例中為計算器),但是第二個公式會混淆對話框消息來更好的進行偽裝來使其看起來更合理。

=cmd|/c calc.exe!A1n=MSEXCEL|......WindowsSystem32cmd.exe /c calc.exe!n

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執行代碼

參考

  • medium.com/red-team/dde
  • staaldraad.github.io/20
  • willgenovese.com/office
  • secarma.co.uk/labs/is-d

本文翻譯自:pentestlab.blog/2018/01 ,如若轉載,請註明原文地址: 4hou.com/technology/997 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

TAG:信息安全 |