Theorie: Root-Passwort ausspähen

Hallo,
dies ist eine Überlegung von mir, ob sie technisch korrekt/möglich ist weiss ich nicht, wurde vielleicht auch schon mal gefragt. Nimmt mich einfach wunder:

Wenn man das Root-Passwort in die Konsole eingibt, muss es ja ein Programm dahinter geben, dass die Eingabe aufnimmt. Sei das jetzt jeder Buchstabe einzeln in ein Array oder den ganzen String in eine Variable, dann wird der String verschlüsselt, mit dem gespeicherten Wert vergleicht und dann 1 oder 0 zurückgegeben.
In einem Moment (wenn die Eingabe Buchstabe per Buchstabe ins Array gefüllt wird sogar eine längere Zeit) muss sich dann doch der unverschlüsselte String im Arbeitsspeicher befinden, bis die Eingabe fertig ist und der String verschlüsselt wird.
Wenn man jetzt wüsste, an welche Stelle im Arbeitsspeicher der entsprechende String steckt, könnte man ohne Rootrechte mittels eines kleinen Programms zugreifen.

Jetzt nehm ich mal an, dass sich das die Entwickler auch überlegt haben - wie haben sie das gelöst ?

Liebe Grüsse,
michi

Edit:
Da fällt mir grad noch was ein, ist es vielleicht so, dass das Programm, das das Passwort aufnimmt, den entsprechenden Arbeitsspeicherbereich blockiert und so weder ein Lesen noch ein Schreiben in diesen Bereich möglich ist?
 
Eine kleine Theorie, wie man unter Linux an das root-Passwort kommen könnte
dort ist eine aehnliche frage gestellt, schaus dir mal an, ob du damit was anfangen kannst.
aber ich hab ma ne gegenfrage an dich: warum sollte man es sich so umstaendlich machen? wenn man die moeglichkeit hat und malcode ausfuehren kann (z.B. diesen der die speicheradresse auslesen soll), warum sollte man es sich so umstaendlich machen? ein einfacher keylogger o.ae. waere doch um einiges einfacher?
edit: achja ich hab den thread nicht gelesen den ich dir gepostet habe da ich grade keine zeit habe.. les den aber bei gelegenheit selber mal ^^
 
Die Theorie is gut, aber nicht machbar. Schauen wir uns das in einem theoretischen setuid()-Source an:

1. Einlesen der User-Eingabe und verschlüsseln des Strings
2. setuid(0) und Vergleich des Passworts mit dem in der shadow abgelegten String
3. Rücksetzen der UID auf die des normalen Users

Wie willst du da an das Klartext-Passwort kommen, wenn nur die verschlüsselten Strings verglichen werden?
 
Wenn Software, die unter der UID eines beliebigen unprivilegierten Users läuft, vollen Lesezugriff auf alle Adressräume hätte, dann wäre das System ungefähr so sicher wie ein Bindfaden mit Doppelknoten als Fahrradschloss. ;)
 
Zurück
Oben