¿Cómo encontrar el algoritmo hash utilizado para hash contraseñas?
11
Tengo la contraseña de trabajo y puedo ver el hash (/ etc / passwd). ¿Cómo encuentro el algoritmo de hash utilizado para cambiar la contraseña, sin probar manualmente diferentes algoritmos hasta encontrar una coincidencia?
Estoy muy sorprendido de que puedas ver un hash adentro /etc/passwd. Pensé que todas las variantes de Unix / Linux se habían movido a una división con /etc/shadowaños atrás. (Sé que tales sistemas todavía apoyan en los hashes passwd, pero no conozco ningún utilidades que los ponen allí más Un sistema embebido, tal vez.?
roaima
Es OpenWrt Backfire 10.03. Los hashes todavía se almacenan /etc/passwdaquí. Sin embargo, esto no cambia el asunto de la pregunta. ¿Lo hace?
Dorin Botan
1
Solo para que conste: los BSD tienen dos archivos Berkeley DB, roaima. Todavía está dividido, pero no lo es /etc/shadowy no tienen ningún archivo con ese nombre.
Si salt es una cadena de caracteres que comienza con los caracteres "$ id $" seguidos de una cadena opcionalmente terminada por "$", el resultado tiene la forma:
$id$salt$encrypted
id identifica el método de encriptación utilizado en lugar de DES y esto determina cómo se interpreta el resto de la cadena de contraseña. Se admiten los siguientes valores de id:
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)
Pez globo, también conocido como bcrypt, también se identifica por medio de prefijos 2, 2b, 2x, y 2y(véase la documentación del PassLib ).
Por lo tanto, si una contraseña cifrada se almacena en el formato anterior, puede encontrar el algoritmo utilizado mirando la identificación ; de lo contrario, es el cryptalgoritmo DES predeterminado (con un hash de 13 caracteres), o cryptel DES "grande" (extendido para admitir contraseñas de 128 caracteres, con hashes de hasta 178 caracteres de longitud), o DES extendido BSDI (con un _prefijo seguido de un hash de 19 caracteres).
Algunas distribuciones usan libxcrypt, que admite y documenta bastantes métodos más:
y: yescrypt
gy: gost-yescrypt
7: scrypt
sha1: sha1crypt
md5: SunMD5
Otras plataformas admiten otros algoritmos, así que revise la página de cryptmanual allí. Por ejemplo, OpenBSDcrypt(3) solo es compatible con Blowfish, que se identifica con la identificación "2b".
Las contraseñas basadas en DES son, por cierto, siempre de 13 caracteres y consisten en caracteres alfanuméricos, así como .y /. Los primeros 2 caracteres son la sal y los otros 11 son un valor hash (más o menos). Y es el único de los algoritmos admitidos por el cryptcual es tan débil que no puede compensarlo eligiendo una contraseña más segura.
/etc/passwd
. Pensé que todas las variantes de Unix / Linux se habían movido a una división con/etc/shadow
años atrás. (Sé que tales sistemas todavía apoyan en los hashespasswd
, pero no conozco ningún utilidades que los ponen allí más Un sistema embebido, tal vez.?/etc/passwd
aquí. Sin embargo, esto no cambia el asunto de la pregunta. ¿Lo hace?/etc/shadow
y no tienen ningún archivo con ese nombre.Respuestas:
Esto está documentado en
crypt(3)
la página del manual , que puede encontrar enshadow(5)
la página del manual opasswd(5)
en la . Esos enlaces son apropiados para los sistemas modernos basados en Linux; la descripción hay:Pez globo, también conocido como
bcrypt
, también se identifica por medio de prefijos2
,2b
,2x
, y2y
(véase la documentación del PassLib ).Por lo tanto, si una contraseña cifrada se almacena en el formato anterior, puede encontrar el algoritmo utilizado mirando la identificación ; de lo contrario, es el
crypt
algoritmo DES predeterminado (con un hash de 13 caracteres), ocrypt
el DES "grande" (extendido para admitir contraseñas de 128 caracteres, con hashes de hasta 178 caracteres de longitud), o DES extendido BSDI (con un_
prefijo seguido de un hash de 19 caracteres).Algunas distribuciones usan libxcrypt, que admite y documenta bastantes métodos más:
y
: yescryptgy
: gost-yescrypt7
: scryptsha1
: sha1cryptmd5
: SunMD5Otras plataformas admiten otros algoritmos, así que revise la página de
crypt
manual allí. Por ejemplo, OpenBSDcrypt(3)
solo es compatible con Blowfish, que se identifica con la identificación "2b".fuente
.
y/
. Los primeros 2 caracteres son la sal y los otros 11 son un valor hash (más o menos). Y es el único de los algoritmos admitidos por elcrypt
cual es tan débil que no puede compensarlo eligiendo una contraseña más segura.