Seguridad de NTLM y complejidad de la contraseña

1

Un cliente que permite responder al servidor con LM y NTLM, con una contraseña que es simple, es inseguro.

¿No es una forma más segura tener toda la comunicación con el esquema NTLMv2? y además de tener una contraseña compleja.

¿es cierto que una contraseña débil puede ser descifrada incluso en NTLMv2?

    
pregunta BlackFire27 07.07.2013 - 07:44
fuente

3 respuestas

3

En NTLM (v1 y v2), el protocolo de autenticación en sí no es malo, siempre y cuando lo juegues dentro de una conexión segura. De hecho:

    Los atacantes
  • activos , que pueden espiar la red y también inyectar sus propios paquetes, pueden secuestrar las conexiones abiertas a voluntad. Si su protocolo de autenticación se realiza en una conexión TCP básica, un atacante solo tiene que esperar una conexión normal de un usuario autorizado y robarlo una vez que se realiza el paso de autenticación.

  • Incluso los atacantes pasivos, observando los mensajes del protocolo, obtendrán suficiente información para ejecutar un ataque de diccionario sin conexión : pueden probar una contraseña potencial hasta que se encuentre una que coincida con los mensajes vistos en el cable; y pueden hacerlo en la privacidad de sus propias máquinas (esa es la parte "fuera de línea").

SSL / TLS soluciona ambos problemas. Si el cliente abre por primera vez una conexión SSL con el servidor (con la debida autenticación del servidor a través de su certificado y así sucesivamente), y el resto de la comunicación (incluido el protocolo de autenticación basado en contraseña) ocurre dentro del túnel cifrado, entonces estará seguro. de los atacantes. Sin embargo, en estas condiciones, sería mejor un protocolo "mostrar la contraseña" más simple, en el que el cliente simplemente envíe la contraseña "tal cual" (en el túnel SSL).

De hecho, los atacantes son inventivos y no se limitan a espiar en la red. A menudo sucede (con demasiada frecuencia) que los atacantes obtienen algunos destellos de los datos del servidor, por ejemplo. a través de inyecciones de SQL, o mediante la recuperación de discos duros viejos de los contenedores de basura. Esta es la razón por la que los servidores deben almacenar solo las contraseñas con hash . Pero hay buenas funciones hash para eso, y también hay malas funciones hash (vea esta respuesta para una gran cantidad de detalles). Cuando se usa el protocolo simple "mostrar la contraseña", el servidor es libre de usar cualquier función de hashing de contraseña que considere adecuada; sin embargo, cuando se usa NTLM, el servidor debe almacenar el valor de hash que el protocolo exige, es decir, "NT Hash" o "LM Hash".

Desafortunadamente, NT Hash es muy débil contra un atacante de fuerza bruta: es muy rápido (un atacante con una PC + GPU puede probar miles de millones de contraseñas por segundo) y no tiene sal (los atacantes pueden colude y use tablas precomputadas, como tablas arcoiris , para ejecutar ataques casi gratis). LM Hash es aún peor .

Por lo tanto, realmente no deberías usar NTLM si puedes evitarlo.

Una contraseña débil es débil, sin embargo, la pones, porque los atacantes también pueden realizar ataques de diccionario en línea simplemente dirigiéndose al servidor. En estas condiciones, se puede tolerar una contraseña débil solo con procedimientos estrictos de bloqueo, como cerrar la cuenta de usuario si se ingresan cuatro contraseñas incorrectas consecutivas. Esto es lo que hacen la mayoría de las tarjetas inteligentes. Sin embargo, esto no es apropiado para un servidor, ya que sería demasiado fácil para las personas malintencionadas bloquear las cuentas de otras personas.

Por lo tanto, debes educar a tus usuarios para que elijan contraseñas seguras. En este sentido, NTLMv1 agrega un insulto adicional a la lesión, a través de LM Hash , que restringe las contraseñas a 14 caracteres y asigna letras minúsculas a mayúsculas. La seguridad de la contraseña depende de la entropía : una medida de lo que podría haber sido la contraseña. La entropía necesita algo de espacio; especialmente porque los humanos están involucrados. Los humanos son malos para hacer elecciones al azar, pero también en recordar elecciones al azar; su tarea se hace más fácil si se les permite elegir long contraseñas . Pero LM Hash no permite contraseñas largas. La siguiente mejor cosa, entonces, es agregar entropía adicional, por ejemplo, haciendo que cada letra sea mayúscula o minúscula de forma aleatoria. ¡Pero LM Hash también previene eso!

    
respondido por el Tom Leek 07.07.2013 - 14:19
fuente
5

Permitir el almacenamiento y el uso de hashes de LanMan (LM) es una debilidad de seguridad, ya que Lan Manager divide la contraseña en dos caracteres de 7 mayúsculas entre mayúsculas y minúsculas antes del hashing, lo que hace que descifrar el hash de contraseña sea mucho más fácil.

En general, forzar NTLMv2 y deshabilitar el almacenamiento de hashes LM es una buena idea desde el punto de vista de la seguridad y, como ninguna versión compatible de Windows requiere hashes LM, parece una apuesta bastante segura en estos días.

Una contraseña débil casi siempre se puede descifrar si el atacante obtiene una versión de hash que está almacenada en un sistema. Un atacante puede usar un ataque de diccionario que suele ser bastante rápido para descifrar muchas contraseñas débiles, y para las contraseñas cortas que no están en el diccionario se pueden adquirir tablas de arco iris para acelerar el proceso de descifrado.

    
respondido por el Rоry McCune 07.07.2013 - 10:03
fuente
1

Las contraseñas de LanMan tienen un máximo de 14 caracteres (truncadas) y luego se dividen en dos de 7 caracteres de longitud y se convierten en mayúsculas. Esto significa que la fuerza máxima de la contraseña es: 26 caracteres + 10 dígitos + ~ 10 caracteres especiales, lo que resulta en 46 ^ 7 o 435818 millones de combinaciones. En una computadora moderna con una GPU rápida, estas combinaciones pueden probarse (con fuerza bruta) muy rápido, en cuestión de minutos. Suponiendo que tiene acceso al hash, si se trata de una red, es mucho más lento. Pero es mejor que ni siquiera almacene ese hash de LM, si no lo necesita ningún sistema (muy) antiguo. Tales sistemas antiguos serían Windows for Workgroups (WfW) 3.11 o dichos sistemas desde 1993 o algo así.

Por lo tanto, la recomendación es desactivar el hashing de LM y usar solo NTLMv2. Con NTLM (v2), toda la contraseña está oculta, no se divide en dos partes y tampoco cambia el caso. Entonces, si usa una contraseña larga (más de 7 caracteres) y caracteres mixtos (mayúsculas, minúsculas, dígitos, especiales), no es fácil probar todas nuestras combinaciones. Pero uno podría probar fácilmente todas las contraseñas de 6 caracteres en minutos o todas las contraseñas de 7 caracteres que no contengan mayúsculas, etc. al mismo tiempo que las contraseñas de LM.

Afortunadamente, el hashing de LM está deshabilitado en las máquinas más nuevas que Windows XP de forma predeterminada.

    
respondido por el http 07.07.2013 - 14:04
fuente

Lea otras preguntas en las etiquetas