
Prova de conceito de bypass de PPL abusando da syscall NtUserGetWindowProcessHandle para obter um handle para processos protegidos do Windows sem privilégios de administrador.
PPLwindow é uma Prova de Conceito para um Bypass de PPL que afeta o Windows 10 1809 até o Windows 11 23H2. A syscall NtUserGetWindowProcessHandle do driver win32kfull.sys não verifica corretamente se um processo é um processo protegido nas versões do Windows mencionadas. Isso pode ser explorado para obter um handle de processo com PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_DUP_HANDLE para um processo protegido a partir de um processo não protegido.
O processo protegido alvo precisa de uma janela para que este bypass funcione. O PoC explora o WerFaultSecure.exe e alcança PP-WinTcb. Para este bypass não são necessários privilégios de administrador. Foi corrigido no Windows 11 24H2.
Vi este post do James Forshaw: https://infosec.exchange/@tiraniddo/115539156769921108 Minha primeira reação foi: Espera um segundo. Eu conheço isso. Eu já encontrei isso em 2023 junto com o CVE-2023-41772, mas não consegui encontrar um processo protegido como alvo válido. Então, obrigado ao James Forshaw por encontrar um bom alvo (WerFaultSecure.exe). Eu informei a Microsoft sobre isso quando reportei o CVE-2023-41772. Esse pode ser o motivo pelo qual isso foi corrigido no Windows 11 24H2.
Para Windows 10 1809 / Windows Server 2019 você pode usar os binários WerFaultSecure.exe e wer.dll do Windows 10 21H2 / Windows Server 2022. Coloque ambos os binários em uma pasta e forneça o caminho para WerFaultSecure.exe como primeiro argumento de linha de comando para o PPLwindow.
