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