- PatchGuard 保護核心免受 Windows x64 防止未經授權的修改
- 防止 rootkit 等進階攻擊並穩定作業系統
- 保護措施不斷發展,使得逃避保護的嘗試變得更加困難。
在電腦安全領域,最微妙但同時也是保證電腦完整性的關鍵點之一是 OS 它是核心或內核。微軟意識到了針對這一基礎部件的風險和攻擊,因此在其 64 位元作業系統中開發了專門的技術來保護它: PatchGuard,也稱為核心補丁保護這個制度一直是專家們爭論、研究甚至爭議的焦點。 網絡安全因此,對於任何有興趣保護 Windows 系統的人來說,了解它的工作原理、限制和影響都是必不可少的。
如果您曾經想過 Windows 如何防止程式隨意修改系統最敏感的內部零件PatchGuard 是一個關鍵的應對方案。自 2005 年推出以來,它既是抵禦最複雜攻擊的一道屏障,也為高階安全工具的開發者帶來了難題。讓我們深入了解 PatchGuard 的方方面面:它的工作原理、它的重要性、它引發的爭議,以及試圖繞過它的方法。
什麼是 PatchGuard(核心補丁保護)?
補丁衛士 這是 Windows x64(64 位元)架構版本獨有的安全功能,其目的是 防止修改或修補作業系統內核也就是說,它可以防止惡意程式和第三方應用程式操縱核心的關鍵區域,即 Windows 的“大腦”,其中駐留著系統最基本和最強大的指令。
自 2005 年隨 Windows XP x64 和 Windows Server 2003 Service Pack 1 推出以來,PatchGuard 一直是確保 內核的結構和操作完整性,防止直接修改在基於 x86 架構的 Windows 早期版本中,並不存在這樣的屏障。因此,許多應用程序,尤其是一些防毒和安全工具,利用了這種漏洞來注入程式碼或修改內部表。雖然這可以為某些程式提供更大的靈活性和功能,但也為複雜的攻擊和 rootkit 打開了方便之門,這些攻擊和 rootkit 可以幾乎無法察覺地進行偽裝。
PatchGuard 的主要目標是 偵測並阻止任何試圖操縱核心受保護區域的嘗試,無論是 惡意軟件 甚至是合法但可能危險的軟體。這是一種增強作業系統穩定性和可信度的安全措施,儘管它並非沒有限制和批評,我們稍後會看到。
PatchGuard 如何運作?
PatchGuard 提供的保護依賴於對記憶體敏感區域和內部核心結構的一系列定期和複雜的檢查。 PatchGuard 持續監控受保護的程式碼和數據,確保自 開機為此,它在系統啟動時計算這些關鍵元素的校驗和,並在整個執行過程中定期對它們進行比較。
PatchGuard 密切監控的領域包括:
- 系統服務描述符表 (SSDT)
- 中斷描述符表 (IDT)和全域(GDT)
- 偵錯例程 以及已載入模組的列表
- 重要的檔案館和圖書館,例如 硬體 抽象層 (HAL) 和 NDIS
如果系統偵測到差異, Windows 啟動關鍵錯誤檢查,導致可怕的藍色畫面(藍屏)並立即重新啟動系統。與這些違規行為相關的錯誤代碼是 0x109,稱為 CRITICAL_STRUCTURE_CORRUPTION這意味著,如果任何核心修補嘗試成功,系統就會關閉並且不再以改變的狀態運行,從而最大限度地減少潛在攻擊或災難性錯誤的影響。
一個有趣的事實是 微軟從未公佈過有關 PatchGuard 執行這些檢查的頻率或具體內部機制的精確細節。專家認為,檢查的時間安排是隨機的,從幾秒鐘到幾分鐘不等,這使得任何繞過保護措施的企圖變得更加困難。
PatchGuard 可以防止哪些類型的修改?
PatchGuard 可以防止對各種重要核心元素的修改。它所保護的方法和結構包括:
- 系統服務表的變更,負責用戶與核心之間的API調用
- 中斷表的更改 管理系統對硬體和軟體事件的回應
- 修改內核自己的程式碼以及 HAL 和 NDIS 等基礎庫
- 使用不受系統本身管理的核心堆疊
如果沒有這種保護,任何驅動程式都可以操縱內核,例如攔截呼叫、隱藏系統或引入秘密功能。 PatchGuard 僅用於防止裝置驅動程式修改核心。但它無法阻止已經擁有核心級權限的驅動程式修改另一個驅動程序,因此它的防禦完全集中在作業系統核心上。
在 Windows 上使用 PatchGuard 的優勢
PatchGuard 的存在是為了滿足 保護作業系統的完整性,防止未經授權的程式碼(無論合法或惡意)更改核心元件需要減輕的風險很多,但其中最重要的包括:
- 核心中的嚴重錯誤 源自未知或測試不足的程式碼
- 衝突和問題 可靠性 當多個程式嘗試修改相同的受保護區域時
- 對系統安全完全有信心,促進rootkit和無法檢測的惡意軟體的安裝
- 作業系統的整體穩定性:PatchGuard 顯著減少了由以下原因引起的崩潰和藍屏 驅動程序 “創意”
微軟在分析了大量系統故障資料後,證明了引入 PatchGuard 的合理性。 內核修改是導致崩潰和嚴重問題的最常見原因透過防止第三方程式不加區分修補,可以實現更可預測和穩定的環境,這對於專業用戶和家庭用戶來說至關重要。
限制與爭議:為什麼 PatchGuard 如此受爭議?
正如安全問題經常出現的情況一樣,沒有任何系統是絕對可靠或完美的。 PatchGuard 無法阻止所有攻擊,也無法保護系統免受在核心特權層級運行的惡意驅動程式的攻擊。事實上,一些專家認為,儘管它代表著一道額外的屏障,但足夠熟練的攻擊者可以找到規避它的方法。
事實 驅動程式具有與核心本身相同的特權級別 這意味著,理論上,擁有足夠存取權限的攻擊者可以停用或繞過 PatchGuard 的限制。為此,微軟一直在定期更新該技術,使已知的規避方法更加困難,並使核心修補程式保護 (KP) 成為網路犯罪分子「不斷移動的目標」。自發布以來,至少已實施了兩次重大更新,以修復先前發現的漏洞和規避方法。
其中最有爭議的一點是 PatchGuard 阻礙了某些防毒和安全程序的運作。 傳統上,他們會對核心進行深度修改,以提供高級保護,例如進程阻止或 rootkit 移除。 McAfee、賽門鐵克或卡巴斯基的經典工具依賴 x86 系統上的內核補丁,這給了他們更大的操作空間,但同時也危及了穩定性。在 x64 平台上,這些應用程式的覆蓋範圍大幅縮小,業內有人要求微軟為「受信任」的公司提供例外。然而,微軟選擇 不要使用私有異常來削弱 PatchGuard或與廠商合作開發新的API和官方機制,讓安全軟體在不干擾核心的情況下實現其目標。
PatchGuard 繞過和攻擊範例
自 PatchGuard 誕生以來,網路安全社群一直試圖分析、測試,甚至在某些情況下攻破其防禦機制。繞過其保護措施的理論和實踐案例層出不窮。一些最為人所知的攻擊方法或概念包括:
- 鬼鉤:CyberArk Labs 研究人員發現的攻擊方式,即使在完全更新的 Windows 10 系統上,也能安裝無法偵測到的 rootkit。此攻擊依賴以下硬體特性: Intel英特爾 PT透過操縱PMI處理程序,獲得核心的控制權。
- InfinityHook 和 ByePg:其他技術在不同場景中已證明 PatchGuard 實施中存在漏洞。
- 利用合法驅動程式中的漏洞就像 Uroburos rootkit 的情況一樣,它利用簽章驅動程式中的缺陷來停用驅動程式簽章保護和 PatchGuard 本身。
在所有這些情況下,共同點是 執行攻擊需要非常高的權限,這大大降低了普通用戶的風險,但對於企業和關鍵環境來說仍然是一個問題。
例如,微軟認為 GhostHook 攻擊不需要立即修復,因為利用該攻擊需要攻擊者已經擁有核心級存取權限,而理論上這個條件不容易滿足。然而,CyberArk 實驗室的專家認為應該修復該攻擊,因為 PatchGuard 是一道關鍵的防線,絕對不會受到攻擊。.
對字節世界和一般技術充滿熱情的作家。我喜歡透過寫作分享我的知識,這就是我在這個部落格中要做的,向您展示有關小工具、軟體、硬體、技術趨勢等的所有最有趣的事情。我的目標是幫助您以簡單有趣的方式暢遊數位世界。