6 - NetNTLM

La Familia de Protocolos NTLM

NTLM utiliza un modelo de "Desafío-Respuesta" (Challenge-Response). En este modelo, el servidor envía un desafío aleatorio al cliente, y el cliente debe responder cifrando ese desafío con su hash de contraseña.

Es importante destacar que LM y NTLM son nombres de los algoritmos de hash (la forma en que se guarda la clave), mientras que NTLMv1 y NTLMv2 son los protocolos de autenticación que utilizan esos hashes.

La Distinción Crítica: Algoritmo de Hash vs. Protocolo de Red

Es frecuente encontrar confusión en la terminología de Windows debido a que las mismas siglas se utilizan en contextos diferentes. Para comprender la seguridad de estos sistemas, es fundamental separar el método de almacenamiento del método de transmisión, el hash del protocolo.

El Hash (LM y NTLM): El Almacenamiento de la Credencial

Cuando se habla de LM (LAN Manager) o NTLM (NT LAN Manager) en el contexto de "Hash", se hace referencia exclusivamente a la criptografía estática. Es el formato en el que el sistema operativo guarda la contraseña del usuario en la base de datos de seguridad (SAM o Active Directory).

El sistema nunca almacena la contraseña en texto plano. En su lugar, aplica un algoritmo matemático a la contraseña para convertirla en una cadena de caracteres única (el hash). Por tanto, el hash LM o el hash NTLM son simplemente la representación digital de la clave guardada en el disco duro.

El Protocolo (NTLMv1 y NTLMv2): El Proceso de Autenticación

Por otro lado, NTLMv1 y NTLMv2 son protocolos de comunicación de red. Definen las reglas y los pasos que deben seguir el cliente y el servidor para validar una identidad a través del cable de red.

Estos protocolos son el "lenguaje" que utilizan las máquinas para conversar. Su función es transportar la prueba de identidad desde el usuario hasta el servidor de forma segura, utilizando un mecanismo de desafío y respuesta.

Para entender mas a fondo cada parte del método NTLM recomiendo leer el siguiente articulo:

La Relación entre Ambos

La clave para entender la diferencia de cada elemento radica en cómo interactúan: el protocolo (el proceso dinámico) utiliza el hash (el dato estático) como materia prima para realizar sus cálculos.

Cuando un usuario se autentica utilizando el protocolo moderno NTLMv2, el sistema toma el Hash NTLM almacenado y lo utiliza para resolver el desafío matemático que envía el servidor. De esta forma, aunque el protocolo de transporte ha evolucionado para ser más seguro (pasando de v1 a v2), la base fundamental que valida la operación sigue siendo el hash criptográfico almacenado previamente.

El flujo se visualizaría de la siguiente manera:

Pass-through Authentication

El siguiente diagrama muestra el proceso de autenticación mediante el mecanismo de "Desafío-Respuesta" (NTLMv1 y NTLMv2). Este escenario es muy común cuando un servidor (como el Mail Server en la imagen) necesita autenticar a un usuario de dominio, pero no tiene la contraseña del usuario almacenada localmente. Por lo tanto, debe consultar al Controlador de Dominio (Domain Controller).

1. Negociación (Type 1 Message)

AUTHENTICATION_REQ.

  • Detalle Técnico: El cliente inicia la conexión enviando un mensaje NEGOTIATE_MESSAGE.

    • El cliente dice: "Hola, quiero autenticarme" y envía una lista de sus capacidades (por ejemplo, si soporta cifrado de 128 bits, si soporta Unicode, la versión de NTLM, etc.).

    • En este punto, no se envía ni el usuario ni la contraseña.

📌 ¿Qué son las listas de capacidades?

En la primera etapa de la comunicación NTLM, antes de que se intente cualquier validación de identidad, ocurre una fase crítica de negociación. El cliente no se limita a saludar al servidor, sino que envía un conjunto de "banderas" o indicadores que definen qué funcionalidades soporta su sistema operativo. Esta lista actúa como un acuerdo previo sobre las reglas del juego para esa sesión específica.

Entre los datos que se negocian aquí se incluyen aspectos de seguridad y compatibilidad, como por ejemplo si el cliente soporta cifrado de 128 bits (para una mayor seguridad), si es capaz de manejar caracteres Unicode (vital para nombres de usuario con caracteres especiales) o qué versión específica del protocolo NTLM se utilizará. Si el cliente y el servidor no se ponen de acuerdo en estas capacidades básicas, la autenticación no puede proceder, ya que no hablarían el mismo "idioma" técnico.

2. El Desafío del Servidor (Type 2 Message)

NTLM CHALLENGE_MESSAGE.

  • Detalle Técnico: El servidor de correo responde con un CHALLENGE_MESSAGE.

    • El servidor genera un número aleatorio de 64 bits (8 bytes) llamado Nonce (o "Server Challenge").

    • Este número es crucial porque asegura que cada autenticación sea única y previene ataques de repetición (replay attacks) básicos.

📌¿Qué es el server challenge?

Es el componente central que impide que un atacante pueda reutilizar una autenticación capturada. Técnicamente conocido como "Nonce", es un número aleatorio de 64 bits generado por el servidor cada vez que alguien intenta entrar. Su función es introducir una variable única en la ecuación matemática de la autenticación.

Sin este desafío aleatorio, la respuesta cifrada del usuario sería siempre la misma. Esto permitiría que un atacante copiara los datos que viajan por la red y los enviara más tarde para hacerse pasar por el usuario (lo que se conoce como ataque de repetición o replay attack). Al obligar al cliente a mezclar su contraseña con este número aleatorio que cambia en cada intento, el servidor asegura que la respuesta cifrada sea siempre distinta, haciendo inútil cualquier captura de tráfico previo.

3. La Respuesta del Cliente (Type 3 Message)

NTLM HASH + CHALLENGE = RESPONSE y NTLM RESPONSE_MESSAGE.

  • Detalle Técnico: Aquí ocurre la criptografía en el lado del cliente:

    1. El cliente toma la contraseña del usuario y genera un Hash NTLM (usualmente MD4 en versiones antiguas o HMAC-MD5 en NTLMv2).

    2. El cliente usa ese Hash para cifrar el Nonce (el desafío) que recibió del servidor.

    3. El resultado de esa operación es la Respuesta (Response).

    4. El cliente envía el mensaje AUTHENTICATE_MESSAGE que contiene: El nombre de usuario, el nombre del dominio y la Respuesta calculada. La contraseña nunca viaja por la red.

4. Validación mediante Netlogon (Pass-through)

SEND CHALLENGE + RESPONSE

  • Detalle Técnico:

    • Como el Mail Server no conoce la contraseña del usuario, no puede verificar si la respuesta es correcta por sí mismo.

    • El servidor toma tres datos: El Usuario, el Desafío original (que él mismo generó en el paso 2) y la Respuesta del cliente (del paso 3).

    • Envía estos datos al Controlador de Dominio (DC) a través del servicio Netlogon.

📌El servicio Netlogon

Cuando el servidor de aplicaciones (como el servidor de correo de la imagen) no tiene la base de datos de usuarios en su propio disco duro, necesita consultar a una autoridad superior: el Controlador de Dominio. Netlogon es el canal de comunicación seguro y el servicio de sistema encargado de transportar esa consulta.

Funciona como un intermediario de confianza. El servidor de correo le entrega a Netlogon los datos del intento de acceso y este servicio se encarga de establecer una conexión RPC (Llamada a Procedimiento Remoto) segura con el Controlador de Dominio para verificar las credenciales. Es fundamental para la autenticación de paso (Pass-through Authentication), ya que permite que un servidor miembro valide usuarios del dominio sin necesidad de conocer o almacenar sus contraseñas reales, delegando la decisión final al controlador.

5. Verificación en el Controlador de Dominio

NTLM HASH + CHALLENGE = RESPONSE

  • Detalle Técnico:

    1. El DC busca al usuario en su base de datos (SAM o NTDS.dit) y recupera el Hash NTLM almacenado de ese usuario.

    2. El DC realiza la misma operación matemática que hizo el cliente: Toma el Hash almacenado y cifra el Desafío original que le pasó el servidor de correo.

    3. El DC compara su resultado con la Respuesta del cliente.

      • Si coinciden: Significa que el cliente tiene la contraseña correcta.

      • Si no coinciden: La autenticación falla.

📌 Base de datos de seguridad (SAM y NTDS.dit)

Estos términos refieren al lugar físico y lógico donde se almacenan las identidades digitales, pero se utilizan en escenarios distintos. La SAM (Security Accounts Manager) es una base de datos de registro local; cada computadora con Windows tiene una y allí se guardan los usuarios que solo existen en esa máquina específica. Si un atacante roba el archivo SAM, podría intentar descifrar las contraseñas locales.

Por otro lado, el archivo NTDS.dit es el corazón del Directorio Activo. Es la base de datos centralizada que reside únicamente en los Controladores de Dominio. Aquí se almacena la información de todos los usuarios, grupos y computadoras de toda la red corporativa. Cuando se utiliza NTLM en un entorno de dominio, la validación final siempre se realiza contra la información contenida en el NTDS.dit, ya que es la única fuente de verdad que contiene los hashes de las contraseñas de todos los empleados de la organización.

6. Resultado Final

ALLOW / DENY AUTHENTICATION.

  • Detalle Técnico:

    • El DC informa al servidor de correo si la validación fue exitosa (NETLOGON_VALIDATION_SAM_INFO).

    • Finalmente, el servidor de correo permite o deniega el acceso al cliente.

📌Netlogon como servicio de sistema

Netlogon es un programa que funciona en segundo plano de manera automática, sin intervención del usuario y con privilegios elevados dentro del sistema operativo Windows.

Imagina que Netlogon es un correo privado y blindado que vive dentro del servidor. Su única función es mantener un "canal seguro" abierto permanentemente con el Controlador de Dominio.

  • No es una aplicación con la que tú interactúas (como Word o el navegador).

  • Es un componente crítico del sistema operativo que se inicia cuando prendes el servidor.

  • Es el encargado de tomar los datos de autenticación que recibe el Servidor de Correo y transportarlos de forma segura hasta el Controlador de Dominio para su validación, actuando como el mensajero oficial de seguridad entre máquinas del dominio.

Existe una diferencia entre NTLMv1 y NTLMv2 que no es visible en la imagen, sino que ocurre matemáticamente dentro del NTLM RESPONSE_MESSAGE ("Calculo de la Respuesta").

  • En NTLMv1, la respuesta se calcula usando algoritmos más antiguos y débiles (MD4 y DES).

  • En NTLMv2, la respuesta utiliza algoritmos más robustos (HMAC-MD5) y agrega información de tiempo para evitar ataques, pero el "dibujo" del proceso sigue siendo el mismo.

Aquí tienes las respuestas detalladas para cada una de tus preguntas, manteniendo el enfoque conceptual y el formato solicitado.

Versión del protocolo en la imagen

La imagen refleja la estructura genérica del protocolo, por lo que el esquema es válido tanto para NTLMv1 como para NTLMv2.

A nivel visual y de flujo de mensajes (pasos 1 al 6), ambas versiones funcionan exactamente igual: negociación, desafío y respuesta. La diferencia real no es visible en las flechas, sino que ocurre matemáticamente dentro del paso 3 ("Calculo de la Respuesta").

  • En NTLMv1, la respuesta se calcula usando algoritmos más antiguos y débiles (MD4 y DES).

  • En NTLMv2, la respuesta utiliza algoritmos más robustos (HMAC-MD5) y agrega información de tiempo para evitar ataques, pero el "dibujo" del proceso sigue siendo el mismo.

Tipo de cifrado en NTLM

NTLM es un proceso basado puramente en cifrado simétrico.

El concepto clave aquí es el "secreto compartido". Para que la validación funcione, tanto el Cliente (quien se quiere autenticar) como el Controlador de Dominio (quien verifica) deben tener exactamente la misma información de base: el hash de la contraseña del usuario. Si fuera asimétrico, utilizarían un par de claves (pública y privada), como ocurre en los certificados digitales. En NTLM, la seguridad depende totalmente de que ambas partes conozcan el mismo secreto (la contraseña) de antemano

Seguridad y Desacoplamiento de Credenciales

La ventaja crítica de Kerberos sobre NTLM reside en el desacoplamiento. Kerberos separa las credenciales del usuario de sus solicitudes a los recursos. Al acceder a un sitio interno de SharePoint, por ejemplo, el servidor web nunca interactúa con la contraseña real, solo con el ticket.

Por el contrario, los protocolos NTLM heredados son más susceptibles a ataques de interceptación y fuerza bruta porque dependen de intercambios constantes que pueden ser capturados si no están debidamente asegurados. Por ello, aunque NTLM sigue presente por compatibilidad, Kerberos es el estándar moderno robusto para la gestión de identidades en red.

Comparación de protocolos hash

Hash / Protocolo

Técnica Criptográfica

Autenticación Mutua

Tipo de Mensaje

Tercero de Confianza

NTLM

Criptografía de clave simétrica

No

Número aleatorio

Controlador de dominio

NTLMv1

Criptografía de clave simétrica

No

Hash MD4, número aleatorio

Controlador de dominio

NTLMv2

Criptografía de clave simétrica

No

Hash MD4, número aleatorio

Controlador de dominio

Kerberos

Criptografía de clave simétrica y asimétrica

Ticket cifrado mediante DES, MD5

Controlador de dominio / KDC

Last updated