Impersonação de tokens no Windows: guia do defensor para detecção e endurecimento
Impersonação de tokens do Windows (ATT&CK T1134) para defensores: como funciona, detecção com Event IDs e EDR, e passos de endurecimento.
No Windows, quase toda decisão de segurança se resume, em última instância, a um pequeno objeto do kernel: o token de acesso. Quando um atacante que já tem uma posição na rede quer passar de uma conta de serviço para SYSTEM, ou agir como administrador de domínio sem conhecer a senha daquela pessoa, a impersonação e a manipulação de tokens são uma das técnicas clássicas a que ele recorre. Este artigo é escrito para defensores. O objetivo não é ensinar ninguém a comprometer uma máquina, mas explicar em nível conceitual o que são tokens, por que a impersonação é um recurso legítimo e muito usado e, acima de tudo, como detectar o abuso e endurecer o parque para que a técnica se torne barulhenta, frágil e fácil de deter. Tudo o que segue corresponde à técnica do MITRE ATT&CK T1134 (Access Token Manipulation).
O que é de fato um token de acesso do Windows
Cada processo e thread no Windows carrega um token de acesso. Pense nele como um crachá assinado que responde à pergunta que o kernel faz em toda ação protegida: quem é você e o que pode fazer? O token contém o identificador de segurança (SID) do usuário, os SIDs de todos os grupos a que ele pertence, uma lista de privilégios habilitados e desabilitados (como SeDebugPrivilege ou SeImpersonatePrivilege), um nível de integridade e outros atributos. Quando um thread tenta abrir um arquivo, conectar-se a um pipe nomeado ou iniciar um serviço, o Monitor de Referência de Segurança compara o token com o descritor de segurança do objeto. Isso não é um bug nem um backdoor: é a fundação da autorização do Windows e funciona exatamente como projetado.
Dois tipos de token importam aqui. Um token primário é anexado a um processo e define sua identidade de base. Um token de impersonação permite que um único thread aja temporariamente em nome de outro contexto de segurança. A impersonação existe por bons motivos: um servidor web, de arquivos ou de banco de dados frequentemente precisa realizar trabalho como o cliente que se conectou, para que as verificações de acesso reflitam o usuário real e não a conta de serviço altamente privilegiada. O Windows expõe isso por meio de APIs e privilégios documentados. O abuso acontece quando um atacante reutiliza esse mesmo maquinário para tomar emprestada uma identidade mais poderosa do que a que legitimamente possui.
Como impersonação e manipulação funcionam em alto nível
Conceitualmente, o abuso de tokens segue alguns poucos padrões. No primeiro, um atacante que controla um processo com direitos de impersonação convence um cliente mais privilegiado — muitas vezes um serviço ou o próprio sistema operacional — a se autenticar contra algo que ele controla, captura o token de impersonação resultante e o adota. No segundo, um atacante com direitos suficientes duplica um token existente pertencente a outro usuário logado e inicia um novo processo com ele. No terceiro, privilégios já presentes em um token (como direitos de depuração ou de impersonação) são aproveitados para alcançar um processo mais privilegiado e assumir seu contexto.
O fio comum é que nenhuma senha é roubada e não necessariamente se explora uma falha de corrupção de memória. O atacante usa recursos previstos do Windows com uma identidade que não deveria manejar. É exatamente por isso que a técnica é atraente para adversários e por isso a prevenção baseada em assinaturas, sozinha, é insuficiente: as chamadas de API parecem comuns. A defesa precisa se apoiar no contexto: qual conta, a partir de qual linhagem de processo, em que momento, fazendo o quê em seguida.
Superfície de ataque: os privilégios que tornam isso possível
Um punhado de privilégios do Windows habilita o abuso de tokens de forma desproporcional, e inventariar quem os possui é uma das atividades defensivas de maior valor. SeImpersonatePrivilege e SeAssignPrimaryTokenPrivilege permitem que um processo imite ou atribua identidades de token e são, por padrão, concedidos a contas de serviço como LOCAL SERVICE, NETWORK SERVICE e contas que executam IIS ou SQL Server. SeDebugPrivilege permite abrir praticamente qualquer processo, inclusive os altamente privilegiados, e quase nunca deveria estar nas mãos de usuários comuns. SeCreateTokenPrivilege é ainda mais sensível e praticamente nunca é necessário para aplicações normais.
Como esses privilégios são usados legitimamente, a pergunta defensiva não é 'podemos remover a impersonação do Windows' — não dá — mas sim 'quais contas não de serviço, interativas ou de baixa confiança acumularam esses direitos, e podemos retirá-los?' A proliferação de privilégios em contas de serviço, grupos de administradores locais permissivos demais e credenciais compartilhadas são o que transforma um único processo comprometido de baixo privilégio em um problema para todo o domínio.
Detecção: os logs e eventos que importam
O sinal isolado mais útil é o log de segurança do Windows. Logons bem-sucedidos são registrados como evento 4624, e o campo tipo de logon é crítico: o tipo 9 (NewCredentials) e logons de impersonação incomuns merecem escrutínio, sobretudo quando se originam de contas de serviço ou de máquina que depois agem como administradores humanos. O evento 4672 ('Privilégios especiais atribuídos a novo logon') dispara sempre que uma sessão recebe privilégios sensíveis como SeDebugPrivilege ou SeImpersonatePrivilege; uma linha de base de quais contas normalmente o disparam transforma anomalias em alertas. O evento 4688 (criação de processo) com auditoria de linha de comando permite reconstruir a linhagem de processos: uma conta de serviço que inicia cmd.exe ou powershell.exe como SYSTEM pouco depois de um evento de impersonação é uma pista forte.
Onde você tiver o Sysmon implantado, o ID de evento 1 (criação de processo) enriquece a linhagem com hashes e detalhes do pai, o ID de evento 8 (CreateRemoteThread) e o ID de evento 10 (ProcessAccess) revelam acessos entre processos a alvos sensíveis como lsass.exe, e o ID de evento 25 (adulteração de processo) sinaliza manipulação. Plataformas EDR modernas acrescentam telemetria em nível de token diretamente: podem relatar quando a identidade efetiva de um thread diverge do dono do processo, quando um token é duplicado e quando um token privilegiado é usado para criar um processo filho. A arte defensiva está em correlacionar tudo isso em uma história, em vez de alertar sobre qualquer chamada isolada de aparência benigna.
Engenharia de detecção: transformar telemetria em alertas
Detecções eficazes são comportamentais e correlacionadas. Regras de alto valor incluem: uma conta de serviço (LOCAL/NETWORK SERVICE ou a identidade de um pool de aplicativos) tornando-se pai de um shell interativo; um evento 4672 de privilégios especiais para uma conta que nunca precisou legitimamente desses privilégios; um processo cujo SID de token de thread não corresponde ao SID de token de processo realizando ações sensíveis; e qualquer handle aberto para lsass.exe com direitos de acesso que permitam ler ou duplicar tokens a partir de um processo que não seja um produto de segurança conhecido. Enriqueça cada alerta com o nível do ativo, o tipo de conta e o histórico recente de autenticação para que os analistas façam a triagem rapidamente.
Construa essas regras contra uma linha de base. A maioria dos ambientes tem um conjunto pequeno e estável de processos que imitam legitimamente: agentes de backup, servidores web, motores de banco de dados, ferramentas de gestão. Enumere-os, coloque o comportamento esperado explicitamente em lista de permissões e alerte sobre a cauda longa. Combine os alertas com resposta automatizada onde você confia nela: isolar um host, desabilitar uma sessão ou forçar a reautenticação de um administrador em camadas pode conter o movimento lateral antes que ele se espalhe.
Mitigação e endurecimento
A prevenção começa pelo menor privilégio. Audite quais contas possuem SeImpersonatePrivilege, SeAssignPrimaryTokenPrivilege, SeDebugPrivilege e SeCreateTokenPrivilege, e remova-os de tudo que não os exija estritamente. Use as políticas de atribuição de direitos de usuário na diretiva de grupo para manter os privilégios sensíveis fixados em um conjunto mínimo. Adote um modelo de administração em camadas: credenciais de domínio e de alto valor nunca devem fazer logon interativo em estações de trabalho de camada inferior, pois um token roubado ou impersonado só é tão perigoso quanto as identidades presentes naquela máquina.
Proteja as credenciais privilegiadas na origem. Adicione as contas sensíveis ao grupo Usuários Protegidos e marque-as como 'confidencial e não pode ser delegada' para que seus tokens não sejam armazenados em cache nem delegados onde possam ser abusados. Habilite o Credential Guard e a proteção do LSASS (RunAsPPL / LSASS como processo protegido) para tornar muito mais difícil ler ou duplicar material de credenciais e tokens da memória. Restrinja os direitos de administrador local com uma solução como o LAPS para que um único endpoint comprometido não conceda acesso de administrador reutilizável em toda a frota. Por fim, mantenha os sistemas atualizados: vários caminhos de escalonamento de privilégios que terminam em abuso de tokens começam com um serviço sem patch executando com direitos de impersonação.
Armadilhas comuns e pontos cegos
O maior erro dos defensores é supor que, por ser a impersonação um recurso normal do Windows, ela não pode ser monitorada. Pode — mas só se a auditoria de linha de comando e de criação de processos estiver de fato habilitada, se o Sysmon ou o EDR estiverem implantados de forma consistente e se os logs forem enviados para fora do host a um SIEM onde a correlação é possível. Uma segunda armadilha é a fadiga de alertas: disparar em cada 4672 sem uma linha de base afoga os analistas e os treina a ignorar o sinal. Uma terceira é a mistura de camadas: permitir que um administrador de domínio execute ferramentas em uma estação comum 'só desta vez' desfaz boa parte do seu endurecimento, porque o token que ali aterrissa pode ser tomado emprestado. Por fim, não esqueça as contas de serviço: costumam ser superprivilegiadas, raramente rotacionadas e quase nunca vigiadas tão de perto quanto as contas humanas, o que as torna a plataforma de lançamento preferida para o abuso de tokens.
Lista de verificação defensiva
Use isto como base inicial e adapte ao seu ambiente: (1) Inventarie toda conta e processo que possua SeImpersonatePrivilege, SeAssignPrimaryTokenPrivilege, SeDebugPrivilege e SeCreateTokenPrivilege, e pode sem dó. (2) Habilite a auditoria de criação de processos (4688) com linhas de comando, e audite o uso de privilégios especiais (4672). (3) Implante o Sysmon ou EDR com regras para acesso entre processos ao lsass.exe e duplicação de tokens. (4) Envie todos os logs de segurança a um SIEM e construa regras de correlação baseadas em linha de base. (5) Implemente administração em camadas e proíba logons de alto valor em hosts de camada inferior. (6) Adicione as contas privilegiadas aos Usuários Protegidos e marque-as como não delegáveis. (7) Ative o Credential Guard e a proteção do LSASS. (8) Implante o LAPS para eliminar as senhas compartilhadas de administrador local. (9) Aplique patches prontamente, priorizando os serviços que executam com privilégios de impersonação. (10) Ensaie a resposta: isolamento, revogação de sessão e reautenticação forçada.
Perguntas frequentes
Desabilitar a impersonação é uma opção? Não. A impersonação é fundamental para a forma como os serviços do Windows atendem clientes com segurança; removê-la quebraria IIS, SQL Server, compartilhamento de arquivos e inúmeras aplicações. A abordagem correta é menor privilégio mais detecção, não remoção. Se a detecção é comportamental, terei falsos positivos? Alguns, no início. É por isso que a linha de base importa: enumere os impersonadores legítimos do seu ambiente, coloque-os explicitamente em lista de permissões e alerte sobre desvios. Em poucas semanas o ruído cai bruscamente e os alertas restantes são de alto sinal.
Conclusão
A impersonação e a manipulação de tokens são poderosas justamente porque se escondem dentro de funcionalidade legítima do Windows: sem senha quebrada, sem exploit evidente, apenas uma identidade tomada emprestada. É exatamente por isso que os defensores devem tratá-la como um problema de detecção e endurecimento, e não como algo a ser bloqueado por um único controle. Inventarie e pode os privilégios que a tornam possível, habilite a auditoria que a torna visível, correlacione a telemetria em alertas baseados em comportamento e imponha um modelo em camadas para que um token emprestado não alcance as joias da coroa. Faça isso de forma consistente e uma técnica de que os adversários dependem para o escalonamento furtivo de privilégios se tornará um dos movimentos mais barulhentos e mais contíveis que eles podem fazer.
