Seguridad: Autenticarse, NTLM, NTLMv2, Kerberos

NTLM

NT LAN Manager conocido como NTLM fue el primero en Windows NT y es una mejora respecto al protocolo LM. A diferencia de las contraseñas LM, que usan el conjunto de caracteres ASCII, las de NTLM están basadas en el conjunto de caracteres Unicode, se reconocen las minúsculas y las mayúsculas, la longitud aumenta hasta 128 caracteres. Como con LM, el sistema no almacena la contraseña sino que almacena una representación de la misma mediante el NTLM OWF. OWF se combina con el algoritmo MD4 Hash, que implementa una función de cifrado denominada digest (resumen)-un hash de 16 bytes- de una cadena de texto de longitud variable, que en este caso es la contraseña del usuario.

Otra de las diferencias entre NTLM y LM es que las contraseñas del primero no se dividen en partes más pequeñas antes de combinar su algoritmo de hash. NTLM usa el mismo proceso Desafío/Respuesta para autenticarse como LM. NTLM es el proveedor predeterminado de autenticación e Windows NT, Windows 2000 y Windows Server 2003 mientras no sean miembros de un dominio de Active Directory, y aun así se utiliza por diversas funciones. Para respetar compatibilidad hacia atrás, el hash LM se envía junto al Hash NT. Si eliminamos los hashes LM de la BD al crear contraseñas mayores de 14 caracteres o modificando la llave NoLMHash del registro, el sistema crea un valor nulo para el hash LM. Aunque este valor nulo no sirve para autenticar al usuario se sigue enviando junto al hash NT.

NTLMv2

Segunda versión del protocolo NTLM, apareció con el SP4 de Windows NT 4.0 y se incluye en Windows 2000 y posteriores. Sigue las mismas reglas que NTLM, sin embargo usa un proceso de autenticación ligeramente distinto. NTLMv2 necesita además que la posible diferencia horaria entre clientes y servidores no supere los 30 minutos.

Si el cliente y el servidor son compatibles con NTLMv2, se consigue una sesión de seguridad mejorada. Esta seguridad mejorada proporciona claves separadas para confidencialidad e integridad del mensaje, proporciona una entrada al cliente al desafío para impedir ataques específicos de texto plano, y usa un hash basado en el algoritmo MD5 y el código de autenticación de mensaje (HMAC) para la comprobación de la integridad del mensaje.

Kerberos

Kerberos v5 es el protocolo predeterminado de autenticación en equipos con Windows Server 2003, 2000 y XP que son miembros de un dominio de Active Directory. Los sistemas Windows anteriores no son compatibles con Kerberos y usarán uno de los métodos de autenticación LM. Cumpliendo con la RFC 1510 se implementa en los sistemas operativos Windows, siendo interoperable con otros mundos kerberos con una mínima configuración. Los beneficios que aporta:

  • Autenticación mutua. Kerberos habilita al cliente comprobar la identidad del servidor, a un servidor la de otro servidor y al cliente a comprobar su identidad en el servidor.
  • Transmisión segura por el medio. Los mensajes kerberos se cifran con una variedad de claves de cifrado para asegurar que nadie pueda interferir en los datos de un mensaje kerberos. Además, la contraseña en realidad no se envía a través de la red cuando se usa kerberos. Esto no significa, sin embargo, que un atacante no pueda llevar a cabo un ataque de fuerza bruta contra una secuencia de autenticación interceptada. Es importante elegir buenas contraseñas y fuertes.
  • Impide la repetición de paquetes de autenticación. Kerberos minimiza la posibilidad de que alguien obtenga y reutilice paquetes de autenticación kerberos mediante marcas de tiempo como un notario que lo acredita. De forma predeterminada desde Windows 2000 todos los relojes están sincronizados con el controlador de dominio que los autentica mediante NTP. Para que un ticket kerberos continúe siendo válido, los relojes deben permanecer sincronizados con una diferencia no superior a 5 minutos entre ellos.
  • Autenticación delegada. Los servicios de Windows se hacen pasar por clientes cuando acceden a recursos de clientes, ‘de parte de…’. Kerberos incluye un mecanismo proxy que habilita al servicio para imitar al cliente cuando conecta con otros servicios. Entre otras cosas, esto permite a aplicaciones de n capas a utilizar credenciales en sistemas back-end sin depender en cuentas duplicadas o autenticación de paso a través como sería requerido por protocolos de autenticación LM. Windows Server 2003 proporciona un mecanismo más resistente para usar delegación mediante delegación obligada y es compatible con otros protocolos de autenticación mediante protocol translation (PT).

Los cuatro componentes que permiten a Kerberos v5 la autenticación entre usuarios y equipos cliente que usan kerberos y controladores de dominio con Windows Server 2003 o Windows 2000.

  • KDC(Key Distribution Center). El servicio de red que provee de tickets TGTs a usuarios y equipos en la red. Administra el intercambio de secretos compartidos entre un usuario y un servidor cuando se autentican entre ellos. KDC contiene dos servicios: El servicio de autenticación y el servicio de concesión de ticket. El primero proporciona la autenticación inicial del usuario en la red y le otorga un TGT. Siempre que un usuario solicita acceso a un servicio de red aporta su TGT para el segundo de los servicios, y este entonces proporciona al usuario con un ticket de servicio para autenticarse contra el servicio de red destino. KDC se ejecuta en todos los controladores de dominio.
  • TGT(Ticket-granting ticket). Proporcionado para usuarios la primera vez que se autentican con el KDC. TGT es un servicio de ticket para KDC. Siempre que un usuario necesita solicitar un ticket de servicio para un servicio de red, presenta el TGT al KDC para validar que se ha autenticado en la red. Como seguridad añadida los sistemas Windows verifican, de forma predeterminada, que la cuenta de usuario permanece activa cada vez que un TGT se presenta en el KDC. O sea, el KDC comprueba que la cuenta no esté deshabilitada. En Windows 2000 cuando se recibe un TGT de usuario, un servidor en el que se confía por delegación puede solicitar tickets de servicio para el usuario para cualquier otro servicio en la red. En Windows Server 2003, el servidor puede directamente solicitar un ticket de sesión mediante conversión de protocolo (PT). También diferente en Windows Server 2003, utilizando su Servicio de Nombre principal (SPN) puede determinarse que servicios el equipo puede delegar. Mejora de seguridad sobre la delegación en Windows 2000.

delegation

Pestaña delegación en una cuenta de equipo en Windows Server 2003.

  • Service Ticket. Proporcionado por un usuario siempre que conecta a un servicio en la red. El usuario adquiere el ticket del servicio al presentar el TGT ante el KDC y solicitar el ticket del servicio en el equipo del servicio de red. El ticket contiene una copia de la clave de sesión del equipo destino e información sobre el usuario que está conectando. Esta información se usa para comprobar que el usuario está autorizado a acceder al servicio de red deseado comparando la información de autenticación –a saber, el SID de usuario y los SIDs de los grupos de los que es miembro- contra la lista de control de acceso (DACL) del objeto al que está intentando acceder. El ticket de servicio se cifra usando la clave que comparten el KDC y el servidor destino. Esto asegura que el servidor destino se autentica ya que él es único que puede descifrar la clave de sesión.
  • Referral Ticket. Emitido cada vez que un usuario intenta conectar al servidor destino que es miembro de un dominio diferente. Este ticket es realmente un TGT para el dominio en el que el recurso se encuentra. Está cifrado usando una clave interdominio entre el dominio inicial y el dominio destino que se intercambia como parte del establecimiento de una relación de confianza transitiva.

Todas las transacciones de autenticación kerberos estarán compuestas de alguna combinación de los siguientes mensajes de intercambio:

  • Authentication Service Exchange. Usado por el KDC para proporcionar un usuario con clave de sesión iniciada y un TGT para solicitudes de ticket de servicio futuras. Comprende una solicitud KRB_AS_REQ enviada por el usuario al KDC y una respuesta KRB_AS_REP devuelto por el KDC al usuario.
  • Ticket-Granting Service Exchange. Utilizado por el KDC para distribuir claves de sesiones y tickets de servicio. El ticket de servicio devuelto está cifrado usando la clave compartida maestra por el KDC y el servidor destino, así que el servidor destino es el único que puede descifrar el ticket. Comprende una solicitud KRB_TGS_REQ y una respuesta KRB_TGS_REP, al igual que el anterior.
  • Client/Server Authentication Exchange. Usado por el usuario al presentar un ticket de servicio en la red. Comprende tanto una solicitud del usuario como una respuesta del servidor destino, KRB_AP_REQ y KRB_AP_REP.

Para utilizar el intercambio de autenticación cliente-servidor, el usuario introduce su nombre de inicio de sesión, contraseña y dominio en el cuadro de diálogo del inicio en Windows. El equipo cliente localiza al KDC usando DNS. Después el equipo del usuario envía una solicitud de autenticación Kerberos(KRB_AS_REQ) al controlador de dominio. La información de cuenta del usuario y la hora actual del equipo se codifican con la clave compartida entre la cuenta de usuario y el KDC. Finalmente, el servicio de autenticación en el KDC autentica al usuario, genera un TGT para el usuario y se lo envía como Respuesta Kerberos (KRB_AS_REP).

Cuando un usuario se autentica a sí mismo con Kerberos una serie de paquetes se intercambian para completar la validación de sus credenciales.

kerberos01 kerberos02

Autenticación inicial

Obteniendo un ticket de sesión Kerberos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *