
Driver em Modo Kernel para Elevação de Privilégios de Processos
EPROCESS por um token do sistema, elevando efetivamente os privilégios do processo. O driver é projetado para ser usado com uma aplicação em modo de usuário que envia um ID de processo para o driver através de um IOCTL.Quando um processo é criado, ele herda o token do usuário que o criou. O token é usado pelo sistema para determinar quais ações o processo pode realizar. O token contém informações sobre o identificador de segurança (SID) do usuário, associações de grupo e privilégios.

O membro Token reside no deslocamento 0x4b8 na estrutura _EPROCESS, que é uma estrutura de dados que representa um objeto de processo. O membro Token é definido na estrutura _EX_FAST_REF, que é um tipo union que pode armazenar um ponteiro para um objeto do kernel ou uma contagem de referência, dependendo do tamanho do ponteiro. O deslocamento da estrutura _EX_FAST_REF dentro de _EPROCESS depende da versão específica do Windows em uso, mas normalmente está localizado em um deslocamento de 0x4b8 em versões recentes do Windows..
Deslocamentos do token por número de compilação do Windows para arquiteturas x64 e x86
A estrutura _EX_FAST_REF no Windows contém três membros: Object, RefCount e Value

Para exibir o token de processo em _EX_FAST_REF, passamos o endereço da estrutura _EX_FAST_REF que contém o token, que normalmente está localizado em um deslocamento de 0x4b8 na estrutura _EPROCESS."

Você pode criar um processo privilegiado ou elevar um ID de processo já existente.

Para efeitos desta explicação, vamos focar na segunda opção e usar o CMD como exemplo

Token herdado

enviar o ID do processo para o driver através de um IOCTL

Após receber o PID da aplicação em modo de usuário, o driver o utiliza para obter um ponteiro para a estrutura _EPROCESS do processo alvo. O driver então acessa o membro Token da estrutura _EPROCESS para obter um ponteiro para o token do processo, que substitui pelo token do sistema, alterando efetivamente o contexto de segurança do processo para o do sistema. No entanto, se o driver não localizar corretamente o membro Token dentro da estrutura _EPROCESS ou se o deslocamento do Token for diferente de 0x4b8 , o driver pode travar o sistema ou o processo alvo ,este problema será corrigido nas próximas atualizações .

token do cmd após

| Deslocamentos x64 | Deslocamentos x86 |
|---|
| 0x0160 (late 5.2) | 0x0150 (3.10) |
| 0x0168 (6.0) | 0x0108 (3.50 to 4.0) |
| 0x0208 (6.1) | 0x012C (5.0) |
| 0x0348 (6.2 to 6.3) | 0xC8 (5.1 to early 5.2) |
| 0x0358 (10.0 to 1809) | 0xD8 (late 5.2) |
| 0x0360 (1903) | 0xE0 (6.0) |
| 0x04B8 | 0xF8 (6.1) |
| 0xEC (6.2 to 6.3) | |
| 0xF4 (10.0 to 1607) | |
| 0xFC (1703 to 1903) | |
| 0x012C |

os privilégios, grupos e direitos do processo
