Si una persona tiene acceso de root a una máquina RHEL en particular, ¿podrán recuperar la contraseña de los otros usuarios?
Si una persona tiene acceso de root a una máquina RHEL en particular, ¿podrán recuperar la contraseña de los otros usuarios?
Respuestas:
TL; DR: No, las contraseñas se almacenan como hashes que, en general, no se pueden recuperar.
Linux no almacena contraseñas de texto sin formato en ningún lugar de forma predeterminada . Se codifican o encriptan de otra manera a través de una variedad de algoritmos. Entonces, en general, no, esto no es posible con los datos almacenados.
Si tiene contraseñas almacenadas en otro lugar que no sea la /etc/passwd
base de datos, pueden almacenarse de una manera que lo permita. htpasswd
los archivos pueden contener contraseñas cifradas con frecuencia y otras aplicaciones pueden almacenar hashes débiles o contraseñas de texto sin formato por varias razones (generalmente malas).
Además, los archivos de configuración del usuario pueden contener contraseñas no encriptadas o contraseñas débilmente protegidas por varias razones: recuperar contenido de otro servicio .netrc
, o cosas automatizadas simples pueden incluir la contraseña.
Si las contraseñas se codifican o cifran con un algoritmo antiguo y débil (3DES, MD5), sería posible determinar de manera razonable y eficiente cuál era la contraseña, aunque atacando los datos en lugar de simplemente revertir la transformación. (por ejemplo: cosas como http://project-rainbowcrack.com/ o http://www.openwall.com/john/ )
Como usted es root, también es posible atacar la contraseña del usuario en otro nivel: reemplace el binario de inicio de sesión, o sudo, o parte de PAM, etc., con algo que capture la contraseña cuando se ingrese.
Por lo tanto, en concreto, no, pero en general tener acceso de root hace que sea más fácil obtener los detalles de los usuarios a través de varios canales laterales.
/etc/shadow
, función hash criptográfica , la sal y la contraseña de craqueo
En contraste con algunas otras respuestas aquí, diría que la respuesta simple, a esta y muchas otras preguntas que terminan con "si tienes raíz" es SÍ.
Básicamente, root puede hacer cualquier cosa en la máquina que el sistema mismo pueda hacer. El sistema puede aceptar su contraseña, por lo que root puede aceptar su contraseña, o la suya en lugar de la suya, con suficiente esfuerzo. Más importante aún, él simplemente puede cambiar su contraseña o CONVERTIRSE en usted.
Específicamente, las contraseñas generalmente están encriptadas. Esto suele ser algún tipo de algoritmo denominado "unidireccional", que genera un número (un hash) que se puede usar para verificar la contraseña, pero generalmente no para revertir el número y recuperar la contraseña nuevamente. Por lo tanto, no se trata solo de leer un archivo para obtener la contraseña de alguien.
Dicho esto, PUEDES leer su historial de shell y el historial de inicio de sesión, donde lo más probable es que hayan escrito su contraseña en lugar de su nombre de usuario en algún momento, o lo hayan escrito en un shell en lugar de en una solicitud de contraseña. En ese caso, SERÍA texto sin formato. Esto es inquietantemente común en terminales basados en texto, sin ninguna buena solución que yo sepa.
Sin embargo, incluso dejando de lado ese problema, el cifrado "unidireccional" no es realmente unidireccional. Hay muchas herramientas que pasarán por muchas combinaciones de frases de contraseña, encriptándolas con el mismo proceso unidireccional, hasta que encuentre una que coincida. Luego conocen la contraseña que obtendrá acceso (aunque como root, YA tienen acceso, en ESA máquina).
Peor aún, hay tablas de arcoíris, que son respuestas calculadas previamente para el proceso anterior: las personas ya han generado la contraseña original que proviene de la contraseña cifrada dada. Utilizando estos, es una búsqueda simple: no se requieren intentos de craqueo que requieran mucho tiempo.
Nuevamente, el acceso a nivel raíz es LO que hay que proteger. Con eso comprometido, toda la máquina y todo lo que está en peligro está comprometida. Es hora de comenzar de nuevo, incluyendo informar a todos sus usuarios que ya no se puede confiar en su empresa para proteger su privacidad. Y sí, eso podría significar cerrar el negocio.
Si es root
así, puede ejecutar un descifrador de contraseñas /etc/shadow
(suponiendo contraseñas locales y no LDAP o Kerberos, etc.). Esto puede no ser efectivo si eligen buenas contraseñas y el sistema está configurado para usar hashing de contraseñas seguras. Pero las contraseñas del sistema no se almacenan en texto sin formato; las contraseñas no están directamente disponibles incluso para root
.
Todas las contraseñas se almacenan en un /etc/shadow
archivo. Puede abrir este archivo usando el acceso de root y ver las hash value
contraseñas de cada usuario (incluso el usuario root).
A menos que tenga algún tipo de software de descifrado de contraseña, no puede convertir estos valores hash de nuevo a texto normal.
Pero aún así, si tiene acceso al usuario root, puede cambiar la contraseña de cualquier usuario normal utilizando el siguiente comando y acceder a su cuenta.
root@localhost$ passwd pradeep
Esto le pedirá la nueva contraseña que desea establecer para el usuario pradeep
. De esta manera puede cambiar passwd por pradeep.
Ahora puedes acceder desde su cuenta:
root@localhost$ su pradeep
Esto dará como resultado el cambio a usuario pradeep y obtendrá un terminal como este:
pradeep@localhost$