# 키홀(Keyhole) – 자체 Windows Store 라이선스 생성

> Clean Markdown view of GeekNews topic #16655. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=16655](https://news.hada.io/topic?id=16655)
- GeekNews Markdown: [https://news.hada.io/topic/16655.md](https://news.hada.io/topic/16655.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-09-08T09:40:57+09:00
- Updated: 2024-09-08T09:40:57+09:00
- Original source: [massgrave.dev](https://massgrave.dev/blog/keyhole)
- Points: 1
- Comments: 1

## Topic Body

#### 소개
- 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 시스템의 취약점을 이해하고 보안을 강화하는 데 도움이 될 수 있음

## Comments



### Comment 28688

- Author: neo
- Created: 2024-09-08T09:40:58+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=41472643) 
- Xbox 게임을 무료로 다운로드할 수 있게 되었음
  - PS Vita처럼 완전히 해킹된 상태임
- Windows 10용 Lego Boost 앱 설치 라이선스를 원함
  - 기존 라이선스가 있으면 다운로드 가능하지만, 신규 사용자에게는 불가능함
- Microsoft가 임시 라이선스 서명 키의 적용 범위를 줄일 수 있음
  - 영구 라이선스를 생성하는 것이 오래가지 않을 것임
- HEVC 확장을 M$ 계정 없이 활성화할 수 있는지 궁금함
  - 특허를 일괄적으로 라이선스하지 못하는 것이 답답함
- Guitar Hero 게임을 물리 디스크 없이 플레이하려고 함
  - 게임 저장 파일을 읽을 수 없을 수도 있음
  - 콘솔의 공개 키가 취소 목록에 있음
  - CON 파일을 기본값 0으로 다시 서명하여 해결할 수 있음
- 이 모든 상황이 매우 익숙하게 느껴짐
- 안티바이러스가 페이지를 검열할 경우를 대비한 링크 제공
- Microsoft에 보고된 것과 거의 동시에 독립적으로 발견됨
  - 매우 의심스러움
- Clip은 Xbox One보다 오래된 것 같음
- 수십 년 동안 Windows의 최고의 배포 및 통신 채널이었음
- massgrave.dev에 대해 약간 불쾌함
