Windows Auto-Login Passwort auslesen

Da schaue ich in eine lange nicht genutzte Mailbox und finde dort die Quellen eines Windows Programms, das ich vor über 10 Jahren schnell schreiben musste. Es sollte folgendes Problem lösen:

Das Auslesen des Auto-Login Default-Passworts eines angemeldeten Accounts.


Auto-Login, aber Passwort vergessen

Wozu sollte man ein Passwort auslesen wollen, wenn der Account bereits angemeldet ist?

Tja, man stelle sich vor, man hätte ein Passwort auf Industrie-Terminals gesetzt, das beim Start zum automatischen Login benutzt wird.
Dieses Passwort wurde vergessen, da es im Windows Deployment-Image integriert war.
Und dann muss man plötzlich versuchen, diese Terminals “remote” zu administrieren, wofür man das Passwort wieder braucht.
Zum Glück steht noch ein verstaubtes Demo-Gerät mit automatischem Login im firmen-eigenen Museum. Vielleicht kann man das Passwort dort irgendwie extrahieren.

Dieses Passwort wurde leider nicht einfach in der Registry unter SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon in DefaultPassword abgelegt, sondern über System-Tools wie netplwiz intern gesetzt.

Wo wird also ein solches “verschlüsseltes” Passwort gespeichert?

Lösung: LsaRetrievePrivateData

Windows kann Schlüssel-Wert Paare verdeckt speichern und wenn der automatische Login auf einem System aktiviert wird, dann wird das Passwort im Feld DefaultPassword gespeichert.
Um es wieder auszulesen nutzt man folgenden Weg:

Der Aufruf muss unter Administrator-Rechten erfolgen, ansonsten wird der Zugriff verwehrt.
(Zum Glück hatte der Account damals auch Admin-Rechte.)

Der Beispiel-Quellcode ist nun auch im BLOG Classroom verfügbar.

Fazit

Wenn ich es richtig verstehe, wurden klassische Tools wie netplwiz bzw. der Aufruf control userpasswords2 auf Windows 10 deaktiviert, mit dem man zur UI kam, wo man den automatischen Login aktivieren und das zu verschlüsselnde Passwort eintippen konnte.

Das Codeschnipsel ist also kein “Sicherheitsbruch” mehr und er hatte (wenn ich mich nicht irre) auch nur im Nicht-Domänen-Betrieb funktioniert.

Die alten Windows XP und Windows 7 Terminals, an denen ich damals arbeitete, existieren (hoffentlich) nicht mehr, aber ich möchte diesen Aufruf trotzdem dokumentieren.
Wenn also jemand ein Passwort zu einem Autologin braucht, das nicht im Klartext in der Registry steht, dann hat man zumindest einen Ansatz.