利用Office文檔結合社會工程學手段欺騙用戶執行惡意代碼

寫在前面的話

Microsoft Office文檔為攻擊者提供了各種欺騙受害者運行任意代碼的方法。當然,攻擊者可能會嘗試直接利用Office漏洞,但更常見的情況是向受害者發送包含惡意代碼的文檔。 與此同時,微軟也一直在制定安全措施。一般措施當文檔從internet上下載時,並不會直接打開,而是在受保護視圖中打開它們。

Office 2016和Office 365使用其他安全措施(如GPO),以便在從Internet下載文檔時完全禁用宏。而且Packer文件擴展名黑名單,阻止黑名單文件類型的運行。 當然,這些保護並不完美,但它們有助於減少這類攻擊。最近,Matt Nelson演示了SettingContent-ms文件可用於運行任意命令。這些文件最初不在黑名單中,因此可用於欺騙受害者從Office文檔運行SettingContent-ms文件。但此文件類型現已添加到黑名單中,以保護Office 2016/365用戶。在2018年8月補丁周二期間,微軟還發布了一個修復程序,如果這些文件沒有從%WinDir%ImmersiveControlPanel打開,就阻止它們被打開。在這篇博客中,我將展示另外兩種誘導受害者運行惡意代碼的方法。兩種方法都需要一定量的用戶交互。

Shell.Explorer.1

所述Shell.Explorer.1OLE對象(CLSID {EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B})充當嵌入Windows資源管理器或嵌入式的Internet Explorer。此OLE對象可以嵌入Office文檔中,並作為持久對象保存在文檔中。專有格式用於持久化Shell.Explorer.1對象,可以在偏移量76(0x4C)處找到。位於此偏移處的結構是ShellLink(LNK)結構的 MS-SHLLINK 。 初始化(載入)Shell.Exporer.1對象時,ShellLink結構將被解析為常規LNK文件。然後,該對象從ShellLink 獲取ID列表,並使用它來導航(瀏覽)到提供的文件,文件夾或網站。

Embedded Explorer

提供文件夾路徑時,該對象的行為類似於Windows資源管理器。可以瀏覽文件或文件夾,甚至可以通過雙擊來執行文件。攻擊者可能會濫用此功能來嵌入Windows資源管理器。如果攻擊者可以說服其受害者雙擊攻擊者控制的文件,則可以遠程運行可執行代碼。 但是這種攻擊似乎很難實現。首先,OLE對象需要單擊才能激活,其次,用戶需要雙擊OLE對象才能實際獲得可用的Windows資源管理器視圖。最後,用戶還需要雙擊Windows資源管理器視圖中的文件。 在管理員限制瀏覽某些文件夾或驅動器的可能性的情況下,嵌入Windows資源管理器對象會很方便。例如,如果限制對C:驅動器的訪問,則本地用戶可以使用包含嵌入式Windows資源管理器的Office文檔來規避此限制。此外,該對象可用於竊取NetNTLM哈希值,但由於這對Office文檔並不難,因此使用單擊的OLE對象進行激活是沒有意義的。

IE瀏覽器

Shell.Explorer.1充當嵌入式Internet Explorer時,事情會變得更有意思。除了可以在文檔中嵌入Web瀏覽器之外,它還允許瀏覽本地計算機上的文件,以及瀏覽到遠程位置(共享和網站)上的文件。沒有一些用戶交互,這是不可能完成的。單擊激活也適用於此模式,單擊該對象將觸發Internet Explorer的文件下載功能,這意味著將向用戶顯示「文件下載」對話框。如果用戶單擊「 運行」或「 打開」(取決於文件格式),則將執行該文件。 

某些文件類型(如EXE文件)將觸發另一個警告對話框。但是通過使用其他可執行文件類型可以輕鬆避免此對話框。

保護模式IE被禁用用於控制項,這確實會阻止顯示其他對話框——如UAC對話框。因此,只需要兩次單擊就可以運行惡意代碼,即單擊以激活,然後運行/打開。

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片段不一定必須格式正確,對象只會搜索它支持的屬性。兩個對象支持action屬性,該屬性採用URL。這些對象是:

單擊設置action屬性的嵌入對象,將導致打開定義的URL。常規URL將在默認瀏覽器中打開,但文件URL(包括共享文件)將直接打開。將顯示一個警告對話框,但此對話框與其他警告對話框略有不同,如圖6所示。此警告對話框對於所有文件類型都是相同的。

Forms.HTML:Image.1接受一個src,可用於配置文檔中顯示的圖像。使用圖像可以偽裝對象,例如將其偽裝成嵌入文檔以誘使受害者點擊它。 應該注意的是,當Office文檔包含Web標記時,會顯示另一個警告對話框,表明它是從Internet下載的。此對話框更明確,從遠程攻擊者的角度來看,這種技術沒什麼用。

Poc

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

受保護的視圖

如上所述,文檔可能包含Web標記以將文件標記為從網際網路下載。如果存在,文檔將在受保護的視圖中打開。在此模式下,將禁用文檔中存在的任何嵌入對象。除非攻擊者使用繞過受保護視圖的漏洞,否則需要額外的社交工程來欺騙用戶單擊「 啟用編輯」。

如何防禦

用戶應該注意包含以下任何對象的文檔:

對於Shell.Explorer.1對象從對象中提取LNK文件並檢索ID列表以找出打開時的內容單擊對象。我們的GitHub頁面上的ShellLink .NET類庫可用於從LNK文件中讀取ID列表。通常,LNK文件在Shell.Explorer.1對象的偏移量76處開始。 HTML Forms對象更容易解析,因為它們是帶有16位元組GUID的UTF-16編碼的HTML片段。防禦者應該知道有多種方法可以在Office文檔中存儲對象。例如,ActiveX控制項也可以嵌入為PersistPropertyBag對象,其中對象的屬性設置在XML文件中(例如activeX1.xml)。

最後的話

Red Teamers(和攻擊者)一直在尋找新方法,他們並不關心什麼符合安全修復的標準。作為一名防守者,知道什麼樣的攻擊有助於阻止他們(工具者)。他不應止步於此,通過部署應用程序白名單和攻擊面減少規則(或類似替代方案)之類的東西來提高攻擊者的門檻。但更重要的是,確保能夠了解網路上發生的事情,並尋找入侵者。

*參考來源:securify,由周大濤編譯,轉載請註明來自FreeBuf.COM


推薦閱讀:

Word文檔實戰應用技巧9
李自成大順文檔藏匿幕埠山由其將相後裔保存
Word文檔被刪,怎樣才能恢復?
【一念心力】佟老師(視頻+文檔)
看文檔的代碼段APP-Dash

TAG:社會 | 欺騙 | 代碼 | 工程學 | 社會工程學 | 用戶 | 文檔 | 利用 | 執行 | 惡意代碼 | Office文檔 |