Atacando a Delegação Restrita para Elevar o Acesso
Apr 21, 2023
Este artigo completa uma série de artigos sobre Kerberos delegation. Antes de lê-lo, sugerimos que você se familiarize tanto com a Active Directory delegation quanto com a Kerberos delegation, e tenha lido as publicações anteriores da série que fornecem uma visão geral de como a resource-based constrained delegation e a unconstrained delegation são configuradas e como podem ser abusadas.
Conteúdo relacionado selecionado:
Este artigo explica como um ataque de constrained delegation permite que um adversário obtenha acesso elevado a serviços vitais.
Delegação Restrita
A delegação restrita permite que os administradores configurem quais serviços uma conta de usuário ou computador do Active Directory pode delegar e quais protocolos de autenticação podem ser usados. É configurada na aba Delegação para o objeto AD:
Quando a delegação restrita é configurada em uma conta, duas coisas acontecem nos bastidores:
- O atributo userAccountControl para o objeto é atualizado com a flag “TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION”.
- O atributo msDS-AllowedToDelegateTo é preenchido com o SPN especificado.
Ataque de Delegação Restrita
Em teoria, a delegação restrita limita o dano que poderia resultar se uma conta AD fosse comprometida. Mas a delegação restrita pode ser abusada: Um adversário que comprometa a senha em texto claro ou o hash da senha de uma conta configurada com delegação restrita a um serviço pode então se passar por qualquer usuário no ambiente para acessar esse serviço. Por exemplo, se a delegação restrita estiver configurada para um SPN do Microsoft SQL, um atacante poderia obter acesso privilegiado àquele banco de dados.
Como um Ataque se Desenrola
Vamos supor o seguinte:
- Conseguimos estabelecer uma posição em um ambiente de TI.
- Comprometemos uma conta com privilégios de administrador local em uma estação de trabalho.
- Usamos Mimikatz para obter um hash de senha deixado na memória após um login, e a conta associada (a conta 'notadmin') tem delegação restrita configurada.
Assim, tudo o que temos até agora é acesso à única máquina em que pousamos e o hash de senha de uma conta configurada para delegação restrita.
Passo 1. Recon
Para explorar a delegação restrita, precisamos de três coisas chave:
- Uma conta comprometida configurada com delegação restrita
- Uma conta privilegiada de destino para se passar ao solicitar acesso ao serviço
- Informações sobre a máquina que hospeda o serviço ao qual obteremos acesso
Nós temos o primeiro, então vamos pegar os outros dois.
1.1: Primeiro, vamos ver para o que a delegação restrita da conta 'notadmin' está configurada:
1.2: Agora sabemos que a delegação restrita está configurada para o SPN CIFS e LDAP no host SBPMLAB-DC2. Então, vamos entender exatamente o que é o host SBPMLAB-DC2 (mesmo que o nome já dê uma ideia!). Talvez a associação do grupo do computador nos diga algo.
1.3: Estamos com sorte: A máquina à qual este usuário pode delegar acesso é um controlador de domínio (DC). Agora vamos encontrar um bom usuário para se passar ao acessar este serviço. O seguinte comando comum do PowerShell irá enumerar os membros do grupo de Admins do Domínio:
Get-ADGroup ‘Domain Admins’ | Get-ADGroupMember
Podemos ver que a conta ‘KevinJ’ é membro dos Domain Admins, então agora temos todas as peças que precisamos para explorar a delegação restrita.
Passo 2. Obtendo Acesso
Usando uma ferramenta como Kekeo, podemos solicitar o ticket granting ticket (TGT) para a conta com delegação restrita configurada, executar a solicitação de serviço de concessão de ticket para a conta que queremos personificar e, em seguida, acessar o serviço alvo.
Tenha em mente que ainda não temos acesso ao compartilhamento de admin C$ no host de destino:
2.1. Usando Kekeo, solicitamos o TGT para a conta 'notadmin' usando o hash da sua senha:
2.2. Agora que temos o TGT, executamos a solicitação TGS para a conta que queremos personificar para o serviço alvo ao qual a conta 'notadmin' está restrita a:
2.3. Voltando ao Mimikatz, conseguimos usar Pass the Ticket para obter acesso ao serviço CIFS no host alvo:
Como você pode ver, após o ingresso ser importado, podemos navegar até o compartilhamento de administração C$ no controlador de domínio. Isso significa que poderíamos potencialmente roubar uma cópia do arquivo NTDS.dit e tentar quebrar as senhas dos usuários offline.
Protegendo contra Ataques Baseados em Delegação
Uma técnica crítica para se defender contra ataques relacionados à delegação é colocar contas sensíveis que não devem ser delegadas no grupo de Protected Users, ou marcar a caixa ‘Account is sensitive and cannot be delegated’ no Active Directory Users and Computers na aba da conta:
Para uma proteção mais ampla, considere a Netwrix Active Directory Security Solution. Ela oferece relatórios abrangentes que fornecem uma visão clara de onde estão configuradas as delegações irrestritas e restritas, bem como as contas de serviço específicas que estão restritas. Usando essas informações, você pode reduzir riscos e proteger seu ambiente de forma mais eficaz. Além disso, você pode detectar facilmente e automatizar sua resposta a ameaças sofisticadas e mitigar o impacto delas.
FAQ
O que é um ataque de delegação restrita?
Um ataque de delegação restrita é um tipo de ciberataque no qual um adversário obtém acesso não autorizado a um sistema ou serviço alvo, explorando as permissões concedidas a uma conta de serviço. Ao comprometer a conta de serviço ou interceptar e manipular o tráfego Kerberos entre serviços, o atacante pode se passar por um usuário e obter acesso não autorizado a outros serviços que a conta de serviço tem permissão para acessar. Esse tipo de ataque pode ser mais difícil de executar do que um ataque de delegação irrestrita, mas ainda representa uma ameaça séria à segurança da rede.
O que são delegação restrita e delegação irrestrita?
Delegação restrita e delegação irrestrita são duas maneiras pelas quais o protocolo de autenticação Kerberos pode ser configurado para permitir que um serviço se passe por um usuário para acessar outros serviços. A delegação irrestrita permite que um serviço se passe por um usuário para acessar qualquer outro serviço dentro de um domínio do Active Directory. A delegação restrita, por outro lado, limita o escopo da delegação especificando quais serviços um serviço pode acessar em nome de um usuário.
O que significa delegação irrestrita?
A delegação irrestrita é uma configuração de delegação Kerberos que permite a um serviço se passar por um usuário para acessar qualquer outro serviço dentro de um domínio do Active Directory. Esse tipo de delegação pode ser explorado por atacantes para se moverem lateralmente dentro de uma rede e obter acesso a dados ou sistemas sensíveis.
Por que a delegação irrestrita é ruim?
A delegação irrestrita é considerada ruim porque pode permitir que atacantes se movam lateralmente dentro de uma rede e obtenham acesso a dados ou sistemas sensíveis. Recomenda-se usar a delegação restrita em vez disso, que limita o escopo da delegação e reduz o risco de ataques bem-sucedidos.
Compartilhar em
Saiba Mais
Sobre o autor
Joe Dibley
Pesquisador de Segurança
Pesquisador de Segurança na Netwrix e membro da Equipe de Pesquisa de Segurança da Netwrix. Joe é um especialista em Active Directory, Windows e uma ampla variedade de plataformas de software empresarial e tecnologias, Joe pesquisa novos riscos de segurança, técnicas de ataque complexas e as respectivas mitigações e detecções.
Saiba mais sobre este assunto
Exemplo de Análise de Risco: Como Avaliar Riscos
O Triângulo da CIA e Sua Aplicação no Mundo Real
Criar usuários do AD em massa e enviar suas credenciais por e-mail usando PowerShell
Como adicionar e remover grupos AD e objetos nos grupos com PowerShell
Atributos do Active Directory: Último Logon