¿Podemos saber la contraseña para los otros usuarios si tenemos acceso de root?

24

Si una persona tiene acceso de root a una máquina RHEL en particular, ¿podrán recuperar la contraseña de los otros usuarios?

monumentos
fuente
44
Sí, puede, pueden compartirlo con usted, preguntándole amablemente :) en otras palabras, su pregunta no se formula con precisión.
poige

Respuestas:

37

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/passwdbase de datos, pueden almacenarse de una manera que lo permita. htpasswdlos 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.

Daniel Pittman
fuente
1
Más información en Wikipedia: /etc/shadow, función hash criptográfica , la sal y la contraseña de craqueo
Tim
2
Esta es una buena respuesta en su mayor parte, sin embargo, 3DES y MD5 no son significativamente más débiles que otros algoritmos. La fuerza bruta sigue siendo el único método para encontrar una contraseña de un hash (las tablas de arco iris son una forma de acelerar los métodos de fuerza bruta para cualquier algoritmo, no una debilidad de MD5). Lo que mejora un método hash para contraseñas es que es lento y usa una sal lo suficientemente larga.
Gilles 'SO- deja de ser malvado'
13

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.


fuente
Obtener acceso a mi cuenta es diferente a obtener mi contraseña. Si me permite un inicio de sesión de usuario en su máquina y yo (estúpido pero común) uso la misma contraseña para todas las máquinas, no tiene acceso a todas las máquinas solo b / c puede cambiar mi contraseña en su máquina. Acabo de ser bloqueado de una cuenta.
emory
Además, si utiliza sistemas de archivos cifrados para datos confidenciales, el compromiso del acceso a la raíz no implica tiempo para comenzar de nuevo.
emory
@emory Si usa sistemas de archivos encriptados y el sistema está comprometido con la raíz, ¿puede confiar en el código que trata con el sistema de archivos encriptados, lee la frase de contraseña de encriptación, etc.? Yo diría que no puede, porque por definición, un compromiso de privilegios de raíz significa que todo en el sistema (hasta el núcleo) está en juego.
un CVn
@ MichaelKjörling ¿Puedo confiar en el código que se ocupa del sistema de archivos cifrados? En la mayoría de los casos, no. En mi caso, si. Está alojado en medios de solo lectura. Root no puede escribirle. Los registros van a una unidad WORM. De todos modos, no estoy entregando las claves para rootear y probablemente comenzaría de nuevo.
emory
8

Si es rootasí, 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.

geekosaur
fuente
5

Todas las contraseñas se almacenan en un /etc/shadowarchivo. Puede abrir este archivo usando el acceso de root y ver las hash valuecontraseñ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$

Pradeepchhetri
fuente
1
puede hacer "su pradeep" incluso sin cambiar la contraseña de pradeep, porque cuando hace "su pradeep" con el usuario root no necesita escribir la contraseña de pradeep para iniciar sesión ...
Wolfy