跨组策略对象(GPO)发现 WSUS 服务器配置——包括隐藏的组策略首选项(GPP)。
Find-WSUS 是一个 PowerShell 脚本,专为安全专业人员和系统管理员设计,用于识别所有通过 GPO 配置的 WSUS(Windows Server Update Services)服务器 URL。它可以检测来自以下两方面的配置:
WSUS 服务器是高价值的基础设施资产。一旦被攻破,攻击者就可以向所有加入域的系统分发恶意的“更新”,从而导致整个域完全失陷。
🧨 诸如 CVE-2025-59287 之类的漏洞表明,一次 WSUS 漏洞利用就能让攻击者获得对整个域的全面控制。
Find-WSUS 可帮助组织在攻击者之前定位每一个 WSUS 配置来源。
大多数扫描只会检查:
HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate
然而,许多组织通过组策略首选项(GPP)部署 WSUS 配置,这种方式会直接修改注册表键。这些设置不会出现在标准的 GPMC 报告中。
✅ Find-WSUS 可同时检测标准策略和基于 GPP 的配置,让您全面掌握环境中的 WSUS 配置。
| 要求 | 说明 |
|---|---|
| 64 位 PowerShell | COM 兼容性所需。如果在 32 位 PowerShell 中运行,脚本会自动退出。 |
| RSAT:组策略管理工具 | 需要 GroupPolicy 模块。Windows 10/11: 设置 → 可选功能 → 添加功能 → RSAT:组策略管理工具Windows Server: 服务器管理器 → 添加角色和功能 → 功能 → 组策略管理 |
| 权限 | 对正在扫描的域中的所有 GPO 具有读取权限。 |
| **可选:**管理员权限 | 某些注册表策略查询在未提升权限的情况下可能会失败。 |
将脚本加载到您的 PowerShell 会话中:
. .\Find-WSUS.ps1
导入后,即可使用 Find-WSUS 函数。
Find-WSUS | Format-Table -AutoSize
扫描时查看详细的进度信息:
Find-WSUS -Verbose
Find-WSUS -Domain "child.mydomain.com" | Format-Table -AutoSize
Find-WSUS -Name "*Server*" -Verbose
$results = Find-WSUS -Domain "mydomain.com"
$results.Hostname | Where-Object { $_ } | Sort-Object -Unique
在 STA 运行空间 中使用 Get-GPRegistryValue,以避免 COM 线程错误。
扫描以下位置中的 WUServer 和 WUStatusServer 值:
HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate
Get-GPOReport -ReportType Xml 生成的 XML 输出。q2:Registry)和回退(*[local-name()='Registry'])节点中查找隐藏的 WSUS URL。...\Windows\WindowsUpdate 键。这与
Find-WSUS中Format-Table -AutoSize的实际布局和表头一致,但使用了真实风格的示例主机/URL 以及 GPO 名称/GUID。
PS C:\Users\Administrator\Documents> Find-WSUS | Format-Table -AutoSize
[OK] Environment check passed: 64-bit PowerShell, GroupPolicy module loaded, GPOs accessible.
GPOName Scope Key ValueName Value Hostname GPOGuid
------- ----- --- --------- ----- -------- -------
Default Domain Policy Policy (Computer) HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate WUServer https://wsus.corp.contoso.com:8531 wsus.corp.contoso.com 31b2f340-016d-11d2-945f-00c04fb984f9
Default Domain Policy Policy (Computer) HKLM\Software\Policies\Microsoft\Windows\Windows\Update WUStatusServer https://wsus.corp.contoso.com:8531 wsus.corp.contoso.com 31b2f340-016d-11d2-945f-00c04fb984f9
Corporate WSUS Baseline Policy (Computer) HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate WUServer http://wsus01.contoso.com:8530 wsus01.contoso.com 57f2e3da-33c5-4a35-abce-c12a0b7f9823
Corporate WSUS Baseline Policy (Computer) HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate WUStatusServer https://wsus01.contoso.com:8531 wsus01.contoso.com 57f2e3da-33c5-4a35-abce-c12a0b7f9823
Workstations - Windows Update (GPP) Preference (Registry) HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate WUStatusServer https://wsus-west.contoso.com:8531 wsus-west.contoso.com a1cde8b2-7f45-43f2-9db4-9c1e93a0e5c1
**注意:**在实际环境中,您通常会看到
:8531上的 SSL 和:8530上的传统 HTTP。上面的主机名仅为示例;请替换为您实际的资产清单。
[!WARNING] 此脚本是一个发现工具,而不是完整的资产清单系统。
它只能发现通过组策略定义的 WSUS 服务器。 它无法检测:
Find-WSUS。WSUSService 的机器。由安全工程师开发,用于揭示隐藏的 WSUS 配置并提高补丁基础设施的可见性。
📘 欢迎贡献!提交 Pull Request 或 Issue,以增强兼容性或添加新的发现方法。
| 参数 | 说明 | 默认值 |
|---|
-Name | 使用通配符按显示名称筛选 GPO。当为 * 时使用 -All。 | *(所有 GPO) |
-Domain | 指定要查询的域(在多域林中很有用)。 | 当前用户的域 |
-Verbose | 显示详细的扫描进度和发现结果。 | 关闭 |