Insights > Blog

 

 

Ataque em Kerberos

 

Sobre o Kerberos

Antes de falar sobre os ataques em Kerberos, é preciso primeiro trazer uma visão geral sobre alguns conceitos que trarão uma melhor compreensão deste tipo de ataque.

O Kerberos é um protocolo de Autenticação (importante não confundir com Autorização, que se trata de uma entidade já autenticada, que possui ou não as devidas permissões de acesso) utilizado no Active Directory, que permite identificar um determinado usuário, fornece uma senha válida, mas não valida quais recursos ou serviços esse mesmo usuário pode acessar.

Abaixo, destacam-se os principais componentes do ambiente Kerberos.

Transport Layer

Kerberos é responsável por criptografar as informações, já que utiliza TCP ou UDP para transportar os dados. As portas usadas por ele, são a 88/UDP e a 88/TCP, que devem ser ouvidas pelo KDC (Key Distribution Center).

Agents

Vários agentes trabalham juntos para fornecer autenticação no Kerberos, veja quais são a seguir:
• Cliente ou usuário que deseja acessar o serviço
• AP (Application Server) que fornece o serviço requerido pelo usuário
• KDC (Key Distribution Center), o principal serviço do Kerberos, responsável pela emissão dos tickets, instalado no DC (Domain Controller). Este é suportado pelo AS (Authentication Service), que emite os TGT’s. 

Encryption Keys

Existem várias estruturas manipuladas pelo Kerberos, como por exemplo, os Chaves de Criptografia. Muitas dessas estruturas são criptografadas ou assinadas para evitar que sejam adulteradas por terceiros.
Estas são as chaves:

• KDC ou krbtgt, que é derivada do hash NTLM da conta krbtgt
• Chave do usuário derivada do hash NTLM do usuário
• Chave de serviço 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 usuário e serviço

Tickets

As principais estruturas manipuladas pelo Kerberos, são os Tickets. Esses tickets são entregues aos usuários para executar várias ações no domínio Kerberos.

Existem 2 tipos de tickets:
• TGS (Ticket Granting Service) = É o ticket que o usuário pode usar para se autenticar em um serviço. É criptografado com a chave de serviço
• TGT (Ticket Granting Ticket) = É o ticket apresentado ao KDC para solicitar TGS’s. Este é criptografado com a chave KDC. O TGT só é usado com o KDC para obter tickets de serviço e pode vir em várias formas, como: .kirbi para Rubeus e .ccache para Impacket
No processo de autenticação, o usuário precisa concluir a requisição do TGT e então solicitar TGS, para posteriormente acessar os serviços.

PAC (Privilege Attribute Certificate)

O PAC é uma estrutura incluída em quase todos os tickets. Essa estrutura contém informações relevantes do usuário (incluindo os seus privilégios) e é assinada com a chave KDC.
Os serviços conseguem verificar o PAC comunicando-se com o KDC, embora isso não ocorra com frequência. No entanto, a verificação do PAC consiste em verificar apenas sua assinatura, sem verificar se os privilégios dentro do PAC estão corretos.
Além disso, um cliente pode evitar a inclusão do PAC dentro do ticket, especificando-o no campo KERB-PA-PAC-REQUEST da solicitação de ticket.

Messages Usadas Para Autenticação

O Kerberos usa diferentes tipos de mensagens, destaca-se abaixo o processo de mensagens utilizado para realizar o processo autenticação:
• KRB_AS_REQ = Solicita o TGT ao KDC
• KRB_AS_REP = Entrega o TGT pelo KDC
• KRB_TGS_REQ = Solicita o TGS ao KDC, usando o TGT
• KRB_TGS_REP = Entrega o TGS pelo KDC
• KRB_AP_REQ = Autentica um usuário em um serviço, usando o TGS
• KRB_AP_REP = Este é opcional e é usado pelo serviço para se identificar com o usuário.
• KRB_ERROR = Mensagem para comunicar condições de erro (caso ocorra)

Principais Ataques

Como em qualquer tecnologia, encontra-se frequentemente vulnerabilidades a determinados tipos de ataques, e estes estão cada vez mais dinâmicos e diversificados.
Para o Kerberos não é diferente, uma vez que os conceitos estão definidos, descreve-se de modo mais compreensível a seguir, os principais tipos de ataque que se sofre.


User Enumeration
Devido ao Kerberos ser um protocolo de autenticação, é possível executar ataques de Brute Force contra ele.
Abaixo alguns pontos importantes a saber:

• Nenhuma conta de domínio é necessária para conduzir o ataque, apenas conectividade ao KDC
• Os erros de pré-autenticação Kerberos não são registrados no Active Directory com um evento de falha de logon normal (4625), mas sim com logs específicos para a falha de pré-autenticação Kerberos (4771)
• Em casos de erro, o Kerberos indica se a senha está incorreta, se o nome de usuário estiver correto ou não. Essa é uma grande vantagem no caso de executar esse tipo de técnica quando não sabemos o nome de usuário
• Também é possível descobrir contas de usuário sem a necessidade de pré-autenticação, o que pode ser útil para executar um ataque ASREPRoast.

Exige-se cuidado ao realizar Brute Force contra Kerberos, pois esta prática poderá bloquear a conta do usuário, a técnica deve ser utilizada com cautela.

Overpass The Hash/Pass The Key (PTK)

Este tipo de ataque, consiste em usar o hash do usuário, para se passar por esse usuário no KDC e, em seguida, obter acesso a vários serviços ou até mesmo acesso ao prompt de comando, com a utilização de ferramentas como psexec.py.
Essas hashes podem ser extraídas em arquivos SAM (nas estações de trabalho Windows), nos arquivos NTDS.DIT que ficam nos Domain Controllers e na memória do processo lsass (a ferramenta Mimikatz pode te ajudar nessa captura), onde também é possível encontrar senhas em textplain.

Pass The Ticket (PTT)

A técnica Pass The Ticket consiste em obter o ticket do usuário e usá-lo para se passar por ele. No entanto, além do ticket, é necessário obter a chave da sessão para poder usá-lo. É possível obter o ticket executando um ataque MITM (Man-in-the-Middle), devido ao fato do Kerberos ser enviado por TCP ou UDP. No entanto, essas técnicas não permitem obter acesso à chave da sessão.

Uma alternativa é obter o ticket da memória do processo lsass, onde também reside a chave da sessão (este procedimento pode ser realizado com o uso da ferramenta Mimikatz). É melhor obter um TGT, pois ele só pode ser utilizado em um serviço.
Além disso, deve-se levar em consideração que o tempo de vida dos tickets é de 10 horas, após, são inutilizáveis.

Golden Ticket

O objetivo do Golden Ticket é construir um TGT. Nesse sentido, é necessário obter o hash NTLM da conta krbtgt. Uma vez obtido, o TGT com usuário e privilégios personalizados pode ser construído. Assim como o Overpass The Hash/Pass The Key (PTK), também é possível utilizar o psexec.py para obter acesso ao prompt de comando.
Um ponto importante aqui é, mesmo que o usuário altere sua senha, o ticket ainda será válido. O TGT somente poderá ser invalidado se a conta expirar ou se o krbtgt alterar sua senha.

Silver Ticket

O Silver Ticket é semelhante, porém o ticket construído será um TGS. Nesse caso, a chave de serviço será necessária, derivada da conta do proprietário do serviço. No entanto, não é possível assinar corretamente o PAC sem a chave krbtgt. Logo, se o serviço verificar o PAC, essa técnica não funcionará.

Kerberoasting

O Kerberoasting é uma técnica que utiliza o TGS para quebrar as senhas das contas de usuário offline.
Como visto anteriormente, o TGS é criptografado com a chave de serviço, derivada do hash NTLM da conta do proprietário do serviço. Geralmente, os proprietários dos serviços são os computadores nos quais os serviços estão sendo executados. No entanto, as senhas dos computadores são complexas, e não é recomendado tentar quebrá-las. Isso também acontece no caso da conta krbtgt, portanto, o TGT também não é decifrado.

Mesmo assim, em algumas ocasiões o proprietário do serviço é uma conta de usuário comum do AD, onde é viável quebrar suas senhas. Geralmente esse tipo de conta possui privilégios interessantes (já que possui determinados tipos de acessos), então se conseguir acessar esta conta com suas devidas credenciais, irá ter mais privilégios no AD e abrir possibilidades para novos tipos ataques.

Note que para executar o Kerberoasting, é necessário apenas uma conta de domínio que possa solicitar TGSs, pois não são necessários privilégios especiais já que o Kerberos não realiza verificações de autorização.

ASREPRoast

O ASREPRoast é semelhante ao Kerberoasting, pois também busca a quebra de senhas das contas.
Se o atributo DONT_REQ_PREAUTH estiver definido em uma conta de usuário, será possível criar uma mensagem KRB_AS_REQ sem especificar sua senha. Depois disso, o KDC responderá com uma mensagem KRB_AS_REP, que conterá uma parte dos dados criptografados com a chave de usuário original, derivada de sua senha. Em seguida, usando esta mensagem, a senha do usuário pode ser quebrada offline, usando a ferramenta hashcat, por exemplo.
Reforça-se aqui, nenhuma conta de Domínio é necessária para realizar esse tipo de ataque, apenas a conexão com o KDC. No entanto, com uma conta de domínio, uma consulta LDAP pode ser utilizada para recuperar usuários sem pré-autenticação Kerberos no domínio. Do contrário, os nomes de usuário devem ser descobertos.


Fonte: Lucas Davis – Red-Team Consultant – Cipher. 

 

 

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

RECEBA NOSSAS NOTÍCIAS!

Information Security Maturity Self-Assessment Survey

Saiba mais

•  Whitepapers
•  E-books
•  Checklists
•  Self-Assessments
•  Webcasts
•  Infographics