新型持久化之WinSxS二進制文件依賴劫持(支持Win10,Win11)
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
1.技術(shù)背景 我們探索了一種創(chuàng)新方法, 該方法利用了受信任的WinSxS文件夾中常見的可執(zhí)行文件, 并配合經(jīng)典的DLL搜索順序劫持技術(shù)來利用。該方法允許威脅行為者繞過高權(quán)限要求, 在Windows文件夾(特別是WinSxS)內(nèi)的應(yīng)用程序中執(zhí)行惡意代碼, 并且無需在攻擊鏈中添加額外的二進制文件。除此以外, 該技術(shù)還有助于從任何位置執(zhí)行惡意代碼, 并且與WIndow10和Windows11兼容。 在這篇文章中, 詳細(xì)解釋了攻擊流的基本原理, 我們將討論DLL搜索順序劫持的經(jīng)典實現(xiàn)優(yōu)缺點, 并將其與我們最新的實現(xiàn)進行比較, 此外我們還描述了該技術(shù)的功能和含義,闡明了其有效性、潛在影響和防御者檢測的方法。 借助自己的相關(guān)工具, 我們探索了WinSxS文件夾中的每個二進制文件, 并識別了該文件夾中可用的多個可執(zhí)行文件, 這些可執(zhí)行文件可以被濫用來加載和執(zhí)行惡意文件。與經(jīng)典的DLL搜索順序劫持相比, 這種方法降低了防御軟件和事件響應(yīng)程序檢測命中的可能性, 因為惡意代碼是從位于Windows文件夾WinSxS下的受信任二進制文件的內(nèi)存空間運行的。 這種方法使我們能夠改進和簡化經(jīng)典DLL搜索順序劫持的一般感染流程, 雖然可以檢測到此活動, 但它并不是操作系統(tǒng)的直接漏洞, 相反,這種行為可能是由Windows本身的本地行為和為開發(fā)人員和最終用戶提供的功能引起的。 2.Dll搜索順序劫持 DLL搜索順序劫持是威脅行為者的一種簡單但高效的技術(shù)。該技術(shù)利用Windows 應(yīng)用程序加載動態(tài)鏈接庫 (DLL) 和外部可執(zhí)行文件的方式,利用那些未指定所需文件 (EXE/DLL) 完整路徑的應(yīng)用程序。與之相反,這些應(yīng)用程序依賴于預(yù)定義的搜索順序來定位必要的 DLL,使其容易受到威脅行為者的操控。 根據(jù)MITRE ATT&CK 的說法,攻擊者可以采用多種方法來劫持 DLL 加載過程。然而,所有這些方法都有一個共同的要求:目標(biāo)應(yīng)用程序不應(yīng)指定所需內(nèi)容的完整路徑。這種情況常常是由于軟件開發(fā)中的疏忽而出現(xiàn)的。隨后,威脅行為者將惡意 DLL 放置在搜索順序優(yōu)先于合法 DLL 目錄的目錄中。通常,此操作的首選位置是目標(biāo)應(yīng)用程序的工作目錄,因為它在搜索順序中占據(jù)顯著位置。 了解 Windows 如何加載 DLL 和可執(zhí)行文件對于掌握這項技術(shù)至關(guān)重要。當(dāng)應(yīng)用程序啟動加載過程時,它遵循特定的順序,該順序指示系統(tǒng)為查找和利用必要的組件(例如 DLL 和可執(zhí)行文件)而采取的步驟。此過程可確保應(yīng)用程序的高效運行,使它們能夠無縫訪問共享資源和功能。它還提供了一種替代方法來遞歸地定位可能需要但開發(fā)人員未包含在應(yīng)用程序安裝包中的資源。 Windows操作系統(tǒng)搜索和加載外部資源時遵循的大致流程如下:
操控此加載過程允許威脅參與者在受信任進程的內(nèi)存空間中注入和執(zhí)行未經(jīng)授權(quán)的代碼,從而有效地欺騙安全工具和分析人員。 如前所述,這種技術(shù)在網(wǎng)絡(luò)安全領(lǐng)域并不新鮮,并且被威脅行為者廣泛使用,無論其目標(biāo)、原籍國或所使用的工具類型如何。根據(jù) MITRE 的說法,我們總結(jié)了一些已知在入侵中使用此技術(shù)的威脅行為者,以供參考:
威脅行為者采用DLL搜索順序劫持的動機源于其微妙性和有效性。通過操控受信任的應(yīng)用程序,威脅行為者可以實現(xiàn)未經(jīng)授權(quán)的訪問、執(zhí)行任意代碼,并在看似合法的進程中隱藏其活動。這種技術(shù)只是為他們提供了一種破壞系統(tǒng)、逃避檢測和實現(xiàn)惡意目標(biāo)的隱秘手段。 3.WinSxS怎么樣? WinSxS(Windows Side by Side)文件夾是Windows操作系統(tǒng)維護和恢復(fù)中的關(guān)鍵組件,通常位于C:\Windows\WinSxS。它的主要功能是并排存儲重要系統(tǒng)文件的各個版本。當(dāng) Windows 進行更新時,它會在 WinSxS 文件夾中保留以前版本的組件。因此,WinSxS 文件夾的大小往往會隨著每次 Windows 更新而增加。 WinSxS 文件夾的主要用途包括:
實際上,在安裝 Windows 組件、更新或軟件應(yīng)用程序期間,文件系統(tǒng)地存儲在 WinSxS 目錄中。該目錄充當(dāng)系統(tǒng)文件(特別是 DLL)的集中存儲庫,這些文件在各種應(yīng)用程序和組件之間共享,以確保兼容性并防止?jié)撛诘臎_突。 在 Windows Server 等服務(wù)器操作系統(tǒng)中,WinSxS 文件夾充當(dāng)增強服務(wù)器功能的附加角色。它保存系統(tǒng)恢復(fù)所需的關(guān)鍵文件,有助于恢復(fù)過程。此外,它還充當(dāng)一種保護機制,使用戶能夠在必要時從有問題的系統(tǒng)更新恢復(fù)到穩(wěn)定狀態(tài),從而有助于系統(tǒng)的彈性和可靠性。 雖然依賴 WinSxS 文件夾的漏洞利用并不是全新的,并且之前已被用于繞過用戶帳戶控制 (UAC),但這是該 Windows 功能在紅隊操作或真實攻擊場景中的潛力首次得到廣泛記錄與經(jīng)典的 DLL 搜索順序劫持技術(shù)相結(jié)合。 4.WinSxS二進制文件依賴劫持 我們的研究團隊通過關(guān)注位于 Windows WinSxS 文件夾中的應(yīng)用程序,改進了經(jīng)典的DLL搜索順序劫持技術(shù)。此方法與以前已知的實現(xiàn)的區(qū)別在于,故意針對駐留在WinSxS文件夾中的文件。 這種方法的主要優(yōu)點包括:
通過以這種方式優(yōu)化經(jīng)典的 DLL 搜索順序劫持技術(shù),我們發(fā)現(xiàn)了一種更有效、更規(guī)避的方法,用于危害系統(tǒng)并在受信任的應(yīng)用程序中執(zhí)行未經(jīng)授權(quán)的代碼。這一發(fā)現(xiàn)強調(diào)了理解 Windows 組件的復(fù)雜性及其交互對于防御者和安全從業(yè)者的重要性。 在調(diào)查的早期階段,我們的主要目標(biāo)是識別 WinSxS 文件夾中的二進制文件中的潛在漏洞。為了實現(xiàn)這一目標(biāo),我們結(jié)合使用了兩個關(guān)鍵工具:進程監(jiān)視器和專門為此調(diào)查目的開發(fā)的定制工具。我們的目標(biāo)是深入了解執(zhí)行 WinSxS 文件夾中的二進制文件時系統(tǒng)的行為,并識別駐留在此受信任 Windows 文件夾中的易受攻擊的文件。 一旦識別出有漏洞的二進制文件,我們的注意力就轉(zhuǎn)移到理解 Windows 在搜索系統(tǒng)文件(包括 DLL)時遵循的精確加載順序。正如前面提到的,序列需要評估各種位置,包括啟動應(yīng)用程序的目錄、幾個 Windows 文件夾、系統(tǒng) PATH 環(huán)境變量中指定的目錄,尤其是當(dāng)前工作目錄。 有了這些信息,我們通過策略性地將自定義 DLL 放入指定的目錄中來結(jié)束利用過程,密切模仿目標(biāo)二進制文件所需的合法 DLL 的名稱。當(dāng)執(zhí)行易受攻擊的二進制文件時,它會嘗試加載所需的 DLL。Windows 根據(jù)已建立的加載順序系統(tǒng)地執(zhí)行此搜索,并在此過程的早期對當(dāng)前工作目錄進行關(guān)鍵檢查。此時,我們的自定義 DLL 已被發(fā)現(xiàn)并加載,而不是合法的對應(yīng)項。 針對WinSxS應(yīng)用程序的DLL搜索順序劫持執(zhí)行流程 5.概念驗證Poc 我們開始在進程監(jiān)視器中創(chuàng)建過濾器,以篩選具有“PATH NOT FOUND”、“CreateFile”和“NAME NOT FOUND”值的結(jié)果。此外,重點關(guān)注包含指定路徑“NOT_A_SYSTEM_FOLDER_MS”的結(jié)果,該路徑是在桌面上創(chuàng)建的文件夾,其中包含將用于研究目的的文件。 在Process Monitor中創(chuàng)建的過濾器有助于檢測WinSxS中易受攻擊的文件 在我們創(chuàng)建的文件夾中,放置了一個自定義 DLL,它將使用 DLL 搜索順序劫持技術(shù)注入到內(nèi)存中。除了自定義 DLL 之外,我們還開發(fā)了一個可執(zhí)行文件,其唯一目的是執(zhí)行 WinSxS 文件夾中的所有其他二進制文件并監(jiān)視其操作。此可執(zhí)行文件旨在識別 WinSxS 文件夾中存在的易受攻擊的文件。 自定義的文件夾 執(zhí)行自定義工具后,已經(jīng)識別出諸如“ngentask.exe”和“aspnet_wp.exe”之類的二進制文件,它們試圖在當(dāng)前目錄中搜索各自的 DLL,標(biāo)記為“NOT_A_SYSTEM_FOLDER_MS”。這一觀察結(jié)果表明,只需重命名自定義 DLL,以匹配這些可執(zhí)行文件所尋求的預(yù)期 DLL 文件,就可以加載它。然后我們的研究集中在“ngentask.exe”二進制文件上以進行進一步分析。 監(jiān)視器活動日志 本質(zhì)上,只需從使用文件夾“NOT_A_SYSTEM_FOLDER_MS”作為當(dāng)前目錄的 shell 啟動命令行即可觸發(fā)漏洞,而無需將易受攻擊的文件復(fù)制或移動到 WinSxS 之外。此操作將導(dǎo)致目標(biāo)二進制文件執(zhí)行我們的 DLL,因為它只會將其定位在我們的目錄中。這凸顯了我們實現(xiàn)的強大功能,只需要注入一個命令行和一個 DLL。無需攜帶自己的易受攻擊的應(yīng)用程序,這在涉及 DLL 搜索順序劫持的攻擊中很常見,例如TrendMicro過去報告的 PlugX 案例,該案例濫用了與開源調(diào)試器 x32dbg 相關(guān)的二進制文件加載惡意代碼。 濫用WinSxS文件夾中二進制程序劫持成功 通過將自定義 DLL 重命名為“mscorsvc.dll”并從當(dāng)前目錄執(zhí)行前面提到的命令行(專門針對“ngentask.exe”進程),成功注入了自定義 DLL。通過使用 Process Explorer,我們能夠驗證 DLL 是否成功導(dǎo)入到位于 WinSxS 文件夾中的“ngentask.exe”中。 位于WinSxS文件夾中應(yīng)用程序ngentask.exe加載的DLL 重要的是要承認(rèn),隨著系統(tǒng)進行新的更新,WinSxS 文件夾中可能會存在其他易受攻擊的二進制文件。下面我們添加了一個表格,總結(jié)了我們研究過程中位于 WinSxS 文件夾中的易受攻擊的可執(zhí)行文件以及在其執(zhí)行過程中搜索的相應(yīng)資源。需要澄清的是,這些文件的標(biāo)識并不自動暗示它們的漏洞,而是作為一個強有力的指示,必須在每個二進制文件中進行額外的測試以確認(rèn)其漏洞:
6.如何檢測 我們向社區(qū)提供以下策略,以便在自己的環(huán)境中有效解決這種利用方法。 父進程分析: 檢查進程之間的父子關(guān)系,特別關(guān)注受信任的二進制文件。尋找涉及以下內(nèi)容的活動:
行為分析: 密切監(jiān)視 WinSxS 文件夾中的二進制文件執(zhí)行的所有活動。專注于網(wǎng)絡(luò)通信和文件操作。您可以查找以下活動:
該文章在 2024/1/10 10:22:09 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |