Índice

Título
Índice
Índice
Título

Ataques

HEVD: Elevação local de privilégio

cover-hevd-privilege-escalation
Andres Roldan

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...

NT Kernel & System

Cada processo possui uma estrutura EPROCESS.

EPROCESS structure

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

Token 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:

Get the offset of EPROCESS

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

Get SYSTEM process descriptor

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

SYSTEM process token

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

Obtaining privileges

Precisamos obter o descritor do processo cmd.exe:

cmd process descriptor

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

Copying token to cmd

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.

Reduza o risco sem atrasar suas entregas

Reduza o risco sem atrasar suas entregas

Resultados rápidos e precisos a partir de um único programa de segurança contínuo impulsionado por IA, scanners e pentesters.

Resultados rápidos e precisos a partir de um único programa de segurança contínuo impulsionado por IA, scanners e pentesters.