Office文檔嵌入對象點擊執行的社工技巧

Microsoft Office相信大家都用過。Office在文檔中嵌入對象極大的方便了我們的日常使用,但同時也爲我們帶來了衆多安全問題。可以說,Office文檔爲攻擊者提供了各種方法來誘騙受害者運行任意代碼。當然,攻擊者也可能會嘗試利用Office漏洞,但更常見的情況是,攻擊者會向受害者發送包含惡意宏或嵌入式(Packager)可執行文件的Office文檔。

爲此,微軟在Office的安全問題上也下了不少的功夫。Office中有個名爲受保護的視圖(Protected View)的安全功能,如果Office文檔來自於互聯網,那麼該功能會以受限方式打開該文檔。這個功能的目的是限制可運行的Office組件,以防止攻擊者自動利用諸如OLE、Flash以及ActiveX等對象中存在的漏洞。在Office 2016和Office 365還添加了其它的安全措施(如GPO等),這樣當用戶從Internet下載文檔時宏將完全被禁用,以及阻止在Packer文件擴展名黑名單列表中的文件類型運行。

當然,即便如此安全問題依舊存在,但這些措施也在一定程度上減少了此類攻擊的發生。最近,Matt Nelson向我們演示了使用SettingContent-ms文件運行任意命令的方法。由於這些文件並不包含在文件類型的黑名單列表中,因此攻擊者可以誘騙受害者從Office文檔運行嵌入的SettingContent-ms文件。目前,此類文件類型已被添加到了黑名單中。在2018年8月的補丁更新中,微軟還發布了一個修復程序,即如果不是從%WinDir%\ImmersiveControlPanel.打開這些文件的,則會進行阻止。

在本文中,我將向大家介紹另外兩種誘騙受害者運行惡意代碼的方法。這兩種方法都需要有一定量的用戶交互。MSRC指出“這種技術需要結合大量的社會工程學技巧:受害者必須要對安全警告說’Yes’ ,且在非保護模式下運行”攻擊者纔有可能得手,因此並不會針對該問題發佈任何的修復程序。

Shell.Explorer.1

Shell.Explorer.1 OLE對象(CLSID {EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B})充當嵌入式Windows資源管理器或IE瀏覽器。此OLE對象可以嵌入到Office文檔中,並可作爲持久對象保存在文檔中。專有格式用於持久化Shell.Explorer.1對象,在偏移量76 (0x4C)處可以找到熟悉的結構。可以看到位於此偏移處的結構是ShellLink (LNK) [MS-SHLLINK]。

當初始化(加載)Shell.Exporer.1對象時,ShellLink結構將被解析爲常規LNK文件。然後,該對象從ShellLink獲取ID列表,並以此來導航到提供的文件, (shell) 文件夾或網站。

嵌入Windows資源管理器對象

當提供了文件夾路徑後,該對象的行爲類似於Windows資源管理器。可以瀏覽文件或文件夾,甚至可以通過雙擊來執行文件。攻擊者可能會濫用此功能來嵌入Windows資源管理器,從而打開包含可執行文件的遠程共享。如果攻擊者可以說服受害者雙擊文件,就可以從該遠程共享運行可執行代碼。

但這種攻擊者的實現條件較爲苛刻。首先,OLE對象需要單擊才能激活。其次,用戶需要雙擊OLE對象才能實際獲得可用的Windows資源管理器視圖。最後,用戶還需要雙擊Windows資源管理器視圖中的文件。這其中的任何一步出現問題,都將導致失敗。

在某些情況下,管理員可能會限制一些用戶對某些文件夾或硬盤的瀏覽權限。這種情況下,嵌入Windows資源管理器對象就會很方便。例如,如果限制對C:盤的訪問,則本地用戶可以使用包含嵌入式Windows資源管理器的Office文檔來繞過該限制。此外,該對象也可用於竊取NetNTLM哈希值,但這對於Office文檔來說並不難,因此使用單擊激活OLE對象是沒有意義的。

Internet Explorer

當Shell.Explorer.1充當嵌入式Internet Explorer時,除了可以在文檔中嵌入Web瀏覽器之外,它還允許我們瀏覽本地計算機上的文件,以及遠程(共享和網站)上的文件。但這依然需要與用戶產生交互,可以說這是無法避免的。單擊激活也適用於此模式,單擊該對象將觸發Internet Explorer的文件下載功能,這將向用戶彈出一個“文件下載”對話框。如果用戶單擊“運行”或“打開”(主要取決於文件格式),則將執行該文件。

某些文件類型(如EXE文件)還將會觸發一個額外的警告對話框。但我們可以通過使用其他可執行文件類型,來避免該警告彈框(例如SettingContent-ms文件格式等)。

對於控件禁用IE保護模式,這將阻止其他對話彈框 - 如UAC對話框。因此,只需要單擊兩次就可以運行惡意代碼,即單擊激活,然後 運行/打開。Shell.Explorer.1對象,也是解決Office 2016/365中文件擴展名黑名單的一個很好的方法。因爲,Shell.Explorer.1並未使用黑名單列表。

POC

以下PowerShell腳本將嘗試創建包含嵌入式Internet Explorer對象的Word文檔。該腳本使用Packager對象創建了一個看起來像是嵌入文件的對象,單擊該對象將觸發文件下載功能。

Microsoft Forms 2.0 HTML 控件

Microsoft Forms 2.0對象庫包含許多可以在Office文檔中使用的“HTML”ActiveX控件。這些控件在初始化時被標記爲安全,並且不需要用戶爲嵌入它們的文檔啓用ActiveX。存儲格式比Shell.Explorer.1對象簡單得多。本質上,它是由對象的CLSID和HTML片段(UTF-16編碼)組成的。HTML片段(HTML fragment)的格式正確與否並不重要,對象只會搜索它支持的屬性。以下是支持action屬性的兩個對象:

Forms.HTML:Image.1 (CLSID {5512D112-5CC6-11CF-8D67-00AA00BDCE1D}) Forms.HTML:Submitbutton.1 (CLSID {5512D110-5CC6-11CF-8D67-00AA00BDCE1D})

單擊設置了action屬性的嵌入對象,將打開定義的URL。常規URL將在默認瀏覽器中打開,但文件URL(包括共享文件)將會被直接打開。這將彈出一個警告對話框,但此對話框與其他警告對話框略有不同,如下圖所示。

Forms.HTML:Image.1支持src屬性,可用於配置文檔中顯示的圖像。使用圖像可以僞裝對象,例如將其僞裝成嵌入文檔誘使受害者點擊它。

需要提醒的是,當Office文檔包含Web標記)時,將會彈出另外一個警告對話框,向用戶表明它是從Internet下載的。此對話框的提示將更爲明確,從一個遠程攻擊者的角度來看,這種技術並不實用。

POC

以下PowerShell腳本可用於創建具有嵌入Forms.HTML:Image.1對象的Word文檔,單擊該對象將打開計算器。

受保護視圖

如上所述,當Office文檔包含Web標記)時,則會向用戶表明它是從Internet下載的。這種情況下,文檔將在受保護的視圖中打開。在此模式下,將禁用文檔中存在的任何嵌入對象。除非攻擊者利用漏洞繞過受保護視圖,否則攻擊者就需要結合社工的技巧來欺騙受害者單擊“啓用編輯(Enable Editing)”。

防禦

特別關注包含以下對象的文檔:

Shell.Explorer.1 / {EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B} Forms.HTML:Image.1 / {5512D112-5CC6-11CF-8D67-00AA00BDCE1D} Forms.HTML:Submitbutton.1 / {5512D110-5CC6-11CF-8D67-00AA00BDCE1D}

Shell.Explorer.1對象從對象中提取LNK文件,並檢索ID列表查找單擊對象時打開的內容。我們的GitHub上的ShellLink .NET類庫可用於從LNK文件中讀取ID列表。

HTML Forms對象更容易解析。作爲防禦者應該知道有多種方法可以在Office文檔中存儲對象。例如,ActiveX控件也可以嵌入作爲PersistPropertyBag對象,其中對象的屬性設置在XML文件中(例如,activeX1.xml)。

總結

當前,通過誘騙受害者點擊運行惡意可執行文件仍是一種較爲流行的方法。由於近些年來微軟對Office和Windows安全的不斷優化,攻擊者需要探索出更多的攻擊方法。在本文中我爲大家提供了兩種備選方案,相比之下Shell.Explorer.1技術似乎在實際場景中更加實用。雖然,在實際的攻擊過程當中會向用戶彈框告警,但多數用戶的安全意識都較爲薄弱,攻擊者往往只要耍一點小聰明就能控制用戶行爲成功實施攻擊計劃。

作爲紅隊隊員或是一個攻擊者,他們並不會去關心有什麼安全修復,只要有機會他們就會馬上付諸於行動。而作爲一名防禦者,我們必須第一時間瞭解或掌握此類攻擊方法,以作出合理的響應和防禦計劃方案。不僅於此,我們還要通過通過部署諸如應用程序白名單和攻擊面減少規則(或類似的替代方案)來提高攻擊者的門檻。但更重要的是,做好在安全事件發生之前的安全防護工作,以及追捕入侵者讓他們爲此付出沉重代價。

*參考來源:securify,FB小編 secist 編譯,轉載請註明來自FreeBuf.COM

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章