配置其他 LSA 保护

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016

本文面向 IT 专业人员介绍了如何为本地安全机构 (LSA) 过程配置额外的保护,以防止可能泄露凭据的代码注入。

LSA 包含本地安全机构服务器服务 (LSASS) 进程,可以验证用户的本地和远程登录,并强制本地安全策略。 Windows 8.1操作系统和更高版本为 LSA 提供额外的保护,以防止非受保护的进程读取内存和代码注入。 此功能为 LSA 存储和管理的凭据提供了额外的安全性。 可以在 Windows 8.1 及更高版本中配置 LSA 的受保护进程设置。 当此设置与 UEFI 锁和安全启动一起使用时,将实现其他保护,因为禁用HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa注册表项不起作用。

插件或驱动程序的受保护进程要求

要使 LSA 插件或驱动程序以受保护进程的形式成功加载,它必须符合以下条件:

  1. 签名验证

    保护模式要求加载到 LSA 中的任何插件都已使用 Microsoft 签名进行数字签名。 因此,未签名或未使用 Microsoft 签名签名签名的任何插件将无法加载到 LSA 中。 这些插件的示例包括智能卡驱动程序、加密插件和密码筛选器。

    用作驱动程序(例如智能卡驱动程序)的 LSA 插件需要使用 WHQL 认证进行签名。 有关详细信息,请参阅 WHQL 发布签名

    没有 WHQL 认证过程的 LSA 插件必须使用 LSA 的文件签名服务进行签名

  2. 遵守 Microsoft 安全开发生命周期 (SDL) 过程指导

    所有插件必须符合适用的 SDL 过程指导。 有关详细信息,请参阅 Microsoft 安全开发生命周期 (SDL) 附录

    即使插件已使用 Microsoft 签名正确地进行签名,但如果不符合 SDL 过程,也可能会导致加载插件失败。

在广泛部署该功能之前,请使用以下列表来全面测试是否已启用 LSA 保护:

  • 识别组织中使用的所有 LSA 插件和驱动程序。 包括非 Microsoft 驱动程序或插件,例如智能卡驱动程序和加密插件,以及用于强制实施密码筛选器或密码更改通知的任何内部开发的软件。
  • 确保所有 LSA 插件都使用 Microsoft 证书进行数字签名,以便插件无法加载。
  • 确保正确签名的所有插件都能成功加载到 LSA 中,并且能按预期工作。
  • 使用审核日志来识别无法以受保护进程运行的 LSA 插件和驱动程序。

启用 LSA 保护时引入的限制

如果启用了其他 LSA 保护,则无法调试自定义 LSA 插件。 当调试器是受保护的进程时,无法将调试器附加到 LSASS。 一般情况下,不支持调试正在运行的受保护进程。

审核以识别无法作为受保护进程运行的 LSA 插件和驱动程序

可以使用审核模式来识别 LSA 保护模式下无法加载的 LSA 插件和驱动程序。 在审核模式下,系统将生成事件日志,标识在启用 LSA 保护的情况下无法在 LSA 下加载的所有插件和驱动程序。 将会记录消息,而不阻止这些插件或驱动程序。

本部分所述的事件位于 Applications and Services Logs\Microsoft\Windows\CodeIntegrity 下的运行日志中。 这些事件可帮助你识别由于签名方面的原因而无法加载的 LSA 插件和驱动程序。 若要管理这些事件,可使用 wevtutil 命令行工具。 有关此工具的信息,请参阅 Wevtutil

重要

如果在设备上启用了 智能应用控制 ,则不会生成审核事件。 若要检查或更改智能应用控件的启用状态,请打开Windows 安全中心应用程序并转到“应用&浏览器控件”页。 选择“智能应用控制设置”链接以检查启用状态,并在尝试审核其他 LSA 保护时将配置更改为“关闭”。

自动启用审核模式

默认情况下,在运行 Windows 11 22H2 的设备上启用其他 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 中的事件查看器中看到这些事件:

  • 事件 3065:此事件的记录表明,代码完整性检查确定某个进程(通常为 lsass.exe)尝试加载特定的驱动程序,但该驱动程序不符合共享区域的安全要求。 但是,由于所设置的系统策略的原因,允许加载相应的映像。

  • 事件 3066:此事件的记录表明,代码完整性检查确定某个进程(通常为 lsass.exe)尝试加载特定的驱动程序,但该驱动程序不符合 Microsoft 签名级别要求。 但是,由于所设置的系统策略的原因,允许加载相应的映像。

重要

如果在系统上附加并启用了内核调试程序,则不生成这些操作事件。

如果插件或驱动程序包含共享区域,则会同时记录事件 3066 和事件 3065。 除非插件不符合 Microsoft 签名级别要求,否则,删除共享区域应可防止发生这两个事件。

若要为域中的多台计算机启用审核模式,可以使用组策略的注册表客户端扩展来部署 Lsass.exe 审核级别注册表值。 需要修改 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe 注册表项。

如何在 GPO 中创建 AuditLevel 值设置

  1. 打开组策略管理控制台 (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来使用注册表Client-Side扩展进行组策略。 有关说明,请参阅本文 中如何配置凭据的其他 LSA 保护

选择加入之后:如何识别 lsass.exe 加载的插件和驱动程序

可以使用事件日志来标识 LSA 插件和无法在 LSA 保护模式下加载的驱动程序。 启用 LSA 受保护进程后,系统将生成事件日志,标识无法在 LSA 下加载的所有插件和驱动程序。

你可能会在事件查看器中看到这些事件:Microsoft-Windows-Codeintegrity/Operational:

  • 事件 3033:此事件的记录表明,代码完整性检查确定某个进程(通常为 lsass.exe)尝试加载某个驱动程序,但该驱动程序不符合 Microsoft 签名级别要求。

  • 事件 3063:此事件的记录表明,代码完整性检查确定某个进程(通常为 lsass.exe)尝试加载某个驱动程序,但该驱动程序不符合共享区域的安全要求。

共享区域通常是运用某些编程技术的后果,这些技术允许实例数据与使用相同安全上下文的其他进程交互。 这可能会造成安全漏洞。

如何配置凭据的附加 LSA 保护

在运行Windows 8.1或更高版本的设备上,可以通过执行本节中所述的过程来配置。

在使用或不使用安全启动和 UEFI 的基于 x86 或基于 x64 的设备上

在使用安全启动或 UEFI 的基于 x86 或基于 x64 的设备上,在使用注册表项或策略启用 LSA 保护时,可以在 UEFI 固件中设置 UEFI 变量。 设置存储在固件中时,无法通过修改注册表或用于启用其他 LSA 保护的策略删除或更改 UEFI 变量。 必须使用以下有关如何 禁用 LSA 保护的说明重置 UEFI 变量。

不支持 UEFI 或禁用安全启动的基于 x86 或基于 x64 的设备无法将 LSA 保护的配置存储在固件中。 这些设备仅依赖于注册表项的存在。 在此方案中,可以使用远程访问设备来禁用 LSA 保护。 在设备重新启动之前,禁用 LSA 保护不会生效。

自动启用

对于运行 Windows RT 8.1 的设备,始终启用其他 LSA 保护,并且无法将其关闭。

对于运行 Windows 11、22H2 的客户端设备,如果满足以下条件,则默认会启用其他 LSA 保护:

在 Windows 11 上自动启用额外的 LSA 保护,22H2 不会为该功能设置 UEFI 变量。 如果要设置 UEFI 变量,可以使用注册表配置或策略。

如何在单个计算机上启用 LSA 保护

使用注册表

  1. 打开注册表编辑器 (RegEdit.exe),然后导航到位于以下位置的注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa。

  2. 将该注册表项的值设置为:

    1. “RunAsPPL”=dword:00000001,使用 UEFI 变量配置该功能。
    2. “RunAsPPL”=dword:00000002仅在 22H2 (Windows 11、22H2) 上配置没有 UEFI 变量的功能。
  3. 重新启动计算机。

在 Windows 11 22H2 上使用本地组策略

  1. 打开本地组策略编辑器 (gpedit.msc)

  2. 展开 计算机配置、管理 模板系统,然后展开 本地安全机构

  3. 打开 “配置 LSASS”以作为受保护的进程策略运行

  4. 将策略设置为“已启用”。

  5. “选项”下,将“配置 LSA”设置为作为受保护的进程运行,以便:

    1. “已启用 UEFI 锁定”,以便使用 UEFI 变量配置该功能。
    2. “已启用无 UEFI 锁定”以配置没有 UEFI 变量的功能。
  6. 重新启动计算机。

如何使用 组策略 启用 LSA 保护

  1. 打开组策略管理控制台 (GPMC)。

  2. 创建一个新 GPO,该 GPO 在域级别链接,或者链接到你的计算机帐户所在的组织单位。 你也可以选择已部署的 GPO。

  3. 右键单击 GPO,然后选择“编辑”以打开组策略管理编辑器。

  4. 依次展开“计算机配置”、“首选项”和“Windows 设置”

  5. 右键单击 注册表,指向 “新建”,然后选择 “注册表项”。 此时将出现“新建注册表属性”对话框

  6. Hive 列表中,选择 HKEY_LOCAL_MACHINE

  7. 在“注册表项路径” 列表中,浏览到 SYSTEM\CurrentControlSet\Control\Lsa

  8. 在“值名称”框中,键入 RunAsPPL

  9. “值类型 ”框中,选择 REG_DWORD

  10. “值”数据 框中,键入:

    1. 00000001 使用 UEFI 变量启用 LSA 保护。
    2. 00000002在没有 UEFI 变量的情况下启用 LSA 保护, (仅在 22H2) Windows 11上强制实施。
  11. 选择“确定” 。

如何禁用 LSA 保护

如何使用注册表禁用

  1. 打开注册表编辑器 (RegEdit.exe),然后导航到位于以下位置的注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa。

  2. 设置“RunAsPPL”=dword:00000000,或删除 DWORD。

  3. 如果使用 UEFI 变量启用 PPL,请使用 本地安全机构保护的进程选择退出工具 删除 UEFI 变量。

  4. 重新启动计算机。

如何在 Windows 11 22H2 上禁用使用本地策略

打开本地组策略编辑器 (gpedit.msc)

  1. 展开 计算机配置、管理 模板系统,然后展开 本地安全机构

  2. 打开 “配置 LSASS”以作为受保护的进程策略运行

  3. 将策略设置为“已启用”。

  4. “选项”下,将“配置 LSA”设置为“已禁用”

  5. 重新启动计算机。

如果将此策略设置为 “未配置 ”,并且之前启用了该策略,则以前的设置不会清理,并且将继续强制执行。 必须将策略设置为“配置 LSA ”下的“已禁用,以作为受保护的进程下拉列表运行 ,以禁用该功能。

如何删除 LSA 保护 UEFI 变量

如果设备使用了安全启动,请使用本地安全机构 (LSA) 受保护进程选择退出工具来删除 UFEI 变量。

有关选择退出工具的详细信息,请参阅 从官方 Microsoft 下载中心下载本地安全机构 (LSA) 受保护进程退出

有关管理安全启动的详细信息,请参阅 UEFI 固件

警告

关闭安全启动后,将会重置所有与安全启动和 UEFI 相关的配置。 仅当禁用 LSA 保护的所有其他方法均已失败时,才应关闭安全启动。

验证 LSA 保护

若要发现 Windows 启动时是否在保护模式下启动 LSA,请搜索“系统”日志下的“Windows 日志”中的以下 WinInit 事件:

  • 12:LSASS.exe 已作为具有以下级别的受保护进程启动:4

其他资源

凭据保护和管理

LSA 的文件签名服务