12 KiB
Autenticação Kerberos
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Verifique os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.
Esta informação foi extraída do post: https://www.tarlogic.com/en/blog/how-kerberos-works/
Kerberos (I): Como funciona o Kerberos? - Teoria
20 - MAR - 2019 - ELOY PÉREZ
O objetivo desta série de posts é esclarecer como o Kerberos funciona, mais do que apenas apresentar os ataques. Isso ocorre porque, em muitas ocasiões, não está claro por que algumas técnicas funcionam ou não. Ter esse conhecimento permite saber quando usar qualquer um desses ataques em um pentest.
Portanto, após uma longa jornada de mergulho na documentação e vários posts sobre o assunto, tentamos escrever neste post todos os detalhes importantes que um auditor deve conhecer para entender como aproveitar o protocolo Kerberos.
Neste primeiro post, apenas a funcionalidade básica será discutida. Em posts posteriores, veremos como realizar os ataques e como funcionam os aspectos mais complexos, como a delegação.
Se você tiver alguma dúvida sobre o tópico que não está bem explicado, não tenha medo de deixar um comentário ou fazer uma pergunta sobre ele. Agora, sobre o tópico.
O que é Kerberos?
Em primeiro lugar, o Kerberos é um protocolo de autenticação, não de autorização. Em outras palavras, permite identificar cada usuário, que fornece uma senha secreta, no entanto, não valida a quais recursos ou serviços esse usuário pode acessar.
O Kerberos é usado no Active Directory. Nesta plataforma, o Kerberos fornece informações sobre os privilégios de cada usuário, mas é responsabilidade de cada serviço determinar se o usuário tem acesso aos seus recursos.
Itens do Kerberos
Nesta seção, vários componentes do ambiente Kerberos serão estudados.
Camada de transporte
O Kerberos usa UDP ou TCP como protocolo de transporte, que envia dados em texto claro. Devido a isso, o Kerberos é responsável por fornecer criptografia.
As portas usadas pelo Kerberos são UDP/88 e TCP/88, que devem ser ouvidas no KDC (explicado na próxima seção).
Agentes
Vários agentes trabalham juntos para fornecer autenticação no Kerberos. Estes são os seguintes:
- Cliente ou usuário que deseja acessar o serviço.
- AP (Application Server) que oferece o serviço exigido pelo usuário.
- KDC (Key Distribution Center), o principal serviço do Kerberos, responsável por emitir os ingressos, instalado no DC (Domain Controller). É suportado pelo AS (Authentication Service), que emite os TGTs.
Chaves de criptografia
Existem várias estruturas manipuladas pelo Kerberos, como ingressos. Muitas dessas estruturas são criptografadas ou assinadas para evitar que sejam adulteradas por terceiros. Essas chaves são as seguintes:
- Chave KDC ou krbtgt que é derivada do hash NTLM da conta krbtgt.
- Chave do usuário que é derivada do hash NTLM do usuário.
- Chave do serviço que é derivada do hash NTLM do proprietário do serviço, que pode ser uma conta de usuário ou computador.
- Chave de sessão que é negociada entre o usuário e o KDC.
- Chave de sessão de serviço a ser usada entre o usuário e o serviço.
Ingressos
As principais estruturas manipuladas pelo Kerberos são os ingressos. Esses ingressos são entregues aos usuários para serem usados por eles para executar várias ações no reino Kerberos. Existem 2 tipos:
- O TGS (Ticket Granting Service) é o ingresso que o usuário pode usar para autenticar-se em um serviço. É criptografado com a chave do serviço.
- O TGT (Ticket Granting Ticket) é o ingresso apresentado ao KDC para solicitar TGSs. É criptografado com a chave do KDC.
PAC
O PAC (Privilege Attribute Certificate) é uma estrutura incluída em quase todos os ingressos. Esta estrutura contém os privilégios do usuário e é assinada com a chave do KDC.
É possível que os serviços verifiquem o PAC comunicando-se com o KDC, embora isso não aconteça com frequência. No entanto, a verificação do PAC consiste apenas em verificar sua assinatura, sem inspecionar se os privilégios dentro do PAC estão corretos.
Além disso, um cliente pode evitar a inclusão do PAC dentro do ingresso especificando-o no campo KERB-PA-PAC-REQUEST da solicitação de ingresso.
Mensagens
O Kerberos usa diferentes tipos de mensagens. Os mais interessantes são os seguintes:
- KRB_AS_REQ: Usado para solicitar o TGT ao KDC.
- KRB_AS_REP: Usado para entregar o TGT pelo KDC.
- KRB_TGS_REQ: Usado para solicitar o TGS ao KDC, usando o TGT.
- KRB_TGS_REP: Usado para entregar o TGS pelo KDC.
- KRB_AP_REQ: Usado para autenticar um usuário em um serviço, usando o TGS.
- KRB_AP_REP: (Opcional) Usado pelo serviço para se identificar contra o usuário.
- KRB_ERROR: Mensagem para comunicar condições de erro.
Além disso, mesmo que não faça parte do Kerberos, mas do NRPC, o AP opcionalmente poderia usar a mensagem KERB_VERIFY_PAC_REQUEST para enviar ao KDC a assinatura do PAC e verificar se está correta.
Abaixo é mostrado um resumo da sequência de mensagens para realizar a autenticação
Processo de autenticação
Nesta seção, a sequência de mensagens para realizar a autenticação será estudada, começando de um usuário sem ingressos, até ser autenticado no serviço desejado.
KRB_AS_REQ
Em primeiro lugar, o usuário deve obter um TGT do KDC. Para conseguir isso, um KRB_AS_REQ deve ser enviado:
KRB_AS_REQ tem, entre outros, os seguintes campos:
- Um timestamp criptografado com a chave do cliente, para autenticar o usuário e evitar ataques de replay
- Nome de usuário do usuário autenticado
- O SPN do serviço associado à conta krbtgt
- Um Nonce gerado pelo usuário
Nota: o timestamp criptografado é necessário apenas se o usuário exigir pré-autenticação, o que é comum, exceto se a flag DONT_REQ_PREAUTH __ estiver definida na conta do usuário.
KRB_AS_REP
Após receber a solicitação, o KDC verifica a identidade do usuário descriptografando o timestamp. Se a mensagem estiver correta, ele deve responder com um KRB_AS_REP:
KRB_AS_REP inclui as seguintes informações:
- Nome de usuário
- TGT, que inclui:
- Nome de usuário
- Chave de sessão
- Data de expiração do TGT
- PAC com privilégios do usuário, assinado pelo KDC
- Alguns dados criptografados com a chave do usuário, que incluem:
- Chave de sessão
- Data de expiração do TGT
- Nonce do usuário, para evitar ataques de replay
Uma vez concluído, o usuário já possui o TGT, que pode ser usado para solicitar TGSs e, posteriormente, acessar os serviços.
KRB_TGS_REQ
Para solicitar um TGS, uma mensagem KRB_TGS_REQ deve ser enviada ao KDC:
KRB_TGS_REQ inclui:
- Dados criptografados com a chave de sessão:
- Nome de usuário
- Timestamp
- TGT
- SPN do serviço solicitado
- Nonce gerado pelo usuário
KRB_TGS_REP
Após receber a mensagem KRB_TGS_REQ, o KDC retorna um TGS dentro de KRB_TGS_REP:
KRB_TGS_REP inclui:
- Nome de usuário
- TGS, que contém:
- Chave de sessão do serviço
- Nome de usuário
- Data de expiração do TGS
- PAC com privilégios do usuário, assinado pelo KDC
- Dados criptografados com a chave de sessão:
- Chave de sessão do serviço
- Data de expiração do TGS
- Nonce do usuário, para evitar ataques de replay
KRB_AP_REQ
Para finalizar, se tudo correu bem, o usuário já possui um TGS válido para interagir com o serviço. Para usá-lo, o usuário deve enviar uma mensagem KRB_AP_REQ para o AP:
KRB_AP_REQ inclui:
- TGS
- Dados criptografados com a chave de sessão do serviço:
- Nome de usuário
- Timestamp, para evitar ataques de replay
Depois disso, se os privilégios do usuário estiverem corretos, ele poderá acessar o serviço. Se for o caso, o AP verificará o PAC em relação ao KDC. E também, se a autenticação mútua for necessária, ele responderá ao usuário com uma mensagem KRB_AP_REP.
Referências
- Kerberos v5 RFC: https://tools.ietf.org/html/rfc4120
-
MS-KILE
-
MS-APDS
- Mimikatz e Ataques Kerberos do Active Directory: https://adsecurity.org/?p=556
- Explicando como se eu tivesse 5 anos: Kerberos: https://www.roguelynn.com/words/explain-like-im-5-kerberos/
- Kerberos e KRBTGT: https://adsecurity.org/?p=483
- Mastering Windows Network Forensics and Investigation, 2ª Edição. Autores: S. Anson, S. Bunting, R. Johnson e S. Pearson. Editorial Sibex.
- Active Directory, 5ª Edição. Autores: B. Desmond, J. Richards, R. Allen e A.G. Lowe-Norris
- Service Principal Names: https://msdn.microsoft.com/en-us/library/ms677949(v=vs.85).aspx
- Níveis funcionais do Active Directory: https://technet.microsoft.com/en-us/library/dbf0cdec-d72f-4ba3-bc7a-46410e02abb0
- OverPass The Hash – Blog Gentilkiwi: https://blog.gentilkiwi.com/securite/mimikatz/overpass-the-hash
- Pass The Ticket – Blog Gentilkiwi: [https://blog.gentilkiwi.com/securite/mimikatz/pass-the-ticket-kerberos](https://blog.gentilkiwi.com/secur