Explorando Kerberos
Trago aqui um breve estudo sobre o Kerberos, serviço responsável pela autenticação em domínios Windows.
O que é Kerberos?
Kerberos é o serviço de autenticação padrão para domínios Windows. A ideia é que ele seja mais "seguro" que o NTLM, utilizando autorização por tickets, bem como uma criptografia mais avançada. Embora o NTLM possua bem mais vetores de ataque, o Kerberos também possui diversas vulnerabilidades.
Terminologia
Ticket Granting Ticket (TGT) - Um TGT é um ticket de autenticação utilizado para solicitar tickets de serviço para o TGS, para recursos específicos do domínio.
Key Distribution Center (KDC) - O Key Distribution Center é um serviço de emissão de TGTs e tickets de serviço, que consiste no Authentication Service e o Ticket Granting Service.
Authentication Service (AS) - O Authentication Service solicita TGTs para serem usados pelo TGS no domínio, com o intuito de solicitar acesso a outras máquinas e tickets de serviço.
Ticket Granting Service (TGS) - O Ticket Granting Service recebe o TGT e retorna um ticket para uma máquina no domínio.
Service Principal Name (SPN) - Um Service Principal Name é um identificador dado a uma instância de serviço para associá-la a uma conta de serviço do domínio. O Windows requer que os serviços possuam uma conta de serviço do domínio.
KDC Long Term Secret Key (KDC LT Key) - A KDC Key é baseada na conta de serviço KRBTGT e é utilizada para criptografar o TGT e assinar o PAC.
Client Long Term Secret Key (Client LT Key) - A Client Key é baseada no computador ou conta de serviço e é utilizada para checar o timestamp criptografado e criptografar a Session Key.
Service Long Term Secret Key (Service LT Key) - A Service Key é baseada na conta de serviço e é utilizada para criptografar a parte do serviço do ticket de serviço e assinar o PAC.
Session Key - Emitida pelo KDC quando um TGT é emitido. O usuário fornece a Session Key para o KDC junto ao TGT quando solicita um ticket de serviço.
Privilege Attribute Certificate (PAC) - O PAC mantém todas as informações relevantes do usuário e é enviado junto com o TGT para o KDC, para que seja assinado pelo LT Key e pelo KDC LT Key, com o intuito de validar o usuário.
Pré-autenticação AS-REQ
O AS-REQ é uma etapa da autenticação Kerberos, que se inicia quando um usuário solicita um TGT ao KDC. Para validar o usuário e criar um TGT para ele, o KDC deve seguir esses passos. O primeiro deles é o usuário criptografar a NT Hash do timestamp e enviar para o AS. O KDC, então, tenta descriptografar o timestamp utilizando a NT Hash do usuário. Caso a descriptografia seja bem-sucedida, O KDC emite um TFT junto com a Session Key paa o usuário.
Conteúdo do TGT
Para entender como os tickets de serviço são criados e validados, precisamos iniciar analisando de onde os tickets vem; o TFT é fornecido pelo usuário para o KDC e, então, o KDC valida o TGT e retorna o ticket de serviço.
Conteúdo do Ticket de Serviço
Para entender como a autenticação Kerberos funciona, precisamos entender o que esses tickets possuem e como são validados. Um ticket de serviço possui duas partes: a parte fornecida pelo serviço e a parte fornecida pelo usuário:
Parte do serviço: Detalhes do usuário, Session Key, criptografia do ticket com a NTLM Hash da conta de serviço.
Parte do usuário: Timestamp da validade, Session Key, criptografia com a session key do TGT.
Visão geral da Autenticação Kerberos
AS-REQ - 1. O cliente solicita um ticket de autenticação ou um Ticket Granting Ticket (TGT);
AS-REP - 2. O Key Distribution Center (KDC) verifica o cliente e envia um TGT criptografado de volta para o cliente;
TGS-REQ - 3. O cliente envia o TGT criptografado para o Ticket Granting Server (TGS) com o Service Principal Name (SPN) do serviço solicitado pelo cliente;
TGS-REP - 4. O Key Distribution Center (KDC) verifica o TGT do usuário e se o usuário possui acesso ao serviço, então envia uma Session Key válida do serviço para o cliente;
AP-REQ - 5. O cliente solicita o serviço e envia uma Session Key válida para provar que o usuário tinha acesso;
AP-REP - 6. O serviço fornece o acesso.
Ataques comuns ao Kerberos
Last updated