Können wir das Passwort für die anderen Benutzer kennen, wenn wir root-Zugriff haben?


24

Wenn eine Person root-Zugriff auf einen bestimmten RHEL-Computer hat, kann sie dann das Passwort der anderen Benutzer abrufen?


4
Ja, das kannst du, sie können es mit dir teilen, wenn du freundlich gefragt wirst :) Mit anderen Worten, deine Frage ist nicht genau formuliert.
Poige

Antworten:


37

TL; DR: Nein, Passworte werden als Hashes gespeichert, die (im Allgemeinen) nicht wiederhergestellt werden können.

Linux speichert standardmäßig nirgendwo Klartext-Passwörter . Sie werden durch eine Vielzahl von Algorithmen gehasht oder auf andere Weise verschlüsselt. Im Allgemeinen ist dies mit gespeicherten Daten nicht möglich.

Wenn Sie Kennwörter haben, die nicht in der /etc/passwdDatenbank gespeichert sind, werden sie möglicherweise so gespeichert, dass dies möglich ist. htpasswdDateien können schwach verschlüsselte Kennwörter enthalten, und andere Anwendungen können aus verschiedenen (normalerweise schlechten) Gründen schwächere Hashes oder Klartextkennwörter speichern.

Außerdem können Benutzerkonfigurationsdateien aus verschiedenen Gründen unverschlüsselte Kennwörter oder schwach geschützte Kennwörter enthalten - beispielsweise zum Abrufen von Inhalten aus einem anderen Dienst durch E-Mail-Abruf .netrcoder einfach zu automatisierende Dinge, die das Kennwort enthalten.

Wenn die Passwörter mit einem älteren, schwachen Algorithmus (3DES, MD5) gehasht oder verschlüsselt werden, ist es möglich, das Passwort einigermaßen effizient / kostengünstig zu ermitteln - allerdings durch einen Angriff auf die Daten, anstatt nur die Transformation rückgängig zu machen. (zB: Dinge wie http://project-rainbowcrack.com/ oder http://www.openwall.com/john/ )

Da Sie root sind, können Sie das Benutzerkennwort auch auf einer anderen Ebene angreifen: Ersetzen Sie die Login-Binärdatei oder sudo oder einen Teil von PAM usw. durch etwas, das das Kennwort erfasst, wenn es eingegeben wird.

Nein, aber im Allgemeinen erleichtert es der Root-Zugriff, über verschiedene Seitenkanäle auf die Benutzerdetails zuzugreifen.


1
Tim

2
Dies ist zum größten Teil eine gute Antwort, jedoch sind 3DES und MD5 in der Tat nicht wesentlich schwächer als andere Algorithmen. Brute Force ist immer noch die einzige Methode, um ein Passwort aus einem Hash zu finden ( Regenbogentabellen sind eine Möglichkeit, Brute Force-Methoden für jeden Algorithmus zu beschleunigen, keine Schwäche von MD5). Was eine Hash-Methode für Kennwörter verbessert, ist, dass sie langsam ist und genügend Salz verwendet.
Gilles 'SO- hör auf böse zu sein'

13

Im Gegensatz zu einigen anderen Antworten hier würde ich sagen, dass die einfache Antwort auf diese und viele andere Fragen, die mit "wenn Sie Wurzel haben" enden, JA lautet.

Grundsätzlich kann root auf dem Rechner alles tun, was das System selbst kann. Das System kann Ihr Passwort akzeptieren, so dass root mit genügend Aufwand Ihr oder sein Passwort anstelle Ihres Passworts akzeptieren kann. Noch wichtiger ist, er kann einfach Ihr Passwort ändern oder WERDEN Sie.

Insbesondere werden Kennwörter normalerweise verschlüsselt. Dies ist normalerweise eine Art sogenannter "Einweg" -Algorithmus, der eine Zahl (einen Hash) generiert, mit der das Kennwort überprüft werden kann, im Allgemeinen jedoch nicht, um die Zahl umzukehren und das Kennwort erneut abzurufen. Es geht also nicht nur darum, eine Datei zu lesen, um das Kennwort eines anderen Benutzers zu erhalten.

Das heißt, Sie KÖNNEN ihren Shell-Verlauf und den Anmeldeverlauf lesen, in dem sie höchstwahrscheinlich irgendwann ihr Kennwort anstelle ihres Benutzernamens oder an einer Kennwortabfrage in eine Shell eingegeben haben. In diesem Fall wäre es einfacher Text. Dies ist auf textbasierten Terminals störend häufig, da mir keine guten Lösungen bekannt sind.

Aber selbst wenn man dieses Problem beiseite lässt, ist die "Einweg" -Verschlüsselung nicht wirklich eine Einweg. Es gibt viele Tools, die viele Kombinationen von Passwörtern durchlaufen und diese mit demselben Einwegverfahren verschlüsseln, bis Sie eines finden, das passt. Sie kennen dann das Passwort, das Zugriff erhalten soll (obwohl sie als root BEREITS Zugriff auf DIESE Maschine haben).

Schlimmer noch, es gibt Regenbogentabellen, bei denen es sich um vorberechnete Antworten auf den obigen Vorgang handelt: Die Benutzer haben bereits das ursprüngliche Kennwort generiert, das aus dem angegebenen verschlüsselten Kennwort stammt. Mit diesen ist es eine einfache Suche - es sind keine zeitaufwändigen Crackversuche erforderlich.

Auch hier ist der Zugriff auf Root-Ebene DAS, was zu schützen ist. Wenn dies beeinträchtigt ist, ist die gesamte Maschine und alles darauf beeinträchtigt. Es ist Zeit, von vorne zu beginnen und alle Ihre Benutzer darüber zu informieren, dass Ihr Unternehmen nicht mehr vertrauenswürdig ist, um ihre Privatsphäre zu schützen. Und ja, das könnte bedeuten, dass das Geschäft eingestellt wird.


Der Zugriff auf mein Konto unterscheidet sich vom Abrufen meines Passworts. Wenn Sie mir erlauben, dass sich ein Benutzer auf Ihrem Computer anmeldet und ich (dumm, aber gemein) dasselbe Passwort für alle Computer verwende, haben Sie nicht Zugriff auf alle Computer, nur weil Sie mein Passwort auf Ihrem Computer ändern können. Ich werde gerade von einem Konto gesperrt.
Emory

Wenn Sie verschlüsselte Dateisysteme für vertrauliche Daten verwenden, bedeutet eine Root-Kompromittierung außerdem nicht, dass Sie von vorne beginnen müssen.
Emory

@emory Wenn Sie verschlüsselte Dateisysteme verwenden und das System als Root-Benutzer gefährdet ist, können Sie dann dem Code vertrauen, der sich mit dem verschlüsselten Dateisystem befasst, die Passphrase für die Verschlüsselung liest usw.? Ich würde sagen, Sie können nicht, weil per Definition ein Root-Privileg-Kompromiss bedeutet, dass alles auf dem System (bis auf den Kernel) zu gewinnen ist.
CVn

@ MichaelKjörling Kann ich dem Code vertrauen, der mit dem verschlüsselten Dateisystem umgeht? In den meisten Fällen nein. In meinem Fall ja. Es befindet sich auf schreibgeschützten Datenträgern. Root kann nicht darauf schreiben. Protokolle werden auf ein WORM-Laufwerk übertragen. Trotzdem verteile ich die Schlüssel nicht an root und würde wahrscheinlich von vorne anfangen.
Emory

8

In rootdiesem Fall können Sie einen Kennwort-Cracker ausführen /etc/shadow(unter der Annahme lokaler Kennwörter und nicht von LDAP oder Kerberos usw.). Dies ist möglicherweise nicht effektiv, wenn sie gute Kennwörter auswählen und das System für die Verwendung von sicherem Kennwort-Hashing konfiguriert ist. Systemkennwörter werden jedoch nicht im Klartext gespeichert. Passwörter sind nicht direkt verfügbar root.


5

Alle Passwörter werden in einer /etc/shadowDatei gespeichert . Sie können diese Datei über den Root-Zugriff öffnen und die hash valueKennwörter für jeden Benutzer (auch für den Root-Benutzer) anzeigen.

Solange Sie keine Software zum Entschlüsseln von Passwörtern haben, können Sie diesen Hash-Wert nicht wieder in normalen Text konvertieren.

Wenn Sie jedoch Zugriff auf den Root-Benutzer haben, können Sie das Kennwort eines normalen Benutzers mit dem folgenden Befehl ändern und auf dessen Konto zugreifen.

root@localhost$ passwd pradeep

Daraufhin werden Sie nach dem neuen Passwort gefragt, das Sie für den Benutzer festlegen möchten pradeep. Auf diese Weise können Sie passwd für pradeep ändern.

Jetzt können Sie von seinem Konto aus zugreifen über:

root@localhost$ su pradeep

Dies führt dazu, dass Sie zu pradeep user wechseln und ein Terminal wie das folgende erhalten:

pradeep@localhost$


1
Sie können "su pradeep" auch ohne Änderung des Pradeep-Passworts ausführen, da Sie bei "su pradeep" mit dem Root-Benutzer kein Pradeep-Passwort eingeben müssen, um sich anzumelden ...
Wolfy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.