2 - Elementos de Kerberos
Arquitectura técnica de Kerberos
Kerberos es un protocolo de autenticación que opera sobre una arquitectura cliente-servidor. Su propósito es verificar la identidad de los usuarios o servicios sin transmitir contraseñas en texto claro por la red. En el contexto de Active Directory, Kerberos está estrechamente integrado y constituye la base de autenticación predeterminada.
Capa de transporte y cifrado
Kerberos opera sobre los protocolos de transporte UDP o TCP, utilizando por defecto el puerto 88, tanto para el cliente como para el servidor (KDC). Por razones de fiabilidad, si un mensaje excede cierto tamaño o si la red presenta errores, Kerberos puede optar automáticamente por TCP en lugar de UDP.
Aunque no cifra completamente el canal de transporte, sí cifra los campos críticos del protocolo, como los tickets y las claves de sesión. El cifrado simétrico asegura que solo las entidades que poseen las claves adecuadas puedan interpretar o modificar los mensajes.
Agentes involucrados
Kerberos involucra varios componentes principales en su proceso de autenticación:
Cliente (usuario): entidad que solicita acceso a un servicio.
Servidor de Aplicaciones (AP): el servicio que desea consumir el cliente (por ejemplo, CIFS, HTTP, MSSQL, File Server).
KDC (Key Distribution Center): entidad central que gestiona la autenticación. Está compuesto por:
AS (Authentication Service): entrega el Ticket Granting Ticket (TGT).
TGS (Ticket Granting Service): entrega los tickets de servicio (TGS).
El KDC está alojado en los Controladores de Dominio en entornos Active Directory.

Claves utilizadas
Kerberos utiliza varias claves derivadas de contraseñas y negociaciones criptográficas:
Clave del KDC (KDC LT key): derivada del hash NTLM de la cuenta
krbtgt
. Se utiliza para firmar y cifrar TGTs.Clave del usuario (Client/User LT Key): derivada del hash NTLM del usuario.
Clave del servicio (Service LT key): asociada al SPN (Service Principal Name) y derivada del hash NTLM del usuario o equipo que aloja el servicio.
Clave de sesión (usuario-KDC): generada durante la emisión del TGT (cifrada con la clave del usuario). Solo el cliente y el KDC pueden descifrar los mensajes que estén cifrados con esta clave de sesión
Clave de sesión (usuario-servicio): usada entre el cliente y el servicio destino, contenida en el TGS y cifrada con la clave del servicio. Solo el servicio y el KDC pueden descifrar los mensajes que estén cifrados con esta clave de sesión.

Tickets
Los tickets son estructuras cifradas utilizadas para establecer autenticación mutua entre clientes y servicios. Existen dos tipos principales:
TGT (Ticket Granting Ticket): emitido por el AS. Permite al cliente solicitar TGS al TGS sin necesidad de volver a autenticarse.
TGS (Ticket Granting Service ticket): emitido por el TGS. Permite acceder a un servicio específico como
cifs/server.local
.
Ambos tickets están cifrados con claves que solo el KDC o el servicio correspondiente pueden descifrar.
PAC (Privilege Attribute Certificate)
El PAC es una estructura específica de Microsoft que se incluye en los tickets Kerberos emitidos en Active Directory. Contiene:
El SID del usuario.
Los grupos de seguridad a los que pertenece.
Derechos de usuario y restricciones.
Información de inicio de sesión y SID históricos.
El PAC es firmado por el KDC, y aunque los servicios pueden verificar la firma del PAC consultando al KDC (por ejemplo, mediante KERB_VERIFY_PAC_REQUEST
), en la práctica esto ocurre rara vez por motivos de rendimiento. Sin embargo, la verificación del PAC solo comprueba su integridad, no la validez de sus contenidos.
Un cliente puede, si así lo desea, solicitar que no se incluya un PAC en su ticket utilizando el campo KERB-PA-PAC-REQUEST
. Esto puede ser aprovechado por ciertos ataques avanzados.
Tipos de mensajes Kerberos
El protocolo define varios tipos de mensajes. Entre los más relevantes se encuentran:
| Mensaje | Función |
| ----------------- | -------------------------------------------------------------------- |
| **KRB\_AS\_REQ** | Solicita el TGT al KDC (fase de autenticación inicial). |
| **KRB\_AS\_REP** | Respuesta con el TGT emitido por el KDC. |
| **KRB\_TGS\_REQ** | Solicita un TGS utilizando el TGT previamente obtenido. |
| **KRB\_TGS\_REP** | El KDC entrega el TGS solicitado. |
| **KRB\_AP\_REQ** | El cliente se presenta al servicio con el TGS para autenticarse. |
| **KRB\_AP\_REP** | (Opcional) El servicio responde para autenticarse frente al cliente. |
| **KRB\_ERROR** | Utilizado para comunicar fallos o errores en el protocolo. |
Last updated