PCFreak Logo (c) Der PCFreak

Proof of concept „su“ command für Windows

Kürzlich bin ich über das nette Tool „copypwd“ gestolpert. Sofort kam mir die Idee, daß man damit möglicherweise ein dem unter Linux verfügbaren Programm „su“ ähnliches Tool bauen könnte.

Die Idee war, mit copypwd den Passwort-Hash des angemeldeten Benutzers (muss Administratorrechte haben) und den Passwort-Hash des Benutzers, der man gerne mittels „su“ werden möchte exportiert und dann den Passwort-Hash des angemeldeten Benutzers dem User „einpflanzt“, der man gerne werden möchte. – Das funktioniert relativ problemlos und konnte sehr schnell per Batch-Skripting realisiert werden.

Es stellte sich aber heraus, daß „copypwd“ nach Änderung des Passworts den Useraccount so veränderte, daß der User bei der nächsten Anmeldung sein Passwort ändern müsste. Deshalb habe ich dann noch ein kleines VB-Script geschrieben, welches dieses Attribut vom Useraccount wegnimmt.

Der Ablauf ist nun wie folgt:

Start von:
su.cmd [username] [programm to start for user „username“]

– su.cmd exportiert den Passwort-Hash vom User „username“ in ein Textfile
– su.cmd exportiert den Passwort-Hash vom angemeldeten User in ein Textfile
– su.cmd generiert ein Textfile im Format [username]:[hash vom angemeldeten User]
– su.cmd ermittelt die PID von lsass.exe und importiert dann den Passwort-Hash des angemeldeten Benutzers für „username“
– su.cmd startet copypwd-fix.vbs und entfernt „User must change password at next logon“ vom Useraccount „username“
– su.cmd startet das gewünschte Programm als User „username“
– su.cmd erzeugt die Datei copypwd.txt mit dem Original-Hash des Users „username“ und importiert diesen wieder
– su.cmd startet copypwd-fix.vbs und entfernt „User must change password at next logon“ vom Useraccount „username“

Somit ist es möglich als administrativer User unter Windows ein Programm mit dem Benutzeraccount eines anderen Users zu starten, ohne dessen Passwort zu kennen. Getestet habe ich das ganze bisher nur mit lokalen Benutzern.
Da copypwd auch im Sourcecode vorliegt, kann ein erfahrener Programmierer sicherlich ein schönes Programm bauen, welches die komplette Funktionalität von „su“ abbilden könnte.
Sicherlich fällt mir dazu dann auch ein nützliches Anwendungsbeispiel ein, für Ideen bin ich offen. Bin gespannt auf Eure Kommentare.
copypwd gibt es bei SystemTools.com
su.cmd und copypwd-fix.vbs sind an diesen Beitrag angehängt (su.zip)

Wie ich soeben noch herausfand haben sich schon einige Leute Gedanken zur sinnvollen Nutzung von copypwd gemacht, siehe hier auf dieser Seite windows-unattended.de.