Ataques
HEVD: Elevação local de privilégio


VP of Hacking
10 min
Este é o quarto artigo no qual nos aprofundamos na exploração do kernel do Windows, utilizando o driver HackSys Extremely Vulnerable Driver (HEVD) como alvo. Nos artigos anteriores, cobrimos:
Configuração do laboratório, descrevendo as ferramentas e o ambiente necessários para depurar o kernel do Windows.
Negação de serviço (Denial of Service), onde realizamos um ataque inicial contra o HEVD.
Contorno (bypass) bem-sucedido de kASLR e SMEP, permitindo-nos executar uma shellcode simples em modo kernel. Neste artigo seremos capazes de obter uma shell com privilégios de SYSTEM, realizando uma escalação de privilégios local (Local Privilege Escalation) por meio do roubo de tokens de segurança. Também precisaremos restaurar com sucesso a execução do nosso sistema operacional após o ataque, para evitar qualquer travamento do sistema (Blue Screen of Death).
Roubo de tokens de segurança
Quando estamos atacando o kernel, pressupõe-se que já possuímos acesso não privilegiado à máquina-alvo. É por isso que o objetivo mais comum de um exploit é realizar a Escalação de Privilégios Local (Local Privilege Escalation ou LPE), o que significa obter privilégios totais no sistema operacional. Existem vários métodos que podem ser empregados para alcançar isso; a maioria deles abusa (ou faz uso indevido) do modelo de privilégios implementado pelo Windows.
No Windows, quando o sistema é inicializado, é criado um processo denominado System, sempre com o PID 4. Como esse processo pertence ao usuário SYSTEM, nós...

Cada processo possui uma estrutura EPROCESS.

Um dos elementos dessa estrutura é o token, que consiste em um tíquete concedido pelo processo LSASS.

O token é utilizado para realizar operações no sistema com base nas permissões a ele concedidas. Por exemplo, se um processo deseja ler um arquivo, o descritor de segurança desse arquivo verificará se o token do processo possui as permissões necessárias para tal. Esse mecanismo é conhecido como Lista de Controle de Acesso Discricionário (DACL, na sigla em inglês).
No Windows, o token SYSTEM possui todas as permissões concedidas sobre todos os objetos do sistema (arquivos, processos, dispositivos, pipes, etc.). É por isso que, se conseguirmos obter esse token e inseri-lo em um processo sem privilégios, esse processo passará a ter privilégios SYSTEM.
Para realizar essa operação, precisamos primeiro determinar o deslocamento (offset) do campo "Token" na estrutura EPROCESS:

Como você pode observar, ele está em _EPROCESS+0x0fc. Com isso, precisamos obter o descritor do processo SYSTEM:

Em seguida, precisamos obter o valor do token para o processo SYSTEM:

Agora, iniciamos um processo cmd.exe no sistema operacional alvo e obtemos os privilégios atuais:

Precisamos obter o descritor do processo cmd.exe:

Por fim, precisamos copiar o valor do token do processo SYSTEM para o processo cmd.exe. Vamos ver isso em ação:

Comece agora com o PTaaS da Fluid Attacks
Tags:
treinamento
exploit
vulnerabilidade
windows
Assine nossa newsletter
Mantenha-se atualizado sobre nossos próximos eventos e os últimos posts do blog, advisories e outros recursos interessantes.
Outros posts























