
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構成を展開しています。GPPはレジストリキーを直接変更します。これらの設定は標準のGPMCレポートには表示されません。
✅ Find-WSUS は標準とGPPベースの両方の構成を検出し、環境全体を完全に可視化します。
スクリプトを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] このスクリプトは発見ツールであり、完全なインベントリシステムではありません。
GPOを介して定義されたWSUSサーバーのみを検出します。 以下は検出されません:
Find-WSUS を実行します。WSUSService を実行しているマシンについて、EDRまたはアセットスキャナーと比較します。隠れたWSUS構成を明らかにし、パッチインフラストラクチャの可視性を向上させるために、セキュリティエンジニアによって開発されました。
📘 コントリビューション歓迎! 互換性を向上させたり、新しい発見方法を追加するために、プルリクエストやIssueを送信してください。
| 要件 | 説明 |
|---|
| 64ビットPowerShell | COM互換性のために必要です。32ビットPowerShellで実行するとスクリプトは自動終了します。 |
| RSAT: グループポリシー管理ツール | GroupPolicy モジュールに必要です。Windows 10/11: 設定 → オプション機能 → 機能の追加 → RSAT: グループポリシー管理ツールWindows Server: サーバーマネージャー → 役割と機能の追加 → 機能 → グループポリシー管理 |
| アクセス許可 | スキャン対象ドメイン内のすべてのGPOに対する読み取りアクセス権。 |
| 任意: 管理者権限 | 一部のレジストリポリシークエリは、昇格なしでは失敗する場合があります。 |
| Parameter | Description | Default |
|---|
-Name | ワイルドカードを使用してGPOを表示名でフィルタリングします。* の場合は -All を使用します。 | * (すべてのGPO) |
-Domain | クエリするドメインを指定します(マルチドメインフォレストで便利)。 | 現在のユーザーのドメイン |
-Verbose | 詳細なスキャンの進行状況と結果を表示します。 | オフ |