Ideias, informações e conhecimentos compartilhados pela equipe
de Investigação, Desenvolvimento e Inovação da BASE4 Security.
No Active Directory (AD), a delegação restrita é um recurso de segurança que permite que um serviço (conta de serviço ou servidor) atue em nome de um usuário somente para serviços específicos definidos. A delegação restrita é configurada para evitar o uso indevido de credenciais e limitar a possível exposição das credenciais.
No entanto, essa funcionalidade apresentou vulnerabilidades críticas. Essas falhas podem permitir que invasores mal-intencionados elevem privilégios e acessem indevidamente recursos confidenciais.
Uso
Imagine um ambiente em que um servidor da Web precise acessar um banco de dados SQL em nome de usuários autenticados. Com a delegação restrita, você configuraria a conta de serviço do servidor Web de modo que ela só pudesse delegar credenciais ao serviço SQL. Isso impede que essa conta acesse outros serviços não relacionados. Em outras palavras:
• O servidor Web, com delegação restrita configurada, pode usar o tíquete Kerberos do usuário para solicitar um tíquete de serviço para o banco de dados SQL.
• O Active Directory verifica as configurações de delegação restrita do servidor Web para garantir que ele esteja autorizado a delegar credenciais somente para o banco de dados SQL SPN.
Exemplo
• Um usuário, John, autentica-se no serviço da Web (executado na conta de serviço "webservice") usando um mecanismo de autenticação (não compatível com Kerberos).
• O serviço da Web solicita um tíquete do Key Distribution Center (KDC) para a conta de John sem fornecer uma senha, como a conta "webservice".
• O KDC verifica o valor de userAccountControl do webservice para o atributo TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION e se a conta do John não está bloqueada para delegação. Se estiver OK, ele retorna um tíquete encaminhável para a conta do John (S4U2Self).
• Em seguida, o serviço retorna esse tíquete ao KDC e solicita um tíquete de serviço para o serviço "CIFS/arg-mssql.argentina.contoso.corp".
• O KDC verifica o campo "msDS-AllowedToDelegateTo" na conta do serviço da Web. Se o serviço estiver listado, ele retornará um tíquete de serviço para "arg-mssql" (S4U2Proxy).
• O serviço da Web agora pode se autenticar no CIFS em "arg-mssql" como John usando o TGS fornecido.
Enumeração
Para enumerar os usuários com delegação restrita, podemos usar o PowerView. Execute o seguinte comando em uma sessão do PowerShell:
Para executar a varredura, podemos usar o seguinte comando:
O comando acima é uma execução do Rubeus (uma ferramenta pós-exploração para lidar com tíquetes Kerberos no Windows). Esse comando específico usa a funcionalidade S4U (Service for User) para executar uma delegação restrita para obter um tíquete de serviço (TGS) para outro serviço em nome de um usuário:
• /user:webservice: especifica o nome do usuário do serviço (conta de serviço) a ser usado. Nesse caso, o usuário é "webservice".
• /aes256:7d214...: Fornece a chave AES256 do usuário "webservice". Essa chave é necessária para gerar tíquetes Kerberos.
• /impersonateuser:Administrator: especifica o usuário a ser personificado, nesse caso "Administrador".
• /msdsspn: "CIFS/arg-mssql.argentina.contoso.corp: Define o Service Principal Name (SPN) do serviço que você deseja acessar. Aqui, o SPN é para o serviço CIFS no servidor "arg-mssql.argentina.contoso.corp".
• /pptt: significa "Pass-The-Ticket". Esse parâmetro diz ao Rubeus para injetar o tíquete TGS gerado diretamente na sessão atual, efetivamente "passando" o tíquete.
Após a execução, o tíquete é importado com sucesso:
Ao executar o comando a seguir, podemos ver que o tíquete existe:
Dessa forma, podemos acessar o sistema de arquivos em "arg-mssql", demonstrando que o movimento lateral é possível usando essa técnica:
Mitigação
Configurações da conta
Uma técnica de defesa contra ataques relacionados à delegação é colocar as contas confidenciais que não devem ser delegadas no grupo Usuários Protegidos ou marcar a caixa "A conta é confidencial e não pode ser delegada" em "Usuários e computadores do Active Directory" na guia "Conta".
Monitorar os registros de segurança
Implemente uma auditoria detalhada dos registros de segurança do Windows, especialmente dos eventos relacionados ao Kerberos:
• 4768 (Concessão de tíquete Solicitação de tíquete)
• 4769 (Solicitação de tíquete de serviço)
• 4770 (renovação do TGT)
• 4771 (Falha na pré-autenticação do Kerberos)
Usar ferramentas SIEM
As ferramentas de gerenciamento de eventos e informações de segurança (SIEM) podem ajudar a detectar padrões anômalos e comportamentos suspeitos.
Rotação regular de senhas e chaves
Altere periodicamente as senhas e as chaves das contas de serviço e os privilégios elevados para reduzir a janela de oportunidade para os invasores.