設定額外的 LSA 保護

本文說明如何為本機安全性授權單位 (LSA) 程序設定額外的保護,以避免可能洩漏認證的程式碼插入。

LSA 包含本機安全性授權伺服器服務 (LSASS) 處理程序,會驗證使用者的本機和遠端登入,以及強制執行本機安全性原則。 從 Windows 8.1 開始,即可透過為 LSA 提供額外保護的方式,避免未受保護的處理序讀取記憶體和插入程式碼。 此功能為 LSA 儲存和管理的認證提供額外的安全防護。 更進一步的保護可透過使用 UEFI 鎖定和安全開機來實現,因為停用 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa 登錄機碼將不具效果。

外掛程式或驅動程式的受保護處理程序需求

LSA 外掛程式或驅動程式必須符合以下條件,才能順利載入為受保護的處理程序:

簽章驗證

受保護的模式會要求載入 LSA 中的所有外掛程式,都要以 Microsoft 簽章進行數位簽署。 任何未簽署或沒有以 Microsoft 簽章進行簽署的所有外掛程式,將無法載入 LSA。 而外掛程式的範例則包括智慧卡驅動程式、加密編譯外掛程式,以及密碼篩選器。

  • 屬於驅動程式的 LSA 外掛程式 (例如,智慧卡驅動程式) 需要使用 WHQL 認證進行簽署。 如需詳細資訊,請參閱 WHQL 版本簽章
  • 不具備 WHQL 認證流程的 LSA 外掛程式,必須使用適用於 LSA 的檔案簽署加以簽署。

遵守 Microsoft 安全性開發週期 (SDL) 程序指引

  • 所有外掛程式都必須符合適用的 SDL 程序指引。 如需詳細資訊,請參閱 Microsoft 安全性開發週期 (SDL) – 程序指引
  • 即使外掛程式經過 Microsoft 簽章的適當簽署,若與 SDL 程序不相容,也可能無法載入外掛程式。

全面部署功能之前,請先使用以下清單徹底測試,以啟用 LSA 保護:

  • 識別您組織使用的所有 LSA 外掛程式和驅動程式。 包含非 Microsoft 驅動程式,或智慧卡驅動程式和加密編譯外掛程式等外掛程式,以及用於強制執行密碼篩選器或密碼變更通知的所有內部開發軟體。
  • 確認所有 LSA 外掛程式都以 Microsoft 憑證進行數位簽署,以避免它們無法在 LSA 保護下載入。
  • 確認所有經過正確簽署的外掛程式可順利載入 LSA 中,且依預期執行。
  • 使用稽核記錄識別無法以受保護的處理程序執行的 LSA 外掛程式和驅動程式。

啟用 LSA 保護的限制

如果啟用額外的 LSA 保護,就無法為自訂 LSA 外掛程式偵錯。 當偵錯工具是受保護的處理程序時,您無法將偵錯工具附加至 LSASS。 一般而言,不支援偵錯執行中受保護的處理程序。

不會載入為受保護程序之 LSA 外掛程式和驅動程式的稽核

啟用 LSA 保護之前,請使用稽核模式識別無法在 LSA 受保護模式中載入的 LSA 外掛程式和驅動程式。 在稽核模式中,系統會產生事件記錄檔,以識別當 LSA 保護模式啟用時,無法在 LSA 載入的所有外掛程式和驅動程式。 系統會記錄這些訊息,但不會實際封鎖外掛程式或驅動程式。

本節中描述的事件位於事件檢視器中 [應用程式及服務記錄檔]>[Microsoft]>[Windows]>[CodeIntegrity] 下方的 [Operational] 記錄中。 這些事件可以協助您識別因為簽署原因而無法載入的 LSA 外掛程式和驅動程式。 您可以使用 wevtutil 命令列工具管理這些事件。 如需此工具的相關資訊,請參閱 Wevtutil

重要

如果裝置上已啟用智慧型應用控制,就不會產生稽核事件。 若要查看或變更智慧型應用程式控制的啟用狀況,請開啟 [Windows 安全性] 應用程式,並前往 [應用程式與瀏覽器控制] 頁面。 請選取 [智慧型應用程式控制] 設定,以檢查啟用狀態,如果您要嘗試稽核額外的 LSA 保護,請將設定變更為 [關]

注意

執行 Windows 11 版本 22H 及更新版本的裝置,會預設啟用適用於額外 LSA 保護的稽核模式。 如果裝置執行該組建及更新版本,您無需採取其他任何動作,就能為額外的 LSA 保護進行稽核。

在單一電腦上啟用適用於 LSASS.exe 的稽核模式

  1. 開啟登錄編輯程式 (RegEdit.exe),並瀏覽到以下登錄機碼:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe
  2. 將登錄機碼的值設定為 AuditLevel=dword:00000008
  3. 重新啟動電腦。

在採取這些步驟後,請分析事件 3065 和事件 3066 的結果。 在事件檢視器中,請於 [應用程式及服務記錄檔]>[Microsoft]>[Windows]>[CodeIntegrity] 下方的 [Operational] 記錄中查看這些事件。

  • 事件 3065 會記錄程式碼完整性檢查,而該程式碼完整性檢查會判斷有程序 (通常為 LSASS.exe) 嘗試載入不符合共用區段安全性需求的驅動程式。 但基於目前設定的系統原則之故,系統允許載入映像。
  • 事件 3066 會記錄程式碼完整性檢查,而該程式碼完整性檢查會判斷有程序 (通常為 LSASS.exe) 嘗試載入不符合 Microsoft 簽署等級需求的驅動程式。 但基於目前設定的系統原則之故,系統允許載入映像。

如果外掛程式或驅動程式包含共用區段,會以事件 3065 記錄事件 3066。 除非外掛程式不符合 Microsoft 簽署等級需求,否則移除共用區段應該可以避免同時發生這兩個事件。

重要

系統上附加和啟用核心偵錯工具時,並不會產生這些操作事件。

在多部電腦上啟用適用於 LSASS.exe 的稽核模式

若要為網域中的多部電腦啟用稽核模式,您可以使用群組原則的登錄用戶端延伸,部署 LSASS.exe 稽核等級登錄值。 您需要修改 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe 登錄機碼。

  1. 在 [執行] 對話方塊中輸入「gpmc.msc」,或在 [開始] 功能表中選取 [群組原則管理主控台],以開啟 [群組原則管理主控台] (GPMC)。
  2. 建立新的群組原則物件 (GPO),該物件應在網域層級連結或連結到包含您電腦帳戶的組織單位。 或者,請選取已部署的 GPO。
  3. 在 GPO 上按一下滑鼠右鍵,然後選取 [編輯] 以開啟 [群組原則管理編輯器]。
  4. 展開 [電腦設定] > [偏好設定] > [Windows 設定]>>
  5. 在 [登錄] 上按一下滑鼠右鍵,指向 [新增],然後選取 [登錄項目]。 隨即顯示 [新登錄內容] 對話方塊。
  6. 在 [Hive] 清單中,選取 [HKEY_LOCAL_MACHINE]
  7. 在 [機碼路徑] 清單中,瀏覽到 SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe
  8. 在 [值名稱] 方塊中輸入 AuditLevel
  9. 在 [值類型] 方塊中,選取 REG_DWORD
  10. 在 [值資料] 方塊中輸入 00000008
  11. 選取 [確定]

注意

GPO 變更必須複寫到網域中的所有網域控制站,GPO 才會生效。

若要選擇多部電腦上的額外 LSA 保護,您可以使用群組原則的登錄用戶端延伸來修改 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa。 如需指示,請參閱本文稍後的設定 LSA 認證保護部分。

識別 LSASS.exe 無法載入的外掛程式和驅動程式

啟用 LSA 保護時,系統會產生事件記錄檔,以識別無法在 LSA 載入的所有外掛程式和驅動程式。 選擇加入額外的 LSA 保護後,您可以使用事件記錄來識別無法在 LSA 保護模式下載入的 LSA 外掛程式和驅動程式。

在事件檢視器中,請在 [應用程式及服務記錄檔]>[Microsoft]>[Windows]>[CodeIntegrity]>[Operational] 下方檢視以下事件:

  • 事件 3033 會記錄程式碼完整性檢查,而該程式碼完整性檢查會判斷有程序 (通常為 LSASS.exe) 嘗試載入不符合 Microsoft 簽署等級需求的驅動程式。
  • 事件 3063 會記錄程式碼完整性檢查,而該程式碼完整性檢查會判斷有程序 (通常為 LSASS.exe) 嘗試載入不符合共用區段安全性需求的驅動程式。

共用區段通常是程式設計技術的結果,可讓執行個體資料與使用可能產生安全性弱點之相同資訊安全內容的其他處理程序互動。

啟用和設定額外的認證保護

您可以使用本節中的程序,為執行 Windows 8.1 或更新版本或是 Windows Server 2012 R2 或更新版本的裝置設定額外的 LSA 保護。

使用安全開機和 UEFI 的裝置

當您在使用安全開機或 UEFI 的 x86 型或 x64 型的裝置上啟用 LSA 保護時,可以使用登錄機碼或原則在 UEFI 韌體中儲存 UEFI 變數。 使用 UEFI 鎖定啟用時,LSASS 會以受保護的程序執行,而這項設定會儲存在韌體的 UEFI 變數中。

當設定儲存在韌體中時,將無法透過修改登錄或使用原則等方式來刪除或變更 UEFI 變數,以設定額外的 LSA 保護。 UEFI 變數必須使用移除 LSA 保護 UEFI 變數中的指示加以重設。

若未使用 UEFI 鎖定啟用,則 LSASS 會以受保護的程序執行,而這項設定並不會儲存在 UEFI 變數中。 使用全新安裝之 Windows 11 版本 22H2 或更新版本的裝置,會依預設套用這項設定。

在不支援 UEFI 或停用安全開機的 x86 型或 x64 型裝置上,您無法將 LSA 保護的設定儲存在韌體中。 這些裝置完全依賴登錄機碼的存在。 在此情況下,透過遠端存取裝置可停用 LSA 保護。 裝置需要重新啟動,停用 LSA 保護才會生效。

自動啟用

執行 Windows 11 版本 22H2 或更新版本的用戶端裝置若符合下列條件,額外的 LSA 保護就會依預設啟用:

  • 裝置使用全新安裝的 Windows 11 版本 22H2 或更新版本,而非從先前的版本升級。
  • 裝置已加入企業 (已加入 Active Directory 網域、已加入 Microsoft Entra 網域,或已加入混合式 Microsoft Entra 網域)。
  • 裝置具備 Hypervisor 保護的程式碼完整性 (HVCI) 功能。

在 Windows 11 版本 22H2 或更新版本上自動啟用額外的 LSA 保護,並不會設定該功能的 UEFI 變數。 如果您想要設定 UEFI 變數,您可以使用登錄組態或原則。

注意

針對執行 Windows RT 8.1 的裝置,額外的 LSA 保護將保持啟用,且無法關閉。

啟用單一電腦上的 LSA 保護

您可以使用登錄或本機群組原則,在單一電腦上啟用 LSA 保護。

使用登錄啟用

  1. 開啟登錄編輯程式 (RegEdit.exe),並瀏覽到以下登錄機碼:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
  2. 將登錄機碼的值設為:
    • "RunAsPPL"=dword:00000001,以使用 UEFI 變數設定該功能。
    • "RunAsPPL"=dword:00000002,以在不使用 UEFI 變數的情況下設定該功能,這僅會在 Windows 11 組建 22H2 和更新版本上強制執行。
  3. 重新啟動電腦。

在 Windows 11 版本 22H2 和更新版本上使用本機群組原則啟用

  1. 輸入「gpedit.msc」,以開啟本機群組原則編輯器。
  2. 展開 [電腦設定]>[系統管理範本]>[系統]>[本機安全性授權].
  3. 開啟設定 LSASS 以執行作為受保護的處理程序原則。
  4. 將原則設定為 [已啟用]
  5. 在 [選項] 下方,選取下列其中一個選項。
    • [使用 UEFI 鎖定啟用],以使用 UEFI 變數設定該功能。
    • [不使用 UEFI 鎖定啟用],以在不使用 UEFI 變數的情況下設定該功能。
  6. 選取 [確定]
  7. 重新啟動電腦。

使用群組原則啟用 LSA 保護

  1. 在 [執行] 對話方塊中輸入「gpmc.msc」,或在 [開始] 功能表中選取 [群組原則管理主控台],以開啟 GPMC。
  2. 建立新的 GPO,該物件應在網域層級連結或連結到包含您電腦帳戶的組織單位。 或者,請選取已部署的 GPO。
  3. 在 GPO 上按一下滑鼠右鍵,然後選取 [編輯] 以開啟 [群組原則管理編輯器]。
  4. 展開 [電腦設定] > [偏好設定] > [Windows 設定]>>
  5. 在 [登錄] 上按一下滑鼠右鍵,指向 [新增],然後選取 [登錄項目]。 隨即顯示 [新登錄內容] 對話方塊。
  6. 在 [Hive] 清單中,選取 [HKEY_LOCAL_MACHINE]
  7. 在 [機碼路徑] 清單中,瀏覽至 SYSTEM\CurrentControlSet\Control\Lsa
  8. 在 [值名稱] 方塊中,輸入 RunAsPPL
  9. 在 [值類型] 方塊中,選取 REG_DWORD
  10. 在 [值資料] 方塊中,輸入:
    • 00000001,使用 UEFI 變數啟用 LSA 保護。
    • 00000002,以在不使用 UEFI 變數的情況下啟用 LSA 保護,這僅會在 Windows 11 版本 22H2 和更新版本上強制執行。
  11. 選取 [確定]

建立自訂裝置組態設定檔以啟用 LSA 保護

針對執行 Windows 11 版本 22H2 和更新版本的裝置,您可以在 Microsoft Intune 系統管理中心內建立自訂裝置組態設定檔,以啟用和設定 LSA 保護。

  1. 在 Intune 系統管理中心內,瀏覽至[裝置]>[Windows]>[組態設定檔],並選取 [建立設定檔]
  2. 在 [建立設定檔] 畫面中,選取以下選項:
    • [平台]:Windows 10 和更新版本
    • [設定檔類型]:選取 [範本],然後選取 [自訂]
  3. 選取 建立
  4. 在 [基本資料] 畫面中,輸入設定檔的 [名稱] 和 [描述] (選用),然後選取 [下一步]
  5. 在 [組態設定] 畫面中,選取 [新增]
  6. 在 [新增資料列] 畫面中提供下列資訊:
    • [名稱]:提供 OMA-URI 設定的名稱。
    • [OMA-URI]:輸入「./Device/Vendor/MSFT/Policy/Config/LocalSecurityAuthority/ConfigureLsaProtectedProcess」
    • [資料類型]:選取 [整數]
    • [值]:輸入「1」,以使用 UEFI 鎖定將 LSASS 設定為以受保護的程序執行,或輸入「2」,以在不使用 UEFI 鎖定的情況下,將 LSASS 設定為以受保護的程序執行。
  7. 選取儲存,然後選取下一步
  8. 在 [指派] 頁面上設定指派,然後選取 [下一步]
  9. 在 [適用性規則] 頁面上設定任何適用性規則,然後選取 [下一步]
  10. 在 [檢閱 + 建立] 頁面上確認組態,然後選取 [建立]
  11. 重新啟動電腦。

如需此原則 CSP 的詳細資訊,請參閱 LocalSecurityAuthority - ConfigureLsaProtectedProcess

停用 LSA 保護

您可以使用登錄或本機群組原則來停用 LSA 保護。 如果裝置使用安全開機,而您已在韌體中設定 LSA 保護 UEFI 變數,就能使用工具來移除 UEFI 變數。

使用登錄停用

  1. 開啟登錄編輯程式 (RegEdit.exe),並瀏覽到以下登錄機碼:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
  2. 將機碼的值儲存至 "RunAsPPL"=dword:00000000,或刪除 DWORD
  3. 如果使用 UEFI 變數啟用 PPL,請使用 Local Security Authority Protected Process Opt-out 工具來移除 UEFI 變數。
  4. 重新啟動電腦。

在 Windows 11 版本 22H2 和更新版本上使用本機原則停用

  1. 輸入「gpedit.msc」,以開啟本機群組原則編輯器。
  2. 展開 [電腦設定]>[系統管理範本]>[系統]>[本機安全性授權].
  3. 開啟設定 LSASS 以執行作為受保護的處理程序原則。
  4. 將原則設定為 [已啟用]
  5. 在 [選項] 下方,選取 [已停用]
  6. 選取 [確定]
  7. 重新啟動電腦。

注意

如果您將此原則設為 [未設定],而原則先前已啟用,則先前的設定將不會遭到清除,並繼續強制執行。 您必須在 [選項] 下拉式清單下方將原則設為 [已停用],才能停用該功能。

移除 LSA 保護 UEFI 變數

如果裝置使用安全開機,您可以使用 Microsoft 下載中心提供的本機安全性授權 (LSA) 受保護程序選擇退出工具 (LSAPPLConfig)來刪除 UEFI 變數。

注意

下載中心會提供兩個名為 LsaPplConfig.efi 的檔案。 較小的檔案適用於 x86 型系統,而較大的檔案則適用於 x64 型系統。

如需管理安全開機的詳細資訊,請參閱 UEFI 韌體

警告

安全開機關閉時,會重設所有與安全開機和 UEFI 相關的設定。 您應該只在所有其他停用 LSA 保護的方法都失敗後,才關閉安全開機。

驗證 LSA 保護

若要在判斷 Windows 啟動時,LSA 是否會在受保護的模式中啟動,請檢查事件檢視器中的 [Windows 記錄]>[系統],以找出下列 WinInit 事件:

  • 12: LSASS.exe 已以受保護的處理程序方式啟動,層級為: 4

LSA 和 Credential Guard

LSA 保護是一項安全性功能,可封鎖不受信任的 LSA 程式碼插入和程序記憶體傾印,以避免認證等敏感資訊遭竊。 LSA 保護會透過將 LSA 程序隔離在容器中,並防止其他程序 (例如惡意執行者或應用程式) 存取該功能的方式,在背景中執行。 這個隔離機制可讓 LSA 保護化身至關重要的安全性功能,正因如此,Windows 11 才會預設啟用 LSA。

從 Windows 10 開始,Credential Guard 也能保護 NTLM 密碼雜湊、Kerberos 票證授權票證 (TGT),以及應用程式儲存為網域認證的認證,藉此防範認證竊取攻擊。 Kerberos、NTLM 和認證管理員會使用虛擬化型安全性 (VBS) 隔離機密資料。

啟用 Credential Guard 後,LSA 程序就會與名為隔離 LSA 程序的元件 (LSAIso.exe) 通訊,而該元件會負責儲存和保護機密資料。 隔離 LSA 程序儲存的資料會使用 VBS 加以保護,且不會提供給作業系統中的其餘部分存取。 LSA 會使用遠端程序呼叫來與隔離的 LSA 程序溝通。

從 Windows 11 版本 22H2 開始,凡是符合系統需求的所有裝置,都會依預設啟用 VBS 和 Credential Guard。 只有 64 位元安全開機裝置可支援 Credential Guard。 LSA 保護和 Credential Guard 可彼此互補,而支援或依預設啟用 Credential Guard 的裝置,也能啟用並受惠於 LSA 保護。 如需 Credential Guard 的詳細資訊,請參閱 Credential Guard 概觀

更多資源