Windows 更新为 CVE-2022-21857 添加新的 NTLM 直通身份验证保护

原始 KB 数: 5010576

安装 2022 年 1 月 11 日 Windows 更新或更高版本的 Windows 更新后,包含 CVE-2022-21857 保护的 Windows 更新后,域控制器(DC)将对信任域通过域或林信任发送的 NTLM 直通身份验证请求强制执行新的安全检查,或者由只读域控制器(RODC)通过安全通道信任发送。 新的安全检查要求对要进行身份验证的域或客户端适合所使用的信任。 具体而言,如果满足以下要求,适用于所用信任类型的安全检查将拒绝 NTLM 直通身份验证请求:

  • 通过域信任发出的请求必须使用与信任域相同的域名。
  • 对林信任的请求必须使用作为信任林成员的域名,并且与其他林没有名称冲突。
  • RODC 转发的请求必须使用 RODC 以前已授权为其缓存机密的客户端名称。

为了支持域和林信任验证,将更新每个林中根域的主域控制器(PDC),定期发出轻型目录访问协议(LDAP)查询。 每个信任林中的所有域名每 8 小时发出一次查询,称为“信任扫描”。 这些域名存储在 msDS-TrustForestTrustInfo 相应受信任域对象的属性中(TDO)。

先决条件

由于更新添加了新的信任扫描行为,阻止 LDAP 活动流量、身份验证和授权从受信任林到信任林的任何内容都会导致问题:

  • 如果使用防火墙,需要在受信任的 PDC 和信任域 DC 之间允许 TCP 和 UDP 端口 389,以及用于操作信任的通信(名称解析、NTLM 的 RPC 和 Kerberos 的端口 88)。
  • 受信任的林的 PDC 还需要 从网络 用户权限访问此计算机,以便向信任域 DC 进行身份验证。 默认情况下,“经过身份验证的用户”具有包含受信任域 PDC 的用户权限。
  • 受信任域中的 PDC 必须具有对配置 NC 和子对象中信任林分区容器的足够读取权限。 默认情况下,“经过身份验证的用户”具有访问权限,该访问权限适用于调用受信任的域 PDC。
  • 启用选择性身份验证后,必须向受信任林中的 PDC 授予 “允许”对信任林 DC 计算机帐户进行身份验证 的权限,以保护信任林。

如果信任林不允许受信任的林查询信任信息,则信任林可能面临 NTLM 中继攻击的风险。

例如,林 A 信任林 B 和林 C 信任林 B。如果林 A 拒绝允许来自林 B 中根域的身份验证或 LDAP 活动,则林 A 面临来自恶意或已泄露林 C 的 NTLM 中继攻击的风险。

新事件

以下事件作为 CVE-2022-21857 保护的一部分添加,并记录在系统事件日志中。

默认情况下,Netlogon 服务会限制警告和错误条件的事件,这意味着它不会记录每个请求的警告或失败事件。 相反,摘要事件(Netlogon 事件 ID 5832 和 Netlogon 事件 ID 5833)每天记录一次 NTLM 直通身份验证,这些身份验证要么被此更新中引入的新安全检查阻止,要么由于存在管理员配置的豁免标志而被阻止,但因存在管理员配置的豁免标志而被允许。

如果记录 Netlogon 事件 ID 5832 或 Netlogon 事件 ID 5833,并且需要更多信息,请通过创建事件限制并在以下注册表路径中将REG_DWORD值设置为 ThrottleNTLMPassThroughAuthEvents 零来禁用事件限制:

HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters

注意

此设置在系统或服务重启的情况下立即生效,并且不受组策略对象(GPO)的控制。

Netlogon 事件 ID 事件消息文本 备注
5832 在最近的事件限制窗口中,Netlogon 服务允许来自受信任域和/或林的一个或多个不安全的传递 NTLM 身份验证请求。 这些不安全的请求通常会被阻止,但由于当前的信任配置,因此允许继续。
警告:允许不安全的直通身份验证请求将公开 Active Directory 林受到攻击。
有关此问题的详细信息,请访问 https://go.microsoft.com/fwlink/?linkid=276811
由于管理替代而允许的不安全请求计数: <计数编号>
此警告事件日志记录由于存在管理员配置的豁免标志而允许的不安全直通身份验证的数量。
5833 在最近的事件限制窗口中,Netlogon 服务阻止了来自受信任客户端、域和/或林的一个或多个不安全的传递 NTLM 身份验证请求。 有关此问题的详细信息,包括如何启用更详细的日志记录,请访问 https://go.microsoft.com/fwlink/?linkid=276811
阻止的不安全请求计数: <计数编号>
此警告事件记录被阻止的不安全传递身份验证的数量。
5834 Netlogon 服务允许来自受信任的客户端、域或林的不安全传递 NTLM 身份验证请求。 通常会阻止此不安全的请求,但由于当前信任配置,因此允许继续。
警告:允许不安全的直通身份验证请求将公开 Active Directory 林受到攻击。 有关此问题的详细信息,请访问 https://go.microsoft.com/fwlink/?linkid=276811
帐户名: <帐户名称>
信任名称: <信任名称>
信任类型: <信任类型>
客户端 IP 地址: <客户端 IP 地址>
阻止原因: <阻止原因>
资源服务器 Netbios 名称: <资源服务器 Netbios 名称>
资源服务器 DNS 名称: <资源服务器 DNS 名称>
资源域 Netbios 名称: <资源域 Netbios 名称>
资源域名: <资源域名 DNS 名称>
仅当 Netlogon 事件限制已禁用时,才会记录此警告事件。 它记录由于管理员配置的豁免标志而允许的特定直通身份验证请求。
5835 Netlogon 服务阻止了来自受信任客户端、域或林的不安全传递 NTLM 身份验证请求。 有关详细信息,请访问 https://go.microsoft.com/fwlink/?linkid=276811
帐户名: <帐户名称>
信任名称: <信任名称>
信任类型: <信任类型>
客户端 IP 地址: <客户端 IP 地址>
阻止原因: <阻止原因>
资源服务器 Netbios 名称: <资源服务器 Netbios 名称>
资源服务器 DNS 名称: <资源服务器 DNS 名称>
资源域 Netbios 名称: <资源域 Netbios 名称>
资源域名: <资源域名 DNS 名称>
仅当 Netlogon 事件限制已禁用时,才会记录此警告事件。 它记录阻止的特定直通身份验证请求。

注意

这些事件不受限制。

LSA 事件 ID 事件消息文本 备注
6148 PDC 为所有信任完成了自动信任扫描操作,没有错误。 可在 https://go.microsoft.com/fwlink/?linkid=2162089 找到更多信息。 此信息性事件应每 8 小时定期显示一次。
6149 PDC 已完成对所有信任的自动信任扫描操作,并遇到至少一个错误。 可在 https://go.microsoft.com/fwlink/?linkid=2162089 找到更多信息。 应调查此警告事件,尤其是在每 8 小时显示一次时。
6150 PDC 已完成对信任“信任名称>”<的管理员请求的信任扫描操作,且不会出错。 有关详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=2162089. 此信息性事件用于跟踪管理员何时使用 netdom trust <Local Forest> /Domain:* /InvokeTrustScanner cmdlet 手动调用 PDC 信任扫描程序。
6151 PDC 找不到要扫描的指定信任“<信任名称>”。 信任不存在,或者它既不是入站信任,也不是双向信任。 可在 https://go.microsoft.com/fwlink/?linkid=2162089 找到更多信息。 此警告事件跟踪管理员何时使用错误的林名称手动调用 PDC 信任扫描程序。
6152 PDC 已完成对信任“信任名称>”<的管理员请求的信任扫描操作,并遇到错误。 可在 https://go.microsoft.com/fwlink/?linkid=2162089 找到更多信息。 此警告事件跟踪管理员通过运行 netdom trust <Local Forest> /Domain:* /InvokeTrustScanner cmdlet 手动调用 PDC 信任扫描程序(适用于所有信任),并且操作失败。
6153 PDC 在尝试扫描命名信任时遇到错误。 信任:信任名称>错误:<可在 找到https://go.microsoft.com/fwlink/?linkid=2162089错误消息>详细信息。 此警告事件是对上一个事件的补充,并包含错误代码。 它记录在计划的信任扫描期间,每隔 8 小时进行一次。

当某些故障相关事件中包含错误代码时,需要启用跟踪以进一步调查。

对 Netlogon 日志记录和 LSA 日志记录的改进

Netlogon 日志记录(%windir%\debug\netlogon.log)和 LSA 日志记录(lsp.log)已更新,以支持更新中的改进。

启用和禁用 Netlogon 日志记录(netlogon.log)

  • 若要启用 Netlogon 日志记录,请运行以下命令:

    nltest /dbflag:2080ffff
    
  • 若要在调查后禁用 Netlogon 日志记录,请运行以下命令:

    nltest /dbflag:0
    

使用 PowerShell 启用和禁用 LSA 日志记录(lsp.log)

  • 若要启用 LSA 日志记录,请运行以下 cmdlet:

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name LspDbgInfoLevel -Value 0x1820000 -Type dword -Force 
    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name LspDbgTraceOptions -Value 0x1 -Type dword -Force
    
    
  • 若要禁用 LSA 日志记录,请运行以下 cmdlet:

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name LspDbgInfoLevel -Value 0x0 -Type dword -Force 
    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name LspDbgTraceOptions -Value 0x0 -Type dword -Force
    
    

使用 reg.exe(对于没有 PowerShell 的旧操作系统)启用和禁用 LSA 日志记录(lsp.log)

  • 若要启用 LSA 日志记录,请运行以下 reg 命令:

    reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /V LspDbgTraceOptions /t REG_DWORD /d 1 /f 
    reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /V LspDbgInfoLevel /t REG_DWORD /d 0x1820000 /f
    
  • 若要禁用 LSA 日志记录,请运行以下命令:

    reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /V LspDbgTraceOptions /t REG_DWORD /d 0 /f 
    reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /V LspDbgInfoLevel /t REG_DWORD /d 0x0 /f
    

对nltest.exe和netdom.exe工具的改进

更新 nltest.exenetdom.exe 工具,以支持此更新中的改进。

Nltest.exe改进

nltest.exe工具可以使用以下命令查询和显示受信任域对象的属性中的所有记录msDS-TrustForestTrustInfo

nltest.exe /lsaqueryfti:<Trusting Forest Name>

下面是输出的示例:

C:\Windows\System32>nltest.exe /lsaqueryfti:contoso.com 
TLN: contoso.com 
Dom: contoso.com 
Scan: contoso.com Sid:(null) Flags:0x0 
The command completed successfully

注意

输出中的术语“扫描”是指在 PDC 信任扫描程序操作期间保留的新“扫描程序”记录类型。

Netdom.exe改进

netdom.exe工具可以启动新的 PDC 信任扫描程序操作,并为信任林中的特定信任域或特定子域设置安全检查豁免标志。

  • 启动 PDC 信任扫描程序操作。

    • 对于所有信任林,请运行以下命令:

      netdom trust <Local Forest> /Domain:* /InvokeTrustScanner
      
    • 对于特定的信任林,请运行以下命令:

      netdom trust <Local Forest> /Domain:<Trusting Forest> /InvokeTrustScanner
      

      注意

      此命令必须在本地林的 PDC 本地运行。

    此命令只能启动操作。 若要了解结果,请查看系统事件日志中是否有新的 LSA 事件,并根据需要启用 LSA 跟踪。

调查失败的 NTLM 直通身份验证

注意

在执行这些步骤之前,请确保配置符合先决条件部分中所述的要求。

下面是基本步骤:

  1. 在所有涉及的 DC 上启用 Netlogon 和 LSA 日志记录。

  2. 再现此问题。

  3. 禁用 Netlogon 和 LSA 日志记录。

  4. netlogon.log 文件中搜索以下术语,并查看描述失败的任何日志条目:

    • “LsaIFilterInboundNamespace”
    • “NlpValidateNTLMTargetInfo”
    • “NlpVerifyTargetServerRODCCachability”
    • “ResourceDomainNameCollidesWithLocalForest”
  5. 在lsp.log文件中搜索术语“LsaDbpFilterInboundNamespace”,并查看描述失败的任何日志条目。

注意

对于通过林信任进行故障转移身份验证,请使用新的nltest.exe选项来转储 PDC 信任扫描程序保留的所有新记录。

调查失败的 PDC 信任扫描程序操作

注意

在执行这些步骤之前,请确保配置符合先决条件部分中所述的要求。

下面是基本步骤:

  1. 在 PDC 上启用 LSA 日志记录。

    对于特定的信任扫描程序操作,此跟踪可能仅限于TRACE_LEVEL_LSP_FOREST_SCANNER标志。

  2. 使用新的netdom.exe/InvokeTrustScanner功能重现问题。

  3. 禁用 LSA 日志记录。

  4. lsp.log 文件中搜索术语“fail”或“failed”,并查看日志条目。

信任扫描程序可能会失败,原因如下:

  • 分区容器上缺少权限。

  • DC 与成员和 DC 之间所需的防火墙端口未打开。 下面是防火墙端口:

    • UDP+TCP/389
    • TCP/88
    • UDP+TCP/53

问题缓解措施

如果身份验证因域名冲突、配置错误或意外情况而失败,请重命名碰撞域(s),以防止冲突以缓解问题。

如果通过 RODC 安全通道信任进行身份验证失败,请联系Microsoft支持此问题,因为没有缓解方法。

如果 PDC 信任扫描程序失败,则缓解取决于特定上下文。 例如,受信任的林中的 DC 未向信任林的配置命名上下文(NC)授予 LDAP 查询权限。 缓解措施是授予权限。

常见问题 (FAQ)

  • 问 1:PDC 信任扫描程序的频率是否可配置?

    A1:否。

  • 问 2:创建新的林信任时,是否会自动调用 PDC 信任扫描程序?

    A2:否。 管理员可以根据需要手动调用它,否则新林将按下一个固定时间间隔扫描。

  • 问3:域管理员是否可以修改新的扫描程序记录?

    A3:是的,但不建议或受支持。 如果扫描程序记录被意外创建、修改或删除,PDC 信任扫描程序将在下次运行时还原更改。

  • 问 4:我相信我的环境中未使用 NTLM。 如何关闭此行为?

    A4:一般情况下,无法关闭新行为。 无法禁用 RODC 特定的安全验证。 可以为域信任案例或林信任案例设置安全检查豁免标志。

  • 问 5:安装此更新之前是否需要进行任何配置更改?

    A5:也许。 确保配置符合先决条件部分中所述的要求。

  • 问 6:是否需要按任何特定顺序修补 DC 才能使此更新生效?

    A6:支持修补顺序的所有变体。 新的 PDC 信任扫描程序操作仅在修补 PDC 后生效。 所有修补的 DC 将立即开始强制实施 RODC 限制。 修补的非 PDC 在修补 PDC 并开始在 msDS-TrustForestTrustInfo 属性中创建新的扫描程序记录之前,不会强制实施 NTLM 直通限制。 未修补的 DC(非 PDC)会在出现后忽略新的扫描程序记录。

  • 问 7:我的林何时安全?

    A7:所有域中所有 DC 都安装此更新后,林将受到保护。 在 PDC 信任扫描程序至少完成一次成功操作并且复制成功后,信任林将受到保护。

  • 问 8:我无法控制信任的域或林。 如何确保我的林安全?

    A8:请参阅前面的问题。 林的安全性不取决于任何信任域或林的修补状态。 我们建议所有客户修补其 DC。 此外,请更改“先决条件部分中所述的配置。

参考

有关特定技术详细信息的详细信息,请参阅: