Programme "degradieren"

Joined
Oct 22, 2002
Messages
11,561
Points
300
Unter Windows und auch so ziemlich allen anderen Betriebssystemen ist es schon seit sehr langer Zeit üblich Zugriffsrechte auf Dateien, Ordner und Programme benutzer- oder benutzergruppen-spezifisch festzulegen. So können die privaten Fotos von Benutzer Hans nur von Benutzer Hans, aber keinem anderen normalen Nutzer gelöscht werden oder eine Treiber-Installation nur von einem Nutzer mit Administratorrechten gestartet werden.

Unter Windows Vista neu hinzugekommen* sind die Integrity Levels (von Microsofts indischen? Übersetzern leider unschön als Verbindlichkeitsstufen eingedeutscht). Damit ist es möglich die Zugriffsrechte zusätzlich noch anwendungsspezifisch festzulegen.

Es gibt dabei mehrere Abstufungen:

SYSTEM - Das ist der höchste Integrity Level und nur einigen Betriebssystemdiensten vorbehalten, z. B. wininit.exe.

HIGH - Der zweithöchste Integrity Level. Auf diesem laufen Anwendungen und Dienste mit administrativen Rechten, z. B. ein Defragmentierungsprogramm.

MEDIUM - Auf dieser Stufe laufen Anwendungen mit normalen Benutzerrechten, z. B. Windows Media Player oder ein Instant Messenger

LOW - Der unterste von den Integrity Leveln. Programme die auf LOW laufen haben so gut wie keine Zugriffsrechte. Auch das Überschreiben oder Ändern von Dateien einfacher Nutzer ist diesen Anwendungen nicht möglich. Standardmäßig läuft unter Vista nur der Internet Explorer auf dieser Stufe (dort "Geschützter Modus" genannt). Falls der „Geschützte Modus“ inaktiv ist läuft der IE auf der Stufe MEDIUM.

Sinn des Ganzen ist es zu verhindern, dass Anwendungen mit niedrigen Rechten Anwendungen mit höheren Rechten beeinflussen können und es dient als eine Art Käfig für potentiell unsichere Anwendungen, der den Rest des Systems von diesen weitestgehend abschottet.

Wenn beispielsweise ein Krimineller eine noch nicht gepatchte Sicherheitslücke im Internet Explorer findet und eine Webseite so präpariert, dass sie Besuchern mit diesem Browser einen Trojaner installiert, so schlägt dieser Versuch mit großer Wahrscheinlichkeit fehl. (Es sei denn der Nutzer ist unachtsam und bestätigt die Installation. Dagegen hilft auch das beste Sicherheitskonzept nichts. ^^'') Das Ausnutzen der Sicherheitslücke im IE ist zwar prinzipiell möglich, aber danach geht es nicht weiter da für die Installation weit höhere Zugriffsrechte gebraucht werden als dem IE zugewiesen sind. Der Trojaner wird sich also nur schwer einnisten können.

Standardmäßig benutzen aber leider so gut wie keine Programme die Stufe LOW, leider laufen auch Programme die prinzipiell nicht weniger angreifbar sind als der Internet Explorer per Default auf der Stufe MEDIUM, was zum Überschreiben/Verändern von Dateien des Nutzers sowie das Starten von Programmen mit dessen Rechten schon ausreicht.

Im Windows Explorer lassen sich die Integrity Level leider auch nicht einstellen, allerdings gibt es ein Kommandozeilenprogramm für diesen Zweck.

Hier jetzt mal am Beispiel vom Firefox wie man ein Programm von MEDIUM auf LOW bringt und es trotzdem noch benutzbar bleibt. (Es versteht sich von selbst, dass die Programme NICHT laufen sollten, während man die Zugriffsrechte ändert.)

Dazu ruft man zuerst einmal die Kommandozeile (cmd.exe) mit administrativen Rechten auf (rechte Maustaste -> "Als Administrator ausführen").


Zunächst einmal sollte man wissen, dass alle Dateien im eigenen Benutzerverzeichnis standardmäßig auf Integrity Level MEDIUM sind. Dies spielt insofern eine Rolle als dass das auch die Konfigurationsdateien von Programmen betrifft. Das wird man spätestens merken wenn man ein Lesezeichen oder eine Datei speichern möchte und dies an den fehlenden Zugriffsrechten scheitert. Es gilt also neben der firefox.exe auch noch die vom Programm benötigten Ordner von MEDIUM auf LOW zu bringen.

Sobald cmd.exe gestartet ist befindet man sich in dem Pfad "C:\Windows\System32". Dort wollen wir aber nicht hin, also geht es in guter alter DOS-Manier erst einmal in den Ordner in welchem sich die firefox.exe befindet (C:\Program Files\Mozilla Firefox).

Code:
cd "C:\Programm Files\Mozilla Firefox"

Wer sich Tipparbeit ersparen möchte kann auch die Autovervollständigung (Tabulator-Taste) verwenden. Wenn man z. B. "cd C:\Pro" eingegeben hat und einmal die Tabulator-Taste drückt dürfte der Pfad auf "C:\Program Files" komplettiert werden. Falls dort mehrere Ordner mit "Pro" anfangen sollten, kann man zwischen diesen durch mehrfaches Drücken der Tabulatortaste wechseln, aber das nur am Rande...

Im Ordner "Mozilla Firefox" angekommen, wird erst einmal der Integrity Level von firefox.exe von MEDIUM auf LOW gebracht.

Der Befehl dafür lautet:
Code:
icacls firefox.exe /setintegritylevel low

Falls dies funktioniert hat gibt cmd.exe irgendwas von "1 Dateien erfolgreich verarbeitet, ..." aus. (Falls es nicht geklappt haben sollte hat man sich entweder vertippt oder cmd.exe nicht als Administrator gestartet.)

Um zu Funktionieren benötigt Firefox jetzt noch Zugriff auf seine Konfigurationsdateien.

Code:
cd C:\Users\<Benutzername>\AppData\Local\Mozilla
Statt <Benutzername> muss dort natürlich der Name des Benutzers sein, unter dem man in Windows angemeldet ist.

Code:
icacls Firefox /setintegritylevel (oi)(ci)low
Durch den Zusatz "(oi)(ci)" werden die Zugriffsrechte eines Ordners sowie aller darin enthaltenen Dateien und Unterordner verändert.

BTW: Das sind runde Klammern und zwischen "(ci)" und "low" ist KEIN Leerzeichen.

Code:
cd ..
Damit wird der Ordner "Mozilla" verlassen und wir befinden uns einen Ordner höher in "\AppData\Local".

Code:
icacls Temp /setintegritylevel (oi)(ci)low
Temporäre Dateien müssen Firefox und andere auf LOW laufende Programme auch anlegen können.

Code:
cd ..
Code:
cd Roaming
Code:
cd Mozilla
Code:
icacls Firefox /setintegritylevel (oi)(ci)low

So, danach müsste Firefox mit niedrigen Rechten starten. Beim Start dürfte ein Dialog aufploppen der einen fragt ob man das Programm wirklich starten möchte. Dort klickt man auf "Ausführen" und es kann losgehen. Diese Dialoge tauchen allerdings nur auf, wenn man das Programm so startet. Falls man einen Dateityp einem auf LOW laufenden Programm zuordnet und eine Datei dieses Typs öffnet, startet das Programm ohne vorherige Bestätigung. Sofern Firefox unter Windows als Standardbrowser eingestellt ist und man ihn aus dem Start-Menü heraus startet, sollte dieser Dialog auch nicht auftauchen.

(Falls man die Einstellungen wieder rückgängig machen möchte folgt man dieser Anleitung bis hierher noch einmal und ersetzt bei den entsprechenden Anweisungen das "low" durch ein "medium".)

Gut, wenn das jetzt so weit funktioniert hat, kann man ja mal ausprobieren wie sich das auswirkt. Dazu versucht man einfach mal ein Bild oder eine Datei von einer Internetseite (z. B. das Google-Logo-Bild) in einen beliebigen Ordner in seinem Nutzerverzeichnis zu speichern. Man sollte bei dem Versuch eine solche Meldung präsentiert bekommen:


Auf "Nein" klicken, denn es ist ja Sinn und Zweck der Übung, dass das Programm halt nicht überall speichern kann. ^^

Beim Internet Explorer funktioniert das Speichern auch wenn er im Integrity Level LOW läuft, allerdings nur deshalb weil Microsofts Browser neben der eigentlichen Anwendung (iexplore.exe) noch ein Programm namens ieuser.exe startet. Letzteres läuft mit normalen Nutzerrechten (Integrity Level MEDIUM). ieuser.exe übernimmt die Dateien von iexplore.exe und speichert sie ab, da iexplore.exe das mangels Rechten nicht kann.

Leider bedient ieuser.exe nur den Internet Explorer. Damit auch andere Programme mit niedrigen Rechten einen Platz zum Speichern von Dateien haben sollte man also den Integrity Level von einem neu erstellten Ordner abzusenken oder die Zugriffsrechte bei einem vorhandenen Ordner entsprechend anpassen. (Letzteres sollte man natürlich nicht mit einem Ordner machen in dem wichtige Dateien sind, denn diese sollen ja durch die Rechteabsenkung geschützt werden.)

Dies funktioniert prinzipiell genauso wie bei den Ordnern mit Firefox' Konfigurationsdateien (icacls <Ordnername> /setintegritylevel (oi)(ci)low).

Falls man hin und wieder das Firefox-Plugin „Download Helper“ benutzt um z. B. Youtube-Videos zu speichern, bietet sich dafür ein Ordner namens dwhelper unter C:\Users\<Benutzername>\ an.

Sofern noch nicht vorhanden, erstellt man also zuerst unter C:\ -> Benutzer -> Benutzername mit dem Explorer den Ordner "dwhelper"

Anschließend benutzt man wieder die cmd.exe um die Zugriffsrechte zu ändern:
Code:
cd C:\Users\<Benutzername>
Code:
icacls dwhelper /setintegritylevel (oi)(ci)low

In diesen Ordner sowie beliebigen Unterordnern können dann alle Programme mit niedrigen Rechten ihre Dateien speichern. Dateien hochladen kann man auch noch von den meisten anderen Ordnern, denn der niedrige Integrity Level verhindert nur das Speichern in den für Programme mit höheren Rechten vorbehaltenen Ordnern.

Wer ganz paranoid ist kann den Integrity Level von Ordnern natürlich auch so einstellen, dass Programmen niedrigeren Integrity Levels jeglicher Zugriff verwehrt wird, diese also auch nicht „hineingucken“ können (=kein Lesezugriff), aber dazu braucht man ein externes Programm und ich gehe darauf jetzt nicht ein.

Zu beachten ist noch, dass die Rechte mit denen ein Programm läuft bei jeder Neuinstallation und jedem Update wieder zurückgesetzt werden. Bei der Installation von einem Addon oder einer Skin ändert sich nichts, aber wenn das Hauptprogramm aktualisiert oder neu installiert wird muss man die auszuführende Datei (in diesem Fall: firefox.exe) wieder wie weiter oben beschrieben bearbeiten. Andernfalls läuft das Programm hinterher wieder mit Standardrechten (MEDIUM). Falls man diese nicht zwischenzeitlich gelöscht hat bleiben die Zugriffsrechte auf die Ordner mit den Konfigurationsdateien, der Temp-Ordner sowie der Ordner zum Speichern etc. davon unberührt.

Sofern man weiß wo sich die auszuführende Datei und die Konfigurationsdateien befinden, kann man natürlich auch bei anderen Programmen den Integrity Level senken.
Die Konfigurationsdateien, sofern das Programm welche anlegt, befinden sich fast immer unter C:\Users\<Benutzername>\AppData\Local sowie C:\Users\<Benutzername>\AppData\Roaming und die Ordner sind meist nach Programm- oder Herstellername benannt.

Wichtig, wenn man das nicht schon vorher gemacht hat. Der "Temp"-Ordner unter C:\Users\<Benutzername>\AppData\Local muss auf jeden Fall auf LOW gesetzt werden, ansonsten werden die meisten Programme nicht mit niedrigen Rechten laufen.

Bei Safari müsste man z. B. folgende Dateien und Ordner bearbeiten:
Safari.exe in C:\Program Files\Safari
Der Ordner Safari unter C:\Users\<Benutzername>\AppData\Local\Apple Computer sowie
der Ordner Safari unter C:\Users\<Benutzername>\AppData\Roaming\Apple Computer


Media Player Classic
mplayerc.exe in wo auch immer man die hingepackt hat sowie
der Ordner Media Player Classic in C:\Users\<Benutzername>\AppData\Roaming\


PDF XChange Viewer (Portable)
PDFXCview.exe in dem Ordner in dem man sie gepackt hat
Das Programm braucht lediglich Zugriff auf den "Temp"-Ordner.

Miranda IM
miranda32.exe im Miranda-Ordner unter C:\Program Files sowie
der Miranda-Ordner unter C:\Users\<Benutzername>\AppData\Roaming\
Programme auf niedrigem Integrity Level können keine Symbole in den Systray packen. Man kann das Programmfenster aber auch per Tastenkombination anzeigen und verbergen lassen. Einstellen lässt sich dies in Mirandas Optionsmenü unter Events → Hotkeys. Wie das bei der deutschsprachigen Version heißt weiß ich jetzt nicht (Ereignisse → Tastenkürzel evtl.?).


Bevor man den Integrity Level von einem Programm ändert, sollte man sich überlegen ob das bei dem Programm Sinn ergibt. Bei einem Antivirus-Programm oder einem Packprogramm á la Winrar dürfte das wohl eher nicht der Fall sein, bei einem Webbrowser oder PDF-Betrachter ist es schon eher eine Überlegung Wert.

Wer UAC abgestellt hat kann sich den Aufwand sparen, denn bei einem solchen System hindert ein Programm kaum etwas daran sich höhere Rechte zu verschaffen.



*Vielleicht gab es das auch schon unter Windows 2003, das habe ich aber nie benutzt, deswegen bin ich mir da jetzt nicht 100% sicher. ^^''
 
Back
Top Bottom