Abusing Tokens
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Se você não sabe o que são Tokens de Acesso do Windows, leia esta página antes de continuar:
Talvez você consiga escalar privilégios abusando dos tokens que já possui
Este é um privilégio que é detido por qualquer processo que permite a impersonação (mas não a criação) de qualquer token, desde que um identificador para ele possa ser obtido. Um token privilegiado pode ser adquirido de um serviço do Windows (DCOM) induzindo-o a realizar autenticação NTLM contra um exploit, permitindo posteriormente a execução de um processo com privilégios de SYSTEM. Esta vulnerabilidade pode ser explorada usando várias ferramentas, como juicy-potato, RogueWinRM (que requer winrm desativado), SweetPotato e PrintSpoofer.
É muito semelhante ao SeImpersonatePrivilege, usará o mesmo método para obter um token privilegiado. Então, este privilégio permite atribuir um token primário a um novo/processo suspenso. Com o token de impersonação privilegiado, você pode derivar um token primário (DuplicateTokenEx). Com o token, você pode criar um novo processo com 'CreateProcessAsUser' ou criar um processo suspenso e definir o token (em geral, você não pode modificar o token primário de um processo em execução).
Se você tiver este token ativado, pode usar KERB_S4U_LOGON para obter um token de impersonação para qualquer outro usuário sem conhecer as credenciais, adicionar um grupo arbitrário (administradores) ao token, definir o nível de integridade do token como "médio" e atribuir este token ao thread atual (SetThreadToken).
O sistema é induzido a conceder todo o controle de acesso de leitura a qualquer arquivo (limitado a operações de leitura) por este privilégio. É utilizado para ler os hashes de senha das contas de Administrador local do registro, após o que, ferramentas como "psexec" ou "wmiexec" podem ser usadas com o hash (técnica Pass-the-Hash). No entanto, esta técnica falha sob duas condições: quando a conta de Administrador Local está desativada ou quando uma política está em vigor que remove direitos administrativos de Administradores Locais conectando-se remotamente. Você pode abusar deste privilégio com:
seguindo IppSec em https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec
Ou como explicado na seção escalando privilégios com Operadores de Backup de:
Permissão para acesso de gravação a qualquer arquivo do sistema, independentemente da Lista de Controle de Acesso (ACL) do arquivo, é fornecida por este privilégio. Ele abre inúmeras possibilidades para escalonamento, incluindo a capacidade de modificar serviços, realizar DLL Hijacking e definir debuggers via Opções de Execução de Arquivo de Imagem, entre várias outras técnicas.
SeCreateTokenPrivilege é uma permissão poderosa, especialmente útil quando um usuário possui a capacidade de impersonar tokens, mas também na ausência de SeImpersonatePrivilege. Esta capacidade depende da habilidade de impersonar um token que representa o mesmo usuário e cujo nível de integridade não excede o do processo atual.
Pontos Chave:
Impersonação sem SeImpersonatePrivilege: É possível aproveitar SeCreateTokenPrivilege para EoP ao impersonar tokens sob condições específicas.
Condições para Impersonação de Token: A impersonação bem-sucedida requer que o token alvo pertença ao mesmo usuário e tenha um nível de integridade que seja menor ou igual ao nível de integridade do processo que tenta a impersonação.
Criação e Modificação de Tokens de Impersonação: Os usuários podem criar um token de impersonação e aprimorá-lo adicionando um SID (Identificador de Segurança) de um grupo privilegiado.
Este privilégio permite carregar e descarregar drivers de dispositivo com a criação de uma entrada de registro com valores específicos para ImagePath
e Type
. Como o acesso de gravação direto ao HKLM
(HKEY_LOCAL_MACHINE) é restrito, HKCU
(HKEY_CURRENT_USER) deve ser utilizado em vez disso. No entanto, para tornar HKCU
reconhecível pelo kernel para configuração de driver, um caminho específico deve ser seguido.
Este caminho é \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
, onde <RID>
é o Identificador Relativo do usuário atual. Dentro de HKCU
, todo esse caminho deve ser criado, e dois valores precisam ser definidos:
ImagePath
, que é o caminho para o binário a ser executado
Type
, com um valor de SERVICE_KERNEL_DRIVER
(0x00000001
).
Passos a Seguir:
Acesse HKCU
em vez de HKLM
devido ao acesso de gravação restrito.
Crie o caminho \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
dentro de HKCU
, onde <RID>
representa o Identificador Relativo do usuário atual.
Defina o ImagePath
para o caminho de execução do binário.
Atribua o Type
como SERVICE_KERNEL_DRIVER
(0x00000001
).
Mais maneiras de abusar desse privilégio em https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
Isso é semelhante ao SeRestorePrivilege. Sua função principal permite que um processo assuma a propriedade de um objeto, contornando a exigência de acesso discricionário explícito por meio da concessão de direitos de acesso WRITE_OWNER. O processo envolve primeiro garantir a propriedade da chave de registro pretendida para fins de escrita, e depois alterar o DACL para permitir operações de escrita.
Este privilégio permite depurar outros processos, incluindo ler e escrever na memória. Várias estratégias para injeção de memória, capazes de evadir a maioria das soluções de antivírus e prevenção de intrusões em hosts, podem ser empregadas com este privilégio.
Você pode usar ProcDump do SysInternals Suite para capturar a memória de um processo. Especificamente, isso pode se aplicar ao processo Local Security Authority Subsystem Service (LSASS), que é responsável por armazenar credenciais de usuário uma vez que um usuário tenha feito login com sucesso em um sistema.
Você pode então carregar este dump no mimikatz para obter senhas:
Se você quiser obter um shell NT SYSTEM
, você pode usar:
Os tokens que aparecem como Desativados podem ser ativados, você realmente pode abusar de tokens Ativados e Desativados.
Se você tiver tokens desativados, pode usar o script EnableAllTokenPrivs.ps1 para ativar todos os tokens:
Ou o script incorporado neste post.
Tabela completa de privilégios de token em https://github.com/gtworek/Priv2Admin, o resumo abaixo listará apenas maneiras diretas de explorar o privilégio para obter uma sessão de admin ou ler arquivos sensíveis.
Dê uma olhada nesta tabela definindo tokens do Windows: https://github.com/gtworek/Priv2Admin
Dê uma olhada em este artigo sobre privesc com tokens.
Privilégio | Impacto | Ferramenta | Caminho de execução | Observações |
---|---|---|---|---|
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
SeAssignPrimaryToken
Admin
Ferramenta de terceiros
"Isso permitiria que um usuário impersonasse tokens e fizesse privesc para o sistema nt usando ferramentas como potato.exe, rottenpotato.exe e juicypotato.exe"
Obrigado Aurélien Chalot pela atualização. Vou tentar reformular isso para algo mais parecido com uma receita em breve.
SeBackup
Ameaça
Comandos embutidos
Ler arquivos sensíveis com robocopy /b
- Pode ser mais interessante se você puder ler %WINDIR%\MEMORY.DMP
- SeBackupPrivilege
(e robocopy) não são úteis quando se trata de arquivos abertos.
- Robocopy requer tanto SeBackup quanto SeRestore para funcionar com o parâmetro /b.
SeCreateToken
Admin
Ferramenta de terceiros
Criar token arbitrário incluindo direitos de admin local com NtCreateToken
.
SeDebug
Admin
PowerShell
Duplicar o token lsass.exe
.
Script a ser encontrado em FuzzySecurity
SeLoadDriver
Admin
Ferramenta de terceiros
1. Carregar driver de kernel com falha como szkg64.sys
2. Explorar a vulnerabilidade do driver
Alternativamente, o privilégio pode ser usado para descarregar drivers relacionados à segurança com o comando embutido ftlMC
. i.e.: fltMC sysmondrv
1. A vulnerabilidade szkg64
está listada como CVE-2018-15732
2. O szkg64
código de exploração foi criado por Parvez Anwar
SeRestore
Admin
PowerShell
1. Iniciar PowerShell/ISE com o privilégio SeRestore presente. 2. Habilitar o privilégio com Enable-SeRestorePrivilege). 3. Renomear utilman.exe para utilman.old 4. Renomear cmd.exe para utilman.exe 5. Bloquear o console e pressionar Win+U
A ataque pode ser detectado por alguns softwares antivírus.
Método alternativo depende de substituir binários de serviço armazenados em "Program Files" usando o mesmo privilégio
SeTakeOwnership
Admin
Comandos embutidos
1. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. Renomear cmd.exe para utilman.exe
4. Bloquear o console e pressionar Win+U
A ataque pode ser detectado por alguns softwares antivírus.
Método alternativo depende de substituir binários de serviço armazenados em "Program Files" usando o mesmo privilégio.
SeTcb
Admin
Ferramenta de terceiros
Manipular tokens para ter direitos de admin local incluídos. Pode exigir SeImpersonate.
A ser verificado.