Introduction
- Un bug découvert lors du contournement de la vérification des licences Windows a été gardé secret afin de préserver une future méthode d’activation et de servir d’outil de test
- Une méthode de contournement du DRM appelée "Keyhole" a été découverte, permettant de licencier facilement des applications Microsoft Store ou des éditions récentes de Windows
- Après la publication de la CVE-2024-38184 par Cisco TALOS, il a été décidé de partager les découvertes sur Keyhole
CLiP
- CLiP (Client Licensing Platform) est le système DRM introduit dans Windows 10 pour gérer les applications Microsoft Store et l’activation de Windows
- Principaux binaires :
clipup.exe : convertit les licences du Store de Windows 8 en licences numériques
clipsvc.dll : service en mode utilisateur qui gère les licences des applications
clipc.dll : API permettant aux applications d’interagir avec CLiP
clipwinrt.dll : API pour les applications UWP
clipsp.sys : pilote en mode noyau qui vérifie les licences
- Lors de l’installation d’une application sous licence CLiP, un fichier XML signé est transmis à
clipsvc.dll, puis après vérification à clipsp.sys, qui l’enregistre dans le magasin de licences
Un peu de bricolage
- Une clé ECDSA valide est stockée en clair dans
clipup.exe, ce qui permet à n’importe qui de signer facilement des licences XML
- Cette clé permet de contourner la vérification de ClipSvc et d’envoyer directement à ClipSp les blocs de licence souhaités
Désobfuscation de ClipSp
- ClipSp est un pilote mal conçu, avec beaucoup de code copié-collé
- Le code est dissimulé à l’aide de l’outil d’obfuscation Warbird de Microsoft
- La désobfuscation permet d’analyser le code caché et de trouver des bugs
Blocs de licence
- Les blocs de licence stockent des informations de licence importantes et contiennent plusieurs blocs de données au format TLV (tag-length-value)
- Le bloc de signature signe toutes les données, mais les données ajoutées après la signature ne sont pas vérifiées
- Il est possible d’ajouter des données après le bloc de signature afin d’écraser les données existantes
Beaucoup de bricolage
- En ajoutant des données après le bloc de signature, il est possible de créer des licences pour tous les produits du Microsoft Store
- En revanche, les licences liées à l’appareil ne peuvent être générées qu’à partir d’une licence d’application elle-même liée à l’appareil
Tutoriel de bricolage
- Installer une application liée à l’appareil (par exemple Roblox) et intercepter sa licence avec un outil de capture du trafic HTTPS
- Décoder le bloc de licence, ajouter les données nécessaires, puis le reconditionner dans un nouveau fichier XML
- Copier le fichier XML dans le dossier
C:\ProgramData\Microsoft\Windows\ClipSVC\Install\Migration, puis redémarrer ClipSvc ou l’installer avec la commande clipup -p
- Windows est activé de manière permanente
Fin de partie
- Cisco TALOS a signalé le même bug, et Microsoft l’a corrigé
- Le bug a été corrigé pour empêcher le traitement des données placées après le bloc de signature
Saison des dons
- Le code générant les licences Keyhole et les binaires CLiP ont été publiés afin d’encourager la découverte d’autres bugs
Et une autre histoire
- Le code de ClipSp a été copié-collé depuis le système DRM de la Xbox One
- Xbox SP présente le même bug d’analyse, mais Keyhole ne fonctionne pas sur Xbox
Crédits
- Personnes ayant contribué à la recherche : May, asdcorp, echnobas, WitherOrNot, emoose, LukeFZ, KiFilterFiberContext, Phillippe Laulheret, Cisco TALOS, Rairii
Résumé de GN⁺
- Keyhole est une puissante méthode de contournement du DRM permettant de licencier facilement des applications Microsoft Store et des éditions de Windows
- Il est possible de manipuler les blocs de licence en exploitant une faille de sécurité du système CLiP
- Microsoft a corrigé le bug à la suite du signalement de Cisco TALOS
- Le système présente une structure similaire à celle du DRM de la Xbox One
- Cet article peut aider à comprendre les vulnérabilités des systèmes DRM et à renforcer la sécurité
1 commentaires
Avis Hacker News