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
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
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_SKEWy toda la autenticación Kerberos fallará. Sincroniza contra el DC:
# 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:
# 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:
kinit <user>
klist
- Usa Kerberos con herramientas SMB (no se envían contraseñas, usa tu 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 inicio de sesión único (OpenSSH a 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>
Consejos:
- Asegúrate de que tu
/etc/hostsresuelva 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_SUPPORTEDcon intentos NTLM; añade-kpara 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.
Otros exploits: https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek
Referencias
- NetExec (CME) wiki – Kerberos and krb5.conf generation
- OpenSSH GSSAPIAuthentication
- MIT Kerberos – Using Kerberos on UNIX
- 0xdf – HTB: TheFrizz
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
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
HackTricks