88tcp/udp - Pentesting Kerberos

Reading time: 6 minutes

tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Información básica

Kerberos funciona con el principio de autenticar usuarios sin gestionar directamente su acceso a los recursos. Esta es una distinción importante porque subraya el papel del protocolo en los marcos de seguridad.

En entornos como Active Directory, Kerberos es fundamental para establecer la identidad de los usuarios validando sus contraseñas secretas. Este proceso asegura que la identidad de cada usuario se confirme antes de que interactúe con los recursos de la red. Sin embargo, Kerberos no extiende su funcionalidad para evaluar o aplicar los permisos que tiene un usuario sobre recursos o servicios específicos. En su lugar, proporciona una forma segura de autenticar a los usuarios, que es un primer paso crítico en el proceso de seguridad.

Tras la autenticación por Kerberos, el proceso de toma de decisiones respecto al acceso a recursos se delega a los servicios individuales dentro de la red. Estos servicios son entonces responsables de evaluar los derechos y permisos del usuario autenticado, basándose en la información proporcionada por Kerberos sobre los privilegios del usuario. Este diseño permite una separación de responsabilidades entre autenticar la identidad de los usuarios y gestionar sus derechos de acceso, posibilitando un enfoque más flexible y seguro para la gestión de recursos en redes distribuidas.

Puerto por defecto: 88/tcp/udp

PORT   STATE SERVICE
88/tcp open  kerberos-sec

Para aprender a abusar de Kerberos deberías leer el post sobre Active Directory.

Entornos solo Kerberos: preparación del cliente y resolución de problemas

Cuando NTLM está deshabilitado en los servicios del dominio (SMB/WinRM/etc.), debes autenticarte con Kerberos. Errores comunes y un flujo de trabajo funcional:

  • La sincronización horaria es obligatoria. Si el reloj de tu equipo está desincronizado por más de unos minutos verás KRB_AP_ERR_SKEW y toda la autenticación Kerberos fallará. Sincroniza contra el DC:
bash
# quick one-shot sync (requires sudo)
sudo ntpdate <dc.fqdn> || sudo chronyd -q 'server <dc.fqdn> iburst'
  • Genera un krb5.conf válido para el realm/dominio objetivo. netexec (CME fork) puede generar uno para ti mientras pruebas SMB:
bash
# 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
  • Obtener un TGT y verificar el ccache:
bash
kinit <user>
klist
  • Usa Kerberos con herramientas SMB (no se envían contraseñas, usa tu ccache):
bash
# 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 inicio de sesión único (OpenSSH a Windows OpenSSH server):
bash
# 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>

Consejos:

  • Asegúrate de que tu /etc/hosts resuelva exactamente el FQDN al que vas a SSH/SMB, y que aparezca antes que cualquier entrada de dominio sin subdominio si estás sobrescribiendo DNS. Los desajustes de SPN rompen GSSAPI.
  • Si NTLM está deshabilitado en SMB puedes ver STATUS_NOT_SUPPORTED con intentos NTLM; añade -k para forzar Kerberos.

Más

Shodan

  • port:88 kerberos

MS14-068

La vulnerabilidad MS14-068 permite a un atacante manipular el token de inicio de sesión Kerberos de un usuario legítimo para reclamar falsamente privilegios elevados, como ser Domain Admin. Esta afirmación falsificada es validada por error por el Domain Controller, permitiendo acceso no autorizado a recursos de red en todo el bosque de Active Directory.

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

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

Referencias

HackTricks Comandos automáticos

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

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks