¿Qué daño hay en la obtención de hashes de contraseña en un entorno de Windows?

8

ArsTechnica publicó este artículo recientemente hablando sobre cómo se ha penetrado la red eléctrica:

Los piratas informáticos esperan tras penetrar en las redes eléctricas de EE. UU. Y Europa

Extracto:

  

Una táctica involucraba el uso del kit de herramientas Phishery disponible públicamente para enviar a los objetivos un documento de Microsoft Word programado para descargar una plantilla desde un servidor predeterminado controlado por los atacantes.

     

El servidor luego consultará en la computadora de descarga las credenciales SMB que muchas redes corporativas usan para restringir el acceso a los usuarios verificados.

     

En muchos casos, las computadoras de descarga responderían y en el proceso proporcionarían a los atacantes el nombre de usuario y un hash criptográfico a la red de destino.

Pero obtener hashes no es lo mismo que obtener contraseñas reales.

Entonces, mi pregunta es: ¿qué daño hay al obtener hashes de contraseña en un entorno Windows?

Para obtener referencias sobre esos correos electrónicos: The Phishery Toolkit

    
pregunta SDsolar 07.09.2017 - 03:22
fuente

2 respuestas

2

TL; DR : debido a la forma en que Windows autentica a los usuarios de la red en escenarios que no son Kerberos (no Active Directory), los hashes de contraseñas funcionan igual que las contraseñas para autenticar a los usuarios de la red.

Versión larga : hay dos formas tradicionales de usar una contraseña para autenticar a alguien:

  • El cliente envía la contraseña al servidor (tradicionalmente, en texto claro, aunque los protocolos más nuevos usan cifrado). El servidor toma la contraseña, la codifica y la compara con la contraseña que ha almacenado. Si los hashes coinciden, se asume que el cliente tiene la contraseña correcta y se trata como autenticado.
  • Respuesta-desafío: el servidor genera un desafío (una secuencia de bytes aleatoria) y lo envía al cliente. El cliente acepta el desafío, lo combina con la contraseña del cliente, hace un hash del resultado y envía el hash al servidor. Mientras tanto, el servidor acepta el desafío, lo combina con la contraseña que ha almacenado y el resultado se obtiene. Si los dos hashes coinciden, el cliente se trata como autenticado.

Tenga en cuenta que, bajo un esquema de desafío-respuesta, la contraseña nunca se envía realmente al servidor (lo que es bueno), pero el servidor necesita saber la contraseña (lo que es malo). El primer enfoque es el enfoque tradicional de Unix; El segundo es el enfoque tradicional de Windows.

Para mitigar el "servidor necesita saber la contraseña" desventaja de desafío-respuesta, muchas implementaciones de desafío-respuesta utilizan un hash de la contraseña. En otras palabras, en lugar de comparar el hash de (challenge + password) , las implementaciones comparan el hash de (challenge + hashed password) . Sin embargo, en este caso, la contraseña con hash es todo lo que necesita para acceder al servicio (porque un cliente malintencionado puede enviar el hash de (challenge + hashed password) incluso si no conoce la contraseña de texto claro). Por lo tanto, las contraseñas de hash bajo un esquema de desafío-respuesta hacen que sea más difícil obtener una contraseña de texto simple que presumiblemente podría usarse para atacar a otros servicios, pero no hace ninguna diferencia en términos de la seguridad del servicio en sí.

Otras lecturas y referencias:

  • enlace

      

    Una vez que se obtienen los hashes, descifrarlos para descubrir la contraseña de texto simple puede ser una tarea larga y ardua (suponiendo que las contraseñas no sucumban a las listas de palabras o los ataques de la tabla del arco iris). Afortunadamente para nosotros, Windows aceptará gustosamente los valores de hash NTLM en muchas situaciones, como acceder a un recurso de red por su dirección IP (vs. nombre de host) o conectarse a un dispositivo que no esté unido al dominio. El único momento en que no se intercambiarían hashes sería cuando se soliciten recursos de red en un entorno exclusivo de Kerberos, pero ese tipo de implementación es poco frecuente y puede ser problemático para muchas organizaciones.

  • enlace
      

    Muchos (pero no todos) algoritmos de desafío-respuesta ... requieren que tanto el cliente como el servidor tengan un secreto compartido. Dado que la contraseña en sí no se almacena, un algoritmo de desafío-respuesta usualmente tendrá que usar el hash de la contraseña como secreto en lugar de la contraseña en sí. En este caso, un intruso puede usar el hash real, en lugar de la contraseña, lo que hace que los hashes almacenados sean tan sensibles como las contraseñas reales.

  • enlace
      

    El esquema UNIX normalmente envía contraseñas de texto simple a través de la red al iniciar sesión. Esto es incorrecto. El esquema de cifrado SMB nunca envía la contraseña de texto simple a través de la red, pero sí almacena los valores de hash de 16 bytes en el disco. Esto también es malo. ¿Por qué? Debido a que los valores de hash de 16 bytes son un "equivalente de contraseña". No puede derivar la contraseña del usuario, pero podrían usarse en un cliente modificado para obtener acceso a un servidor. Esto requeriría un considerable conocimiento técnico por parte del atacante pero es perfectamente posible. Por lo tanto, debe tratar los datos almacenados en cualquier backdb backend que use (archivo smbpasswd, LDAP) como si contuviera las contraseñas de texto simple de todos sus usuarios.

respondido por el Josh Kelley 08.09.2017 - 20:01
fuente
2
  

obtener hashes no es lo mismo que obtener contraseñas reales

Sin embargo, puede ser tan bueno como obtener las contraseñas reales para los usuarios típicos. Este artículo está sobre trabajadores en compañías de poder. ¿Crees que el técnico de tu compañía eléctrica promedio tiene una frase de software de azar completamente aleatoria de 9 palabras para su contraseña de inicio de sesión en el trabajo? Lo más probable es que sea "MyDogFido! 7" (porque han tenido esa contraseña para 7 cambios de contraseña) como máximo . Solo necesitan romper un hash para establecer una cabeza de playa en el sistema; con suficientes empleados, si pueden obtener el hash de todos los empleados, estoy seguro de que obtendrán al menos uno.

    
respondido por el Ben 07.09.2017 - 17:27
fuente

Lea otras preguntas en las etiquetas