Introdução
- Um bug descoberto durante o processo de contornar a verificação de licenças do Windows foi mantido em segredo para preservar métodos futuros de ativação e usado como ferramenta de teste
- Foi descoberto um método de contorno de DRM chamado "Keyhole", que permite licenciar facilmente apps da Microsoft Store ou edições modernas do Windows
- Após a divulgação do CVE-2024-38184 pela Cisco TALOS, decidiu-se compartilhar as descobertas sobre o Keyhole
CLiP
- CLiP (Client Licensing Platform) é um sistema de DRM introduzido no Windows 10 que gerencia os apps da Microsoft Store e a ativação do Windows
- Principais binários:
clipup.exe: converte licenças da loja do Windows 8 em licenças digitais
clipsvc.dll: serviço em modo de usuário que gerencia licenças de apps
clipc.dll: API que permite que aplicações interajam com o CLiP
clipwinrt.dll: API para aplicações UWP
clipsp.sys: driver em modo kernel que valida licenças
- Ao instalar um app licenciado por CLiP, um arquivo XML assinado é enviado para
clipsvc.dll e, após a validação, é repassado para clipsp.sys, onde é armazenado no repositório de licenças
Uma pequena brincadeira
clipup.exe armazena uma chave ECDSA válida em texto puro, permitindo que qualquer pessoa assine facilmente licenças XML
- Com essa chave, é possível contornar a validação do ClipSvc e enviar diretamente para o ClipSp qualquer bloco de licença desejado
Desofuscação do ClipSp
- O ClipSp é um driver mal escrito, com muito código copiado e colado
- O código está oculto com o Warbird, uma ferramenta de ofuscação da Microsoft
- Ao desfazer a ofuscação, é possível analisar o código escondido e encontrar bugs
Blocos de licença
- Blocos de licença armazenam informações importantes de licenciamento e incluem vários blocos de dados no formato TLV (tag-length-value)
- O bloco de assinatura assina todos os dados, mas dados adicionados após a assinatura não são validados
- É possível adicionar dados após o bloco de assinatura para sobrescrever dados existentes
Muita brincadeira
- Ao adicionar dados após o bloco de assinatura, é possível gerar licenças para todos os produtos da Microsoft Store
- No entanto, licenças vinculadas ao dispositivo só podem ser geradas a partir de licenças de apps também vinculadas ao dispositivo
Tutorial da brincadeira
- Instale um app vinculado ao dispositivo (por exemplo, Roblox) e intercepte a licença com uma ferramenta de captura de tráfego HTTPS
- Decodifique o bloco de licença, adicione os dados necessários e empacote tudo em um novo arquivo XML
- Copie o arquivo XML para a pasta
C:\ProgramData\Microsoft\Windows\ClipSVC\Install\Migration e reinicie o ClipSvc ou instale com o comando clipup -p
- O Windows é ativado permanentemente
Fim da brincadeira
- A Cisco TALOS relatou o mesmo bug, e a Microsoft aplicou uma correção
- O bug foi corrigido para não processar dados após o bloco de assinatura
Temporada de doações
- Foram publicados o código para gerar licenças Keyhole e os binários do CLiP para incentivar a descoberta de mais bugs
E outra história
- O código do ClipSp foi copiado e colado do sistema de DRM do Xbox One
- O Xbox SP também tem o mesmo bug de parsing, mas o Keyhole não funciona no Xbox
Créditos
- Pessoas que contribuíram para a pesquisa: May, asdcorp, echnobas, WitherOrNot, emoose, LukeFZ, KiFilterFiberContext, Phillippe Laulheret, Cisco TALOS, Rairii
Resumo do GN⁺
- O Keyhole é um poderoso método de contorno de DRM que permite licenciar facilmente apps da Microsoft Store e edições do Windows
- Ele explora vulnerabilidades de segurança no sistema CLiP para manipular blocos de licença
- A Microsoft corrigiu o bug após o relatório da Cisco TALOS
- A estrutura é semelhante à do sistema de DRM do Xbox One
- Este artigo pode ajudar a entender vulnerabilidades em sistemas de DRM e a reforçar a segurança
1 comentários
Comentários no Hacker News