Giới thiệu
- Một lỗi được phát hiện trong quá trình vượt qua bước kiểm tra giấy phép Windows đã được giữ kín để bảo tồn phương pháp kích hoạt trong tương lai và dùng làm công cụ thử nghiệm
- Một phương pháp vượt DRM có tên "Keyhole" đã được phát hiện, cho phép cấp phép dễ dàng cho ứng dụng Microsoft Store hoặc các phiên bản Windows hiện đại
- Sau khi Cisco TALOS công bố CVE-2024-38184, tác giả quyết định chia sẻ các phát hiện về Keyhole
CLiP
- CLiP (Client Licensing Platform) là hệ thống DRM được giới thiệu trong Windows 10, quản lý ứng dụng Microsoft Store và việc kích hoạt Windows
- Các tệp nhị phân chính:
clipup.exe: chuyển đổi giấy phép Store của Windows 8 thành giấy phép số
clipsvc.dll: dịch vụ chế độ người dùng quản lý giấy phép ứng dụng
clipc.dll: API cho phép ứng dụng tương tác với CLiP
clipwinrt.dll: API dành cho ứng dụng UWP
clipsp.sys: trình điều khiển chế độ nhân xác thực giấy phép
- Khi cài ứng dụng được cấp phép bằng CLiP, một tệp XML đã ký sẽ được gửi tới
clipsvc.dll, sau khi xác thực sẽ được chuyển tới clipsp.sys và lưu vào kho giấy phép
Một chút nghịch ngợm
clipup.exe lưu một khóa ECDSA hợp lệ dưới dạng văn bản thuần, nên bất kỳ ai cũng có thể dễ dàng ký giấy phép XML
- Có thể dùng khóa này để vượt qua bước xác thực của ClipSvc và gửi trực tiếp khối giấy phép mong muốn tới ClipSp
Gỡ rối ClipSp
- ClipSp là một driver được viết khá cẩu thả, với nhiều đoạn mã bị sao chép-dán
- Mã bị che giấu bằng công cụ làm rối Warbird của Microsoft
- Bằng cách gỡ bỏ lớp làm rối, có thể phân tích mã bị ẩn và tìm lỗi
Khối giấy phép
- Khối giấy phép lưu thông tin giấy phép quan trọng và chứa nhiều khối dữ liệu theo định dạng TLV (thẻ-độ dài-giá trị)
- Khối chữ ký ký toàn bộ dữ liệu, nhưng dữ liệu được thêm sau khi ký sẽ không được xác thực
- Có thể thêm dữ liệu sau khối chữ ký để ghi đè dữ liệu hiện có
Nhiều trò nghịch hơn
- Bằng cách thêm dữ liệu sau khối chữ ký, có thể tạo giấy phép cho mọi sản phẩm trên Microsoft Store
- Tuy nhiên, giấy phép khóa theo thiết bị chỉ có thể được tạo từ giấy phép ứng dụng cũng khóa theo thiết bị
Hướng dẫn nghịch ngợm
- Cài một ứng dụng khóa theo thiết bị (ví dụ: Roblox) và chặn lấy giấy phép bằng công cụ bắt lưu lượng HTTPS
- Giải mã khối giấy phép, thêm dữ liệu cần thiết rồi đóng gói lại thành một tệp XML mới
- Sao chép tệp XML vào thư mục
C:\ProgramData\Microsoft\Windows\ClipSVC\Install\Migration rồi khởi động lại ClipSvc hoặc cài bằng lệnh clipup -p
- Windows sẽ được kích hoạt vĩnh viễn
Phá bĩnh
- Cisco TALOS đã báo cáo cùng lỗi này và Microsoft đã vá nó
- Lỗi được sửa để không còn xử lý dữ liệu nằm sau khối chữ ký
Mùa quyên góp
- Mã tạo giấy phép Keyhole và các tệp nhị phân CLiP đã được công bố để khuyến khích tìm thêm lỗi
Và một câu chuyện khác
- Mã của ClipSp được sao chép-dán từ hệ thống DRM của Xbox One
- Xbox SP cũng có cùng lỗi phân tích cú pháp, nhưng Keyhole không hoạt động trên Xbox
Ghi công
- Những người đóng góp cho nghiên cứu: May, asdcorp, echnobas, WitherOrNot, emoose, LukeFZ, KiFilterFiberContext, Phillippe Laulheret, Cisco TALOS, Rairii
Tóm tắt của GN⁺
- Keyhole là một phương pháp vượt DRM mạnh mẽ, cho phép cấp phép dễ dàng cho ứng dụng Microsoft Store và các phiên bản Windows
- Có thể thao túng khối giấy phép bằng cách khai thác lỗ hổng bảo mật trong hệ thống CLiP
- Microsoft đã vá lỗi sau báo cáo của Cisco TALOS
- Cấu trúc của nó tương tự hệ thống DRM của Xbox One
- Bài viết này có thể giúp hiểu các điểm yếu của hệ thống DRM và tăng cường bảo mật
1 bình luận
Ý kiến Hacker News