* Formato de contraseña del archivo de sombra NIX

7

Estoy intentando obtener acceso de shell a un enrutador y he logrado recuperar su archivo / etc / shadow :

root:$1$$N76hdwGfg11g0KdKbtyh21:0:0:root:/root:/bin/bash

He intentado usar john para resolverlo, pero no pude:

$ ./john --show passwd
0 password hashes cracked, 1 left

También hice una cuenta de prueba y logré descifrarla en ubuntu / debian:

$ ./john --show passwd_test 
testtesttest:test:16626:0:99999:7:::

1 password hash cracked, 0 left

donde testtesttest es el usuario y prueba la contraseña. ¿En qué formato está el hash de contraseña?

Editar:

Lo encontré aquí . Sin embargo, sería bueno saber su formato.

    
pregunta Sebi 10.07.2015 - 22:41
fuente

2 respuestas

15

El formato más común para hashes en sistemas similares a Unix tiene la forma $ALG$SALT$OUTPUT donde ALG es un número pequeño que identifica el algoritmo, SALT es una sal para el hash y OUTPUT es la salida de la función hash. SALT y OUTPUT están codificados en base64.

El algoritmo 1 es "criptografía MD5", una construcción basada en la iteración de la función hash MD5. Este algoritmo no fue (y aún no está, por lo que sé) definido por un estándar formal. Fue introducido por Poul-Henning Kamp en FreeBSD en 1994 .

Las API normales agregan un salt. La implementación original forzó una sal de 48 bits. El recuento de iteraciones se fijó en 2477, que el autor realizó una prueba de referencia de 34 µs en una PC de gama alta de la época. Su hash tiene un salt vacío, lo cual es inusual y requiere que el desarrollador o administrador que lo configuró omita las herramientas habituales y probablemente llame directamente a una función de biblioteca.

Los sistemas Linux actuales generalmente usan algoritmos 5 y 6 , que se basan en la iteración de SHA-256 y SHA-512 respectivamente. Estas construcciones se basan ampliamente en el mismo principio que PBKDF2 , pero calculan el hash iterado de manera diferente.

Puede encontrar una gran cantidad de información sobre los algoritmos de hash de contraseña en la documentación de la biblioteca passlib , y Por supuesto, la biblioteca te da implementaciones de Python. Este algoritmo es passlib.hash.md5_crypt .

    
respondido por el Gilles 10.07.2015 - 23:24
fuente
10

Suponiendo que el enrutador sigue el estándar glibc para los hashes de contraseña, el segundo campo ( $1$$N76hdwGfg11g0KdKbtyh21 ) es la contraseña, y se codifica de la siguiente manera:

  • $1$ : hash MD5 iterado
  • $ : sin sal
  • N76hdwGfg11g0KdKbtyh21 : la contraseña hash, en codificación base64. En codificación hexadecimal, sería 37bea177019f835d60d0a74a6edca1db
respondido por el Mark 10.07.2015 - 23:24
fuente

Lea otras preguntas en las etiquetas