Autenticación de usuario NTLM

En este artículo se proporciona información acerca de la autenticación de usuarios NTLM.

Versión original del producto:   Windows Server 2012 R2
Número KB original:   102716

Resumen

En este artículo se analizan los siguientes aspectos de la autenticación de usuarios NTLM en Windows:

  • Almacenamiento de contraseñas en la base de datos de cuentas
  • Autenticación de usuario mediante el paquete MSV1_0 autenticación de usuario
  • Autenticación de paso a través

Más información

Almacenamiento de contraseñas en la base de datos de cuentas

Los registros de usuario se almacenan en la base de datos del Administrador de cuentas de seguridad (SAM) o en la base de datos de Active Directory. Cada cuenta de usuario se asocia a dos contraseñas: la contraseña compatible con el administrador de la red LAN y la contraseña de Windows. Cada contraseña se cifra y se almacena en la base de datos de SAM o en la base de datos de Active Directory.

La contraseña compatible con el Administrador de LAN es compatible con la contraseña que usa el Administrador de LAN. Esta contraseña se basa en el juego de caracteres del fabricante de equipos originales (OEM). Esta contraseña no distingue mayúsculas de minúsculas y puede tener hasta 14 caracteres. La versión OWF de esta contraseña también se conoce como la versión OWF o ESTD del Administrador de LAN. Esta contraseña se calcula mediante el cifrado DES para cifrar una constante con la contraseña de texto no cifrado. La contraseña OWF del Administrador de LAN tiene una longitud de 16 bytes. Los primeros 7 bytes de la contraseña de texto no cifrado se usan para calcular los primeros 8 bytes de la contraseña OWF del Administrador de LAN. Los segundos 7 bytes de la contraseña de texto no cifrado se usan para computar los 8 segundos bytes de la contraseña OWF del Administrador de LAN.

La contraseña de Windows se basa en el juego de caracteres Unicode. Esta contraseña distingue mayúsculas de minúsculas y puede tener hasta 128 caracteres. La versión OWF de esta contraseña también se conoce como contraseña de Windows OWF. Esta contraseña se calcula mediante el algoritmo de cifrado RSA MD-4. Este algoritmo calcula una síntesis de 16 bytes de una cadena de longitud variable de bytes de contraseña de texto no cifrado.

Cualquier cuenta de usuario puede no tener la contraseña del Administrador de LAN o la contraseña de Windows. Sin embargo, cada intento se realiza para mantener ambas versiones de la contraseña.

Por ejemplo, si la cuenta de usuario se ha portado desde una base de datos UAS del Administrador de LAN mediante PortUas, o si la contraseña se cambia desde un cliente de LAN Manager o desde un cliente de Windows para grupos de trabajo, solo existirá la versión de la contraseña del Administrador de LAN. Si la contraseña se establece o cambia en un cliente de Windows y la contraseña no tiene representación del Administrador de LAN, solo existirá la versión de Windows de la contraseña. (Es posible que la contraseña no tenga representación del Administrador de LAN porque la contraseña es superior a 14 caracteres o porque los caracteres no se pueden representar en el juego de caracteres OEM).

Los límites de la interfaz de usuario en Windows no permiten que las contraseñas de Windows superen los 14 caracteres. Las implicaciones de esta limitación se de abordarán más adelante en este artículo.

En Windows 2000 Service Pack 2 y en versiones posteriores de Windows, hay disponible una configuración que te permite impedir que Windows almacene un hash del Administrador de LAN de tu contraseña. Para obtener más información, consulte el número de artículo siguiente para verlo en Microsoft Knowledge Base:

299656 Cómo evitar que Windows almacene un hash de administrador de LAN de la contraseña en Active Directory y bases de datos SAM locales

Nota

Microsoft no admite la modificación manual o mediante programación de la base de datos SAM.

Autenticación de usuario mediante el paquete MSV1_0 autenticación de usuario

Windows usa la API LsaLogonUser para todos los tipos de autenticaciones de usuario. La API LsaLogonUser autentica a los usuarios mediante una llamada a un paquete de autenticación. De forma predeterminada, LsaLogonUser llama al MSV1_0 de autenticación de MSV1_0 (MSV). Este paquete se incluye con Windows NT. El paquete de autenticación de MSV almacena los registros de usuario en la base de datos SAM. Este paquete admite la autenticación de paso a través de usuarios de otros dominios mediante el servicio Netlogon.

Internamente, el paquete de autenticación de MSV se divide en dos partes. La primera parte del paquete de autenticación de MSV se ejecuta en el equipo al que se está conectando. La segunda parte se ejecuta en el equipo que contiene la cuenta de usuario. Cuando ambas partes se ejecutan en el mismo equipo, la primera parte del paquete de autenticación de MSV llama a la segunda parte sin implicar al servicio Netlogon. La primera parte del paquete de autenticación de MSV reconoce que la autenticación de paso a través es necesaria porque el nombre de dominio que se pasa no es su propio nombre de dominio. Cuando se requiere la autenticación de paso a través, MSV pasa la solicitud al servicio Netlogon. A continuación, el servicio Netlogon enruta la solicitud al servicio Netlogon en el equipo de destino. A su vez, el servicio Netlogon pasa la solicitud a la otra parte del paquete de autenticación de MSV en ese equipo.

LsaLogonUser admite inicios de sesión interactivos, inicios de sesión de servicio e inicios de sesión de red. En el paquete de autenticación de MSV, todos los formularios de inicio de sesión pasan el nombre de la cuenta de usuario, el nombre del dominio que contiene la cuenta de usuario y alguna función de la contraseña del usuario. Los distintos tipos de inicio de sesión representan la contraseña de forma diferente cuando la pasan a LsaLogonUser.

Para inicios de sesión interactivos, inicios de sesión por lotes e inicios de sesión de servicio, el cliente de inicio de sesión está en el equipo que ejecuta la primera parte del paquete de autenticación de MSV. En este caso, la contraseña de texto no especificado se pasa a LsaLogonUser y a la primera parte del paquete de autenticación de MSV. Para los inicios de sesión de servicio y los inicios de sesión por lotes, el Administrador de control de servicios y el Programador de tareas proporcionan una forma más segura de almacenar las credenciales de la cuenta.

La primera parte del paquete de autenticación de MSV convierte la contraseña de texto no especificado en una contraseña OWF del Administrador de LAN y en una contraseña OWF de Windows NT. A continuación, la primera parte del paquete pasa la contraseña de texto no especificado al servicio NetLogon o a la segunda parte del paquete. A continuación, la segunda parte consulta la base de datos SAM para las contraseñas de OWF y se asegura de que son idénticas.

En el caso de los inicios de sesión en la red, el cliente que se conecta al equipo recibió anteriormente un desafío de 16 bytes, o "nonce". Si el cliente es un cliente de administrador de LAN, el cliente calculó una respuesta de desafío de 24 bytes mediante el cifrado del desafío de 16 bytes con la contraseña OWF del Administrador de LAN de 16 bytes. A continuación, el cliente del administrador de LAN pasa esta "respuesta de desafío del administrador de LAN" al servidor. Si el cliente es un cliente de Windows, se calcula una "respuesta de desafío de Windows NT" mediante el mismo algoritmo. Sin embargo, el cliente de Windows usa los datos de Windows OWF de 16 bytes en lugar de los datos de OWF del Administrador de LAN. A continuación, el cliente de Windows pasa tanto la respuesta de desafío del administrador de LAN como la respuesta de desafío de Windows NT al servidor. En cualquier caso, el servidor autentica al usuario pasando todo lo siguiente a la API LsaLogonUser:

  • El nombre de dominio
  • El nombre de usuario
  • El desafío original
  • Respuesta de desafío del administrador de LAN
  • La respuesta de desafío opcional de Windows NT

La primera parte del paquete de autenticación de MSV pasa esta información sin cambios a la segunda parte. En primer lugar, la segunda parte consulta las contraseñas de OWF de la base de datos SAM o de la base de datos de Active Directory. A continuación, la segunda parte calcula la respuesta de desafío mediante la contraseña OWF de la base de datos y el desafío que se pasó. A continuación, la segunda parte compara la respuesta de desafío calculada con la respuesta de desafío pasada.

Nota

NTLMv2 también permite al cliente enviar un desafío junto con el uso de claves de sesión que ayudan a reducir el riesgo de ataques comunes.

Como se mencionó anteriormente, es posible que falte alguna versión de la contraseña en la base de datos SAM o en la base de datos de Active Directory. Además, es posible que falte alguna versión de la contraseña en la llamada a LsaLogonUser. Si están disponibles la versión de windows de la contraseña de la base de datos SAM y la versión de Windows de LsaLogonUser, se usan ambos. De lo contrario, la versión del Administrador de LAN de la contraseña se usa para la comparación. Esta regla ayuda a aplicar la confidencialidad de mayúsculas y minúsculas cuando se producen inicios de sesión de red de Windows a Windows. Esta regla también permite la compatibilidad con versiones anteriores.

Autenticación de paso a través

El servicio NetLogon implementa la autenticación de paso a través. Realiza las siguientes funciones:

  • Selecciona el dominio al que se pasa la solicitud de autenticación.
  • Selecciona el servidor dentro del dominio.
  • Pasa la solicitud de autenticación al servidor seleccionado.

Seleccionar el dominio es sencillo. El nombre de dominio se pasa a LsaLogonUser. El nombre de dominio se procesa de la siguiente manera:

  • Si el nombre de dominio coincide con el nombre de la base de datos SAM, la autenticación se procesa en ese equipo. En una estación de trabajo de Windows que es miembro de un dominio, el nombre de la base de datos SAM se considera el nombre del equipo. En un controlador de dominio de Active Directory, el nombre de la base de datos de cuentas es el nombre del dominio. En un equipo que no es miembro de un dominio, todos los inicios de sesión procesan solicitudes localmente.
  • Si este dominio confía en el nombre de dominio especificado, la solicitud de autenticación se pasa al dominio de confianza. En los controladores de dominio de Active Directory, la lista de dominios de confianza está fácilmente disponible. En un miembro de un dominio de Windows, la solicitud siempre se pasa al dominio principal de la estación de trabajo, lo que permite al dominio principal determinar si el dominio especificado es de confianza.
  • Si el dominio no confía en el nombre de dominio especificado, la solicitud de autenticación se procesa en el equipo al que se está conectando como si el nombre de dominio especificado fuera ese nombre de dominio. NetLogon no diferencia entre un dominio que no existe, un dominio que no es de confianza y un nombre de dominio con un tipo incorrecto.

NetLogon selecciona un servidor en el dominio mediante un proceso denominado detección. Una estación de trabajo de Windows detecta el nombre de uno de los controladores de dominio de Windows Active Directory en su dominio principal. Un controlador de dominio de Active Directory detecta el nombre de un controlador de dominio de Active Directory en cada dominio de confianza. El componente que realiza la detección es el localizador de DC que se ejecuta en el servicio Netlogon. El localizador de DC usa la resolución de nombres DNS o NETBIOS para localizar los servidores necesarios, en función del tipo de dominio y confianza que esté configurado.