
방어자가 CVE-2025-59287 사태 이후 자신의 WSUS 구성을 찾을 수 있도록 지원합니다.
GPO(Group Policy Objects) 전반에서 WSUS 서버 구성을 발견하세요 — 숨겨진 GPP(Group Policy Preferences)도 포함합니다.
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(Group Policy Preferences) 를 통해 WSUS 구성을 배포합니다. 이러한 설정은 표준 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
COM 스레딩 오류를 방지하기 위해 STA runspace에서 Get-GPRegistryValue를 사용합니다.
다음 위치에서 WUServer 및 WUStatusServer 값을 검색합니다:
HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate
Get-GPOReport -ReportType Xml의 XML 출력을 구문 분석합니다.q2:Registry) 및 대체(*[local-name()='Registry']) 노드에서 숨겨진 WSUS URL을 찾습니다....\Windows\WindowsUpdate 키를 포함하여 HKLM 아래에 기록된 값을 캡처합니다.이는
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를 실행 중인 머신에 대해 EDR 또는 자산 스캐너와 비교합니다.숨겨진 WSUS 구성을 노출하고 패치 인프라 가시성을 개선하기 위해 보안 엔지니어가 개발했습니다.
📘 기여를 환영합니다! 호환성을 개선하거나 새로운 발견 방법을 추가하려면 풀 리퀘스트 또는 이슈를 제출하세요.
| 요구 사항 | 설명 |
|---|
| 64비트 PowerShell | COM 호환성을 위해 필요합니다. 32비트 PowerShell에서 실행하면 스크립트가 자동으로 종료됩니다. |
| RSAT: 그룹 정책 관리 도구 | GroupPolicy 모듈에 필요합니다.Windows 10/11: Settings → Optional Features → Add a Feature → RSAT: Group Policy Management ToolsWindows Server: Server Manager → Add Roles and Features → Features → Group Policy Management |
| 권한 | 스캔 대상 도메인의 모든 GPO에 대한 읽기 권한. |
| 선택 사항: 관리자 권한 | 일부 레지스트리 정책 쿼리는 승격 없이는 실패할 수 있습니다. |
| 매개 변수 | 설명 | 기본값 |
|---|
-Name | 와일드카드를 사용하여 표시 이름으로 GPO를 필터링합니다. *이면 -All을 사용합니다. | *(모든 GPO) |
-Domain | 쿼리할 도메인을 지정합니다(다중 도메인 포리스트에서 유용). | 현재 사용자의 도메인 |
-Verbose | 자세한 스캔 진행 상황 및 결과를 표시합니다. | 꺼짐 |