保護 Windows 開機程序

Windows 有許多功能可協助您防範惡意代碼,而且其運作方式令人驚豔。 除了企業開發與內部使用的 應用程式以外,所有的 Microsoft Store 應用程式必須符合一系列待認證並包含在 Microsoft Store 中的需求。 此認證程序會檢查數個準則,包括安全性,而且是可有效防止惡意程式碼進入 Microsoft Store 中的方法。 即使惡意應用程式確實通過,Windows 也包含一系列可降低效果的安全性功能。 例如,Microsoft Store 應用程式已沙箱化,缺少存取使用者資料或變更系統設定所需的權限。

Windows 對於傳統型應用程式和數據也有多個層級的保護。 Windows Defender 防病毒軟體會使用雲端技術的即時偵測來識別並隔離已知為惡意的應用程式。 Windows Defender SmartScreen 會在允許使用者執行不受信任的應用程式之前發出警告,即使該應用程式已辨識為惡意代碼也一樣。 在應用程式可變更系統設定之前,使用者必須使用使用者帳戶控制功能,授與應用程式管理權限。

這些元件只是 Windows 保護您免於惡意代碼的一些方式。 不過,這些安全性功能只會在 Windows 啟動後保護您。 具體而言,新式惡意代碼和bootkit能夠在 Windows 之前啟動、完全略過OS安全性,並保持隱藏。

在具有整合可延伸韌體介面 (UEFI) 支援的計算機上執行 Windows 10 或 Windows 11,可確保從您開機時起,信任開機就能保護您的電腦免於遭受惡意代碼攻擊。 此保護會繼續進行,直到您的反惡意代碼軟體接管為止。 如果惡意代碼可能設法感染您的計算機,就無法保持隱藏狀態。 信任開機可以透過惡意代碼無法遮罩的方式,驗證您基礎結構的系統完整性。 即使是沒有 UEFI 的電腦,相較於舊版 Windows,Windows 也提供增強的啟動安全性。

首先,讓我們進一步瞭解 rootkit 及其運作。 接著,我們將說明 Windows 如何確保您的保護。

威脅:rootkit

Rootkit 是複雜且危險的惡意代碼類型。 它們會使用與OS相同的許可權,以核心模式執行。 因為 rootkit 具有與作業系統相同的許可權,而且會在它之前啟動,所以可以完全隱藏自己和其他應用程式。 Rootkit 通常是整套惡意程式碼的一部分,它會略過本機登入、記錄密碼和按鍵、傳輸私人檔案,以及擷取密碼編譯資料。

不同類型的 rootkit 載入不同啟動程序階段:

  • 韌體 rootkit。 這些套件會覆寫計算機基本輸入/輸出系統或其他硬體的韌體,讓 rootkit 可以在 Windows 之前啟動。
  • Bootkit。 這些套件會取代 OS 的開機載入器, (啟動 OS) 的小型軟體片段,讓電腦在操作系統之前載入 bootkit。
  • 核心 rootkit。 這些套件會取代OS核心的一部分,讓rootkit可以在OS載入時自動啟動。
  • 驅動程式 rootkit。 這些套件假裝為 Windows 用來與電腦硬體通訊的其中一個受信任驅動程式。

因應對策

Windows 支援四個功能,可協助防止在啟動程式期間載入 rootkit 和 bootkit:

  • UEFI 安全開機 具有 UEFI 韌體和信賴平臺模組 (TPM) 的電腦,可以設定為只載入受信任的 OS 開機載入器。
  • 受信任開機。 Windows 在載入啟動程序之前,會先檢查每個元件的完整性。
  • 開機初期啟動的反惡意程式碼 (ELAM)。 ELAM 在所有驅動程式載入之前會先進行測試,並阻止未經核准的驅動程式載入。
  • 測量開機。 計算機的韌體會記錄開機程式,而 Windows 可以將它傳送至可明確評估計算機健康情況的信任伺服器。

圖 1 顯示 Windows 啟動程式。

顯示 Windows 啟動程式的螢幕快照。

圖 1。 在每個階段的安全開機、受信任開機及測量開機封鎖惡意程式碼:

在含 UEFI 2.3.1 及 TPM 晶片的電腦上才能進行安全開機和測量開機。 幸運的是,符合 Windows 硬體相容性計劃需求的所有 Windows 10 和 Windows 11 電腦都有這些元件,而且許多專為舊版 Windows 設計的電腦也有這些元件。

後續章節描述安全開機、受信任開機、ELAM 及測量開機。

安全開機

當電腦啟動時,它會先尋找OS開機載入器。 沒有安全開機的計算機會執行電腦硬碟上的任何開機載入器。 計算機無法判斷其為受信任的OS或rootkit。

當配備 UEFI 的電腦啟動時,電腦會先確認韌體已有數位簽章,以降低韌體 rootkit 的風險。 如果已啟用安全開機,韌體會檢查開機載入器的數字簽名,以確認其尚未修改。 如果開機載入器原封不動,只有當其中一項下列條件成立時,韌體才會啟動開機載入器:

  • 使用受信任的憑證簽署開機載入器。 對於經過 Windows 認證的電腦,Microsoft 憑證是受信任的。
  • 使用者已手動核准開機載入器的數字簽名。 此動作可讓使用者載入非 Microsoft 作業系統。

所有 x86 架構的 Windows 電腦認證都必須符合與安全開機相關的數個需求:

  • 它們必須預設為啟用安全開機。
  • 他們必須信任 Microsoft 的憑證 (,因此 Microsoft 已簽署任何開機載入器) 。
  • 它們必須讓使用者設定安全開機為信任其他開機載入器。
  • 它們必須允許使用者完全停用安全開機。

這些需求有助於保護您免於使用 rootkit,同時允許您執行任何想要的作業系統。 對於執行非 Microsoft 的作業系統,您通常有三個選項:

  • 搭配經認證的開機載入器使用OS。 因為所有 Windows 電腦認證都必須信任 Microsoft 的憑證,所以 Microsoft 提供服務來分析和簽署任何非 Microsoft 開機載入器,讓所有認證的 Windows 計算機都信任它。 事實上,可載入 Linux 的開放原始碼開機載入器已可使用。 若要開始取得憑證的程式,請移至 https://partner.microsoft.com/dashboard
  • 設定 UEFI 以信任您的自訂開機載入器。 所有適用於 Windows 計算機的認證都可讓您信任未經認證的開機載入器,方法是將簽章新增至 UEFI 資料庫,讓您能夠執行任何操作系統,包括作業系統。
  • 關閉安全開機。 所有 適用於 Windows 電腦的認證 可讓您關閉安全開機,以便執行任何軟體。 不過,此動作無助於保護您免於開機。

為了避免惡意程式碼濫用這些選項,使用者必須手動設定 UEFI 韌體為信任非認證的開機載入器或關閉安全開機。 軟體無法變更安全開機設定。

安全開機的默認狀態具有廣泛的信任迴圈,這可能會導致客戶信任他們不需要的開機組件。 由於 Microsoft 第三方 UEFI CA 憑證會簽署所有 Linux 發行版的開機載入器,因此信任 UEFI 資料庫中的 Microsoft 第三方 UEFI CA 簽章會增加系統的受攻擊面。 想要只信任並開機單一 Linux 散發套件的客戶會信任所有散發套件,遠超過其所需的設定。 任何開機載入器中的弱點都會公開系統,並讓客戶面臨惡意探索他們從未想要使用的開機載入器的風險,如最近的弱點所示,例如 ,GRUB 開機載入器韌體層級根Kit 會影響開機組件。 安全核心計算機 需要啟用安全開機並設定為預設不信任 Microsoft 第三方 UEFI CA 簽章,以盡可能為客戶提供最安全的電腦設定。

若要信任和開機操作系統,例如 Linux,以及由 UEFI 簽章簽署的元件,您可以在 BIOS 功能表中設定安全核心計算機,藉由遵循下列步驟在 UEFI 資料庫中新增簽章:

  1. 開啟韌體功能表,
    • 開機計算機,然後按製造商的密鑰以開啟功能表。 常用的密鑰:Esc、Delete、F1、F2、F10、F11 或 F12。 在Tablet上,常見的按鈕為 [磁碟區向上] 或 [磁碟區關閉]。 在啟動期間,通常會有一個畫面提及密鑰。 如果沒有,或螢幕過快而無法看到,請檢查製造商的網站。
    • 或者,如果已安裝 Windows,請從 [登入] 畫面或 [開始] 功能選取 [Power ( ) > 按 Shift],然後選取 [重新啟動]。 選取 [針對進階選項 > UEFI 韌體設定進行疑難解答>]。
  2. 從韌體功能表中,流覽至 [安全性安全 > 開機],然後選取信任「第三方 CA」的選項。
  3. 儲存變更並結束。

Microsoft 會繼續與 Linux 和 IHV 生態系統合作夥伴共同作業,以設計最低許可權的功能,以協助您僅針對您信任的發行者和元件保持安全且選擇加入信任。

就像大部分的行動裝置一樣,Arm 型裝置,例如 Microsoft Surface RT 裝置,是設計成只執行 Windows 8.1。 因此,無法關閉安全開機,而且您無法載入不同的作業系統。 幸運的是,有一個大型的 ARM 處理器裝置市場,其設計目的是要執行其他操作系統。

信任式開機

信任開機會接管安全開機結束的位置。 開機載入器在載入 Windows 核心的數位簽章之前,會先對其進行驗證。 接著,Windows 核心會驗證 Windows 啟動程式的所有其他元件,包括開機驅動程式、啟動檔案和 ELAM。 如果檔案已經過修改,開機載入器會偵測到問題,並且拒絕載入損壞的元件。 Windows 通常可以自動修復損毀的元件、還原 Windows 的完整性,並讓計算機正常啟動。

開機初期啟動的反惡意程式碼

因為安全開機己保護開機載入器,而受信任開機已保護 Windows 核心,惡意程式碼的下一個啟動機會是感染非 Microsoft 開機驅動程式。 傳統反惡意代碼應用程式要等到載入開機驅動程式之後才會啟動,讓 rootkit 發出作為驅動程式的驅動程式有機會運作。

開機初期啟動的反惡意程式碼 (ELAM) 會在所有非 Microsoft 開機驅動程式和應用程式之前載入 Microsoft 或非 Microsoft 反惡意程式碼驅動程式,如此才能持續安全開機和受信任開機所建立的信任鏈結。 因為操作系統尚未啟動,而且因為 Windows 需要儘快開機,ELAM 有一個簡單的工作:檢查每個開機驅動程式,並判斷它是否在受信任的驅動程式清單中。 如果不受信任,Windows 不會載入它。

ELAM 驅動程式不是功能完整的反惡意代碼解決方案;稍後會在開機程式中載入。 Windows Defender (隨附於 Windows) 支援 ELAM,數個非 Microsoft 反惡意代碼應用程式也支援 ELAM。

測量開機

如果您組織中的電腦感染 rootkit,您需要了解這個惡意程式碼。 企業反惡意代碼應用程式可以向IT部門回報惡意代碼感染,但這不適用於隱藏其存在的rootkit。 換句話說,您無法信任客戶端來告訴您用戶端是否狀況良好。

如此一來,rootkit 感染的電腦看起來似乎健康,即使有執行反惡意程式碼也一樣。 受感染的電腦會繼續連接到企業網路,讓 rootkit 存取大量機密資料,並允許 rootkit 透過內部網路擴散。

測量開機適用於 Windows 中的 TPM 和非 Microsoft 軟體。 它可讓網路上的受信任伺服器驗證 Windows 啟動程式的完整性。 測量開機使用下列程序:

  1. 計算機的 UEFI 韌體會在 TPM 中儲存韌體、開機載入器、開機驅動程式的哈希,以及在反惡意程式碼應用程式之前載入的所有專案。
  2. 在啟動程序結尾,Windows 會啟動非 Microsoft 遠端證明用戶端。 受信任的證明伺服器會傳送唯一金鑰給用戶端。
  3. TPM 使用唯一金鑰,以數位方式簽署 UEFI 記錄的日誌。
  4. 用戶端傳送記錄到伺服器,可能一併傳送其他安全資訊。

根據實作和設定,伺服器現在可以判斷用戶端是否狀況良好。 它可以將有限隔離網路或完整網路的存取權授與用戶端。

圖 2 示範測量開機和遠端證明程序。

顯示測量開機和遠程證明程式的螢幕快照。

圖 2. 測量開機可向遠端伺服器證明計算機的健康情況:

Windows 包含應用程式開發介面,以支持測量開機。 不過,若要利用它,您需要非 Microsoft 工具來實作遠端證明用戶端和受信任的證明伺服器。 例如,請參閱 Microsoft Research 的下列工具:

測量開機會使用 UEFI、TPM 和 Windows 的功能,讓您能夠放心地評估用戶端電腦在網路上的可信度。

摘要

安全開機、受信任開機和測量開機建立了一個可徹底抵禦 bootkits 和 rootkit 的架構。 在 Windows 中,這些功能有可能從您的網路中排除核心層級惡意代碼。 使用 Windows,您可以信任作業系統的完整性。