Windows Access Token - Exploit

O que é Windows Access Token?

Windows Access Token é o principal elemento no processo de autenticação, e o token é criado e gerenciado pelo serviço LSASS - Local Security Authority Subsystem Service. 

O token de autenticação é usado para atribuir o contexto de segurança de um usuário no acesso a um recurso de rede ou sistema. Depois que o usuário é autenticado, todas as vezes em que solicita um recurso de sistema ou rede, o token é utilizado, evitando que a todo momento a credencial tenha que ser usada. 

O token de acesso é gerado pelo winlogon.exe quando o usuário é autenticado. O token possui a identidade e os privilégios da conta de usuário associada. Depois o token é associado ao processo userinit.exe, e todos os processos iniciados pelo usuário vai herdar a cópia do token e ser executado dentro do contexto de segurança da conta do usuário. 

O nível de segurança associado a um token pode ser:

Impersonate-level: são tokens criados a partir de login não-interativo, geralmente através de serviço específico ou login no domínio. 

Delegate-level: são tokens criados a partir de login interativo seja o login local ou remoto através do RDP. 

O impersonate token só pode ser usado para "impersonalizar" token do sistema local (máquina local)

O Delegate token pode ser usado para "impersonalizar" tokens em qualquer sistema. 

No ataque de impersonalizar o token, os seguintes privilegios são necessário para ter sucesso na exploração: 

SeAssignPrimaryToken - permite o usuário impersonalizar um token.

SeCreateToken - permite o usuário criar um token arbitrário com permissão administrativa.

SeImpersonatePrivilege - permite o usuário criar um processo sob o contexto de segurança de outro usuário que tem privilégio administativo. 

Impersonate Attack with Metasploit

A técnica de impersonalizar um token e obter acesso privilegiado é uma etapa de exploração realizada quando já se tem acesso a máquina-alvo. No cenário mostrado abaixo, a aplicação Rejetto é vulnerável e será explorada para obter acesso interno ao servidor. Usando o módulo exploit/windows/http/rejettp_hfs_exec


A sessão do meterpreter é estabelecida com um usuário local sem privilégio, conforme pode ser visto abaixo. 


Dentre os privilégios do usuário, SeImpersonatePrivilege nos dá a possibilidade de executar o ataque pois permite que o usuário criar um processo com privilégios elevados. 

A execução do ataque pode ser feita com o módulo Incognito do Metasploit executando o comando "load incognito" seguido de "list_tokens -u


Existem 2 contas com token do tipo Delegation que permite usar o token para acesso em qualquer sistema. 

Executando o ataque com o comando impersonate_token user [nome da conta do usuário] 


Listando os privilégios da conta Administrator


Agora ao listar os tokens disponíveis, aparecem outros como NT AUTHORITY\SYSTEM

Isso concluí a demostração para elevar privilégio através do Impersonate Attack Token. 


Referências

[+] Documentação da Microsoft sobre Token 

https://docs.microsoft.com/en-us/windows/win32/com/delegation-and-impersonation


Comentários

Postagens mais visitadas