![]()
一項新發布的Windows概念驗證(PoC)展示了攻擊者如何在規避端點安全工具常用的多項告警指標的同時,將惡意代碼植入合法進程內部。
該方法被稱為“進程參數投毒”(Process Parameter Poisoning),它利用Windows啟動程序時通常傳入的信息,而非直接將載荷寫入其他進程。該研究并不關聯任何活躍的惡意軟件家族或已確認的攻擊活動。但其重要性在于,惡意軟件廣泛使用進程注入技術來混入受信任程序并隱藏自身行為。
攻擊者只需已具備在Windows機器上執行代碼的能力,即可改造并運用這一技術。GitHub項目的分析人員指出,該加載器在針對四款主流端點檢測與響應(EDR)產品的測試中,成功繞過了其檢測機制。這項發現揭示了一個盲區:當防御措施主要聚焦于常見的內存寫入和進程創建行為時,便存在漏洞。
Orange Cyberdefense在與Cyber Security News(CSN)分享的一份報告中表示,該方法將shellcode暫存于新進程的啟動數據中,隨后修改該進程的主線程,使其開始運行該代碼。公開項目P-Shellcode Loader被定位為安全研究工具,而非武器化的惡意程序。
新型Windows進程注入技術
傳統的進程注入通常遵循一條可識別的路徑:程序打開或啟動目標進程,在其內部分配內存、寫入代碼、將內存標記為可執行,然后啟動或重定向一個線程。安全產品通常會標記與這些步驟相關的API調用,包括VirtualAllocEx、WriteProcessMemory和CreateRemoteThread等。
新方法另辟蹊徑。當Windows通過CreateProcessW創建進程時,它會將命令行數據、環境變量和啟動設置復制到稱為進程環境塊(PEB)的內部結構中。加載器將載荷放入其中一個復制值中,研究人員將這一操作稱為“投毒進程參數”。
它可以利用命令行、環境塊或lpReserved啟動字段(Windows將其映射為ShellInfo)來隱藏載荷。程序啟動后,加載器讀取目標進程的PEB,并通過內存讀取函數找到存儲的數據。它避開了許多EDR檢測優先關注的常規遠程內存分配和寫入調用。
隨后,該技術修改已存儲內存的權限,使載荷能夠運行。它不創建遠程線程,而是通過NtSetContextThread更改新進程主線程的指令指針,將正常程序執行流導向注入代碼,從而規避與經典注入相關的多個常規檢測指標。
測試還發現,該加載器無需將目標進程以掛起狀態創建,也無需后續掛起其線程——這些操作通常與進程空洞(Process Hollowing)及類似技術相關聯。較少的高調操作可以縮減基于行為的防御所能追蹤的痕跡,盡管這并不能使活動完全隱形。
檢測需要更廣泛的上下文
該研究表明,防御者不應僅依賴內存分配、遠程寫入或遠程線程創建的告警。監控還應檢查異常的CreateProcessW輸入,尤其是異常長的命令行、不尋常的環境數據以及通過STARTUPINFO結構提供的異常值。
關聯進程創建與快速的線程上下文變更,可以揭示更完整的攻擊序列。安全團隊可以查找啟動參數包含與其預期角色不符的數據的進程,隨后出現NtQueryInformationProcess以及PEB讀取操作。之后內存保護從可讀可寫更改為可讀可執行,再結合NtSetContextThread,這一系列操作值得重點關注。這些事件單獨來看可能屬于正常行為,但其發生時序和組合則意義重大。
該概念驗證存在局限性。進程參數是以null結尾的字符串,因此含有空字節的原始shellcode無法通過簡單方法完整復制。研究人員通過生成不含空字節的代碼,并采用分階段(staged)例程來重建任意載荷(包括DLL加載或從HTTPS位置獲取的內容)來解決這一問題。
對于防御者而言,實際應對措施包括:針對此模式驗證檢測規則;擴展圍繞進程啟動數據和線程上下文操縱的遙測采集;調查異常的父子進程關系。應用程序白名單、最小權限控制和及時補丁無法根除此技術,但可以降低攻擊者獲得執行代碼能力并利用該技術的可能性。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.