Este post, é o primeiro de uma série de duas partes que discute como um exploit executado em área de usuário do Windows, inicialmente divulgado por James Forshaw e Alex Ionescu. A exploração permite que os invasores executem ações altamente privilegiadas que normalmente requerem um driver de kernel.
Protected Process Light
O Windows 8.1 introduziu o conceito de Protected Process Light (PPL), que permite que programas especialmente assinados sejam executados de forma a serem imunes a adulteração e encerramento, mesmo por usuários administrativos. O objetivo é impedir que o malware seja executado de forma descontrolada - adulterando processos críticos do sistema e encerrando os aplicativos anti-malware. Há uma hierarquia de “níveis” de PPL, com os de privilégios mais altos imunes à violação por aqueles de privilégios mais baixos, mas não vice-versa.
Para obter mais informações sobre os processos PPL, consulte os seguintes recursos:
- Protecting Anti-Malware Services - Win32 apps
- The Evolution of Protected Processes Part 1
- The Evolution of Protected Processes Part 2
O Exploit
Em um nível superior, o exploit é um ataque de envenenamento de cache em que um invasor pode adicionar uma DLL ao cache KnownDlls - uma lista confiável de DLLs do Windows. KnownDlls só é gravável por processos WinTcb, que é a forma mais alta de PPL ... mas um bug na implementação da API DefineDosDevice permite que invasores enganem o CSRSS, um processo WinTcb, para criar uma entrada de cache em seu nome. KnownDlls é confiável para o Windows loader, portanto, nenhuma verificação de segurança adicional é realizada enquanto KnownDlls são carregados, mesmo dentro de processos PPL. Depois de envenenar o cache, o invasor inicia um processo protegido que termina carregando sua DLL e executando payload.
Como essa exploração permite que os invasores injetem uma DLL de sua escolha em um processo PPL, eles podem executar qualquer ação com privilégios WinTcb. A Microsoft indicou que não está interessada em atender a essa vulnerabilidade. Ele está confirmado para funcionar no Windows 10 21H1 versão 10.0.19043.985.
POCs
A primeira POC de exploração pública de que temos conhecimento é o recém-lançado PPLDump, uma ferramenta que pode despejar qualquer processo PPL, como LSASS no modo RunAsPPL. Algumas semanas após o lançamento do PPLDump, o Sealighter-TI foi lançado, reutilizando o código de exploração do PPLDump para conceder acesso ao feed ETW Threat-Intelligence, que normalmente é restrito a empresas AntiMalware sob NDA. A rápida recuperação do Sealighter-TI demonstra como é fácil redirecionar o código de exploração para executar um novo payload.
Com o código de exploração público, esperamos que as ferramentas ofensivas tirem proveito disso rapidamente, executando dos payloads como WinTcb PPL. Isso permitirá que eles:
- Dump das credenciais corporativas, mesmo quando o LSASS for reforçado para funcionar como PPL.
- Encerrar ou desabilitar silenciosamente os processos PPL, como produtos de segurança.
- Execute implantes inteiros como processos WinTcb PPL. Esses implantes não podem ser inspecionados ou eliminados por produtos de segurança de modo de usuário. A Microsoft restringe os produtos de segurança ao AntiMalware PPL, que é menos privilegiado do que o WinTcb.
- Injetar código em processos PPL existentes. Imagine executar a carga útil do beacon do Cobalt Strike dentro do Windows Defender.
Fechando as Brechas
Vendo esta vulnerabilidade sem mitigação pública, estamos lançando uma ferramenta chamada PPLGuard para fechá-la. PPLGuard, que é baseado na base de código PPLDump com permissão, usa o exploit para primeiro elevar para WinTcb PPL, então aplica um DACL tornando o diretório de objetos KnownDlls somente leitura. Isso bloqueia o exploit evitando que o CSRSS adicione uma nova entrada - uma etapa crítica na cadeia de exploit. Esta DACL existe apenas na memória, portanto, é apagada na reinicialização.
Como o PPLGuard fecha a vulnerabilidade da qual a exploração depende, as execuções subsequentes falharão. A ferramenta de prova de conceito PPLGuard pode ser encontrada aqui.
Conclusão
Neste post, foi abordada uma exploração de escalonamento de privilégios do Windows e fornecemos uma ferramenta de código aberto que atenua a vulnerabilidade explorada. Na parte 2, cobriremos como procurar esses tipos de ataques usando o Elastic Security. Fique ligado.
Atualização 2021-06-03: Depois que este post foi escrito, alguém portou o exploit PPLDump para .NET em run Cobalt Strike beacon as WinTCB PPL.
Nenhum comentário:
Postar um comentário