
Process Explorer driver vulnerável Bypass PPL
Embora seja bem conhecido que versões antigas (anteriores à 17.x) dos drivers do SysInternals Process Explorer (PSEXP152.sys) são vulneráveis e podem ser abusadas para abrir handles de processo com acesso total a processos PPL (IOCTL: 0x8335003c), versões mais recentes (17.x em diante) continuam vulneráveis e capazes de fazer o mesmo com uma função diferente do driver (IOCTL: 0x83350014). Esta função IOCTL duplica handles arbitrários e também recebeu um patch para filtrar o processo de sistema e qualquer processo protegido (PP/PPL) na versão 17.00 do driver. Mas houve um grande descuido com esta função, pois ainda era possível duplicar qualquer handle de processo e thread a partir do seu próprio processo não-PPL. Bastava abrir um processo PPL com permissões baixas como PROCESS_QUERY_LIMITED_INFORMATION e depois duplicar este handle a partir do seu próprio processo através do driver do Process Explorer para contornar o filtro e receber um handle com acesso total a um processo PPL. Usei este método há anos para contornar a proteção de processos PPL, mas a Microsoft corrigiu este bypass com a versão 17.11 do driver, verificando agora se o handle alvo é um handle de processo ou thread PPL. Ainda assim, versões do driver de 17.00 até 17.09 (17.10 não existe) não estão incluídas na blocklist de drivers vulneráveis da Microsoft e suspeito que alguns fornecedores de EDR também não sinalizam estas versões (por enquanto).
Esta é apenas uma implementação PoC para matar processos PPL. A mesma poderosa IOCTL de duplicação de handles também pode ser usada para duplicar outros tipos de handles, como threads, e para injetar shellcode noutros processos PPL.
Utilização:
1. Descarregue uma versão mais antiga do SysInternals Process Explorer (17.00 a 17.10)
2. Execute procexp64.exe como administrador para carregar o driver vulnerável
3. Procure no Process Explorer o PID de, por exemplo, MsMpEng.exe (ex: 3660)
4. Execute ps_ppl_bypass.exe PID ("ps_ppl_bypass.exe 3660") como administrador para matar o processo alvo
Também ainda é possível obter uma versão antiga do driver a partir do site oficial da SysInternals extraindo-o da ferramenta SysInternals Handles: https://learn.microsoft.com/en-us/sysinternals/downloads/handle