¿Cómo puedo averiguar los esquemas de hashing de contraseña que utilizan las cuentas Unix específicas en las que inicio sesión?

11

Todos los días, ssh en 3 o 4 cuentas Unix independientes. Los he considerado más o menos "equivalentemente seguros" porque estoy usando ssh , pero después de enterarme de cuánta variedad hay en esquemas de hashing de contraseñas y su resistencia contra ataques de diccionario, he estar más interesado en conocer los detalles específicos de los sistemas que utilizo.

He encontrado algunos resúmenes demasiado breves de lo que usan algunos sistemas operativos de forma predeterminada (por ejemplo, ver aquí ), pero me gustaría algo más detallado. Y lo que es más importante, me interesa menos lo que varios sistemas operativos hacen "fuera de la caja" que lo que hacen los sistemas específicos en los que inicie sesión. ¿Hay una forma estándar de encontrar esta información?

(Espero que esta pregunta no sea demasiado ingenua. Sí, por supuesto, un descifrador de contraseñas también querría saber la información sobre la que estoy preguntando, pero tengo entendido que no existe un esquema de manejo de contraseñas diseñado de manera competente. Por lo tanto, espero que la información que busco esté fácilmente disponible para los usuarios de un sistema.)

    
pregunta kjo 03.01.2015 - 17:42
fuente

2 respuestas

13

Versión corta:

  1. / etc / shadow contents le dirá qué formato usa cada usuario, pero Necesita root para verlos - @MikeScott lo elimina.
  2. Los archivos /etc/pam.d/* le indicarán qué formato de un sistema codifica las contraseñas nuevas. con, y debe ser accesible para los usuarios regulares, que puede ser todo lo que tiene.

Versión larga:

La mayoría de los sistemas Unix y Linux modernos utilizan PAM, los módulos de autenticación conectables, para manejar la autenticación. Como resultado, el algoritmo de hash utilizado para cifrar las contraseñas generalmente se define en uno de los archivos /etc/pam.d/*. Mirando a Ubuntu 14, veo que está en el archivo /etc/pam.d/common-password:

# Explanation of pam_unix options:
#
# The "sha512" option enables salted SHA512 passwords.  Without this option,
# the default is Unix crypt.  Prior releases used the option "md5".
#
password    [success=1 default=ignore]  pam_unix.so obscure sha512

Entonces, en este sistema, las entradas en el archivo / etc / shadow deben tener contraseñas que comiencen en $ 6 $. Si veo a / etc / shadow como root, puedo ver que, de hecho, todas (ambas) las contraseñas en este sistema son sha512:

# awk -F: '$2 ~ /^\$/ {print $2}' /etc/shadow | cut -c-10
$6$6I2Lrdb
$6$tvKWuGb
# 

Al ser tan flexible, Pam encontrará que está en un archivo diferente en cada tipo de sistema que vea. Bajo RedHat, parece ser /etc/pam.d/system-auth, por ejemplo.

Esto le indica qué hash de contraseña se creará cuando se establezca una nueva contraseña en este sistema. Los hash de contraseña reales en uso variarán dependiendo de dónde o de dónde vinieron. Si un sistema solía usar MD5 y cambia a SHA512, entonces no cambian todos los hash; el hash antiguo permanece en uso hasta la próxima vez que un usuario cambia su contraseña. Si los hashes se copian desde otro lugar (sí, sucede) puede obtener una mezcla real de hashes de contraseña. Es por eso que el formato utilizado está codificado en la cadena de contraseña con hash ($ 6 $, $ 1 $, etc., etc.) para que el sistema sepa cómo probarlo.

Por lo tanto, la única manera de saber con certeza qué hash que estás estás usando es tener privilegios de root (y ver tu hash en / etc / shadow), o ver cuál es el valor predeterminado del sistema. es (en /etc/pam.d/*) y cambie su contraseña para que el valor predeterminado se aplique a usted.

Etcetera

Como @grawity señaló en los comentarios, los sistemas / distribuciones de Linux más antiguos aún pueden cumplir con el ENCRYPT_METHOD en el archivo /etc/login.defs . (Este archivo y la configuración todavía están allí en los nuevos sistemas; está más o menos en desuso si PAM está en uso).

Y a pesar de que Solaris usó PAM la última vez que lo verifiqué, un poco de Google sugiere que para cambiar el tipo de hash de la contraseña predeterminada, debería cambiar CRYPT_DEFAULT en /etc/security/policy.conf .

AIX se ríe ante lo que pasa con los estándares de Unix en estos días, como siempre lo han hecho. El configuración pwd_algorithm en /etc/security/login.cfg hará el truco para AIX 5.3+.

Sin embargo, en general, cualquier variante de Unix que admita más de DES proporcionará algún método para configurar el sistema por defecto. Si se encuentra con sistemas que no se mencionan aquí, modifique este Google busca y mira qué puedes encontrar.

    
respondido por el gowenfawr 03.01.2015 - 20:18
fuente
9

Si tiene acceso de root, utilícelo para cat /etc/shadow (en la mayoría de las versiones de Unix) y échele un vistazo. El segundo campo del archivo es la contraseña con hash para cada usuario, y generalmente está separada por los signos $ en tres partes, que son el algoritmo de hash, el salt y el hash en sí mismo (si no tiene la primera sección entonces está usando el algoritmo hash predeterminado, que es DES). $0$ es DES, $1$ es MD5, $2$ y $2a$ son Blowfish, $3$ es Hash NT, $5$ es SHA-256 y $6$ es SHA-512.

    
respondido por el Mike Scott 03.01.2015 - 18:02
fuente

Lea otras preguntas en las etiquetas