難以捉摸的惡意軟體歷險記,第四部分:DDE 和 Word 文件字段

難以捉摸的惡意軟體歷險記,第四部分:DDE 和 Word 文件字段

本文是無文件惡意軟件系列的一部分。 該系列的所有其他部分:

在本文中,我將深入研究一個更複雜的鎖定係統的多階段無檔案攻擊場景。 但後來我遇到了一種極其簡單的無程式碼攻擊——不需要 Word 或 Excel 巨集! 這更有效地證明了我在這一系列文章中最初的假設:打破任何組織的外圍根本不是一項艱鉅的任務。

我將描述的第一個攻擊利用了 Microsoft Word 漏洞,該漏洞基於 過時的 動態資料交換協議 (DDE)。 她已經是 固定的。 第二個漏洞利用了 Microsoft COM 和物件傳輸功能中更常見的漏洞。

透過 DDE 回到未來

還有人記得DDE嗎? 可能不多。 這是第一個 允許應用程式和裝置傳輸資料的進程間通訊協議.

我自己對它有點熟悉,因為我曾經檢查和測試電信設備。 例如,當時,DDE 允許呼叫中心操作員將呼叫者 ID 傳輸到 CRM 應用程序,最終打開客戶卡。 為此,您必須在手機和電腦之間連接 RS-232 連接線。 那些日子!

事實證明,Microsoft Word 仍然 支持 DDE。

這種攻擊無需代碼即可有效的原因是您可以存取 DDE 協議 直接 來自 Word 文件中的自動欄位(向 SensePost 致敬 研究和出版物 關於它)。

字段代碼 是另一個古老的 MS Word 功能,它允許您為文件添加動態文字和一些程式設計。 最明顯的例子是頁碼字段,可以使用值 {PAGE *MERGEFORMAT} 將其插入頁腳。 這允許自動產生頁碼。

難以捉摸的惡意軟體歷險記,第四部分:DDE 和 Word 文件字段
提示:您可以在「插入」下找到「欄位」選單項目。

我記得當我第一次在Word中發現這個功能時,我感到很驚訝。 在補丁禁用它之前,Word 仍然支援 DDE 欄位選項。 這個想法是 DDE 將允許 Word 直接與應用程式通信,以便它可以將程式的輸出傳遞到文件中。 當時這是一項非常年輕的技術——支援與外部應用程式的資料交換。 後來發展成了COM技術,我們下面也會看看。

最終,駭客意識到這個 DDE 應用程式可能是一個命令 shell,當然會啟動 PowerShell,駭客可以從那裡做任何他們想做的事情。
下面的螢幕截圖顯示了我如何使用這種隱形技術:來自 DDE 欄位的一個小型 PowerShell 腳本(以下簡稱 PS)載入另一個 PS 腳本,從而啟動第二階段的攻擊。

難以捉摸的惡意軟體歷險記,第四部分:DDE 和 Word 文件字段
感謝 Windows 彈出警告內建 DDEAUTO 欄位正在秘密嘗試啟動 shell

利用該漏洞的首選方法是使用帶有 DDEAUTO 欄位的變體,該變體會自動執行腳本 打開時 Word 文件。
讓我們想想我們能對此做些什麼。

例如,作為新手駭客,您可以假裝自己來自聯邦稅務局,發送網路釣魚電子郵件,並在第一階段的 PS 腳本中嵌入 DDEAUTO 欄位(本質上是一個植入程式)。 你甚至不需要對宏等進行任何真正的編碼,就像我在 上一篇文章。
受害者打開您的文檔,嵌入的腳本被激活,駭客最終進入電腦。 就我而言,遠端 PS 腳本僅列印一條訊息,但它可以輕鬆啟動 PS Empire 用戶端,該用戶端將提供遠端 shell 存取。
受害者還來不及說什麼,駭客就會成為村裡最富有的青少年。

難以捉摸的惡意軟體歷險記,第四部分:DDE 和 Word 文件字段
shell 無需任何編碼即可啟動。 即使是小孩子也能做到!

DDE 和字段

微軟後來確實在 Word 中禁用了 DDE,但在此之前該公司表示該功能只是被濫用了。 他們不願意改變任何事情是可以理解的。 根據我的經驗,我自己見過一個範例,其中啟用了開啟文件時更新字段,但 IT 部門禁用了 Word 巨集(但顯示通知)。 順便說一句,您可以在Word設定部分找到相應的設定。

然而,即使啟用了欄位更新,當欄位請求存取已刪除的資料時,Microsoft Word 也會通知用戶,就像上面的 DDE 的情況一樣。 微軟真的在警告你。

但最有可能的是,用戶仍然會忽略此警告並啟動 Word 中的欄位更新。 這是感謝 Microsoft 禁用危險的 DDE 功能的難得機會之一。

如今找到一個未打補丁的 Windows 系統有多難?

對於此測試,我使用 AWS Workspaces 存取虛擬桌面。 這樣我就得到了一個未打補丁的 MS Office 虛擬機,它允許我插入 DDEAUTO 欄位。 我毫不懷疑,透過類似的方式,您可以找到尚未安裝必要安全性修補程式的其他公司。

物體之謎

即使您確實安裝了此補丁,MS Office 中還存在其他安全漏洞,允許駭客執行與我們對 Word 所做的非常相似的操作。 在下一個場景中我們將學習 使用 Excel 作為網路釣魚攻擊的誘餌,無需編寫任何程式碼。

為了理解這種情況,讓我們記住 Microsoft 元件物件模型,或簡稱 COM(組件物件模型).

COM 自 1990 世紀 XNUMX 年代以來就已出現,被定義為基於 RPC 遠端過程調用的「語言中立、物件導向的元件模型」。 要大致了解 COM 術語,請閱讀 這個帖子 在 StackOverflow 上。

基本上,您可以將 COM 應用程式視為 Excel 或 Word 可執行文件,或其他正在執行的二進位檔案。

事實證明,COM應用程式也可以運行 設想 — JavaScript 或 VBScript。 從技術上講,它被稱為 小腳本。 您可能已經在 Windows 中看到過檔案的 .sct 副檔名 - 這是 scriptlet 的官方副檔名。 本質上,它們是封裝在 XML 包裝器中的腳本程式碼:

<?XML version="1.0"?>

<scriptlet>
<registration
description="test"
progid="test"
version="1.00"
classid="{BBBB4444-0000-0000-0000-0000FAADACDC}"
remotable="true">
</registration>
<script language="JScript">
<![CDATA[

var r = new ActiveXObject("WScript.Shell").Run("cmd /k powershell -c Write-Host You have been scripted!");

]]>
</script>
</scriptlet>

駭客和滲透測試人員發現 Windows 中有單獨的實用程式和應用程式接受 COM 對象,因此也接受 scriptlet。

我可以將 scriptlet 傳遞給用 VBS 編寫的 Windows 實用程式(稱為 pubprn)。 它位於C:Windowssystem32Printing_Admin_Scripts的深處。 順便說一下,還有其他 Windows 實用程式接受物件作為參數。 我們先來看這個例子。

難以捉摸的惡意軟體歷險記,第四部分:DDE 和 Word 文件字段
很自然,甚至可以從列印腳本啟動 shell。 去微軟吧!

作為測試,我創建了一個簡單的遠端 scriptlet,它啟動 shell 並列印一條有趣的訊息:“您剛剛被編寫了腳本!” 本質上,pubprn 實例化一個 scriptlet 對象,允許 VBScript 程式碼運行包裝器。 這種方法為想要潛入並隱藏在您的系統中的駭客提供了明顯的優勢。

在下一篇文章中,我將解釋駭客如何使用 Excel 電子表格來利用 COM 腳本。

給你的作業,看看 視頻 來自 Derbycon 2016,它準確地解釋了駭客如何使用 scriptlet。 並且還閱讀了 本文 關於 scriptlet 和某種綽號。

來源: www.habr.com

添加評論