¿Cómo configurar un algoritmo de hashing de contraseña extremadamente débil para Linux?

4

Como parte de un ejercicio de laboratorio, quiero tener un hash de contraseña extremadamente débil en el archivo / etc / shadow. ¿Cómo podría hacer esto? MD5 no es lo suficientemente débil, y estoy editando el archivo /etc/pam.d/common-password para cambiar el hashing algo. Estaba pensando que haría una descripción pero no puedo hacer que funcione.

¿Alguna idea?

    
pregunta Joe Smith 17.02.2017 - 17:36
fuente

1 respuesta

5

Puede haber otras posibilidades dependiendo de los objetivos y suposiciones de su ejercicio de laboratorio. Suponiendo que el Ubuntu moderno (como dice su comentario posterior), el inventario descrito con una sal común es probablemente el más débil que puede usar de forma nativa con soporte completo :

$ echo -n 'password' | mkpasswd -s -S '00' -R 1 -m des
00xQPHYlVDIw6

Detalles:

La implementación de cripta moderna de Ubuntu intenta evitar que usted cree hashes demasiado débiles por diseño.

Aparte de la criptografía Unix nativa (descrypt), Ubuntu 16.04 tiene las siguientes opciones, desde crypt (3):

          ID  | Method
          ─────────────────────────────────────────────────────────
          1   | MD5
          2a  | Blowfish (not in mainline glibc; added in some
              | Linux distributions)
          5   | SHA-256 (since glibc 2.7)
          6   | SHA-512 (since glibc 2.7)

Primero, sobre la sal. Parece que solo estás generando un solo hash. Si estuvieras generando muchos hashes, podrías usar la misma sal fija / estática para todos ellos, lo que agilizaría el ataque. Usaré una sal de todos los ceros para simplificar.

descrypt ya no puede ser reconocido. /etc/pam.d/common-password se refiere a "criptografía de Unix" como valor predeterminado, pero esto puede significar "la cripta del sistema por defecto del sistema operativo" en lugar de la descripción clásica. descrypt sería definitivamente el más débil si el sistema lo admite:

$ echo -n 'password' | mkpasswd -s -S '00' -R 1 -m des
00xQPHYlVDIw6

Nota : en mis pruebas, todavía pude usar una contraseña descrita para iniciar sesión en un sistema Ubuntu. Puede intentar describirlo, pero la documentación de PAM no lo incluye explícitamente, por lo que puede o no funcionar para sus propósitos .

Blowfish / bcrypt (2a y / o 2y) es por mucho el más lento, y parece que no es compatible con Ubuntu, así que lo descartaremos.

MD5crypt tiene un número fijo de rondas (1000), que es una de las razones por las que ahora está en desuso . Y es más rápido (y por lo tanto más débil) que SHA-256 o SHA-512.

$ echo -n 'password' | mkpasswd -s -S '00000000' -m md5
$1$00000000$5ybxs8yjIGjFJv4/CuHRd1

Entre SHA-256 y SHA-512, SHA-256 es un hash más rápido y, por lo tanto, sería teóricamente "más débil" para tus propósitos.

Verifiqué para ver si podía debilitar los SHA al reducir el número de rondas. Parece que no hay una manera simple / ingenua de hacer esto. El comando nativo de Ubuntu mkpasswd llama a la función de cifrado subyacente, que ignora los valores de -R por debajo de 1000 por diseño:

SHA-256:

$ echo -n 'password' | mkpasswd -s -S '00000000' -R 1 -m sha-256
$5$rounds=1000$00000000$2h.5f29uvvoub7RFoFxxMG4Yg43KX3rL0rF8vn3CIPC

SHA-512:

$ echo -n 'password' | mkpasswd -s -S '00000000' -R 1 -m sha-512
$6$rounds=1000$00000000$hNBmdrAfQPp5VkP/POLNOo3Dv1tVsOORYGE4pKarVzYs43iS2GdEkUrPU2Xbo6m5mX8PPDPfcQvFKo7Ktar.W.

Podría intentar encontrar una implementación independiente de una de estas que no utilice las bibliotecas criptográficas del sistema y le permita anular las rondas. Pero no hay garantía de que las utilidades que necesitan interpretar el hash entiendan o respeten un valor inferior al mínimo esperado (1000). (Si estuviera escribiendo una utilidad de este tipo, rechazaría como no válido cualquier hash con menos rondas de las que esperaba)

Eso nos deja con mínimos nativos para el número de rondas. Para ilustrar las velocidades relativas, aquí hay algunas velocidades de referencia de hashcat (de un sistema con seis GTX 970s):

Hashtype: bcrypt, Blowfish(OpenBSD)                          39955 H/s
Hashtype: sha512crypt, SHA512(Unix)                          426.6 kH/s
Hashtype: sha256crypt, SHA256(Unix)                         1017.3 kH/s
Hashtype: md5crypt, MD5(Unix), FreeBSD MD5, Cisco-IOS MD5  28070.8 kH/s
Hashtype: descrypt, DES(Unix), Traditional DES              2645.3 MH/s

Por lo tanto, el más débil que se garantiza que sea compatible con el Ubuntu moderno es actualmente md5crypt descrypt .

    
respondido por el Royce Williams 19.02.2017 - 06:24
fuente

Lea otras preguntas en las etiquetas