SuDown System-Menü Erweiterung
In der c’t 5/2007 wurde über ein geniales Programmchen berichtet; SuDown. Es trägt Benutzer, die Mitglied der lokalen Benutzergruppe „sodoers“ nach deren Login in die Gruppe der Administratoren ein. Nach dem Abmelden entfernt SuDown die „sudoers“-Benutzer wieder aus der Administratoren-Gruppe. Das klingt einfach. 🙂 Ist es auch… aber auch ziemlich clever! Nach der Anmeldung werden alle Prozesse von der Shell (normaler Weise Explorer.exe) gestartet. Die Shell hat beim Login einen Benutzer-Token mit eingeschränkten Rechten bekommen. Also läuft alles eingeschränkt, das die Shell Startet. Wird allerdings der selbe Benutzer nochmal angemeldet, bekommt er jetzt einen Token mit Administrator-Rechten. Die nochmalige Anmeldung übernimmt bei SuDown „sudo.exe“. Es fordert den Benutzer zur erneuten Eingabe seines Passwortes auf und startet bei Erfolgreicher Anmeldung einen Prozess mit Admin Rechten, aber dem selben Benutzerkonto.
Das löst ein riesen Problem. Wenn man unter Windows 2000/XP ein Programm als Administrator ausgeführt hat, wurde der falsche Registry-Zweig für den Benutzer (HKEY_CURRENT_USER) geladen, nämlich der des Administrators. Mit SuDown hat man solche Probleme nicht. Jemand hätte schon vor zehn Jahren auf solch simple Lösung kommen sollen! Dann hätten wir jetzt kein UAC nötig 😉
Einige Probleme hat man allerdings trotz SuDown immer noch.
Wenn z.B. man als SuDo’er die Uhrzeit ändern will, wird es umständlich. Denn der Doppelklick auf die Uhr in der Taskleiste gibt folgendes aus:
->
Normalerweise war’s das dann… Dumm! 🙁
Ich habe eine Erweiterung (um-)geschrieben, die dieses Problem umgeht. 😎 Bei CodeProject.com habe ich das hier gefunden und für meine Zwecke verändert. Die Erweiterung installiert einen globalen Hook, der das System-Menü aller Programme um einen „* sudo“ Befehl erweitert. Damit sieht das System-Menu der „Eigenschaften von Datum und Uhrzeit“ (wenn man mit der Rechten Maustaste auf die Titelleiste klickt) so aus:
Der Befehl „Restart with sudo“ führt dann SuDowns sudo.exe mit der Kommandozeile (und allen Parametern) des aktuellen Prozesses aus und beendet den aktuellen, nicht administrativen, Prozess mittels ExitProcess(0):
->
„Start with sudo“ macht dasselbe ohne ExitProcess(0) 😀
Das scheint viel Aufwand, um die Uhrzeit einzustellen… Sinn der Erweiterung ist jedoch, dass man die Möglichkeit eines nachträglichen sudo hat! Wenn ein Programm zickt, kann man es jederzeit als Administrator ausführen. 😉
Die VC6 Quellen für SuDownSM sind hier. Mit dem Quelltext darf jeder machen, was er will.
Das kompilierte Programm ist hier. SuDownSM hat keinerlei Installationsprogramm nötig. Es besteht nur aus „SysMenuHook.dll“ und „SuDownSM.exe“. Der (User-)Faulheit halber habe ich eine INF beigelegt, die bei <Rechtsklick> -> „Installieren“, SuDownSM.exe und SysMenuHook.dll ins Windows Verzeichnis kopiert und in den Autostart aller Benutzer einträgt. Eine „Uninstall Section“ ist auch in der INF-Datei. 😉
Noch etwas zu SuDown:
Die Software birgt ein gewisses Restrisiko! Nachdem man sich anmeldet ist man ein potentieller Administrator. Gibt man jetzt einem Virus sein normales Passwort, ist der Virus ein Administrator. Jeder lokal angemeldete SuDoer, der sich vom Netzwerk aus anmeldet ist jetzt auch Administrator.
Wenn man einmal das Passwort eingegeben hat, fragt sudo.exe nicht mehr danach. Das ist das zweite Risiko. Malware, die auf ein SuDown Symbol in der Taskleiste wartet, kann so den Besitz des Rechners übernehmen.
SuDown funktioniert nicht mit dem „Vordefinierten Konto für die Verwaltung des Computers bzw. der Domäne“. Der vordefinierte Administrator kann nicht seiner Rechte beraubt werden.
Nachtrag: Die SuDown Shell-Erweiterung kann man auch benutzen, um z.B. den Explorer (Arbeitsplatz, Papiertkorb etc.) neu zu starten. Das sollte man möglichst vermeiden! 😉
Am 24. März 2008 um 04:43 Uhr
Argh! Dabei wuerden 4 Bytes ausreichen, um timedate.cpl zu patchen, sodass es nicht mehr nachfragt, ob man als Admin angemeldet ist…