![在具有 PacketIntegrity 身份验证级别的远程计算机上调用 WMI(已激活 KB5004442)](https://linux22.com/image/780479/%E5%9C%A8%E5%85%B7%E6%9C%89%20PacketIntegrity%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E7%BA%A7%E5%88%AB%E7%9A%84%E8%BF%9C%E7%A8%8B%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8A%E8%B0%83%E7%94%A8%20WMI%EF%BC%88%E5%B7%B2%E6%BF%80%E6%B4%BB%20KB5004442%EF%BC%89.png)
我正在尝试使用以下 powershell 代码检索远程计算机上的 WMI 对象:
Get-WmiObject -ComputerName mymachine -class Win32_operatingSystem -Authentication PacketIntegrity
然而,由于 KB5004442(https://support.microsoft.com/en-us/topic/kb5004442-manage-changes-for-windows-dcom-server-security-feature-bypass-cve-2021-26414-f1400b52-c141-43d2-941e-37ed901c769c) 已在我的计算机上安装并激活(RequireIntegrityActivationAuthenticationLevel 注册表项设置为 1),我收到“拒绝访问”错误。
在服务器端的事件查看器中,我可以看到相关错误 10036:The server-side authentication level policy does not allow the user %1\%2 SID (%3) from address %4 to activate DCOM server. Please raise the activation authentication level at least to RPC_C_AUTHN_LEVEL_PKT_INTEGRITY in client application
从我的角度来看,指定“封包完整性“因为身份验证级别应该可以解决问题(我一直尝试使用 PacketPrivacy 级别)
禁用 KB(将 RequireIntegrityActivationAuthenticationLevel 设置为 0 并重新启动)时,该命令可以完美运行。
我一直尝试使用 VBscript 进行此调用,结果相同GetObject("winmgmts:authenticationLevel=packetIntegrity}!\\mymachine\Root\CIMv2")
我的目标是能够在 2023 年 3 月 14 日之后继续请求 WMI 对象,届时将无法禁用 KB5004442。
答案1
实际上,在向微软开具事故单后,似乎没有任何问题。
在我的配置中,客户端没有更新到最新的补丁级别,所以这不起作用。即客户端和服务器都必须部署补丁(至少 KB5006714 或 Windows 8.1 和 Windows Server 2012,请参阅https://support.microsoft.com/en-us/topic/kb5004442-manage-changes-for-windows-dcom-server-security-feature-bypass-cve-2021-26414-f1400b52-c141-43d2-941e-37ed901c769c)
这样不清楚Microsoft KB 中解释道,应用补丁 kb5004442 后,无需执行任何操作即可使 DCOM 继续工作,只需升级系统即可!
答案2
即使禁用它,有些东西似乎也会有问题,例如,我们在安装 RDS 集群的脚本中遇到了问题。我们让它工作的唯一方法是在部署的所有机器上将安全性设置为“数据包完整性”。