88tcp/udp - Pentesting Kerberos

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks

Informações Básicas

Kerberos opera com o princípio de autenticar usuários sem gerenciar diretamente seu acesso a recursos. Essa é uma distinção importante porque ressalta o papel do protocolo em estruturas de segurança.

Em ambientes como Active Directory, o Kerberos é fundamental para estabelecer a identidade dos usuários ao validar suas senhas secretas. Esse processo garante que a identidade de cada usuário seja confirmada antes de interagir com recursos da rede. No entanto, o Kerberos não estende sua funcionalidade para avaliar ou aplicar as permissões que um usuário possui sobre recursos ou serviços específicos. Em vez disso, ele fornece uma forma segura de autenticar usuários, que é um primeiro passo crítico no processo de segurança.

Após a autenticação pelo Kerberos, o processo de tomada de decisão quanto ao acesso a recursos é delegado aos serviços individuais dentro da rede. Esses serviços são então responsáveis por avaliar os direitos e permissões do usuário autenticado, com base nas informações fornecidas pelo Kerberos sobre os privilégios do usuário. Esse desenho permite uma separação de responsabilidades entre autenticar a identidade dos usuários e gerenciar seus direitos de acesso, possibilitando uma abordagem mais flexível e segura para o gerenciamento de recursos em redes distribuídas.

Porta padrão: 88/tcp/udp

PORT   STATE SERVICE
88/tcp open  kerberos-sec

Para aprender a abusar do Kerberos você deve ler o post sobre Active Directory.

Ambientes somente com Kerberos: preparação do cliente e solução de problemas

Quando NTLM está desabilitado nos serviços de domínio (SMB/WinRM/etc.), você deve autenticar-se com Kerberos. Armadilhas comuns e um fluxo de trabalho funcional:

  • A sincronização de horário é obrigatória. Se o relógio do seu host estiver defasado por mais de alguns minutos, você verá KRB_AP_ERR_SKEW e toda a autenticação Kerberos falhará. Sincronize contra o DC:
# quick one-shot sync (requires sudo)
sudo ntpdate <dc.fqdn> || sudo chronyd -q 'server <dc.fqdn> iburst'
  • Gere um krb5.conf válido para o realm/domínio alvo. netexec (CME fork) pode gerar um para você enquanto testa SMB:
# Generate krb5.conf and install it
netexec smb <dc.fqdn> -u <user> -p '<pass>' -k --generate-krb5-file krb5.conf
sudo cp krb5.conf /etc/krb5.conf
  • Obtenha um TGT e verifique o ccache:
kinit <user>
klist
  • Use Kerberos com ferramentas SMB (nenhuma senha é enviada, usa seu ccache):
# netexec / CME
netexec smb <dc.fqdn> -k            # lists shares, runs modules using Kerberos
# impacket examples also support -k / --no-pass to use the ccache
smbclient --kerberos //<dc.fqdn>/IPC$
  • GSSAPI SSH autenticação única (OpenSSH para Windows OpenSSH server):
# Ensure krb5.conf is correct and you have a TGT (kinit)
# Use the FQDN that matches the host SPN. Wrong names cause: "Server not found in Kerberos database"
ssh -o GSSAPIAuthentication=yes <user>@<host.fqdn>

Dicas:

  • Garanta que seu /etc/hosts resolva o FQDN exato para o qual você fará SSH/SMB, e que ele apareça antes de quaisquer entradas de domínio sem prefixo se você estiver sobrescrevendo o DNS. Incompatibilidades de SPN fazem o GSSAPI falhar.
  • Se NTLM estiver desabilitado no SMB você pode ver STATUS_NOT_SUPPORTED em tentativas NTLM; adicione -k para forçar Kerberos.

Mais

Shodan

  • port:88 kerberos

MS14-068

A falha MS14-068 permite que um atacante manipule o token de login Kerberos de um usuário legítimo para reivindicar falsamente privilégios elevados, como ser um Domain Admin. Essa reivindicação falsificada é validada por engano pelo Domain Controller, permitindo acesso não autorizado a recursos de rede por toda a floresta do Active Directory.

Kerberos Vulnerability in MS14-068 (KB3011780) Explained – Active Directory & Azure AD/Entra ID Security

Outros exploits: https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek

Referências

HackTricks Automatic Commands

Protocol_Name: Kerberos    #Protocol Abbreviation if there is one.
Port_Number:  88   #Comma separated if there is more than one.
Protocol_Description: AD Domain Authentication         #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for Kerberos
Note: |
Kerberos operates on a principle where it authenticates users without directly managing their access to resources. This is an important distinction because it underlines the protocol's role in security frameworks.
In environments like **Active Directory**, Kerberos is instrumental in establishing the identity of users by validating their secret passwords. This process ensures that each user's identity is confirmed before they interact with network resources. However, Kerberos does not extend its functionality to evaluate or enforce the permissions a user has over specific resources or services. Instead, it provides a secure way of authenticating users, which is a critical first step in the security process.

https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-kerberos-88/index.html

Entry_2:
Name: Pre-Creds
Description: Brute Force to get Usernames
Command: nmap -p 88 --script=krb5-enum-users --script-args krb5-enum-users.realm="{Domain_Name}",userdb={Big_Userlist} {IP}

Entry_3:
Name: With Usernames
Description: Brute Force with Usernames and Passwords
Note: consider git clone https://github.com/ropnop/kerbrute.git ./kerbrute -h

Entry_4:
Name: With Creds
Description: Attempt to get a list of user service principal names
Command: GetUserSPNs.py -request -dc-ip {IP} active.htb/svc_tgs

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks