🧑‍💻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

A terminologia parece ser um pouco confusa, mas é importante sabermos o que cada item é e para que serve, para entendermos o processo de autenticação dos serviços.

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

Kerbrute - Ferramenta para enumerar usuários em um domínio via pré-autenticação Kerberos;

Pass the Ticket (PTT) - Similar ao Pass the Hash (PTH), porém ao invés de utilizar hashes para solicitar um ticket, o ticket em si é roubado e utilizado para se passar pelo usuário;

Kerberoasting - Ataque que consiste na solicitação de tickets, extração e quebra das hashes e movimentação lateral;

AS-REP Roasting - Ataque que explora a recuperação de hashes de usuários sem passar pela etapa de pré-autenticação Kerberos;

Golden Ticket - Geração de um TGT da conta KRBTGT, que pode ser utilizado para gerar qualquer TGS.

Last updated