Benjamin S.: Synchronisation MySQL<->Windows-Passwort

Beitrag lesen

Hallo Sven, Hallo Forum,

da war ich wohl etwas unspezifisch. Es geht nicht um die Synchronisation Windows-Account<->MySQL-Account, sondern um eine Synchronisation Windows-Account<->Datensatz-in-einer-MySQL-Tabelle. In aller Ausführlichkeit ist das Szenario folgendes:

In einer Firma melden sich Nutzer im Firmennetz mit ihren Windows-Zugangsdaten an. Ihr Passwort dürfen sie nicht selbst ändern, allerdings wird in regelmäßigen Abständen "von oben" ein neues Passwort erstellt (eine, wie ich finde, eigenartige Regelung, aber ich muss damit leben).

Außerdem gibt es meine PHP-Webanwendung im Intranet, in die sich die Nutzer sessionbasiert einloggen. Die Accounts dafür sind in einer MySQL-Tabelle gespeichert (Passwort ist MD5-verschlüsselt). Es ist auch hier nicht gewünscht, dass ein Nutzer sein Passwort von Hand ändern kann.

Das Dilema: Ich stelle für die Webanwendung die Passwörter ein, welche die Nutzer für ihren Windows-Zugang nutzen. Nach einigen Wochen (wenn ich nicht mehr hier bin) ändert sich ihr Windows-Passwort. Die Nutzer selbst dürfen ihr Webanwendungs-Passwort nicht ändern. Nun müssen sie sich also zwei Passwörter merken. Und darüber wurde sich beschwert.

Ich dachte mir also, man könnte vielleicht irgendwie an die Windows-Passwort-Hashes herankommen. Man könnte also eine Batchdatei (oder whatever) schreiben, welche quasi als Cronjob gestartet wird, die Hashes ausliest, sie in eine Datei packt und dann ein PHP-Skript aufruft, welches wiederum die erzeugte Datei nutzt, um die in der Datenbank gespeicherten Hashes zu aktualisieren.

Die entscheidenden Hacken bei der Sache:
* Die Hashes sind bei Windows in der SAM-Datei gespeichert (Security Access Manager). Diese ist selbst für Admins nicht lesbar (nur für den Nutzer SYSTEM). Da dies eine gewollte Sicherheitsfunktion ist, möchte ich sie eigentlich ungern umgehen.
* Es gibt zwar ein Programm, welches per "DLL-Injection" auf die SAM-Dateien zugreifen kann (besagtes "PWDumpX" - oder auch "PWDump", "PWDump2", "PWDump3", "PWDump3e"), und so die Hashes auslesen kann, dies ist allerdings auch als Hacker-Tool verschrien. Als ich es auf meinem Privat-Rechner ausprobiert habe, hat es nebenbei noch ein paar Sachen ausgespuckt, die ich eigentlich nicht wollte, dass sie irgendjemand lesen kann.
* Mit den Hashes, die "PWDumpX" ausspuckt, kann ich nix anfangen, denn sie sind mit einer mir unbekannten Hash-Funktion verschlüsselt. Die englische Wikipedia meint zu SAM, dass ein s.g. LM Hash oder NTLM Hash verwendet wird, welcher auf DES basiert... und als ich den letzten Artikel angeschaut hab, bin ich ausgestiegen. :-) Es ist ein Wahnsinn, das jetzt zu implementieren um es anstelle einem simplen md5(...) in der PHP-Webanwendung einzusetzen. Es muss doch eine bessere Lösung geben...

MfG Benjamin.