¿Cómo sabe un cliente si está hablando con un KDC real o falso? ¿Se basa en la configuración del sistema, similar a DNS?
Creo que hay dos respuestas diferentes pero relacionadas con tu pregunta. Inicialmente, el cliente necesita saber qué KDC existen para manejar las solicitudes de autenticación. En un entorno de Windows Active Directory, esto se maneja a través de los registros del servicio Kerberos en DNS. El cliente confía en DNS para proporcionar una lista válida de KDC. Pero esto abre la posibilidad de que un atacante ponga en peligro el DNS en ese entorno y agregue un registro Kerberos para su KDC falso.
Sin embargo, la autenticación "real" se basa en la forma en que el KDC demuestra al cliente que es un KDC válido durante el proceso de autenticación inicial. En su respuesta a la solicitud del cliente, el KDC envía al cliente una clave de sesión cifrada con la clave secreta del cliente, o clave de largo plazo. Esa clave secreta se basa en un hash de la contraseña del cliente. Entonces, si el cliente no puede descifrar la clave de la sesión, sabe que hay un problema y el KDC con el que está hablando puede ser falso (o simplemente no está sincronizado con la última clave secreta). El proceso de autenticación falla entonces.
En ese momento, el cliente ni siquiera ha enviado su hash de contraseña al KDC falso, por lo que incluso un compromiso de DNS realmente no expone al cliente a riesgos irracionales en este sentido.
Lea otras preguntas en las etiquetas authentication kerberos