소개
- Windows 라이선스 확인을 우회하는 과정에서 발견된 버그를 비밀로 유지하여 미래의 활성화 방법을 보존하고 테스트 도구로 사용함
- "Keyhole"이라는 이름의 DRM 우회 방법을 발견하여 Microsoft Store 앱이나 최신 Windows 에디션을 쉽게 라이선스할 수 있게 됨
- Cisco TALOS의 CVE-2024-38184 공개 이후 Keyhole에 대한 발견 내용을 공유하기로 결정함
CLiP
- CLiP(Client Licensing Platform)은 Windows 10에서 도입된 DRM 시스템으로, Microsoft Store 앱과 Windows 활성화를 관리함
- 주요 바이너리:
-
clipup.exe
: Windows 8 스토어 라이선스를 디지털 라이선스로 변환
-
clipsvc.dll
: 앱 라이선스를 관리하는 사용자 모드 서비스
-
clipc.dll
: 애플리케이션이 CLiP와 상호작용할 수 있도록 하는 API
-
clipwinrt.dll
: UWP 애플리케이션을 위한 API
-
clipsp.sys
: 라이선스를 검증하는 커널 모드 드라이버
- CLiP-라이선스 앱 설치 시 서명된 XML 파일이
clipsvc.dll
로 전송되고, 검증 후 clipsp.sys
로 전달되어 라이선스 저장소에 저장됨
약간의 장난
-
clipup.exe
에 유효한 ECDSA 키가 평문으로 저장되어 있어 누구나 쉽게 XML 라이선스를 서명할 수 있음
- 이 키를 사용하여 ClipSvc의 검증을 우회하고 원하는 라이선스 블록을 ClipSp로 직접 전송할 수 있음
ClipSp 해제
- ClipSp는 잘 작성되지 않은 드라이버로, 많은 코드가 복사-붙여넣기 되어 있음
- Microsoft의 Warbird라는 난독화 도구를 사용하여 코드가 숨겨져 있음
- 난독화 해제를 통해 숨겨진 코드를 분석하고 버그를 찾을 수 있음
라이선스 블록
- 라이선스 블록은 중요한 라이선스 정보를 저장하며, TLV(태그-길이-값) 형식으로 여러 데이터 블록을 포함함
- 서명 블록은 모든 데이터를 서명하며, 서명 후 추가된 데이터는 검증되지 않음
- 서명 블록 이후에 데이터를 추가하여 기존 데이터를 덮어쓸 수 있음
많은 장난
- 서명 블록 이후에 데이터를 추가하여 Microsoft Store의 모든 제품에 대한 라이선스를 생성할 수 있음
- 단, 디바이스에 잠긴 라이선스는 디바이스에 잠긴 앱 라이선스에서만 생성 가능함
장난 튜토리얼
- 디바이스에 잠긴 앱(예: Roblox)을 설치하고 HTTPS 트래픽 캡처 도구로 라이선스를 가로챔
- 라이선스 블록을 디코딩하고 필요한 데이터를 추가하여 새로운 XML 파일로 패키징
- XML 파일을
C:\ProgramData\Microsoft\Windows\ClipSVC\Install\Migration
폴더에 복사하고 ClipSvc를 재시작하거나 clipup -p
명령어로 설치
- Windows가 영구적으로 활성화됨
버즈킬
- Cisco TALOS가 동일한 버그를 보고하여 Microsoft가 패치함
- 버그는 서명 블록 이후의 데이터를 처리하지 않도록 수정됨
기부 시즌
- Keyhole 라이선스를 생성하는 코드와 CLiP 바이너리를 공개하여 더 많은 버그를 발견하도록 유도함
그리고 다른 이야기
- ClipSp의 코드는 Xbox One의 DRM 시스템에서 복사-붙여넣기 된 것임
- Xbox SP도 동일한 파싱 버그를 가지고 있지만, Keyhole은 Xbox에서는 작동하지 않음
크레딧
- 연구에 기여한 사람들: May, asdcorp, echnobas, WitherOrNot, emoose, LukeFZ, KiFilterFiberContext, Phillippe Laulheret, Cisco TALOS, Rairii
GN⁺의 정리
- Keyhole은 Microsoft Store 앱과 Windows 에디션을 쉽게 라이선스할 수 있는 강력한 DRM 우회 방법임
- CLiP 시스템의 보안 취약점을 악용하여 라이선스 블록을 조작할 수 있음
- Cisco TALOS의 보고로 인해 Microsoft가 버그를 패치함
- Xbox One의 DRM 시스템과 유사한 구조를 가지고 있음
- 이 기사는 DRM 시스템의 취약점을 이해하고 보안을 강화하는 데 도움이 될 수 있음