Office文件嵌入物件點選執行的社會工程學技巧
前言
Microsoft Office文件為攻擊者提供了各種方法來誘騙受害者執行任意程式碼。當然,攻擊者可能會嘗試利用Office漏洞,但更常見的情況是向受害者傳送包含惡意巨集的Office文件或包含嵌入式(Packager)可執行檔案的文件。
為了使這些攻擊更加困難,微軟一直在向Office新增旨在保護受害者免於執行惡意程式碼的安全措施。一個眾所周知的措施是在從網際網路下載文件時,在“受保護檢視”中開啟它們。Office 2016和Office 365包含其他安全措施(如GPO),以便在從Internet下載文件時,可以完全禁用巨集,和Packer副檔名黑名單一起阻止黑名單檔案型別的執行。
當然,這些保護並不是萬無一失,但它們有助於減少這類攻擊。最近,Matt Nelson演示了SettingContent-ms檔案可用於執行任意命令。這些檔案最初不在副檔名黑名單中,因此可用於欺騙受害者從Office文件執行嵌入式SettingContent-ms檔案,但是現在,此檔案型別已新增到黑名單中,以保護Office 2016/365使用者。在2018年8月“補丁星期二”期間,微軟還發布了一個修復程式,如果不從%WinDir%\ ImmersiveControlPanel開啟這些檔案,該軟體則會阻止開啟這些檔案。
在這篇文章中,我將展示另外兩種誘騙受害者執行惡意程式碼的方法,這兩種方法都需要一定量的使用者互動。MSRC指出,這種技術需要大量的社會工程:受害者必須對安全警告說“是”,而不是在保護模式下執行,因此不會針對此問題釋出修復程式。
Shell.Explorer.1
所述Shell.Explorer.1 OLE物件(CLSID {EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B} )作為嵌入式Windows Explorer或嵌入式Internet Explorer。此OLE物件可以嵌入Office文件中,並作為持久物件儲存在文件中。專有格式用於持久化Shell.Explorer.1物件,在偏移量76(0x4C)處可以找到熟悉的結構。看起來位於此偏移處的結構是ShellLink(LNK)結構[ MS-SHLLINK ]。
初始化(載入)Shell.Exporer.1物件時,ShellLink結構將被解析為常規LNK檔案。然後,該物件從ShellLink 獲取ID列表,並使用它來導航(瀏覽)到提供的檔案、(shell)資料夾或網站。
圖1:將ShellLink結構的ID列表傳遞給CWebBrowserOC :: BrowseObject()
Embedded Explorer
當提供資料夾路徑時,該物件的行為類似於Windows Explorer,可以瀏覽檔案或資料夾,甚至可以通過雙擊來執行檔案。攻擊者可能會濫用此功能來嵌入Windows Explorer,以開啟包含可執行檔案的遠端共享。如果攻擊者可以說服其受害者雙擊攻擊者控制的檔案,則可以從該遠端共享執行可執行程式碼。
看起來這種攻擊似乎難以實現。首先,OLE物件需要單擊才能啟用,其次,使用者需要雙擊OLE物件才能實際獲得可用的Windows Explorer檢視,最後,使用者還需要雙擊Windows Explorer檢視中的檔案。
在管理員限制瀏覽某些資料夾或驅動器的可能性的情況下,嵌入Windows Explorer物件會很方便。例如,如果限制對C:驅動器的訪問,則本地使用者可以使用包含嵌入式Windows Explorer的Office文件來規避此限制。此外,該物件可用於竊取NetNTLM雜湊值,但由於使用Office文件並不難做到這一點,因此使用單擊的OLE物件進行啟用是沒有意義的。
圖2:使用嵌入式Windows Explorer瀏覽本地計算機
IE瀏覽器
當Shell.Explorer.1充當嵌入式Internet Explorer時,事情會變得更有趣。除了可以在文件中嵌入網路瀏覽器之外,它還允許瀏覽本地計算機上的檔案,以及瀏覽到遠端位置(共享和網站)上的檔案。要說沒有任何使用者互動,這是不可能的。單擊啟用也適用於此模式——單擊該物件將觸發Internet Explorer的檔案下載功能,這意味著將向用戶顯示“檔案下載”對話方塊。如果使用者單擊“ 執行”或“ 開啟”(取決於檔案格式),就會執行該檔案。
圖3:單擊嵌入式Internet Explorer物件後顯示的“檔案下載”對話方塊
某些檔案型別(如EXE檔案)將觸發另一個警告對話方塊,但是,通過使用其他可執行檔案型別可以輕鬆避免此對話方塊,例如Matt找到的SettingContent-ms檔案(也有可行的其他檔案格式)。
圖4:某些檔案型別將觸發另一個警告對話方塊
該控制元件禁用了受保護模式IE,這會阻止顯示其他對話方塊,如UAC對話方塊。因此,只需要兩次單擊就可以執行惡意程式碼,即第一次單擊啟用,第二次單擊執行/開啟。對於Office 2016/365中的副檔名黑名單,Shell.Explorer 1物件也是一個很好的解決方法,因為Shell.Explorer 1沒有使用該黑名單。
概念證明
下面的PowerShell指令碼將嘗試建立包含嵌入式Internet Explorer物件的Word文件。該指令碼使用Packager物件建立一個看起來像嵌入式檔案的物件,單擊該物件將觸發檔案下載功能。
圖5:嵌入式Internet Explorer,用於從啟動Calculator的遠端網站開啟Internet快捷方式檔案
Microsoft Forms 2.0 HTML控制元件
Microsoft Forms 2.0物件庫包含許多可以在Office文件中使用的“HTML”ActiveX控制元件。這些控制元件最初被標記為安全,並且不要求使用者為嵌入它們的文件啟用ActiveX,其儲存格式比Shell.Explorer.1物件簡單得多。本質上,它由物件的CLSID和HTML片段(UTF-16編碼)組成,HTML片段不一定必須格式正確,物件只會搜尋它支援的屬性。兩個物件支援action屬性,該屬性採用URL。這些物件是:
·Forms.HTML:Image.1(CLSID {5512D112-5CC6-11CF-8D67-00AA00BDCE1D})
· Forms.HTML:Submitbutton.1(CLSID {5512D110-5CC6-11CF-8D67-00AA00BDCE1D})
若單擊設定了action屬性的嵌入物件,將導致開啟已定義的URL。常規URL將在預設瀏覽器中開啟,但檔案URL(包括共享檔案)將直接開啟。此時,會顯示一個警告對話方塊,但此對話方塊與其他警告對話方塊略有不同,如圖6所示。此警告對話方塊對於所有檔案型別都是相同的。
圖6:從HTML控制元件開啟檔案URL時的警告對話方塊
Forms.HTML:Image.1接受一個src,該src可用於配置文件中顯示的影象。使用影象可以偽裝物件,例如將其偽裝成嵌入文件以誘使受害者點選它。
應該注意的是,當Office文件包含Web標記時,會顯示另一個警告對話方塊,表明它是從Internet下載的。此對話方塊更明確,從遠端攻擊者的角度來看,這種技術的用處不大。
圖7:從Internet下載文件時顯示的警告對話方塊
概念證明
以下PowerShell指令碼可用於建立具有嵌入式Forms.HTML:Image.1物件的Word文件,單擊該物件將導致Calculator被開啟。
圖8:嵌入式Forms.HTML:Image.1單擊時開啟Calculator
受保護的檢視
如上所述,文件可能包含Web標記,用於將檔案標記為是從Internet下載的。如果是,文件將在受保護的檢視中開啟。在此模式下,文件中存在的任何嵌入式物件都會被禁用。除非攻擊者使用允許繞過受保護檢視的漏洞,否則需要額外的社交工程來欺騙使用者單擊“啟用編輯”。
圖9:從受保護的檢視中開啟從Internet下載的文件
如何防禦
防禦者應該注意包含以下任何物件的文件:
· 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列表(https://github.com/securifybv/ShellLink)。通常,LNK檔案在持久化的Shell.Explorer.1物件的偏移量為76。
HTML Forms物件更容易解析,因為它們是帶有16位元組GUID的UTF-16編碼的HTML片段。防禦者應該知道有多種方法可以在Office文件中儲存物件。例如,ActiveX控制元件也可以嵌入為PersistPropertyBag物件,其中物件的屬性設定在XML檔案中(例如activeX1.xml)。
總結
誘使受害者執行惡意可執行檔案,仍然是一種在組織中站穩腳跟的流行方法。由於微軟不斷提高Office和Windows的標準,因此攻擊者也會尋找其他方法來攻擊受害者。從本文提供的兩個備選方案中,Shell.Explorer.1技術似乎對攻擊者最有用,因為在Internet上開啟的文件中顯示了HTML Forms物件的附加警告對話方塊。
眾所周知,人們可能會被欺騙點選Office文件中的“啟用編輯/啟用目錄”。不難想象,使用者會單擊額外的警告對話方塊,以往的DDE攻擊和最近利用SettingContent-ms檔案進行的攻擊也演示了這一點。
紅隊人員(還有攻擊者)一直在尋找攻擊的新方法,他們並不關心什麼符合安全修復的標準,如果他們看到機會,他們就會馬上行動。作為一名防守者,你必須知道什麼樣的攻擊有助於阻止他們,當然了,還得通過部署應用程式白名單和 ofollow,noindex">攻擊面減少規則 之類的東西來提高攻擊者的門檻。但更重要的是,確保網路上發生的事情的可見性,並追捕入侵者。