„Benutzerkontensteuerung“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K BKL
Segelboot (Diskussion | Beiträge)
grober überblick. Security Internals Video ansehen!!!
Zeile 1: Zeile 1:
[[Datei:UAC prompt for credentials.JPG|mini|300px|Anmeldepasswort zur Rechteerhöhung]]
Die '''Benutzerkontensteuerung''' oder auch {{lang|en|'''User Account Control'''}} ('''UAC''') ist eine Technik und Sicherheitsinfrastruktur, die beim [[Betriebssystem]] [[Microsoft Windows|Windows]] seit [[Microsoft Windows Vista|Windows Vista]] eingesetzt wird. Ihr Ziel ist es, den Schutz des Systems für den Standardbenutzer zu verbessern.
Die '''Benutzerkontensteuerung''' wurde in [[Microsoft Windows NT]] ab der Version NT 6.0 ([[Windows Vista|Vista]]) eingeführt. Der im Englischen als User Account Control (UAC) bezeichnete Sicherheitsmechanismus ist dafür verantwortlich, dass bei der Ausführung von administrativen Aufgaben eine Rechterhöhung des Nutzers erforderlich ist. Eingeführt wurde sie, da die meisten Heimanwender als Administratoren arbeiteten und damit für Viren und Angriffe ein erhöhtes Sicherheitsrisiko darstellten. Wenn sich mit aktiver UAC ein Administrator am System anmeldet, so arbeitet er mit normalen Benutzerrechten. Sobald eine Anwendung administrative Berechtigungen für die Ausführung benötigt, wird ein Dialogfeld angezeigt, welches extra zu bestätigen ist, damit diese Anwendung mit Adminrechten ausgeführt werden kann.

Unter UNIX-Systemen existiert mit dem Kommandozeilenbefehl [[sudo]] ein Mechanismus, der „vergleichbar, aber gleichzeitig auch sehr verschieden“ ist.<ref name="grimes"/> Die Einstellungen der Benutzerkontensteuerung können unter den Lokalen Sicherheitsrichtlinien den Wünschen des Benutzers angepasst werden. Hier gibt es auch die Möglichkeit, UNIX-ähnlich das Anmeldepasswort zur Rechteerhöhung einzugeben (Bild rechts, Windows 10 Technical Preview).

Ein weit verbreitetes Missverständnis ist, dass die Benutzerkontensteuerung nur ein Bestätigungsklick sei; das dahinter stehende Prinzip der Rechteerhöhung durch Identitätswechsel wird nicht verstanden. Ferner ist die UAC die Grundlage und Voraussetzung für das [[Sandboxing]] von Programmen und Verzeichnissen unter Windows. Sie ermöglicht die Vergabe von Privilegien an Prozesse, und sie isoliert Prozesse und Fenster, die auf demselben Desktop mit unterschiedlichen Rechten laufen, voneinander.


== Risiko und Bedeutung voller Zugriffsrechte ==
== Risiko und Bedeutung voller Zugriffsrechte ==

Versionen von Windows, die älter als [[Microsoft Windows NT|Windows NT]] sind, beziehungsweise nicht davon abstammen (beispielsweise [[Windows 3.1]], [[Microsoft Windows 95|Windows 95]], [[Microsoft Windows 98|98]] und [[Microsoft Windows Millennium Edition|ME]]), waren Einzelbenutzersysteme, in denen der Benutzer die volle Systemkontrolle besaß. Windowssysteme der NT-Linie sind dagegen Mehrbenutzersysteme, so dass verschiedene [[Benutzerrolle]]n und [[Benutzerrecht|-rechte]] vergeben werden können.
Versionen von Windows, die älter als [[Microsoft Windows NT|Windows NT]] sind, beziehungsweise nicht davon abstammen (beispielsweise [[Windows 3.1]], [[Microsoft Windows 95|Windows 95]], [[Microsoft Windows 98|98]] und [[Microsoft Windows Millennium Edition|ME]]), waren Einzelbenutzersysteme, in denen der Benutzer die volle Systemkontrolle besaß. Windowssysteme der NT-Linie sind dagegen Mehrbenutzersysteme, so dass verschiedene [[Benutzerrolle]]n und [[Benutzerrecht|-rechte]] vergeben werden können.


Bei [[Windows XP]] erhalten die bei der Installation angelegten Benutzerkonten Administratorrechte. Dies führt dazu, dass viele mit Windows XP ausgestattete Rechner standardmäßig mit einem Benutzer, der über volle Administratorrechte verfügt, betrieben werden. Dadurch wird jede Software, auch [[Schadsoftware]], mit Administratorrechten gestartet, so dass diese vollständigen Zugriff auf das System besitzt.
Bei [[Windows XP]] erhalten die bei der Installation angelegten Benutzerkonten Administratorrechte. Dies führt dazu, dass viele mit Windows XP ausgestattete Rechner standardmäßig mit einem Benutzer, der über volle Administratorrechte verfügt, betrieben werden. Dadurch wird jede Software, auch [[Schadsoftware]], mit Administratorrechten gestartet, so dass diese vollständigen Zugriff auf das System besitzt. In vielen älteren Anwendungen wurden eingeschränkte Benutzerrechte nicht berücksichtigt, obwohl Microsoft dies in den mit Windows 95 erstmals veröffentlichten "Designed for Windows"-Richtlinien als Minimalanforderung festlegte. Installiert oder startet man solche Software mit eingeschränkten Rechten, treten Fehler auf oder die Software arbeitet nicht ordnungsgemäß. Dazu kam die eingeschränkte Benutzerfreundlichkeit: Um in Windows XP den Kalender durch klicken auf die Uhrzeit abrufen zu könnnen, sind Administratorrechte erforderlich. Diese Probleme wurden früher dadurch umgangen, dass an Einbenutzerrechnern stets mit Administratorrechten gearbeitet wurde.


Unix-Systeme (wie [[Mac OS X]] oder z.B. [[Ubuntu]]) wurde von Anbeginn als ein Mehrbenutzersystem konzipiert. Jeder angemeldete Benutzer hat ein Heimatverzeichnis für seine persönlichen Daten, wo er nach belieben editieren kann. Änderungen außerhalb des Benutzerkontos können nur vom [[Root-Konto]] durchgeführt werden. Dieses ist bei manchen Unix-Derivaten wie Ubuntu standardmäßig nicht freigeschaltet. Die Mitglieder der Gruppe „Sudoers“ können aber administrative Aufgaben mit dem Befehl [[sudo]] ausführen, was dann im Rechtekontext des Benutzers root geschieht. Um zu verhindern, dass Schadsoftware sudo anwendet, muss zur Ausführung des Befehls das Anmeldepasswort zur Authentifizierung eingegeben werden.
In vielen älteren Anwendungen wurden eingeschränkte Benutzerrechte nicht berücksichtigt, obwohl Microsoft dies in den mit Windows 95 erstmals veröffentlichten "Designed for Windows"-Richtlinien als Minimalanforderung festlegte. Installiert oder startet man solche Software mit eingeschränkten Rechten, treten Fehler auf oder die Software arbeitet nicht ordnungsgemäß. Dieses Problem wurde früher dadurch umgangen, dass normale Benutzer mit Administratorrechten ausgestattet wurden.


Mit Windows Vista, welches erstmals Microsofts [[Security Development Lifecycle]] anwendete, wurde mit der Benutzerkontensteuerung ein vergleichbarer Mechanismus eingeführt, um das Prinzip des ''least user access'' oder ''least-privileged user account (LUA)'' umzusetzen. Mitglieder der Gruppe Administratoren erhalten beim Anmelden zwei Token: Einen als Administrator, und einen als Standardnutzer, dem alle administrativen Rechte und Privilegien entzogen sind. Diese Nutzer werden als „Geschützte Administratoren“ (Protected Administrators, PA) bezeichnet. Während die Sudoers unter Unix den “großen Bruder” mit sudo anrufen, haben die Geschützten Administratoren eine “gespaltene Persönlichkeit”, welche sie je nach Aufgabe wechseln. Um eine Manipulation der Rechteerhöhung durch Schadsoftware zu vermeiden, findet diese standardmäßig auf dem Sicheren Desktop statt.<ref name="com"/><ref name="smith"/>
== Lösung ==
Die Benutzerkontensteuerung wurde eingeführt, um die Sicherheit von Windowssystemen zu erhöhen.


Das Endszenario ist in beiden Fällen das Gleiche: Die meisten Benutzer sind nur mit Standardnutzerrechten unterwegs, und können nur in bestimmten Bereichen des Rechners editieren. Die Verwalter des Systems, also die Mitglieder der Gruppe ''Sudoers'' oder ''Administratoren'' arbeiten ebenfalls mit eingeschränkten Rechten, können diese aber bei Bedarf erhöhen. In beiden Fällen ist das Prinzip des ''Least-privileged User Account (LUA)'' umgesetzt: Alle arbeiten nur mit den Rechten, die sie für diese Aufgabe auch wirklich benötigen. Interessant ist dazu das Buch ''Windows Vista Security: Securing Vista Against Malicious Attacks'' von Roger A. Grimes (u.a. [[CISSP]], [[Microsoft Certified Systems Engineer|MCSE: Security]], [[Microsoft MVP|MVP]]) und Jesper M. Johansson (Senior Security Strategist bei der Security Technology Unit von Microsoft). Auf drei Seiten beschreiben sie detailliert die Unterschiede und Gemeinsamkeiten von sudo und UAC, deren spezifischen Vor- und Nachteile, und warum sich [[Microsoft]] gegen die Einführung eines sudo-Befehls entschieden hat.<ref name="grimes"/>
Bei den Windows-Versionen seit [[Microsoft Windows Vista|Windows Vista]] ist die Benutzerkontensteuerung enthalten und funktioniert wie folgt: Ist der Benutzer ''nicht'' als Administrator angemeldet, müssen Aktivitäten, die die Sicherheit oder Stabilität des Betriebssystems beeinträchtigen könnten, durch einen Administrator (durch Eingabe des entsprechenden Benutzernamens und Passworts) bestätigt werden. Ist der Benutzer schon als Administrator angemeldet, wird ein Auswahldialog angezeigt, so dass die Aktion unterbunden werden kann. Ab Windows 7 kann die UAC zudem in unterschiedlichen Sicherheitsstufen eingestellt werden.


In die Benutzerkontensteuerung wurde auch der Befehl [[Runas]] implementiert. Der Befehl kann dazu genutzt werden, Verwaltungs- bzw. Administrationsaufgaben durchzuführen, ohne dass sich ein Benutzer mit Administrationsrechten komplett neu anmeldet. Dazu muss das Konto und das Passwort eines Mitgliedes der Gruppe Administratoren eingegeben werden. Diese UAC-Abfrage wird als „Eingabeaufforderung für erhöhte Rechte für Standardbenutzer“ (Over-the-shoulder, OTS) bezeichnet, während die Rechteerhöhung von Geschützten Administratoren als „Administratorbestätigungsmodus“ (Admin Approval Mode, AAM) bezeichnet wird.
== Funktionsweise ==
Meldet sich ein Benutzer ohne Administratorrechte an, so wird eine neue Sitzung mit den [[Benutzerrecht|Basisrechten]] eingerichtet. Somit können von dieser Sitzung aus keine Veränderungen vorgenommen werden, die das gesamte System betreffen. Meldet sich dagegen ein Benutzer aus der Administratorgruppe an, so wird eine neue Session mit zwei Rechtekontexten eingerichtet. Ein Rechtekontext mit eingeschränkten [[Benutzerrecht|Basisrechten]] und ein zweiter mit den erweiterten Administratorrechten.


== Sicherheitskonzept ==
Benutzeranwendungen wie beispielsweise der [[Windows-Explorer]] werden mit eingeschränkten Rechten gestartet, so dass effektiv auch unter einem Administratoraccount eine eingeschränkte Umgebung besteht. Benötigt nun eine Anwendung erweiterte Rechte, werden diese über den UAC-Mechanismus angefordert. Ein Bestätigungsdialog wird angezeigt und sofern die gewünschte Aktion vom Benutzer bestätigt wird, wird die Sitzung mit den uneingeschränkten Rechten weitergeführt. In der voreingestellten Betriebsart (''Secure Desktop'') werden die Benutzerdaten (Benutzername und Passwort) durch UAC dadurch abgefragt, dass der gesamte Bildschirm mit Ausnahme des Autorisierungsdialoges abgedunkelt und deaktiviert wird. Das soll vor Missbrauch schützen ''(siehe [[Spoofing]])''.
Neben einer [[Access Control List|Zugriffssteuerungsliste]] (ACL) und den Privilegien, die zur feineren Rechtevergabe (oder -verbot) auch schon unter XP vorhanden waren, kam ab Windows NT 6.0 (Vista) noch der „Integrity Level“ hinzu. Im Deutschen wurde dies etwas unglücklich mit „Verbindlichkeitsstufe“ übersetzt, aber auch „Integritätsebenen“ ist ein geläufiger Begriff. Die Verbindlichkeitsstufe ist ein Sicherheitsmechanismus der Vorrang vor der Zugriffssteuerungsliste hat, also Zugriffe auch dann verhindert, wenn sie die Zugriffssteuerungsliste erlauben würde. Dazu bekommt jeder Prozess in seinem Access Token einen sogenannten Integrity Level (IL) verpasst, der ausdrücken soll, wie vertrauenswürdig er ist. Die hohe Verbindlichkeitsstufe bildet zusammen mit den administrativen Privilegien die beiden Teile des “administrativen Schlüsselbundes”, neben der Zugriffssteuerungsliste.


=== Integritätsebenen ===
UAC bietet auch eine Datei- und [[Registrierungsdatenbank|Registry]]-[[Virtualisierung_(Informatik)|Virtualisierung]] an, so dass nicht dafür vorbereitete Programme dennoch mit eingeschränkten Rechten lauffähig sind. Dateizugriffe von diesen Programmen auf entsprechende Systemordner (z.&nbsp;B. <tt>C:\Program Files\</tt>) werden umgeleitet nach <tt>C:\Users\%USERNAME%\AppData\Local\VirtualStore\</tt>. Zugriffe auf die Registry von nicht UAC vorbereiteten Programmen werden nach <tt>HKEY_CURRENT_USER\Software\Classes\VirtualStore</tt> umgeleitet. Sobald in der Windows Systemsteuerung UAC deaktiviert wird, würden die Programme mit Fehlermeldungen oder Fehlfunktionen reagieren, da die Zugriffe auf die gesperrten Systembereiche nicht mehr umgeleitet werden können.
Jedes Objekt im System befindet sich auf einer von fünf Stufen, gekennzeichnet durch ein Label in seinem Security Descriptor. Die Grundidee der Integrity Levels (IL) ist es, dass Prozesse, die auf einer niedrigeren Stufe laufen, Objekte mit höherer Stufe nicht beschreiben können (No Write-up). So kann ein Prozess mit Niedriger Verbindlichkeitsstufe den auf „Medium“ stehenden Benutzerdaten nichts anhaben und schon gar nicht den noch höher eingestuften Systemkomponenten. Zugriffe von unten nach oben sind also beschränkt, während auf gleicher Ebene oder von oben nach unten alles erlaubt ist - im Rahmen der Zugriffssteuerungsliste. Die fünf Integritätsebenen sind:<ref name="ms_integrity"/>


*'''Systemverbindlichkeitsstufe:''' Höchste Stufe, ist nur Systemprozessen wie svchost.exe, csrss.exe, winlogon.exe usw. und dem Benutzer SYSTEM sowie LocalSystem, LocalService und NetworkService vorbehalten.
Im Windows Task Manager kann die Spalte UAC-Virtualisierung eingeblendet werden. Dort kann der Status bzgl. der UAC-Virtualisierung der laufenden Programme bzw. Prozesse abgelesen werden. Programmentwickler sollten die Programme durch die Einbindung der unten stehenden XML-Datei kennzeichnen.
*'''Hohe Verbindlichkeitsstufe:''' Ist die Stufe der Benutzergruppen Administratoren, Sicherungs-Operatoren, Netzwerkkonfigurations-Operatoren und Kryptografie-Operatoren. Dies ist nötig, damit deren Prozesse durch User Interface Privilege Isolation (UIPI) nicht von Standardnutzerprozessen beeinflusst werden können.
*'''Mittlere Verbindlichkeitsstufe:''' Ist die Stufe der Standardbenutzer (authentifizierte Benutzer). Die meisten Ordner und Verzeichnisse auf der Festplatte haben diese Integritätsebene, ebenso die Prozesse dieser Nutzer.
*'''Niedrige Verbindlichkeitsstufe:''' Entspricht dem „geschützten Modus“ des [[Internet Explorer]]s, welches das erste Programm war, das dieses Sandboxing nutzte. Auf der Festplatte gibt es unter <code>%userprofile%\Appdata\LocalLow</code> ein Verzeichnis mit niedriger Verbindlichkeitsstufe, in das diese Prozesse schreiben können. In der Registy steht mit <code>HKCU\Software\AppDataLow</code> ein äquivalenter Verzeichnispfad mit IL „low“ zur Verfügung. Die Benutzergruppe „Jeder“ hat ebenfalls diese Verbindlichkeitsstufe.
*'''Nicht vertrauenswürdige Verbindlichkeitsstufe:''' Entspricht quasi einem Sandkasten im Sandkasten. Diese Integritätsebene wird für Anonymous-Anmeldungen verwendet. Da standardmäßig kein Verzeichnispfad mit diesem IL existiert, können diese Prozesse nur im Arbeitsspeicher existieren. Die [[Registerkarte]]n des [[Google Chrome]] laufen z.B. mit dem Security Descriptor „nicht vertrauenswürdige Verbindlichkeitsstufe“.<ref name="TechEd"/>


Die Hauptziele der Mandatory Integrity Control (MIC) sind die Trennung von Standardnutzerprozessen von Prozessen mit erhöhten Rechten, weswegen auch das [[Component Object Model]] die Integritätsebenen beachtet. Ferner wird durch die Verbindlichkeitsstufen ein Schreibschutz im Wurzelverzeichnis des Rechners gewährleistet, während andererseits Anwendungen wie der Internet Explorer nur beschränkte Änderungsmöglichkeiten von Nutzerdaten und -profil haben. Während im allgemeinen bei Objekten nur „No Write-up“ gilt, setzt das Prozessmanagement im NT-6-Kernel „No Read-up“ und „No Write-up“ bei laufenden Prozessen, um eine Manipulation der höhergestellten Prozesse zu verhindern. Es ist lediglich SYNCHRONIZE, PROCESS_QUERY_LIMITED_INFORMATION und PROCESS_TERMINATE möglich.<ref name="ms_integrity"/>
In Programmen, die mit erweiterten Rechten laufen, wird das [[Präfix]] „Administrator“ im Titel vorangestellt, so dass das Vorhandensein von erweiterten Rechten für dieses Programm leicht erkennbar ist.


Normalerweise bekommt jede Anwendung die Rechte des Prozesses von dem sie gestartet wurde. Das würde aber bedeuten, dass wenn ein Anwender den Internet Explorer startet, dieser auch mit mittlerer Verbindlichkeitsstufe laufen würde. Um das zu verhindern, gibt es im Access Token eines Accounts den Eintrag TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN, welcher bei Benutzeraccounts gesetzt und bei administrativen Accounts nicht gesetzt ist. Ist dieser Eintrag gesetzt, bewirkt er, dass Prozesse, welche gestartet werden, keine höheres Integrity Level bekommen können als wie der EXE-Datei zugewiesen wurde. Da dem iexplorer.exe nur das IL „Low“ zugewiesen ist, wird diese Datei bei normalen Benutzern auch nur in dieser Stufe gestartet.<ref name="winfaq"/> Wenn der Administrator UAC abschaltet, laufen alle seine Prozesse mit hoher Verbindlichkeitsstufe, da jedem Prozess das administrative Token zugewiesen wird. Alle Dokumente und Dateien welcher dieser Administrator erzeugt besitzen dann die Integritätsebene „hoch“. Wird nun die Benutzerkontensteuerung wieder aktiviert, bekommt jeder von ihm angeklickte Prozess/Ordner nur das Standardnutzer-Token (IL „mittel“) zu sehen, weswegen er diese Dateien ohne Admin-Rechte nicht mehr öffnen kann.<ref name="ms_integ_design"/>
Mit UAC ist es möglich zu bestimmen, dass:
* Administratoren ihr Passwort wiederholt eingeben müssen (zur Erhöhung der Sicherheit).
* Der Benutzer [[Klammergriff|Strg&nbsp;+&nbsp;Alt&nbsp;+&nbsp;Entf]] im Zuge des Authentifikationsprozesses eingeben muss (zur Erhöhung der Sicherheit).
* Der ''Admin Approval Mode'' vollständig ausgeschaltet wird (UAC beim Administrator angezeigt wird).


Die Verbindlichkeitsstufe eines Ordners gilt entweder nur für diesen selbst (object inherit, OI), oder für das komplette Verzeichnis (container inherit, CI).<ref name="ms_integ_design"/> Wird eine Datei z.B. in <code>%userprofile%\Appdata\LocalLow</code> oder ein Unterverzeichnis desselben geschoben, erhält diese die niedrige Verbindlichkeitsstufe, egal welche sie vorher hatte (Abstufung vorausgesetzt).<ref name="heise"/>
== Anpassung der Benutzerkontensteuerung ==
=== Anfordern von erweiterten Rechten ===
Ein Programm kann erweiterte Rechte auf verschiedene Arten anfordern. Eine Möglichkeit ist es, dass ein Abschnitt requestedPrivileges in einem [[Extensible Markup Language|XML]]-Dokument, dem [[Manifest-Datei|Manifest]], hinzugefügt wird. Dieses Manifest wird später in die Anwendung eingebunden. Üblicherweise spezifiziert ein Manifest Abhängigkeiten, visuelle Styles und weitere Eigenschaften des Programmes.


=== Privilegien ===
Sicherheitsabschnitt in einem Manifest-Dokument:
Die administrativen Privilegien sind der zweite Teil des “Schlüsselbundes”. Unter NT 6.0 wurden die Probleme, die sich bei der Arbeit mit einem Standardnutzeraccount ergaben entschärft, indem neue Privilegien hinzukamen und manche Aufgaben nicht mehr administrativ sind. Unter XP wurde nicht zwischen Zeitzone und Systemzeit unterschieden, obwohl nur letztere für die Sicherheit relevant ist. Ab Vista gibt es deshalb die Unterscheidung zwischen dem Privileg die Systemzeit zu ändern (SeSystemTimePrivilege) und dem Privileg die Zeitzone zu ändern (SeTimeZonePrivilege). Ferner können drahtlose Internetverbindungen und Energieoptionen des Rechners ohne Adminrechte konfiguriert werden. Die Installation von kritischen Windows-Updates ist nun ebenfalls als Standardnutzer möglich. In Firmennetzen können auch Treiber und ActiveX-Elemente von bestimmten Seiten installiert werden, wenn dies durch die Administratoren in den Gruppenrichtlinien freigegeben wurde.<ref name="vista"/> Die Privilegien der einzelnen Gruppen können unter ''Start > secpol.msc > Lokale Richtlinien > Zuweisen von Benutzerrechten'' angesehen oder geändert werden. Die folgende Liste enthält nicht alle Privilegien und Gruppen von NT-6.X-Systemen. Sie dient nur der Veranschauung der Unterschiede zwischen Administratoren und Benutzern.<ref name="Grotegut"/>


{|class="wikitable sortable" class="wikitable center"
<source lang="xml">
! Privileg
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
! Benutzer
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
! Administratoren
<v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3">
! Bezeichnung
<v3:security>
|-
<v3:requestedPrivileges>
| SeSystemTimePrivilege || [[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]] || Ändern der Systemzeit
<v3:requestedExecutionLevel level="highestAvailable" />
|-
</v3:requestedPrivileges>
| SeTimeZonePrivilege || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Ändern der Zeitzone
</v3:security>
|-
</v3:trustInfo>
| SeIncreaseBasePriorityPrivilege ||[[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Anheben der Zeitplanungspriorität
</assembly>
|-
</source>
| SeBatchLogonRight ||[[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Anmelden als Stapelverarbeitungsauftrag
|-
| SeDenyRemoteInteractiveLogonRight || [[Datei:Icon no.svg|20px]]|| [[Datei:Ec-hasslau.de button-gut.png|20px]]||Anmelden über Remotedienste verweigern
|-
| SeIncreaseWorkingSetPrivilege || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| [[Datei:Icon no.svg|20px]] || Arbeitseinsatz eines Prozesses vergrößern<ref group="Anm.">Alle Admins sind auch Benutzer, d.h. sie besitzen auch SeIncreaseWorkingSetPrivilege. Ist aber nicht Teil der Privilegien der Gruppe Administratoren</ref>
|-
| SeNetworkLogonRight || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Auf diesen Computer vom Netzwerk aus zugreifen
|-
| SeChangeNotifyPrivilege || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Auslassen der durchsuchenden Überprüfung
|-
| SeDebugPrivilege ||[[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Debuggen von Programmen
|-
| SeManageVolumePrivilege ||[[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Durchführen von Volumewartungsaufgaben
|-
| SeUndockPrivilege ||[[Datei:Ec-hasslau.de button-gut.png|20px]]||[[Datei:Ec-hasslau.de button-gut.png|20px]]|| Entfernen des Computers von der Dockingstation
|-
| SeCreatePagefilePrivilege || [[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Erstellen einer Auslagerungsdatei
|-
| SeSystemProfilePrivilege || [[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Erstellen eines Profils der Systemleistung
|-
| SeProfileSingleProcessPrivilege || [[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Erstellen eines Profils für einen Einzelprozess
|-
| SeCreateGlobalPrivilege ||[[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Erstellen globaler Objekte
|-
| SeCreateSymbolicLinkPrivilege || [[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Erstellen symbolischer Verknüpfungen
|-
| SeRemoteShutdownPrivilege || [[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Erzwingen des Herunterfahrens von einem Remotesystem aus
|-
| SeShutdownPrivilege || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Herunterfahren des Systems
|-
| SeLoadDriverPrivilege || [[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Laden und Entfernen von Gerätetreibern
|-
| SeInteractiveLogonRight || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Lokal anmelden zulassen
|-
| SeBackupPrivilege ||[[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Sichern von Dateien und Verzeichnissen
|-
| SeTakeOwnershipPrivilege || [[Datei:Icon no.svg|20px]]|| [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Übernehmen des Besitzes von Dateien und Objekten
|-
| SeSystemEnvironmentPrivilege ||[[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Verändern von Firmwareumgebungsvariablen
|-
| SeSecurityPrivilege || [[Datei:Icon no.svg|20px]]|| [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Verwalten von Überwachungs- und Sicherheitsprotokollen
|-
| SeRestorePrivilege ||[[Datei:Icon no.svg|20px]] || [[Datei:Ec-hasslau.de button-gut.png|20px]]|| Wiederherstellen von Dateien und Verzeichnissen
|}


== Technik ==
Wird das Level-Attribut von requestedExecutionLevel auf „asInvoker“ gesetzt, so läuft die Applikation mit dem Token, welcher die Applikation gestartet hat (normalerweise also mit eingeschränkten Rechten). Setzt man das Attribut auf „highestAvailable“, so fordert das einen UAC-Bestätigungsdialog bei Administratoren an und läuft bei Standardbenutzern mit eingeschränkten Rechten. „requireAdministrator“ dagegen fordert in jedem Fall die erweiterten Rechte ein.
=== Mechanismus ===
[[File:UAC architecture.JPG|mini|UAC-Architektur: Weiß wurde von XP übernommen, blau wurde modifiziert, gelbe Teile sind eine Neuentwicklung]]
Die Benutzerkontensteuerung besteht aus dem Application Information Service (AIS), der UAC-Abfrage selbst mit dem Sicheren Destop, der User Interface Privilege Isolation (UIPI), der Installationserkennung und der Anwendungs- /Datenvirtualisierung. Obwohl sich der Login-Prozess von Administratoren äußerlich nicht von dem unter XP unterscheidet, erkennt die Local Security Authority (lsass.exe) bei der Anmeldung eines Mitgliedes der Gruppe Administratoren dies und kreiert zwei Acces Token: Ein User-Token und ein Admin-Token. Der User-Token wird nun zum Starten der [[Windows-Shell]] verwendet. Explorer.exe ist wiederum der Vaterprozess, von dem alle anderen Prozesse innerhalb der Shell ihren Access Token vererbt bekommen. Alle Anwendungen laufen so mit Userrechten, wie wenn sich ein Standardnutzer anmelden würde. Wird nun eine Anwendung ausgeführt welche Administratorrechte benötigt, startet der Application Information Service (AIS) eine UAC-Abfrage. Bei Verweigerung wird die Anwendung nicht gestartet, bei Zustimmung wird diese mit dem Admin-Token ausgeführt. Wird diese erhöhte Anwendung beendet, wird auch der Prozess mit erhöhten Rechten beendet.<ref name="ms_uac"/>


Eine UAC-Abfrage wird entweder provoziert wenn ein Programm in seinem [[Extensible Markup Language|XML]]-Manifest erhöhte Rechte anfordert, oder wenn die Installationserkennung zuschlägt. Diese verwendet eine Heuristik die [[Installationsroutine]]n erkennt, da die typischen Verzeichnisse (<code>%programfiles%</code>, <code>%systemroot%\System32\config</code>) nur von Administratoren beschrieben werden können. Auf dieselbe Weise werden Updateroutinen und Deinstallationsroutinen erkannt. Die Heuristik arbeitet nur bei 32-Bit-Programmen, wenn diese keine manuelle Rechteerhöhung durch requestedExecutionLevel anfordern, und wenn LUA (Standardnutzer/Geschützter Administrator) aktiv ist. Die Heuristik sucht nach Schüsselwörtern wie "install," "setup," "update," Schlüsselworte wie Anbieter, Firmenname, Produktname, Dateibeschreibung und Namen. Fernern wird nach Schlüsselwörtern im side-by-side Manifest, und in den StringTables der ausführbaren Datei gesucht, ebenso bestimmte Bytesequenzen und bestimmte Eigenschaften in RC Data.<ref name="ms_uac"/> Fordert eine Anwendung Adminrechte an, läuft folgender Vorgang ab: Der Befehl ShellExecute(BeispielApp.exe) wird an AIS (<code>%SystemRoot%\System32\Appinfo.dll</code>) gesendet. AIS, welche innerhalb von svchost.exe läuft, startet Consent.exe (<code>%SystemRoot%\System32\Consent.exe</code>). Consent.exe macht einen [[Screenshot]] und wendet einen Abdunklungseffekt auf die Bitmap an. Anschließend wird auf einen [[Virtueller Desktop|Virtuellen Desktop]] gewechselt der nur dem Benutzer Lokales System (SYSTEM) gehört, die Bitmap als Bildschirmhintergrund eingefügt und die Abfragebox der Benutzerkontensteuerung eingeblendet. Dieser Vorgang wird als Sicherer Desktop bezeichnet und verhindert, das Schadware Einfluss auf die Entscheidung nehmen kann.<ref name="ms_inside_uac"/><ref group="Anm.">Ist auch der Grund, warum bei Bildschirm-Recordern oder Remotedesktop-Anwendungen die UAC-Abfrage nicht erscheint. Sie findet auf einem anderen Desktop statt als dem, wo aufgezeichnet wird.</ref>
Um einen neuen Prozess mit erweiterten Rechten aus einer [[.NET]]-Anwendung heraus zu starten, kann das Kommando „[[runas]]“ verwendet werden.
[[File:AIS rights.JPG|mini|links|Ablauf der Rechteerhöhung mit dem Application Information Service (AIS)]]
Wenn das abfragende Programm von Microsoft digital signiert wurde und das Image im Windows-Systemverzeichnis liegt, ist die Kopfzeile der Box blau. Grau bedeutet, dass das Programm digital signiert wurde, aber nicht von Microsoft stammt. Gelb steht für nicht signierte Anwendungen/Programme, und rot erscheint bei blockierten Anwendungen. Im Prompt erscheint das Icon, die Beschreibung, der Dateiname und der Publisher wenn signiert. Dies ist als Hürde für Schadsoftware gedacht, um das Vortäuschen von seröser Software zu erschweren. Unter „Details“ kann die [[Kommandozeile]] eingeblendet werden, welche zur Rechteerhöhung weitergegeben wird. Bei blauen UAC-Abfragen kann hier auch das Zertifikat angesehen werden. Drückt der Nutzer „Nein“/„Abbrechen“, schickt Windows einen access-denied Fehler an den Prozess, der die Anfrage stellte. Wenn der Benutzer zustimmt indem er auf „Ja“ drückt oder ein administratives Passwort eingibt, ruft AIS CreateProcessAsUser(BeispielApp.exe) auf, um den Prozess mit Administrator-Identität zu starten. Weil der Prozess technisch gesehen von AIS gestartet wurde, wird ein Feature in der CreateProcessAsUser-[[Programmierschnittstelle|API]] genutzt welche es erlaubt, die Prozess-ID des Vaters auf die desjenigen zu setzen, welcher das Programm (und damit die Anfrage) ursprünglich startete. Deshalb erscheinen Prozesse die mit erhöhten Rechten laufen nicht als Kindprozesse von AIS Service Hosting.<ref name="ms_inside_uac"/>


In der Praxis könnte Schadware die UAC-Abfrage nachbilden, was im AAM aber keine Rolle spielt, da ein Klick auf „Ja“ keine Rechteerhöhung zur Folge hätte. Problematischer sind Passworteingaben, da dies durch Trojaner ([[Keylogger]]) abgegriffen werden kann. Microsoft empfahl deshalb bei OTS eine [[Klammergriff|Secure Attention Sequence]] anzufordern, bzw. diese Art der Rechteerhöhungen generell abzublocken.<ref name="ms_inside_uac"/> Versucht ein Programm ohne eine Rechteerhöhung anzufordern in administrative Pfade zu schreiben, werden Verzeichnisse und Registry virtualisiert. Dabei wird eine Kopie derselben vom Programm beschrieben, wobei diese im Nutzerprofil unter <code>%userprofile%\AppData\Local\VirtualStore\</code> sowie <code> HKCU\Software\Classes\VirtualStore\</code> abgelegt wird, sodass jeder Nutzer eine eigene Kopie erhält.<ref name="ms_app_dev"/> Dies soll vor allem älteren Anwendungen das ungestörte Ausführen ermöglichen. Bei 64-Bit Anwendungen ist dies nicht möglich, ebenso, wenn eine UAC-Abfrage negativ beantwortet wurde.<ref name="ms_uac"/>
Ein Beispiel in [[C-Sharp|C#]]:
<source lang="csharp">
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "C:\\Windows\\system32\\notepad.exe";
proc.StartInfo.Verb = "runas"; // elevate the application
proc.Start();
</source>


Einige Anwendung laufen mit erhöhten Rechten im selben Desktop wie niedriger gestufte Anwendungen. Wird von einem Nutzer ein Prozess mit erhöhten Rechten ausgeführt (per OTS oder AAM), läuft dieser Prozess in einem anderen Account. Die tiefer laufenden Prozesse können dadurch keinen Code in den höher liegenden Prozess schreiben. Allerdings könnten die tiefer liegenden Anwendungen den höher Laufenden Fake-Input senden, um diese zu kompromitieren. Das [[Sandbox|Sandboxing]] durch die Integritätsebenen soll dies verhindern, indem tieferliegende Prozesse in ihren Rechten gegenüber Höheren beschränkt werden. Dies wird als User Interface Privilege Isolation (UIPI) bezeichnet. Prozesse können nur Prozesse mit gleicher oder niedrigerer Verbindlichkeitsstufe zum Schreiben öffnen. Um den Zugriff auf Geheimnisse im Arbeitsspeicher zu verhindern, haben Prozesse mit niedrigerem IL keinen Lesezugriff auf Prozesse mit höherer Verbindlichkeitsstufe.<ref name="ms_russ"/> Tiefergestellte Prozesse können dadurch keine ''window handle validation'' auf einen höheren Prozess ausführen. Die Befehle ''SendMessage'' oder ''PostMessage'' zu höheren Prozessen bekommen von der API Erfolgsmeldungen zurückgeschickt, während die Befehle im stillen verworfen werden. [[Hook (Informatik)|Thread Hooks und Journal Hooks]] gegen Prozesse mit höherer Verbindlichkeitsstufe sind ebenso wie [[DLL-Injection]] nicht möglich.<ref name="ms_app_dev"/>
In [[Component Object Model|COM]]-Anwendungen kann „runas“-Kommando zum Aufruf ShellExecute() hinzugefügt werden.


=== UAC-Abfrage ===
<source lang="c">
::ShellExecute(0, "runas", "C:\\Windows\\Notepad.exe", 0, 0, SW_SHOWNORMAL);
</source>


Die UAC-Abfrage läßt sich über ''Start > Systemsteuerung > Benutzerkonten und Jugendschutz > Einstellungen der Benutzerkontensteuerung ändern'' den persönlichen Vorlieben anpassen. Die Auswahlmöglichkeiten dort beschränken sich aber auf einen Schieberegler, wo zwischen unterster Stufe (Win7: UAC abgeschaltet; ab Win8: UAC erhöht ohne Nachfrage), zwei mittleren Stufen (UAC an, mit Whitelist für Windows-Programme) und der höchsten Stufe (UAC an, ohne Whitelist für Windows-Programme) gewählt werden kann. Die beiden obersten Stufen aktivieren dabei den Sicheren Desktop; standardmäßig ist die zweithöchste Stufe gewählt.<ref name="winfaq_uac"/>
=== Benutzerkontensteuerung für bestimmte Anwendungen deaktivieren ===
[[Datei:UAC prompt for consent.JPG|mini|300px|Eingabeaufforderung zur Zustimmung ]]
Für ausgewählte Anwendungen kann die Benutzerkontensteuerung deaktiviert oder für ältere Anwendungen ein Kompatibilitätsmodus dauerhaft festgelegt werden.
Den Vollzugriff auf die Einstellungsmöglichkeiten der Benutzerkontensteuerung gibt es nur in den Lokalen Sicherheitsrichtlinien (secpol.msc) unter ''Start > secpol.msc > Lokale Richtlinien > Sicherheitsoptionen''. Käufer einer preisgünstigen Windows-Variante wie Home Basic und Home Premium haben keine grafische Benutzeroberfläche wie gpedit.msc und secpol.msc, und müssen die Einstellungen deshalb in der [[Registrierungsdatenbank]] (regedit.exe) unter ''HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'' vornehmen. Die Einstellungsmöglichkeiten sind deshalb nachfolgend auch mit Registrierungs-Werten in Klammern angegeben. Die Standardeinstellungen in [[Windows 7|Windows NT 6.1]] und höher sind fett gedruckt.<ref name="ms_keys"/>


Interessant ist, dass der Administratorgenehmigungsmodus auch die Möglichkeit hat, Unix-typisch das Anmeldepasswort zur Rechteerhöhung einzugeben, wie dies bei ''sudo'' der Fall ist. Dabei kann zwischen dem normalen (ConsentPromptBehaviorAdmin = 3) und dem Sicheren Desktop (ConsentPromptBehaviorAdmin = 1) gewählt werden. Interessant ist auch die Option ''ValidateAdminCodeSignatures'', bei der nur Programme Adminrechte erlangen können, die digital signiert und überprüft sind. Bei Windows 8 und später ist dies nicht mehr nötig, da die Funktion im SmartScreen-Filter aufgeht, der Programme nur starten läßt, die diese Anforderungen erfüllen und/oder Reputation besitzen. Alle Eingabehilfen (UIAccess) müssen bereits ab Vista eine [[Public-Key-Infrastruktur|PKI-Signatur]] aufweisen, sonst werden sie nicht akzeptiert. Die “sicheren Verzeichnisse” (EnableSecureUIAPaths) können nur von Administratoren beschrieben werden. Die Rechteerhöhung für Standardbenutzer hatte ursprünglich keinen Sicheren Desktop (wird in älterer Literatur nicht aufgeführt), der Zahlensprung von 1 auf 3 mag dies verdeutlichen.
== Kritik ==

Microsoft ist sich der teilweisen Ablehnung der UAC durch die Anwender bewusst. So formulierte das Unternehmen die Feststellung „Unter Windows 7 ist UAC jetzt weniger störend“,<ref>[http://windows.microsoft.com/de-de/windows7/products/features/user-account-control Artikel auf www.windows.microsoft.com über die Benutzerkontensteuerung in Windows 7 (deutsch)]</ref> womit Microsoft die Behinderung der Anwender einräumt.
Für [[Paranoia|Paranoiker]] gibt es noch die Möglichkeit, zur Rechteerhöhung die [[Klammergriff|Secure Attention Sequence (SAS)]] anzufordern. Dazu muss unter ''Start > gpedit.msc > Administrative Vorlagen > Windows-Komponenten > Benutzerschnittstelle für Anmeldeinformationen'' die Option „Vertrauenswürdiger Pfad für Anmeldeinformationseintrag erforderlich“ aktiviert werden. Die Rechteerhöhung behindert den [[Arbeitsablauf]] massiv, soll aber das Abgreifen von Passwörtern verhindern. Wird eine Anwendung gestartet die Adminrechte anfordert, erscheint erst eine Dialogbox „Windows-Sicherheit“, in der man den Vorgang fortsetzten oder abbrechen kann. Wird fortsetzen gewählt, erfolgt die Aufforderung die Secure Attention Sequence (SAS) auszuführen. Erst danach steht die UAC-Abfrage zur Rechteerhöhung bereit.<ref name="win7forum"/>

{|class="wikitable sortable" class="wikitable center"
! Richtlinie
! Sicherheitseinstellung
! Erläuterung
|-
| rowspan="2"| Administratorgenehmigungsmodus für das integrierte Administratorkonto (FilterAdministratorToken) || '''Deaktiviert (0)''' || rowspan="2"|UAC für das integrierte Administratorkonto
|-
| Aktiviert (1)
|-
| rowspan="2"| Alle Administratoren im Administratorbestätigungsmodus ausführen (EnableLUA) || '''Aktiviert (1)''' || rowspan="2"|UAC für die Gruppe der Administratoren
|-
| Deaktiviert (0)
|-
| rowspan="2"| Anwendungsinstallationen erkennen und erhöhte Rechte anfordern (EnableInstallerDetection) || '''Aktiviert (1)''' || rowspan="2"|Installationserkennungsheuristik
|-
| Deaktiviert (0)
|-
| rowspan="2"| Bei Benutzeraufforderung nach erhöhten Rechten zum sicheren Desktop wechseln (PromptOnSecureDesktop) || '''Aktiviert (1)''' || rowspan="2"|Wechsel auf Sicheren Desktop
|-
| Deaktiviert (0)
|-
| rowspan="2"| Datei- und Registrierungsschreibfehler an Einzelbenutzerstandorte virtualisieren (EnableVirtualization) || '''Aktiviert (1)''' || rowspan="2"|Datei- und Registryvirtualisierung
|-
| Deaktiviert (0)
|-
| rowspan="2"| Erhöhte Rechte nur für UIAccess-Anwendungen, die an sicheren Orten installiert sind (EnableSecureUIAPaths) || '''Aktiviert (1)''' || rowspan="2"|Eingabehilfen müssen unter %programfiles%<br/> oder %systemroot%\System32 installiert sein
|-
| Deaktiviert (0)
|-
| rowspan="2"| Nur ausführbare Dateien heraufstufen, die signiert und überprüft sind (ValidateAdminCodeSignatures) || '''Deaktiviert (0)''' || rowspan="2"|PKI-Signaturüberprüfung für alle<br/> Anwendungen die erhöhte Rechte anfordern
|-
| Aktiviert (1)
|-
| rowspan="2"| UIAccess-Anwendungen können erhöhte Rechte ohne sicheren Desktop anfordern (EnableUIADesktopToggle) || '''Deaktiviert (0)''' || rowspan="2"| Eingabehilfeprogramme können den Sicheren Desktop deaktivieren
|-
| Aktiviert (1)
|-
| rowspan="6"| Verhalten der Eingabeaufforderung für erhöhte Rechte für Administratoren im<br/> Administratorgenehmigungsmodus (ConsentPromptBehaviorAdmin) || Erhöhte Rechte ohne Eingabeaufforderung (0) || Alles wird ohne Nachfrage hochgestuft
|-
| Eingabeaufforderung zu Anmeldeinformationen auf dem sicheren Desktop (1) || Anmeldepasswort auf dem Sicheren Desktop
|-
| Eingabeaufforderung zur Zustimmung auf dem sicheren Desktop (2) || Ja/Nein-Abfrage auf dem Sicheren Desktop
|-
| Eingabeaufforderung zu Anmeldeinformationen (3) || Anmeldepasswort zur Rechteerhöhung
|-
| Eingabeaufforderung zur Zustimmung (4) || Ja/Nein-Abfrage zur Rechterhöhung
|-
| '''Eingabeaufforderung zur Zustimmung für Nicht-Windows-Binärdateien (5)''' || Ja/Nein-Abfrage mit UAC-Whitelist
|-
| rowspan="3"| Verhalten der Benutzeraufforderung für erhöhte Rechte für Standardbenutzer (ConsentPromptBehaviorUser) || Anforderungen für erhöhte Rechte automatisch ablehnen (0) || Roter UAC-Prompt blockt Rechteerhöhung
|-
| Eingabeaufforderung zu Anmeldeinformationen (1) || Administratives Passwort zur Rechteerhöhung
|-
| '''Eingabeaufforderung zu Anmeldeinformationen auf dem sicheren Desktop (3)''' || Dito auf dem Sicheren Desktop
|-
|}

== Integration im Betriebssystem ==
=== Entwicklung ===
{{Zitat|Tagsüber arbeite ich als Security Program Manager bei Microsoft. Ich schreibe zudem recht häufig für das TechNet Magazin über das Thema Sicherheit. Daher ist es selbstverständlich, dass ich die Sicherheit sehr ernst nehme. Ich habe jedoch auch andere Interessen. In meiner Freizeit spiele ich gern Windows-basierte Spiele. [...] Die Sache hat jedoch einen Haken. Wie meine Freunde Jesper Johansson und Aaron Margosis lehne ich es ab, Spiele mit Administratorrechten auszuführen, sofern es nicht unbedingt erforderlich ist. Dies beruht teilweise darauf, dass ich sicherstellen möchte, dass mir bei einem Netzwerkspiel die Meldung „0wn3d“ nur aufgrund meiner mangelnden Geschicklichkeit angezeigt wird und nicht, weil mich jemand mit einem Rootkit bombardiert [...]. Ich vertrete diesen Standpunkt so konsequent, dass ich häufig tolle neue Spiele nicht spielen kann. Wenn ich ein Spiel unter meinem Standardbenutzerkonto auf einem zur SBS-Domäne (Small Business Server) gehörenden Client nicht zum Laufen bekomme, nachdem ich es unter einem Administratorkonto installiert und aktualisiert habe, entferne ich es sofort. Es gibt keine Entschuldigung für solche technischen Mängel, und ich habe genug Spiele, aus denen ich wählen kann. Ich gebe zu, dass sich diese Haltung extrem anhören mag, aber in diesem Punkt bin ich unnachgiebig.|Autor=Matt Clapham über Vista, Februar 2007<ref name="ms_game"/>}}

Das Problem bei Windowssystemen war in der Vergangenheit immer, dass diese zwar eine Trennung von Nutzer- und Adminkonten für Firmen und Kindersicherung zuliessen, die meisten Rechner (75%) aber Einzelplatzrechner sind. Da jede Maschine einen Administrator braucht, und die meisten Nutzer auch die volle Kontrolle über das System haben wollen um Änderungen vorzunehmen, gab es praktisch nur Administratoren als Nutzer. Dies hatte auch Auswirkungen auf die Software, die stets davon ausgehen konnte, dass der Nutzer über Adminrechte verfügt, und systemweit geltende Änderungen vornehmen kann. Software die für diese Umgebung geschrieben wurde arbeitet nicht wenn der Anwender nur ein Standardnutzer ist, was damals nur für Firmen und Kindersicherung relevant war. Eine Software die Administratorrechte bekommt, kann aber das System beschädigen, entweder mit Absicht (Schadware) oder unabsichtlich (schlecht programmierte Software).<ref name="ms_uac_stats"/> Firmen umgingen das Problem teilweise, indem sie diese Anwender zur Powerusergruppe hinzufügten, die es unter Vista eigentlich nicht mehr gibt.<ref name="ms_desktop"/>

Die Benutzerkontensteuerung sollte zwei Ziele erreichen: Die Inkompatibilität der Software beseitigen, und dem Nutzer Änderungen am System deutlich machen. Aus diesem Grund wurde der Geschütze Administrator (Protected Admin, PA) eingeführt, welcher standardmäßig das erste Konto auf dem System ist. Durch die Erzeugung zweier Access-Tokens – einen als Standardnutzer, einen als Administrator – wurde das Problem der unbemerkten Änderungen gelöst.<ref name="ms_uac_stats"/> Der Weg vom Administrator zum Benutzer war bei Drittsoftware aber ein steiniger, da die meisten Anwendungen beim Erscheinen von [[Windows Vista|Vista]] nicht für Standardnutzer ausgelegt waren (Wes Miller im [[Microsoft TechNet]], Mai 2008: „Meine Herausforderung an Sie: Fühlen Sie den Schmerz“).<ref name="ms_desktop"/> Durch Telemetriedaten von Kunden konnte Microsoft die Entwicklung von Drittanbietersoftware im Angesicht der Benutzerkontensteuerung gut mitverfolgen.

Die Zahl der Anwendungen, welche mit Adminrechten lief, konnte drastisch gesenkt werden. Dies wurde von Microsoft positiv aufgenommen, da die Verwundbarkeit des [[Betriebssystem]]s reduziert wird. Im ersten August (2007) nach dem Release von Vista hatten die Telemetrie-Kunden in 50% ihrer Sessions (Zeitraum vom Einloggen bis zum Ausloggen, max 24 Std.) eine UAC-Abfrage. In diesem Zeitraum forderten 775.312 verschiedene Programme Adminrechte an, wobei die Installationen dazugezählt wurden. Hier zeigte sich, dass die meiste Software noch Adminrechte benötigte. Drei Monate später sank die Zahl bereits auf 350.000 pro Monat. Ein Jahr später, im August 2008, waren nur noch 168.149 UAC-Prompts pro Monat. Der Umstand, dass die Neuinstallation und Einrichtung des Rechners mehr UAC-Abfragen erfordert, wurde ebenfalls erkannt. Die Daten des Customer Experience Improvement Program zeigten auch auf, das von Mai 2007 bis Juli 2008 die Zahl der Sessions mit einer oder mehr UAC-Abfragen von 50% auf etwa 33% (Vista SP1) fiel.<ref name="ms_uac_stats"/>

Damit tat sich aus Sicht von Microsoft das nächste Problem auf: Da Windows selbst ins Betriebssystem eingreifen kann, erzeugte Windows nun etwa 40% aller UAC-Prompts. Da die Anwendungsprogrammierer ihre Arbeit taten, verschob sich das Verhältnis der UAC-Abfragen. Windows-Komponenten erzeugten 17 der Top 50 UAC-Abfragen in Vista, und 29 der Top 50 in Vista SP1. Mit Vista SP1 wurden kleinere Verbesserungen eingeführt, um die UAC-Abfragen weiter zu reduzieren. Das neue Betriebssystem [[Windows 7]] wurde als Gelegenheit gesehen, tiefergehende Veränderungen durchzuführen, um die Zahl der UAC-Abfragen des Systems weiter zu reduzieren. Es wurde z.B. auch herausgefunden, dass Benutzer die UAC genervt abschalteten, oder die Abfragen einfach nur durchwinkten. Ferner wurde in einer Testumgebung herausgefunden, dass nur 13% der Teilnehmer sagen konnten, warum der UAC-Dialog erschien. Bei Telemetrienutzern wurde zudem beobachtet, dass 89% der Prompts in Vista und 91% der Abfragen in Vista SP1 positiv beantwortet wurden. Es wurde befürchtet, dass die Nutzer den UAC-Dialog aus Gewohnheit abklicken, und bei kritischen Abfragen nicht bewusst entscheiden. Ein informativerer UAC-Dialog, und eine Reduzierung der UAC-Abfragen von Windows selbst wurden angestrebt, damit die Nutzer besser auf die kritischen UAC-Prompts achten können.<ref name="ms_uac_stats"/>

Mit Windows 7 wurde deshalb die UAC-Whitelist eingeführt. Die Programme, die auf dieser armlangen Liste stehten, erhalten automatisch Adminrechte, ohne UAC-Abfrage. Vereinfacht gesagt sind dies fast alle EXE-Dateien, die unter <code>%HOMEDRIVE%\Windows\System32</code> liegen. Nennenswerte Ausnahmen sind mmc.exe und besonders [[rundll32.exe]], da sich sonst virus.dll mit Adminrechten starten lassen könnte. Das Programm <code>%HOMEDRIVE%\Windows\ehome\Mcx2Prov.exe</code> ist ebenfalls auf der Whitelist. Nachfolgend sind alle Programme aufgeführt, die sich beim Release von Windows 7 auf der Whitelist befanden.<ref name="secrets"/> Bis auf kleinere Veränderungen wurde die so modifizierte Benutzerkontensteuerung bei allen nachfolgenden Windows-Versionen übernommen. Die Whitelist kann deaktiviert werden, wenn der UAC-Regler auf die höchste Stufe gestellt wird.

{| class="wikitable center mw-collapsible mw-collapsed"
|-
! Whitelist der Benutzerkontensteuerung
|-
|
%systemroot%\ehome\Mcx2Prov.exe
%systemroot%\system32\AdapterTroubleshooter.exe
%systemroot%\system32\BitLockerWizardElev.exe
%systemroot%\system32\bthudtask.exe
%systemroot%\system32\chkntfs.exe
%systemroot%\system32\cleanmgr.exe
%systemroot%\system32\cliconfg.exe
%systemroot%\system32\CompMgmtLauncher.exe
%systemroot%\system32\ComputerDefaults.exe
%systemroot%\system32\dccw.exe
%systemroot%\system32\dcomcnfg.exe
%systemroot%\system32\DeviceEject.exe
%systemroot%\system32\DeviceProperties.exe
%systemroot%\system32\dfrgui.exe
%systemroot%\system32\djoin.exe
%systemroot%\system32\eudcedit.exe
%systemroot%\system32\eventvwr.exe
%systemroot%\system32\FXSUNATD.exe
%systemroot%\system32\hdwwiz.exe
%systemroot%\system32\ieUnatt.exe
%systemroot%\system32\iscsicli.exe
%systemroot%\system32\iscsicpl.exe
%systemroot%\system32\lpksetup.exe
%systemroot%\system32\MdSched.exe
%systemroot%\system32\msconfig.exe
%systemroot%\system32\msdt.exe
%systemroot%\system32\msra.exe
%systemroot%\system32\MultiDigiMon.exe
%systemroot%\system32\Netplwiz.exe
%systemroot%\system32\newdev.exe
%systemroot%\system32\ntprint.exe
%systemroot%\system32\ocsetup.exe
%systemroot%\system32\odbcad32.exe
%systemroot%\system32\OptionalFeatures.exe
%systemroot%\system32\perfmon.exe
%systemroot%\system32\printui.exe
%systemroot%\system32\rdpshell.exe
%systemroot%\system32\recdisc.exe
%systemroot%\system32\rrinstaller.exe
%systemroot%\system32\rstrui.exe
%systemroot%\system32\sdbinst.exe
%systemroot%\system32\sdclt.exe
%systemroot%\system32\shrpubw.exe
%systemroot%\system32\slui.exe
%systemroot%\system32\SndVol.exe
%systemroot%\system32\spinstall.exe
%systemroot%\system32\SystemPropertiesAdvanced.exe
%systemroot%\system32\SystemPropertiesComputerName.exe
%systemroot%\system32\SystemPropertiesDataExecutionPrevention.exe
%systemroot%\system32\SystemPropertiesHardware.exe
%systemroot%\system32\SystemPropertiesPerformance.exe
%systemroot%\system32\SystemPropertiesProtection.exe
%systemroot%\system32\SystemPropertiesRemote.exe
%systemroot%\system32\taskmgr.exe
%systemroot%\system32\tcmsetup.exe
%systemroot%\system32\TpmInit.exe
%systemroot%\system32\verifier.exe
%systemroot%\system32\wisptis.exe
%systemroot%\system32\wusa.exe
%systemroot%\system32\DriverStoreFileRepositorybth.inf_x86_neutral_65c949576945c2a9fsquirt.exe
%systemroot%\system32\oobesetupsqm.exe
%systemroot%\system32\sysprepsysprep.exe
|}

=== Auslöser einer UAC-Abfrage ===

Wie oben erwähnt, konnten 2008 in einer Testumgebung mit Vista nur 13% der Teilnehmer sagen, warum der UAC-Dialog erschien. Unter Vista lautete der [[Lapidar|lapidare]] Kommentar in der UAC-Box: „Zur Fortsetzung des Vorganges ist Ihre Zustimmung erforderlich“. Ab Windows 7 wurde die Formulierung „Möchten Sie zulassen, dass durch das folgende Programm Änderungen an diesem Computer vorgenommen werden?“ gewählt, die für unerfahrene Nutzer besser geeignet ist. Die fachlich korrekte Frage lautet:
:'''„Möchten Sie, dass das folgende Programm Administratorrechte bekommt?“'''
Konkret sind unter Windows NT 6.0 und höher drei Gründe ausschlaggebend, warum eine UAC-Abfrage eine Rechteerhöhung anfordert: Die Zugriffskontrolle, die Verbindlichkeitsstufen und die Privilegien. Die Zugriffskontrollliste jeder Datei kann angesehen werden, wenn im [[Windows-Explorer]] bei einer Datei mit ''Rechtsklick > Eigenschaften > Sicherheit'' die Berechtigungen der einzelnen Nutzer und Gruppen angesehen werden. Der Benutzer SYSTEM (Lokales System) und die Gruppe der Administratoren haben praktisch überall den Vollzugriff, der Nutzer [[Mustermann]] darf im Stammverzeichnis des Systems <code>C:\Windows</code> (%systemroot%) und den Installationsverzeichnissen <code>C:\Programme</code> bzw. <code>C:\Programme (x86)</code> (%programfiles%) nur lesen und ausführen. Die Integritätsebenen und Privilegien werden in der normalen [[Grafische Benutzeroberfläche|grafischen Benutzeroberfläche]] wie dem [[Taskmanager]] leider nirgends angezeigt. Der [[Process Explorer]] von Microsoft ist dazu praktisch zwingend erforderlich, da hier bei laufenden Prozessen deren Verbindlichkeitsstufe eingeblendet wird, und unter Details auch die Privilegien des Prozesses angezeigt werden können. Folgende Vorgänge benötigen Administratorrechte, und lösen eine UAC-Abfrage aus:

*Wenn Programme installiert werden, da %programfiles% nur mit Adminrechten beschrieben werden kann. Gleiches gilt für Entfernen, da Löschen auch nur eine Art des Schreibens ist.
*Wenn Treiber (de)installiert werden, da <code>c:\windows\system32\drivers</code> unter %systemroot% liegt und nur mit Adminrechten beschrieben werden kann. Ferner wird das Privileg SeLoadDriverPrivilege benötigt.
*Wenn ActiveX-Elemente (de)installiert werden, da <code>C:\Windows\Downloaded Program Files</code> unter %systemroot% liegt.
*Wenn in administrative Teile der Registry geschrieben werden soll. Diese Dateien (SYSTEM.DAT, SOFTWARE.DAT, SAM.DAT, SECURITY.DAT, BCD-Template.DAT uvm.) liegen unter <code>C:\Windows\System32\config</code> und damit unter %systemroot%. Dies ist z.B. bei Änderungen an der Benutzerkontensteuerung und [[Windows Update]] der Fall, da diese in SOFTWARE.DAT, und damit unter %systemroot% gespeichert werden.
*Wenn Änderungen in der Systemsteuerung vorgenommen werden, da hierfür praktisch immer administrative Privilegen erforderlich sind, z.B. SeSystemTimePrivilege (Ändern der Systemzeit), SeBackupPrivilege und SeRestorePrivilege (Systemwiederherstellung etc.) uvm. Meist wird dabei auch in administrative Teile der Registry geschrieben.
*Wenn Änderungen an der [[Windows-Firewall]] vorgenommen werden, da diese irgendwo unter %systemroot% abgelegt werden. Ferner werden Privilegien wie SeCreateGlobalPrivilege u.a. benötigt.
*Wenn Einblick in Order und Verzeichnisse genommen werden soll, die für Standardnutzer nicht einsehbar sind, und/oder Daten zwischen Benutzerverzeichnissen kopiert werden.

Eine besondere Rolle nimmt das Verzeichnis %programdata% ein, das standardmäßig unsichtbar geschaltet ist. Hier haben Benutzer Vollzugriff, <code>%programdata%\Microsoft</code> und seine Unterverzeichnisse können aber nur von Administratoren beschrieben werden. Die Unterorder [[Microsoft Security Essentials|Microsoft Antimalware]] und [[Windows Defender]] können aus Gründen des Selbstschutzes nur von Administratoren, SYSTEM und TrustedInstaller gelesen und beschrieben werden. Änderungen an MSE bzw. Defender erfordern deshalb Adminrechte.

=== Geschützter Modus und AppContainer ===

Mit dem Aufkommen der Benutzerkontensteuerung war klar, dass Schadware versuchen würde, allein mit Standardnutzerrechten auszukommen. Hier kommen die Verbindlichkeitsstufen ins Bild: Alle administrativen Pfade werden de facto durch Zugriffssteuerungslisten und Privilegen vor dem Zugriff tieferstehender Anwendungen und Nutzer geschützt. Die Verbindlichkeitsstufen betreffen hier nur die laufenden Prozesse, welche durch UIPI (No Read-up, No Write-up) durch Zugriff von unten geschützt sind. Verzeichnisse welche mit IL „high“ geschützt sind gibt es standardmäßig nicht. Bei der Entwicklung von Vista war sich Microsoft schon damals des Problems bewusst, dass ein [[Webbrowser]] im gleichen Rechtekontext läuft, wie die Gehaltsabrechnung einer Firma. Die Integritätsstufen „low“ und „untrusted“ werden deshalb zum [[Sandbox]]ing von Anwendungen und ihren Verzeichnissen eingesetzt.<ref name="TechEd"/>
[[Datei:Low to med integrity.JPG|mini|300px|Dialogbox zur Rechteerhöhung „low“ auf „medium“.]]
Mit dem [[Internet_Explorer#Version_7|Internet Explorer 7]] in Vista wurde die erste Anwendung geschaffen, die mit niedriger Verbindlichkeitsstufe läuft. Wie bereits oben erwähnt, gibt es auf der Festplatte unter <code>%userprofile%\Appdata\LocalLow</code> ein Verzeichnis mit niedriger Verbindlichkeitsstufe, in das diese Prozesse schreiben können. In der Registy steht mit <code>HKCU\Software\AppDataLow</code> ein äquivalenter Verzeichnispfad zur Verfügung. Damit Daten aus der Sandbox iexplorer.exe in das Benutzerprofil gelangen können, ist ein Broker-Prozess ieuser.exe mit IL „medium“ nötig.<ref name="grimes"/> Inzwischen wurde das Sandboxing auch von anderer Software übernommen: Beim Chrome läuft der Broker-Prozess chrome.exe mit IL „medium“, die [[Registerkarte]]n chrome.exe mit „nicht vertrauenswürdiger Verbindlichkeitsstufe“, d.h. ohne Schreibzugriff auf die Festplatte. Der Adobe Reader hat inzwischen einen „Protected Mode“, Microsoft Office 2010 „Protected View“ usw.<ref name="TechEd"/>

Wird aus diesen Sandkästen eine Datei mit IL „low“ in ein Verzeichnis mit IL „medium“ per [[Drag and Drop]] verschoben, erscheint die „UAC-Abfrage für Arme“ im Bild rechts, da eine Rechteerhöhung von niedriger auf mittlere Verbindlichkeitsstufe stattfinden würde. Dies hat mit der Benutzerkontensteuerung direkt nichts zu tun, da der Standardnutzer selbst IL „mittel“ besitzt, also keine Adminrechte benötigt, um Dateien “auf sein Niveau” zu erhöhen. Die Benutzerkontensteuerung unter Windows Vista und 7 ist insofern relevant, da das Abschalten derselben (oder das Arbeiten mit dem eingebauten Administratorkonto, was denselben Effekt hat) dieses Sandboxing zerstört. TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN wird nur bei Benutzeraccounts gesetzt und bewirkt, dass Prozesse keinen höheren Integrity Level bekommen können als wie der Anwendung zugewiesen wurde. Wenn die Benutzerkontensteuerung abgeschaltet wird, bekommen alle Prozesse Adminrechte zugewiesen. Aus diesem Grund ist der Protected Mode des IE abgeschaltet, wenn UAC deaktiviert ist.

Unter [[Windows 8]] ist die Benutzerkontensteuerung nicht abgeschaltet, wenn der UAC-Regler auf unterster Stufe steht. Die Rechteerhöhung auf Wunsch einer Anwendung findet dann geräuschlos statt. Dies ist notwendig, da für die [[Windows-App]]s Sandboxing erzwungen wird. Da immer mehr Windows-Anwendungen auf niedriger Verbindlichkeitsstufe laufen wurde zudem ein Weg gesucht, damit diese nicht in die „Low“-Verzeichnisse einer anderen Anwendung schreiben können. Deshalb bekommt jede Windows-App (bzw. ihre Dateien und Anwendungen) einen individuellen [[Security Identifier]] (S-1-15-2-...) zugewiesen. Diese Kapselung wird als AppContainer bezeichnet.<ref group="Anm.">Die Details haben nicht direkt mit der Benutzerkontensteuerung zu tun, weswegen hier nur oberflächlich darauf eingegangen wird. Das nicht alles was wie eine Windows-App aussieht auch eine ist, d.h. ein AppContainer, bleibt hier auch unerwähnt. „PC-Einstellungen“ z.B. hat App-Design, ist aber kein AppContainer. Details dazu sollten im Artikel [[Windows-App]] stehen.</ref> Diese AppContainer werden unter <code>%programfiles%\WindowsApps</code> abgelegt, das Verzeichnis besitzt niedrige Verbindlichkeitsstufe. Der Internet Explorer ist unter Windows 8 die einzige Anwendung, die auch als Desktop-Programm in einem AppContainer laufen kann („Erweiterter geschützter Modus“).<ref name="ms_ie"/> Mit [[Windows 10]] sollen die AppContainer auch auf dem Desktop Einzug halten. In beiden Betriebssystemen kann die Benutzerkontensteuerung nur abgeschaltet werden, wenn in den Lokalen Sicherheitsrichtlinien (secpol.msc) „Alle Administratoren im Administratorbestätigungsmodus ausführen“ auf „Deaktiviert“ gesetzt wird.<ref name="TechEd"/> Wenig überraschend kommt dann, wenn eine Windows-App gestartet werden soll, eine Fehlermeldung mit der Aufforderung, UAC wieder zu aktivieren.

== Hürde oder Bürde? ==

Wenn ein Angreifer bei einem Unix-System Zugang zu einem Account bekommt, der sudo ausführen kann, hat er praktisch schon gewonnen. Bei Windows Vista und höher ist dies nicht anders.<ref name="grimes"/> Bereits beim Erscheinen von Vista 2007 stellten [[Mark Russinovich|Russinovich]] und Johansson klar, das die Benutzerkontensteuerung weder zum nerven, noch als Schutz gegen ausgeklügelte Angriffe zur [[Rechteausweitung]] gedacht ist. Damit hatte man nun dasselbe Problem, an dem UNIX seit 20 Jahren arbeitet. Ferner schützt die UAC nicht vollständig höhere Prozesse gegen Manipulation durch niedere Prozesse, da eben kein vollständiges Sandboxing stattfindet, was auch nicht geplant war.<ref name="ms_impact"/> Schadware mit Nutzerrechten läuft bei Geschützten Administratoren im selben Account wie erhöhte Prozesse. Da viele Anwendungen in das Nutzerprofil schreiben und lesen, kann sich hier eine Lücke ergeben, die zu einer Rechteausweitung führt. Russinovich nannte z.B. das Anhängen von Schadware an Shell-Extensions in der Registry, um sich früher oder später Adminrechte zu erschleichen. Ferner teilen sich privilegierte Prozesse denselben Namensraum mit Standardnutzerprozessen. Wenn Schadware weiß, wann ein privilegierter Prozess (IL: high/system) auf einen bestimmten Speicherbereich zugreift, könnte diese durch einen [[Pufferüberlauf]] Schadcode in den Prozess injizieren.<ref name="ms_inside_uac"/> Die einfachste Möglichkeit ist, unter einem wohlklingenden Namen einen UAC-Prompt auszulösen in der Hoffnung, dass unerfahrene Nutzer auf „Ja“ klicken.<ref name="ms_inside_uac"/> Wie Jesper M. Johansson im [[Microsoft TechNet]] schon 2007 treffend formulierte:<ref name="ms_impact"/>

:''„Wenn den bösen Jungs kein anderer Weg einfällt UAC zu besiegen, werden sie sicher darin Zuflucht nehmen den User zu bitten es zu tun. Wenn es die Wahl zwischen tanzenden Schweinen und Sicherheit gibt, wissen wir aus Erfahrung, dass die tanzenden Schweine immer gewinnen.“''<ref group="Anm.">„If the bad guys can't think of any other way to defeat UAC, they will almost certainly resort to asking the user to do it for them. Given the choice of dancing pigs and security, we know from experience that the dancing pigs win every time.“</ref>

Aufgrund dieser Möglichkeiten wurde die Benutzerkontensteuerung von Microsoft auch nicht als Sicherheitsbarriere gesehen. Als Sicherheitsbarriere wird von Microsoft eine Schranke bezeichnet, durch die Code oder Daten nur passieren können, wenn die Sicherheitsrichtlinien es erlauben. Beispielsweise kann ein Standardnutzer die Daten eines anderen Nutzers nicht manipulieren, oder diesen zwingen, bestimmten Code auszuführen. Wenn es doch möglich wäre, wäre dies eine Sicherheitslücke in Windows (oder einem Drittprogramm). Diese strikte Art der Trennung findet bei der Benutzerkontensteuerung nicht statt, als Kompromiss aus Bequemlichkeit und Sicherheit. Deshalb stellen die Integritätsebenen auch keine Sicherheitsbarriere dar, da standardmäßig eben nur No Write-up gilt. Die Benutzerkontensteuerung war in erster Linie eine Bequemlichkeit, die das Wechseln zwischen den Benutzerkonten zur Rechteerhöhung erleichtern sollte. Ihr Kernanliegen ist es, dass alle User nur mit Standardnutzerrechten arbeiten, um das Prinzip des '' least-privileged user account'' (LUA) durchzusetzen.<ref name="ms_inside_uac"/><ref name="ms_russ"/>
[[Datei:Malware UAC prompt.JPG|mini|300px|Eine Zahlenkolonne möchte Administratorrechte]]
Im Jahre 2011, also vier Jahre und eine Version der UAC später (Windows 7), sah Microsoft auch einen Nutzen gegen Malware. Die Schadwareschreiber begannen, ihre Software auf Standardnutzerrechte anzupassen. Für die meisten Schadprogramme stellte dies kein Problem dar. Die Umgehung der UAC stellte sich für Malware aber als sehr schwierig heraus. Ein Teil der Schadware ging deshalb dazu über, die Benutzerkontensteuerung zu deaktivieren, um böse UAC-Prompts der Schadware direkt nach dem Neustart zu vermeiden. Genannt wurden Sality-Viren, Alureon-Rootkits, FakePAV, Autostart-Würmer, Banking-Trojaner usw. Für die Änderung der UAC-Einstellungen benötigt die Malware bereits Adminrechte, was durch Exploits, eine Abschaltung der UAC oder einen „Ja“-Klick zur falschen Zeit möglich ist. Microsoft reagierte darauf, indem [[Microsoft Security Essentials]] nun darauf achtet, ob Software die UAC-Einstellungen ändert, und nutzt dies als Verhaltenserkennung. Da normale Software immer weniger UAC-Abfragen stellt, wurde die Verhaltenserkennung einfacher. Da 23% aller infizierten Rechner die Benutzerkontensteuerung deaktiviert hatten wurden die Nutzer gebeten, diese aktiviert zu lassen. Es wurde nochmals daraufhingewiesen, dass UAC nicht als Virenschutz gedacht ist, aber die Sicherheit des Betriebssystems verbessert.<ref name="ms_defense"/>

Die Benutzerkontensteuerung schützt nicht per se vor Malware, sie sorgt nur für eine strikte Trennung zwischen Benutzer- und Administratorrechten. Jedes Mal wenn die Grenze von unten nach oben durchschritten werden soll, erfolgt eine UAC-Abfrage. Der „Schutz“ besteht also darin, dass man bestimmen kann, welches Programm Adminrechte bekommt, und welches nicht. Alle administrativen Einstellungen die man von Hand am Rechner vornimmt können auch von einer Software durchgeführt werden, die Frage ist eben bloß, ob man das will. Bei tanzenden Schweinen, Zahlenkolonnen und chinesischen Schriftzeichen die Administratorrechte möchten sollte man besser vorsichtig sein. Der UAC-Prompt im Bild rechts stammt z.B. von einer Schadware, die am 30. Dezember 2014 von der ''Malc0de Database'' zu Testzwecken in ein [[Windows 10|Windows 10 TP]] heruntergeladen wurde. Der Schadwareprogrammierer rechnete wohl mit dem [[Dümmster anzunehmender User|Dümmsten Anzunehmenden User]] (DAU), der entweder auf „Ja“ klickt, oder die Benutzerkontensteuerung abgeschaltet hat. Knapp zwei Tage später, zu Silvester, erkannte der Windows Defender die Zahlenkolonne als [[:en:Sality|Win32/Sality]]. Der SmartScreen-Filter war dabei zu Testzwecken deaktiviert, da er die Schadware mangels PKI-Zertifikat geblockt hätte.

Wie oben erwähnt, ist die Benutzerkontensteuerung nicht zum Schutz gegen ausgeklügelte Angriffe zur Rechteausweitung gedacht. Das [[Metasploit|Metasploit Framework]] bietet verschiedene Möglichkeiten die UAC zu umgehen, sowie die Möglichkeit, unter wohlklingendem Namen einen UAC-Prompt auslösen, und dreist um Adminrechte zu bitten. Die Varianten ohne UAC-Pop-up arbeiten alle mit [[DLL Hijacking]] und [[DLL-Injection]], und nutzen unter Windows 7/8/8.1 die automatische Rechteerhöhung durch die UAC-Whitelist (autoElevate) aus. Vista ist dagegen immun.<ref name="cobalt"/> Aus diesem Grund ist es sinnvoll den UAC-Regler auf die höchste Stufe zu stellen, bzw. mit getrennten Konten zu arbeiten. Jesper M. Johansson stellte 2007 folgende Liste der [[Best practice]]s auf:<ref name="ms_impact"/>

{|class="wikitable sortable" class="wikitable center"
! Wertung
! Einstellung
|-
| Am Schlimmsten || Benutzerkontensteuerung abschalten
|-
| Schlecht || Automatische Rechteerhöhung ohne Nachfrage
|-
| Gut || Arbeiten im Administratorbestätigungsmodus
|-
| Besser || Getrennte Konten, Rechteerhöhung durch OTS
|-
| Am Besten || Getrennte Konten, Kontowechsel für Admin-Aufgaben<ref group="Anm.">Sinnvollerweise sollte dann bei "Verhalten der Benutzeraufforderung für erhöhte Rechte für Standardbenutzer" die Option "Anforderungen für erhöhte Rechte automatisch ablehnen" gewählt werden.</ref>
|}


== Weblinks ==
== Weblinks ==

* [http://technet.microsoft.com/de-de/library/cc731416%28WS.10%29.aspx Benutzerkontensteuerung] – Information von Microsoft TechNet
*[https://www.youtube.com/watch?v=voyzyiYYrd4 Windows 8.1 Security Internals] Vortrag und Demonstration (englisch) der Sicherheitsarchitektur von Windows NT 6.X: Security Identifiers, Token, UAC-Mechanismus, UAC-Sicherheitsrichtlinien, AppCompat und UAC, UAC-Installationserkennung, Verbindlichkeitsstufen, UIPI, AppContainer, IE als Desktop-App, [[Google Chrome]].
* [http://www.vs-support.com/tipps_tricks/uac.htm Benutzerkontenschutz – User Account Control] – UAC für bestimmte Anwendungen deaktivieren

* [http://theinvisiblethings.blogspot.com/2007/02/running-vista-every-day.html UAC – The Good and The Bad] (Joanna Rutkowska – invisiblethings.org) (englisch)
*[http://www.computerbase.de/forum/showthread.php?t=332703 ComputerBase-Forum] FAQ zur Benutzerkontensteuerung
* [http://www.edbott.com/weblog/?p=1602 What triggers User Account Control prompts?] (englisch)

* [http://windowsvistablog.com/blogs/windowsvista/archive/2007/01/23/security-features-vs-convenience.aspx Security Features vs. Convenience] (englisch)
== Anmerkungen ==
* [http://blogs.technet.com/b/markrussinovich/archive/2007/02/12/638372.aspx PsExec, User Account Control and Security Boundaries] – Weiterführende Informationen von Mark Russinovich (Microsoft Technet) (englisch).
<references group="Anm."/>
* [http://windows.microsoft.com/de-de/windows7/products/features/user-account-control UAC bei Windows 7 weniger störend]


== Einzelnachweise ==
== Einzelnachweise ==
<references>

<ref name="com">
{{Internetquelle|url=http://hefte.com-magazin.de/uploads/tx_commagdb/2010-08_Benutzer_in_Windows_7.pdf|titel=Benutzer in Windows 7|hrsg=com!|sprache=de|datum=8/2010|zugriff=2015-01-01}}
</ref>

<ref name="smith">
{{Literatur|Autor=Russell Smith|Titel=Least Privilege Security for Windows 7, Vista and XP|Verlag=Packt Publishing|Ort=|Jahr=7/2010|ISBN=1849680043|Seiten=}}
</ref>

<ref name="grimes">
{{Literatur|Autor=Roger A. Grimes, Jesper M. Johansson|Titel=Windows Vista Security: Securing Vista Against Malicious Attacks|Verlag=Wiley|Ort=|Jahr=7/2007|ISBN=0470101555 |Seiten=}}
</ref>

<ref name="ms_integrity">
{{Internetquelle|url=http://msdn.microsoft.com/en-us/library/bb625962.aspx|titel=How the Integrity Mechanism Is Implemented in Windows Vista |hrsg=Microsoft|sprache=en|datum=|zugriff=2015-01-01}}
</ref>

<ref name="winfaq">
{{Internetquelle|url=http://www.winfaq.de/faq_html/Content/tip2000/onlinefaq.php?h=tip2329.htm|titel=Sicherheitsmechanismus "Integrity Level" (IL)|hrsg=WinFAQ |sprache=de|datum=|zugriff=2015-01-01}}
</ref>

<ref name="ms_integ_design">
{{Internetquelle|url=http://msdn.microsoft.com/en-us/library/bb625963.aspx|titel=Windows Integrity Mechanism Design |hrsg=Microsoft|sprache=en|datum=|zugriff=2015-01-01}}
</ref>

<ref name="heise">
{{Internetquelle|url=http://www.heise.de/security/artikel/Rechtlos-271516.html|titel=Rechte und Rechtschaffenheit - Die Sicherheitsarchitektur von Windows Vista, Teil 1|hrsg=c't|sprache=de|datum=10/2007|zugriff=2015-01-01}}
</ref>

<ref name="vista">
{{Internetquelle|url=http://technet.microsoft.com/en-us/magazine/2008.06.onlinevista.aspx|titel=Windows Vista|hrsg= TechNet Magazine|sprache=en|datum=06/2008|zugriff=2015-01-01}}
</ref>

<ref name="Grotegut">
{{Literatur|Autor=Martin Grotegut|Titel=Windows Vista|Verlag=Springer|Ort=|Jahr=12/2007|ISBN=3540388826|Seiten=}}
</ref>

<ref name="ms_uac">
{{Internetquelle|url=http://technet.microsoft.com/en-us/library/cc709628%28v=ws.10%29.aspx|titel=Understanding and Configuring User Account Control in Windows Vista|hrsg=Microsoft TechNet|sprache=en|datum=|zugriff=2015-01-01}}
</ref>

<ref name="ms_inside_uac">
{{Internetquelle|url=http://technet.microsoft.com/de-de/magazine/2007.06.uac%28en-us%29.aspx|titel=Inside Windows Vista User Account Control|hrsg=Microsoft TechNet|sprache=en|datum=06/2007|zugriff=2015-01-01}}
</ref>

<ref name="ms_app_dev">
{{Internetquelle|url=http://msdn.microsoft.com/en-us/library/bb530410.aspx|titel=Windows Vista Application Development Requirements for User Account Control Compatibility|hrsg=Microsoft|sprache=en|datum=06/2007|zugriff=2015-01-01}}
</ref>

<ref name="ms_russ">
{{Internetquelle|url=http://blogs.technet.com/b/markrussinovich/archive/2007/02/12/638372.aspx|titel=PsExec, User Account Control and Security Boundaries|hrsg=Microsoft TechNet|sprache=en|datum=02/2007|zugriff=2015-01-01}}
</ref>

<ref name="winfaq_uac">
{{Internetquelle|url=http://www.winfaq.de/faq_html/Content/tip2500/onlinefaq.php?h=tip2526.htm|titel=Benutzerkontensteuerung (UAC – User Account Control)|hrsg=WinFAQ |sprache=de|datum=|zugriff=2015-01-01}}
</ref>

<ref name="ms_keys">
{{Internetquelle|url=http://technet.microsoft.com/de-de/library/dd835564%28v=ws.10%29.aspx|titel=UAC-Gruppenrichtlinien- und Registrierungsschlüsseleinstellungen|hrsg=Microsoft TechNet|sprache=de|datum=|zugriff=2015-01-01}}
</ref>

<ref name="win7forum">
{{Internetquelle|url=http://www.sevenforums.com/tutorials/161034-ctrl-alt-del-require-press-approve-uac-elevation.html|titel=Windows 7: CTRL+ALT+DEL - Require to Press to Approve UAC Elevation|hrsg=Windows SevenForums|sprache=en|datum=9/2013|zugriff=2015-01-01}}
</ref>

<ref name="ms_game">
{{Internetquelle|url=http://technet.microsoft.com/de-de/magazine/2007.02.gaming.aspx|titel=Spielen in einer sicheren Umgebung|hrsg=Microsoft TechNet|sprache=de|datum=2/2007|zugriff=2015-01-01}}
</ref>

<ref name="ms_uac_stats">
{{Internetquelle|url=http://blogs.msdn.com/b/e7/archive/2008/10/08/user-account-control.aspx|titel=Engineering Windows 7|hrsg=Microsoft|sprache=en|datum=10/2008|zugriff=2015-01-01}}
</ref>

<ref name="ms_desktop">
{{Internetquelle|url=http://technet.microsoft.com/de-de/magazine/2008.05.desktopfiles.aspx|titel=Die Desktopdateien|hrsg=Microsoft TechNet|sprache=de|datum=5/2008|zugriff=2015-01-01}}
</ref>

<ref name="secrets">
{{Literatur|Autor=Paul Thurrott, Rafael Rivera|Titel=Windows 7 Secrets|Verlag=Wiley|Ort=|Jahr=9/2009|ISBN=0470508418|Seiten=}}
</ref>

<ref name="ms_ie">
{{Internetquelle|url=http://msdn.microsoft.com/de-de/library/ie/dn265025%28v=vs.85%29.aspx|titel=Erweiterter geschützter Modus auf Desktop IE|hrsg=Microsoft |sprache=de|datum=|zugriff=2015-01-01}}
</ref>

<ref name="ms_impact">
{{Internetquelle|url=http://technet.microsoft.com/de-de/magazine/2007.09.securitywatch%28en-us%29.aspx|titel=Security Watch - The Long-Term Impact of User Account Control|hrsg=Microsoft TechNet|sprache=en|datum=9/2007|zugriff=2015-01-01}}
</ref>

<ref name="ms_defense">
{{Internetquelle|url=http://blogs.technet.com/b/mmpc/archive/2011/08/03/uac-plays-defense-against-malware.aspx|titel=UAC plays defense against Malware|hrsg=Microsoft TechNet|sprache=en|datum=8/2011|zugriff=2015-01-01}}
</ref>

<ref name="cobalt">
{{Internetquelle|url=http://blog.cobaltstrike.com/2014/03/20/user-account-control-what-penetration-testers-should-know/|titel=User Account Control – What Penetration Testers Should Know|hrsg=Raphael Mudge|sprache=en|datum=3/2014|zugriff=2015-01-01}}
</ref>

<ref name="TechEd">
{{Internetquelle|url=https://www.youtube.com/watch?v=voyzyiYYrd4|titel=Windows 8.1 Security Internals|hrsg=Chris Jackson|sprache=en|datum=11.11.2014|zugriff=2015-01-01}}
</ref>

<references />
<references />




[[Kategorie:Windows]]
[[Kategorie:Windows]]

Version vom 4. Januar 2015, 16:52 Uhr

Anmeldepasswort zur Rechteerhöhung

Die Benutzerkontensteuerung wurde in Microsoft Windows NT ab der Version NT 6.0 (Vista) eingeführt. Der im Englischen als User Account Control (UAC) bezeichnete Sicherheitsmechanismus ist dafür verantwortlich, dass bei der Ausführung von administrativen Aufgaben eine Rechterhöhung des Nutzers erforderlich ist. Eingeführt wurde sie, da die meisten Heimanwender als Administratoren arbeiteten und damit für Viren und Angriffe ein erhöhtes Sicherheitsrisiko darstellten. Wenn sich mit aktiver UAC ein Administrator am System anmeldet, so arbeitet er mit normalen Benutzerrechten. Sobald eine Anwendung administrative Berechtigungen für die Ausführung benötigt, wird ein Dialogfeld angezeigt, welches extra zu bestätigen ist, damit diese Anwendung mit Adminrechten ausgeführt werden kann.

Unter UNIX-Systemen existiert mit dem Kommandozeilenbefehl sudo ein Mechanismus, der „vergleichbar, aber gleichzeitig auch sehr verschieden“ ist.[1] Die Einstellungen der Benutzerkontensteuerung können unter den Lokalen Sicherheitsrichtlinien den Wünschen des Benutzers angepasst werden. Hier gibt es auch die Möglichkeit, UNIX-ähnlich das Anmeldepasswort zur Rechteerhöhung einzugeben (Bild rechts, Windows 10 Technical Preview).

Ein weit verbreitetes Missverständnis ist, dass die Benutzerkontensteuerung nur ein Bestätigungsklick sei; das dahinter stehende Prinzip der Rechteerhöhung durch Identitätswechsel wird nicht verstanden. Ferner ist die UAC die Grundlage und Voraussetzung für das Sandboxing von Programmen und Verzeichnissen unter Windows. Sie ermöglicht die Vergabe von Privilegien an Prozesse, und sie isoliert Prozesse und Fenster, die auf demselben Desktop mit unterschiedlichen Rechten laufen, voneinander.

Risiko und Bedeutung voller Zugriffsrechte

Versionen von Windows, die älter als Windows NT sind, beziehungsweise nicht davon abstammen (beispielsweise Windows 3.1, Windows 95, 98 und ME), waren Einzelbenutzersysteme, in denen der Benutzer die volle Systemkontrolle besaß. Windowssysteme der NT-Linie sind dagegen Mehrbenutzersysteme, so dass verschiedene Benutzerrollen und -rechte vergeben werden können.

Bei Windows XP erhalten die bei der Installation angelegten Benutzerkonten Administratorrechte. Dies führt dazu, dass viele mit Windows XP ausgestattete Rechner standardmäßig mit einem Benutzer, der über volle Administratorrechte verfügt, betrieben werden. Dadurch wird jede Software, auch Schadsoftware, mit Administratorrechten gestartet, so dass diese vollständigen Zugriff auf das System besitzt. In vielen älteren Anwendungen wurden eingeschränkte Benutzerrechte nicht berücksichtigt, obwohl Microsoft dies in den mit Windows 95 erstmals veröffentlichten "Designed for Windows"-Richtlinien als Minimalanforderung festlegte. Installiert oder startet man solche Software mit eingeschränkten Rechten, treten Fehler auf oder die Software arbeitet nicht ordnungsgemäß. Dazu kam die eingeschränkte Benutzerfreundlichkeit: Um in Windows XP den Kalender durch klicken auf die Uhrzeit abrufen zu könnnen, sind Administratorrechte erforderlich. Diese Probleme wurden früher dadurch umgangen, dass an Einbenutzerrechnern stets mit Administratorrechten gearbeitet wurde.

Unix-Systeme (wie Mac OS X oder z.B. Ubuntu) wurde von Anbeginn als ein Mehrbenutzersystem konzipiert. Jeder angemeldete Benutzer hat ein Heimatverzeichnis für seine persönlichen Daten, wo er nach belieben editieren kann. Änderungen außerhalb des Benutzerkontos können nur vom Root-Konto durchgeführt werden. Dieses ist bei manchen Unix-Derivaten wie Ubuntu standardmäßig nicht freigeschaltet. Die Mitglieder der Gruppe „Sudoers“ können aber administrative Aufgaben mit dem Befehl sudo ausführen, was dann im Rechtekontext des Benutzers root geschieht. Um zu verhindern, dass Schadsoftware sudo anwendet, muss zur Ausführung des Befehls das Anmeldepasswort zur Authentifizierung eingegeben werden.

Mit Windows Vista, welches erstmals Microsofts Security Development Lifecycle anwendete, wurde mit der Benutzerkontensteuerung ein vergleichbarer Mechanismus eingeführt, um das Prinzip des least user access oder least-privileged user account (LUA) umzusetzen. Mitglieder der Gruppe Administratoren erhalten beim Anmelden zwei Token: Einen als Administrator, und einen als Standardnutzer, dem alle administrativen Rechte und Privilegien entzogen sind. Diese Nutzer werden als „Geschützte Administratoren“ (Protected Administrators, PA) bezeichnet. Während die Sudoers unter Unix den “großen Bruder” mit sudo anrufen, haben die Geschützten Administratoren eine “gespaltene Persönlichkeit”, welche sie je nach Aufgabe wechseln. Um eine Manipulation der Rechteerhöhung durch Schadsoftware zu vermeiden, findet diese standardmäßig auf dem Sicheren Desktop statt.[2][3]

Das Endszenario ist in beiden Fällen das Gleiche: Die meisten Benutzer sind nur mit Standardnutzerrechten unterwegs, und können nur in bestimmten Bereichen des Rechners editieren. Die Verwalter des Systems, also die Mitglieder der Gruppe Sudoers oder Administratoren arbeiten ebenfalls mit eingeschränkten Rechten, können diese aber bei Bedarf erhöhen. In beiden Fällen ist das Prinzip des Least-privileged User Account (LUA) umgesetzt: Alle arbeiten nur mit den Rechten, die sie für diese Aufgabe auch wirklich benötigen. Interessant ist dazu das Buch Windows Vista Security: Securing Vista Against Malicious Attacks von Roger A. Grimes (u.a. CISSP, MCSE: Security, MVP) und Jesper M. Johansson (Senior Security Strategist bei der Security Technology Unit von Microsoft). Auf drei Seiten beschreiben sie detailliert die Unterschiede und Gemeinsamkeiten von sudo und UAC, deren spezifischen Vor- und Nachteile, und warum sich Microsoft gegen die Einführung eines sudo-Befehls entschieden hat.[1]

In die Benutzerkontensteuerung wurde auch der Befehl Runas implementiert. Der Befehl kann dazu genutzt werden, Verwaltungs- bzw. Administrationsaufgaben durchzuführen, ohne dass sich ein Benutzer mit Administrationsrechten komplett neu anmeldet. Dazu muss das Konto und das Passwort eines Mitgliedes der Gruppe Administratoren eingegeben werden. Diese UAC-Abfrage wird als „Eingabeaufforderung für erhöhte Rechte für Standardbenutzer“ (Over-the-shoulder, OTS) bezeichnet, während die Rechteerhöhung von Geschützten Administratoren als „Administratorbestätigungsmodus“ (Admin Approval Mode, AAM) bezeichnet wird.

Sicherheitskonzept

Neben einer Zugriffssteuerungsliste (ACL) und den Privilegien, die zur feineren Rechtevergabe (oder -verbot) auch schon unter XP vorhanden waren, kam ab Windows NT 6.0 (Vista) noch der „Integrity Level“ hinzu. Im Deutschen wurde dies etwas unglücklich mit „Verbindlichkeitsstufe“ übersetzt, aber auch „Integritätsebenen“ ist ein geläufiger Begriff. Die Verbindlichkeitsstufe ist ein Sicherheitsmechanismus der Vorrang vor der Zugriffssteuerungsliste hat, also Zugriffe auch dann verhindert, wenn sie die Zugriffssteuerungsliste erlauben würde. Dazu bekommt jeder Prozess in seinem Access Token einen sogenannten Integrity Level (IL) verpasst, der ausdrücken soll, wie vertrauenswürdig er ist. Die hohe Verbindlichkeitsstufe bildet zusammen mit den administrativen Privilegien die beiden Teile des “administrativen Schlüsselbundes”, neben der Zugriffssteuerungsliste.

Integritätsebenen

Jedes Objekt im System befindet sich auf einer von fünf Stufen, gekennzeichnet durch ein Label in seinem Security Descriptor. Die Grundidee der Integrity Levels (IL) ist es, dass Prozesse, die auf einer niedrigeren Stufe laufen, Objekte mit höherer Stufe nicht beschreiben können (No Write-up). So kann ein Prozess mit Niedriger Verbindlichkeitsstufe den auf „Medium“ stehenden Benutzerdaten nichts anhaben und schon gar nicht den noch höher eingestuften Systemkomponenten. Zugriffe von unten nach oben sind also beschränkt, während auf gleicher Ebene oder von oben nach unten alles erlaubt ist - im Rahmen der Zugriffssteuerungsliste. Die fünf Integritätsebenen sind:[4]

  • Systemverbindlichkeitsstufe: Höchste Stufe, ist nur Systemprozessen wie svchost.exe, csrss.exe, winlogon.exe usw. und dem Benutzer SYSTEM sowie LocalSystem, LocalService und NetworkService vorbehalten.
  • Hohe Verbindlichkeitsstufe: Ist die Stufe der Benutzergruppen Administratoren, Sicherungs-Operatoren, Netzwerkkonfigurations-Operatoren und Kryptografie-Operatoren. Dies ist nötig, damit deren Prozesse durch User Interface Privilege Isolation (UIPI) nicht von Standardnutzerprozessen beeinflusst werden können.
  • Mittlere Verbindlichkeitsstufe: Ist die Stufe der Standardbenutzer (authentifizierte Benutzer). Die meisten Ordner und Verzeichnisse auf der Festplatte haben diese Integritätsebene, ebenso die Prozesse dieser Nutzer.
  • Niedrige Verbindlichkeitsstufe: Entspricht dem „geschützten Modus“ des Internet Explorers, welches das erste Programm war, das dieses Sandboxing nutzte. Auf der Festplatte gibt es unter %userprofile%\Appdata\LocalLow ein Verzeichnis mit niedriger Verbindlichkeitsstufe, in das diese Prozesse schreiben können. In der Registy steht mit HKCU\Software\AppDataLow ein äquivalenter Verzeichnispfad mit IL „low“ zur Verfügung. Die Benutzergruppe „Jeder“ hat ebenfalls diese Verbindlichkeitsstufe.
  • Nicht vertrauenswürdige Verbindlichkeitsstufe: Entspricht quasi einem Sandkasten im Sandkasten. Diese Integritätsebene wird für Anonymous-Anmeldungen verwendet. Da standardmäßig kein Verzeichnispfad mit diesem IL existiert, können diese Prozesse nur im Arbeitsspeicher existieren. Die Registerkarten des Google Chrome laufen z.B. mit dem Security Descriptor „nicht vertrauenswürdige Verbindlichkeitsstufe“.[5]

Die Hauptziele der Mandatory Integrity Control (MIC) sind die Trennung von Standardnutzerprozessen von Prozessen mit erhöhten Rechten, weswegen auch das Component Object Model die Integritätsebenen beachtet. Ferner wird durch die Verbindlichkeitsstufen ein Schreibschutz im Wurzelverzeichnis des Rechners gewährleistet, während andererseits Anwendungen wie der Internet Explorer nur beschränkte Änderungsmöglichkeiten von Nutzerdaten und -profil haben. Während im allgemeinen bei Objekten nur „No Write-up“ gilt, setzt das Prozessmanagement im NT-6-Kernel „No Read-up“ und „No Write-up“ bei laufenden Prozessen, um eine Manipulation der höhergestellten Prozesse zu verhindern. Es ist lediglich SYNCHRONIZE, PROCESS_QUERY_LIMITED_INFORMATION und PROCESS_TERMINATE möglich.[4]

Normalerweise bekommt jede Anwendung die Rechte des Prozesses von dem sie gestartet wurde. Das würde aber bedeuten, dass wenn ein Anwender den Internet Explorer startet, dieser auch mit mittlerer Verbindlichkeitsstufe laufen würde. Um das zu verhindern, gibt es im Access Token eines Accounts den Eintrag TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN, welcher bei Benutzeraccounts gesetzt und bei administrativen Accounts nicht gesetzt ist. Ist dieser Eintrag gesetzt, bewirkt er, dass Prozesse, welche gestartet werden, keine höheres Integrity Level bekommen können als wie der EXE-Datei zugewiesen wurde. Da dem iexplorer.exe nur das IL „Low“ zugewiesen ist, wird diese Datei bei normalen Benutzern auch nur in dieser Stufe gestartet.[6] Wenn der Administrator UAC abschaltet, laufen alle seine Prozesse mit hoher Verbindlichkeitsstufe, da jedem Prozess das administrative Token zugewiesen wird. Alle Dokumente und Dateien welcher dieser Administrator erzeugt besitzen dann die Integritätsebene „hoch“. Wird nun die Benutzerkontensteuerung wieder aktiviert, bekommt jeder von ihm angeklickte Prozess/Ordner nur das Standardnutzer-Token (IL „mittel“) zu sehen, weswegen er diese Dateien ohne Admin-Rechte nicht mehr öffnen kann.[7]

Die Verbindlichkeitsstufe eines Ordners gilt entweder nur für diesen selbst (object inherit, OI), oder für das komplette Verzeichnis (container inherit, CI).[7] Wird eine Datei z.B. in %userprofile%\Appdata\LocalLow oder ein Unterverzeichnis desselben geschoben, erhält diese die niedrige Verbindlichkeitsstufe, egal welche sie vorher hatte (Abstufung vorausgesetzt).[8]

Privilegien

Die administrativen Privilegien sind der zweite Teil des “Schlüsselbundes”. Unter NT 6.0 wurden die Probleme, die sich bei der Arbeit mit einem Standardnutzeraccount ergaben entschärft, indem neue Privilegien hinzukamen und manche Aufgaben nicht mehr administrativ sind. Unter XP wurde nicht zwischen Zeitzone und Systemzeit unterschieden, obwohl nur letztere für die Sicherheit relevant ist. Ab Vista gibt es deshalb die Unterscheidung zwischen dem Privileg die Systemzeit zu ändern (SeSystemTimePrivilege) und dem Privileg die Zeitzone zu ändern (SeTimeZonePrivilege). Ferner können drahtlose Internetverbindungen und Energieoptionen des Rechners ohne Adminrechte konfiguriert werden. Die Installation von kritischen Windows-Updates ist nun ebenfalls als Standardnutzer möglich. In Firmennetzen können auch Treiber und ActiveX-Elemente von bestimmten Seiten installiert werden, wenn dies durch die Administratoren in den Gruppenrichtlinien freigegeben wurde.[9] Die Privilegien der einzelnen Gruppen können unter Start > secpol.msc > Lokale Richtlinien > Zuweisen von Benutzerrechten angesehen oder geändert werden. Die folgende Liste enthält nicht alle Privilegien und Gruppen von NT-6.X-Systemen. Sie dient nur der Veranschauung der Unterschiede zwischen Administratoren und Benutzern.[10]

Privileg Benutzer Administratoren Bezeichnung
SeSystemTimePrivilege Ändern der Systemzeit
SeTimeZonePrivilege Ändern der Zeitzone
SeIncreaseBasePriorityPrivilege Anheben der Zeitplanungspriorität
SeBatchLogonRight Anmelden als Stapelverarbeitungsauftrag
SeDenyRemoteInteractiveLogonRight Anmelden über Remotedienste verweigern
SeIncreaseWorkingSetPrivilege Arbeitseinsatz eines Prozesses vergrößern[Anm. 1]
SeNetworkLogonRight Auf diesen Computer vom Netzwerk aus zugreifen
SeChangeNotifyPrivilege Auslassen der durchsuchenden Überprüfung
SeDebugPrivilege Debuggen von Programmen
SeManageVolumePrivilege Durchführen von Volumewartungsaufgaben
SeUndockPrivilege Entfernen des Computers von der Dockingstation
SeCreatePagefilePrivilege Erstellen einer Auslagerungsdatei
SeSystemProfilePrivilege Erstellen eines Profils der Systemleistung
SeProfileSingleProcessPrivilege Erstellen eines Profils für einen Einzelprozess
SeCreateGlobalPrivilege Erstellen globaler Objekte
SeCreateSymbolicLinkPrivilege Erstellen symbolischer Verknüpfungen
SeRemoteShutdownPrivilege Erzwingen des Herunterfahrens von einem Remotesystem aus
SeShutdownPrivilege Herunterfahren des Systems
SeLoadDriverPrivilege Laden und Entfernen von Gerätetreibern
SeInteractiveLogonRight Lokal anmelden zulassen
SeBackupPrivilege Sichern von Dateien und Verzeichnissen
SeTakeOwnershipPrivilege Übernehmen des Besitzes von Dateien und Objekten
SeSystemEnvironmentPrivilege Verändern von Firmwareumgebungsvariablen
SeSecurityPrivilege Verwalten von Überwachungs- und Sicherheitsprotokollen
SeRestorePrivilege Wiederherstellen von Dateien und Verzeichnissen

Technik

Mechanismus

UAC-Architektur: Weiß wurde von XP übernommen, blau wurde modifiziert, gelbe Teile sind eine Neuentwicklung

Die Benutzerkontensteuerung besteht aus dem Application Information Service (AIS), der UAC-Abfrage selbst mit dem Sicheren Destop, der User Interface Privilege Isolation (UIPI), der Installationserkennung und der Anwendungs- /Datenvirtualisierung. Obwohl sich der Login-Prozess von Administratoren äußerlich nicht von dem unter XP unterscheidet, erkennt die Local Security Authority (lsass.exe) bei der Anmeldung eines Mitgliedes der Gruppe Administratoren dies und kreiert zwei Acces Token: Ein User-Token und ein Admin-Token. Der User-Token wird nun zum Starten der Windows-Shell verwendet. Explorer.exe ist wiederum der Vaterprozess, von dem alle anderen Prozesse innerhalb der Shell ihren Access Token vererbt bekommen. Alle Anwendungen laufen so mit Userrechten, wie wenn sich ein Standardnutzer anmelden würde. Wird nun eine Anwendung ausgeführt welche Administratorrechte benötigt, startet der Application Information Service (AIS) eine UAC-Abfrage. Bei Verweigerung wird die Anwendung nicht gestartet, bei Zustimmung wird diese mit dem Admin-Token ausgeführt. Wird diese erhöhte Anwendung beendet, wird auch der Prozess mit erhöhten Rechten beendet.[11]

Eine UAC-Abfrage wird entweder provoziert wenn ein Programm in seinem XML-Manifest erhöhte Rechte anfordert, oder wenn die Installationserkennung zuschlägt. Diese verwendet eine Heuristik die Installationsroutinen erkennt, da die typischen Verzeichnisse (%programfiles%, %systemroot%\System32\config) nur von Administratoren beschrieben werden können. Auf dieselbe Weise werden Updateroutinen und Deinstallationsroutinen erkannt. Die Heuristik arbeitet nur bei 32-Bit-Programmen, wenn diese keine manuelle Rechteerhöhung durch requestedExecutionLevel anfordern, und wenn LUA (Standardnutzer/Geschützter Administrator) aktiv ist. Die Heuristik sucht nach Schüsselwörtern wie "install," "setup," "update," Schlüsselworte wie Anbieter, Firmenname, Produktname, Dateibeschreibung und Namen. Fernern wird nach Schlüsselwörtern im side-by-side Manifest, und in den StringTables der ausführbaren Datei gesucht, ebenso bestimmte Bytesequenzen und bestimmte Eigenschaften in RC Data.[11] Fordert eine Anwendung Adminrechte an, läuft folgender Vorgang ab: Der Befehl ShellExecute(BeispielApp.exe) wird an AIS (%SystemRoot%\System32\Appinfo.dll) gesendet. AIS, welche innerhalb von svchost.exe läuft, startet Consent.exe (%SystemRoot%\System32\Consent.exe). Consent.exe macht einen Screenshot und wendet einen Abdunklungseffekt auf die Bitmap an. Anschließend wird auf einen Virtuellen Desktop gewechselt der nur dem Benutzer Lokales System (SYSTEM) gehört, die Bitmap als Bildschirmhintergrund eingefügt und die Abfragebox der Benutzerkontensteuerung eingeblendet. Dieser Vorgang wird als Sicherer Desktop bezeichnet und verhindert, das Schadware Einfluss auf die Entscheidung nehmen kann.[12][Anm. 2]

Ablauf der Rechteerhöhung mit dem Application Information Service (AIS)

Wenn das abfragende Programm von Microsoft digital signiert wurde und das Image im Windows-Systemverzeichnis liegt, ist die Kopfzeile der Box blau. Grau bedeutet, dass das Programm digital signiert wurde, aber nicht von Microsoft stammt. Gelb steht für nicht signierte Anwendungen/Programme, und rot erscheint bei blockierten Anwendungen. Im Prompt erscheint das Icon, die Beschreibung, der Dateiname und der Publisher wenn signiert. Dies ist als Hürde für Schadsoftware gedacht, um das Vortäuschen von seröser Software zu erschweren. Unter „Details“ kann die Kommandozeile eingeblendet werden, welche zur Rechteerhöhung weitergegeben wird. Bei blauen UAC-Abfragen kann hier auch das Zertifikat angesehen werden. Drückt der Nutzer „Nein“/„Abbrechen“, schickt Windows einen access-denied Fehler an den Prozess, der die Anfrage stellte. Wenn der Benutzer zustimmt indem er auf „Ja“ drückt oder ein administratives Passwort eingibt, ruft AIS CreateProcessAsUser(BeispielApp.exe) auf, um den Prozess mit Administrator-Identität zu starten. Weil der Prozess technisch gesehen von AIS gestartet wurde, wird ein Feature in der CreateProcessAsUser-API genutzt welche es erlaubt, die Prozess-ID des Vaters auf die desjenigen zu setzen, welcher das Programm (und damit die Anfrage) ursprünglich startete. Deshalb erscheinen Prozesse die mit erhöhten Rechten laufen nicht als Kindprozesse von AIS Service Hosting.[12]

In der Praxis könnte Schadware die UAC-Abfrage nachbilden, was im AAM aber keine Rolle spielt, da ein Klick auf „Ja“ keine Rechteerhöhung zur Folge hätte. Problematischer sind Passworteingaben, da dies durch Trojaner (Keylogger) abgegriffen werden kann. Microsoft empfahl deshalb bei OTS eine Secure Attention Sequence anzufordern, bzw. diese Art der Rechteerhöhungen generell abzublocken.[12] Versucht ein Programm ohne eine Rechteerhöhung anzufordern in administrative Pfade zu schreiben, werden Verzeichnisse und Registry virtualisiert. Dabei wird eine Kopie derselben vom Programm beschrieben, wobei diese im Nutzerprofil unter %userprofile%\AppData\Local\VirtualStore\ sowie HKCU\Software\Classes\VirtualStore\ abgelegt wird, sodass jeder Nutzer eine eigene Kopie erhält.[13] Dies soll vor allem älteren Anwendungen das ungestörte Ausführen ermöglichen. Bei 64-Bit Anwendungen ist dies nicht möglich, ebenso, wenn eine UAC-Abfrage negativ beantwortet wurde.[11]

Einige Anwendung laufen mit erhöhten Rechten im selben Desktop wie niedriger gestufte Anwendungen. Wird von einem Nutzer ein Prozess mit erhöhten Rechten ausgeführt (per OTS oder AAM), läuft dieser Prozess in einem anderen Account. Die tiefer laufenden Prozesse können dadurch keinen Code in den höher liegenden Prozess schreiben. Allerdings könnten die tiefer liegenden Anwendungen den höher Laufenden Fake-Input senden, um diese zu kompromitieren. Das Sandboxing durch die Integritätsebenen soll dies verhindern, indem tieferliegende Prozesse in ihren Rechten gegenüber Höheren beschränkt werden. Dies wird als User Interface Privilege Isolation (UIPI) bezeichnet. Prozesse können nur Prozesse mit gleicher oder niedrigerer Verbindlichkeitsstufe zum Schreiben öffnen. Um den Zugriff auf Geheimnisse im Arbeitsspeicher zu verhindern, haben Prozesse mit niedrigerem IL keinen Lesezugriff auf Prozesse mit höherer Verbindlichkeitsstufe.[14] Tiefergestellte Prozesse können dadurch keine window handle validation auf einen höheren Prozess ausführen. Die Befehle SendMessage oder PostMessage zu höheren Prozessen bekommen von der API Erfolgsmeldungen zurückgeschickt, während die Befehle im stillen verworfen werden. Thread Hooks und Journal Hooks gegen Prozesse mit höherer Verbindlichkeitsstufe sind ebenso wie DLL-Injection nicht möglich.[13]

UAC-Abfrage

Die UAC-Abfrage läßt sich über Start > Systemsteuerung > Benutzerkonten und Jugendschutz > Einstellungen der Benutzerkontensteuerung ändern den persönlichen Vorlieben anpassen. Die Auswahlmöglichkeiten dort beschränken sich aber auf einen Schieberegler, wo zwischen unterster Stufe (Win7: UAC abgeschaltet; ab Win8: UAC erhöht ohne Nachfrage), zwei mittleren Stufen (UAC an, mit Whitelist für Windows-Programme) und der höchsten Stufe (UAC an, ohne Whitelist für Windows-Programme) gewählt werden kann. Die beiden obersten Stufen aktivieren dabei den Sicheren Desktop; standardmäßig ist die zweithöchste Stufe gewählt.[15]

Eingabeaufforderung zur Zustimmung

Den Vollzugriff auf die Einstellungsmöglichkeiten der Benutzerkontensteuerung gibt es nur in den Lokalen Sicherheitsrichtlinien (secpol.msc) unter Start > secpol.msc > Lokale Richtlinien > Sicherheitsoptionen. Käufer einer preisgünstigen Windows-Variante wie Home Basic und Home Premium haben keine grafische Benutzeroberfläche wie gpedit.msc und secpol.msc, und müssen die Einstellungen deshalb in der Registrierungsdatenbank (regedit.exe) unter HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System vornehmen. Die Einstellungsmöglichkeiten sind deshalb nachfolgend auch mit Registrierungs-Werten in Klammern angegeben. Die Standardeinstellungen in Windows NT 6.1 und höher sind fett gedruckt.[16]

Interessant ist, dass der Administratorgenehmigungsmodus auch die Möglichkeit hat, Unix-typisch das Anmeldepasswort zur Rechteerhöhung einzugeben, wie dies bei sudo der Fall ist. Dabei kann zwischen dem normalen (ConsentPromptBehaviorAdmin = 3) und dem Sicheren Desktop (ConsentPromptBehaviorAdmin = 1) gewählt werden. Interessant ist auch die Option ValidateAdminCodeSignatures, bei der nur Programme Adminrechte erlangen können, die digital signiert und überprüft sind. Bei Windows 8 und später ist dies nicht mehr nötig, da die Funktion im SmartScreen-Filter aufgeht, der Programme nur starten läßt, die diese Anforderungen erfüllen und/oder Reputation besitzen. Alle Eingabehilfen (UIAccess) müssen bereits ab Vista eine PKI-Signatur aufweisen, sonst werden sie nicht akzeptiert. Die “sicheren Verzeichnisse” (EnableSecureUIAPaths) können nur von Administratoren beschrieben werden. Die Rechteerhöhung für Standardbenutzer hatte ursprünglich keinen Sicheren Desktop (wird in älterer Literatur nicht aufgeführt), der Zahlensprung von 1 auf 3 mag dies verdeutlichen.

Für Paranoiker gibt es noch die Möglichkeit, zur Rechteerhöhung die Secure Attention Sequence (SAS) anzufordern. Dazu muss unter Start > gpedit.msc > Administrative Vorlagen > Windows-Komponenten > Benutzerschnittstelle für Anmeldeinformationen die Option „Vertrauenswürdiger Pfad für Anmeldeinformationseintrag erforderlich“ aktiviert werden. Die Rechteerhöhung behindert den Arbeitsablauf massiv, soll aber das Abgreifen von Passwörtern verhindern. Wird eine Anwendung gestartet die Adminrechte anfordert, erscheint erst eine Dialogbox „Windows-Sicherheit“, in der man den Vorgang fortsetzten oder abbrechen kann. Wird fortsetzen gewählt, erfolgt die Aufforderung die Secure Attention Sequence (SAS) auszuführen. Erst danach steht die UAC-Abfrage zur Rechteerhöhung bereit.[17]

Richtlinie Sicherheitseinstellung Erläuterung
Administratorgenehmigungsmodus für das integrierte Administratorkonto (FilterAdministratorToken) Deaktiviert (0) UAC für das integrierte Administratorkonto
Aktiviert (1)
Alle Administratoren im Administratorbestätigungsmodus ausführen (EnableLUA) Aktiviert (1) UAC für die Gruppe der Administratoren
Deaktiviert (0)
Anwendungsinstallationen erkennen und erhöhte Rechte anfordern (EnableInstallerDetection) Aktiviert (1) Installationserkennungsheuristik
Deaktiviert (0)
Bei Benutzeraufforderung nach erhöhten Rechten zum sicheren Desktop wechseln (PromptOnSecureDesktop) Aktiviert (1) Wechsel auf Sicheren Desktop
Deaktiviert (0)
Datei- und Registrierungsschreibfehler an Einzelbenutzerstandorte virtualisieren (EnableVirtualization) Aktiviert (1) Datei- und Registryvirtualisierung
Deaktiviert (0)
Erhöhte Rechte nur für UIAccess-Anwendungen, die an sicheren Orten installiert sind (EnableSecureUIAPaths) Aktiviert (1) Eingabehilfen müssen unter %programfiles%
oder %systemroot%\System32 installiert sein
Deaktiviert (0)
Nur ausführbare Dateien heraufstufen, die signiert und überprüft sind (ValidateAdminCodeSignatures) Deaktiviert (0) PKI-Signaturüberprüfung für alle
Anwendungen die erhöhte Rechte anfordern
Aktiviert (1)
UIAccess-Anwendungen können erhöhte Rechte ohne sicheren Desktop anfordern (EnableUIADesktopToggle) Deaktiviert (0) Eingabehilfeprogramme können den Sicheren Desktop deaktivieren
Aktiviert (1)
Verhalten der Eingabeaufforderung für erhöhte Rechte für Administratoren im
Administratorgenehmigungsmodus (ConsentPromptBehaviorAdmin)
Erhöhte Rechte ohne Eingabeaufforderung (0) Alles wird ohne Nachfrage hochgestuft
Eingabeaufforderung zu Anmeldeinformationen auf dem sicheren Desktop (1) Anmeldepasswort auf dem Sicheren Desktop
Eingabeaufforderung zur Zustimmung auf dem sicheren Desktop (2) Ja/Nein-Abfrage auf dem Sicheren Desktop
Eingabeaufforderung zu Anmeldeinformationen (3) Anmeldepasswort zur Rechteerhöhung
Eingabeaufforderung zur Zustimmung (4) Ja/Nein-Abfrage zur Rechterhöhung
Eingabeaufforderung zur Zustimmung für Nicht-Windows-Binärdateien (5) Ja/Nein-Abfrage mit UAC-Whitelist
Verhalten der Benutzeraufforderung für erhöhte Rechte für Standardbenutzer (ConsentPromptBehaviorUser) Anforderungen für erhöhte Rechte automatisch ablehnen (0) Roter UAC-Prompt blockt Rechteerhöhung
Eingabeaufforderung zu Anmeldeinformationen (1) Administratives Passwort zur Rechteerhöhung
Eingabeaufforderung zu Anmeldeinformationen auf dem sicheren Desktop (3) Dito auf dem Sicheren Desktop

Integration im Betriebssystem

Entwicklung

„Tagsüber arbeite ich als Security Program Manager bei Microsoft. Ich schreibe zudem recht häufig für das TechNet Magazin über das Thema Sicherheit. Daher ist es selbstverständlich, dass ich die Sicherheit sehr ernst nehme. Ich habe jedoch auch andere Interessen. In meiner Freizeit spiele ich gern Windows-basierte Spiele. [...] Die Sache hat jedoch einen Haken. Wie meine Freunde Jesper Johansson und Aaron Margosis lehne ich es ab, Spiele mit Administratorrechten auszuführen, sofern es nicht unbedingt erforderlich ist. Dies beruht teilweise darauf, dass ich sicherstellen möchte, dass mir bei einem Netzwerkspiel die Meldung „0wn3d“ nur aufgrund meiner mangelnden Geschicklichkeit angezeigt wird und nicht, weil mich jemand mit einem Rootkit bombardiert [...]. Ich vertrete diesen Standpunkt so konsequent, dass ich häufig tolle neue Spiele nicht spielen kann. Wenn ich ein Spiel unter meinem Standardbenutzerkonto auf einem zur SBS-Domäne (Small Business Server) gehörenden Client nicht zum Laufen bekomme, nachdem ich es unter einem Administratorkonto installiert und aktualisiert habe, entferne ich es sofort. Es gibt keine Entschuldigung für solche technischen Mängel, und ich habe genug Spiele, aus denen ich wählen kann. Ich gebe zu, dass sich diese Haltung extrem anhören mag, aber in diesem Punkt bin ich unnachgiebig.“

Matt Clapham über Vista, Februar 2007[18]

Das Problem bei Windowssystemen war in der Vergangenheit immer, dass diese zwar eine Trennung von Nutzer- und Adminkonten für Firmen und Kindersicherung zuliessen, die meisten Rechner (75%) aber Einzelplatzrechner sind. Da jede Maschine einen Administrator braucht, und die meisten Nutzer auch die volle Kontrolle über das System haben wollen um Änderungen vorzunehmen, gab es praktisch nur Administratoren als Nutzer. Dies hatte auch Auswirkungen auf die Software, die stets davon ausgehen konnte, dass der Nutzer über Adminrechte verfügt, und systemweit geltende Änderungen vornehmen kann. Software die für diese Umgebung geschrieben wurde arbeitet nicht wenn der Anwender nur ein Standardnutzer ist, was damals nur für Firmen und Kindersicherung relevant war. Eine Software die Administratorrechte bekommt, kann aber das System beschädigen, entweder mit Absicht (Schadware) oder unabsichtlich (schlecht programmierte Software).[19] Firmen umgingen das Problem teilweise, indem sie diese Anwender zur Powerusergruppe hinzufügten, die es unter Vista eigentlich nicht mehr gibt.[20]

Die Benutzerkontensteuerung sollte zwei Ziele erreichen: Die Inkompatibilität der Software beseitigen, und dem Nutzer Änderungen am System deutlich machen. Aus diesem Grund wurde der Geschütze Administrator (Protected Admin, PA) eingeführt, welcher standardmäßig das erste Konto auf dem System ist. Durch die Erzeugung zweier Access-Tokens – einen als Standardnutzer, einen als Administrator – wurde das Problem der unbemerkten Änderungen gelöst.[19] Der Weg vom Administrator zum Benutzer war bei Drittsoftware aber ein steiniger, da die meisten Anwendungen beim Erscheinen von Vista nicht für Standardnutzer ausgelegt waren (Wes Miller im Microsoft TechNet, Mai 2008: „Meine Herausforderung an Sie: Fühlen Sie den Schmerz“).[20] Durch Telemetriedaten von Kunden konnte Microsoft die Entwicklung von Drittanbietersoftware im Angesicht der Benutzerkontensteuerung gut mitverfolgen.

Die Zahl der Anwendungen, welche mit Adminrechten lief, konnte drastisch gesenkt werden. Dies wurde von Microsoft positiv aufgenommen, da die Verwundbarkeit des Betriebssystems reduziert wird. Im ersten August (2007) nach dem Release von Vista hatten die Telemetrie-Kunden in 50% ihrer Sessions (Zeitraum vom Einloggen bis zum Ausloggen, max 24 Std.) eine UAC-Abfrage. In diesem Zeitraum forderten 775.312 verschiedene Programme Adminrechte an, wobei die Installationen dazugezählt wurden. Hier zeigte sich, dass die meiste Software noch Adminrechte benötigte. Drei Monate später sank die Zahl bereits auf 350.000 pro Monat. Ein Jahr später, im August 2008, waren nur noch 168.149 UAC-Prompts pro Monat. Der Umstand, dass die Neuinstallation und Einrichtung des Rechners mehr UAC-Abfragen erfordert, wurde ebenfalls erkannt. Die Daten des Customer Experience Improvement Program zeigten auch auf, das von Mai 2007 bis Juli 2008 die Zahl der Sessions mit einer oder mehr UAC-Abfragen von 50% auf etwa 33% (Vista SP1) fiel.[19]

Damit tat sich aus Sicht von Microsoft das nächste Problem auf: Da Windows selbst ins Betriebssystem eingreifen kann, erzeugte Windows nun etwa 40% aller UAC-Prompts. Da die Anwendungsprogrammierer ihre Arbeit taten, verschob sich das Verhältnis der UAC-Abfragen. Windows-Komponenten erzeugten 17 der Top 50 UAC-Abfragen in Vista, und 29 der Top 50 in Vista SP1. Mit Vista SP1 wurden kleinere Verbesserungen eingeführt, um die UAC-Abfragen weiter zu reduzieren. Das neue Betriebssystem Windows 7 wurde als Gelegenheit gesehen, tiefergehende Veränderungen durchzuführen, um die Zahl der UAC-Abfragen des Systems weiter zu reduzieren. Es wurde z.B. auch herausgefunden, dass Benutzer die UAC genervt abschalteten, oder die Abfragen einfach nur durchwinkten. Ferner wurde in einer Testumgebung herausgefunden, dass nur 13% der Teilnehmer sagen konnten, warum der UAC-Dialog erschien. Bei Telemetrienutzern wurde zudem beobachtet, dass 89% der Prompts in Vista und 91% der Abfragen in Vista SP1 positiv beantwortet wurden. Es wurde befürchtet, dass die Nutzer den UAC-Dialog aus Gewohnheit abklicken, und bei kritischen Abfragen nicht bewusst entscheiden. Ein informativerer UAC-Dialog, und eine Reduzierung der UAC-Abfragen von Windows selbst wurden angestrebt, damit die Nutzer besser auf die kritischen UAC-Prompts achten können.[19]

Mit Windows 7 wurde deshalb die UAC-Whitelist eingeführt. Die Programme, die auf dieser armlangen Liste stehten, erhalten automatisch Adminrechte, ohne UAC-Abfrage. Vereinfacht gesagt sind dies fast alle EXE-Dateien, die unter %HOMEDRIVE%\Windows\System32 liegen. Nennenswerte Ausnahmen sind mmc.exe und besonders rundll32.exe, da sich sonst virus.dll mit Adminrechten starten lassen könnte. Das Programm %HOMEDRIVE%\Windows\ehome\Mcx2Prov.exe ist ebenfalls auf der Whitelist. Nachfolgend sind alle Programme aufgeführt, die sich beim Release von Windows 7 auf der Whitelist befanden.[21] Bis auf kleinere Veränderungen wurde die so modifizierte Benutzerkontensteuerung bei allen nachfolgenden Windows-Versionen übernommen. Die Whitelist kann deaktiviert werden, wenn der UAC-Regler auf die höchste Stufe gestellt wird.

Whitelist der Benutzerkontensteuerung
   %systemroot%\ehome\Mcx2Prov.exe
   %systemroot%\system32\AdapterTroubleshooter.exe
   %systemroot%\system32\BitLockerWizardElev.exe
   %systemroot%\system32\bthudtask.exe
   %systemroot%\system32\chkntfs.exe
   %systemroot%\system32\cleanmgr.exe
   %systemroot%\system32\cliconfg.exe
   %systemroot%\system32\CompMgmtLauncher.exe
   %systemroot%\system32\ComputerDefaults.exe
   %systemroot%\system32\dccw.exe
   %systemroot%\system32\dcomcnfg.exe
   %systemroot%\system32\DeviceEject.exe
   %systemroot%\system32\DeviceProperties.exe
   %systemroot%\system32\dfrgui.exe
   %systemroot%\system32\djoin.exe
   %systemroot%\system32\eudcedit.exe
   %systemroot%\system32\eventvwr.exe
   %systemroot%\system32\FXSUNATD.exe
   %systemroot%\system32\hdwwiz.exe
   %systemroot%\system32\ieUnatt.exe
   %systemroot%\system32\iscsicli.exe
   %systemroot%\system32\iscsicpl.exe
   %systemroot%\system32\lpksetup.exe
   %systemroot%\system32\MdSched.exe
   %systemroot%\system32\msconfig.exe
   %systemroot%\system32\msdt.exe
   %systemroot%\system32\msra.exe
   %systemroot%\system32\MultiDigiMon.exe
   %systemroot%\system32\Netplwiz.exe
   %systemroot%\system32\newdev.exe
   %systemroot%\system32\ntprint.exe
   %systemroot%\system32\ocsetup.exe
   %systemroot%\system32\odbcad32.exe
   %systemroot%\system32\OptionalFeatures.exe
   %systemroot%\system32\perfmon.exe
   %systemroot%\system32\printui.exe
   %systemroot%\system32\rdpshell.exe
   %systemroot%\system32\recdisc.exe
   %systemroot%\system32\rrinstaller.exe
   %systemroot%\system32\rstrui.exe
   %systemroot%\system32\sdbinst.exe
   %systemroot%\system32\sdclt.exe
   %systemroot%\system32\shrpubw.exe
   %systemroot%\system32\slui.exe
   %systemroot%\system32\SndVol.exe
   %systemroot%\system32\spinstall.exe
   %systemroot%\system32\SystemPropertiesAdvanced.exe
   %systemroot%\system32\SystemPropertiesComputerName.exe
   %systemroot%\system32\SystemPropertiesDataExecutionPrevention.exe
   %systemroot%\system32\SystemPropertiesHardware.exe
   %systemroot%\system32\SystemPropertiesPerformance.exe
   %systemroot%\system32\SystemPropertiesProtection.exe
   %systemroot%\system32\SystemPropertiesRemote.exe
   %systemroot%\system32\taskmgr.exe
   %systemroot%\system32\tcmsetup.exe
   %systemroot%\system32\TpmInit.exe
   %systemroot%\system32\verifier.exe
   %systemroot%\system32\wisptis.exe
   %systemroot%\system32\wusa.exe
   %systemroot%\system32\DriverStoreFileRepositorybth.inf_x86_neutral_65c949576945c2a9fsquirt.exe
   %systemroot%\system32\oobesetupsqm.exe
   %systemroot%\system32\sysprepsysprep.exe 

Auslöser einer UAC-Abfrage

Wie oben erwähnt, konnten 2008 in einer Testumgebung mit Vista nur 13% der Teilnehmer sagen, warum der UAC-Dialog erschien. Unter Vista lautete der lapidare Kommentar in der UAC-Box: „Zur Fortsetzung des Vorganges ist Ihre Zustimmung erforderlich“. Ab Windows 7 wurde die Formulierung „Möchten Sie zulassen, dass durch das folgende Programm Änderungen an diesem Computer vorgenommen werden?“ gewählt, die für unerfahrene Nutzer besser geeignet ist. Die fachlich korrekte Frage lautet:

„Möchten Sie, dass das folgende Programm Administratorrechte bekommt?“

Konkret sind unter Windows NT 6.0 und höher drei Gründe ausschlaggebend, warum eine UAC-Abfrage eine Rechteerhöhung anfordert: Die Zugriffskontrolle, die Verbindlichkeitsstufen und die Privilegien. Die Zugriffskontrollliste jeder Datei kann angesehen werden, wenn im Windows-Explorer bei einer Datei mit Rechtsklick > Eigenschaften > Sicherheit die Berechtigungen der einzelnen Nutzer und Gruppen angesehen werden. Der Benutzer SYSTEM (Lokales System) und die Gruppe der Administratoren haben praktisch überall den Vollzugriff, der Nutzer Mustermann darf im Stammverzeichnis des Systems C:\Windows (%systemroot%) und den Installationsverzeichnissen C:\Programme bzw. C:\Programme (x86) (%programfiles%) nur lesen und ausführen. Die Integritätsebenen und Privilegien werden in der normalen grafischen Benutzeroberfläche wie dem Taskmanager leider nirgends angezeigt. Der Process Explorer von Microsoft ist dazu praktisch zwingend erforderlich, da hier bei laufenden Prozessen deren Verbindlichkeitsstufe eingeblendet wird, und unter Details auch die Privilegien des Prozesses angezeigt werden können. Folgende Vorgänge benötigen Administratorrechte, und lösen eine UAC-Abfrage aus:

  • Wenn Programme installiert werden, da %programfiles% nur mit Adminrechten beschrieben werden kann. Gleiches gilt für Entfernen, da Löschen auch nur eine Art des Schreibens ist.
  • Wenn Treiber (de)installiert werden, da c:\windows\system32\drivers unter %systemroot% liegt und nur mit Adminrechten beschrieben werden kann. Ferner wird das Privileg SeLoadDriverPrivilege benötigt.
  • Wenn ActiveX-Elemente (de)installiert werden, da C:\Windows\Downloaded Program Files unter %systemroot% liegt.
  • Wenn in administrative Teile der Registry geschrieben werden soll. Diese Dateien (SYSTEM.DAT, SOFTWARE.DAT, SAM.DAT, SECURITY.DAT, BCD-Template.DAT uvm.) liegen unter C:\Windows\System32\config und damit unter %systemroot%. Dies ist z.B. bei Änderungen an der Benutzerkontensteuerung und Windows Update der Fall, da diese in SOFTWARE.DAT, und damit unter %systemroot% gespeichert werden.
  • Wenn Änderungen in der Systemsteuerung vorgenommen werden, da hierfür praktisch immer administrative Privilegen erforderlich sind, z.B. SeSystemTimePrivilege (Ändern der Systemzeit), SeBackupPrivilege und SeRestorePrivilege (Systemwiederherstellung etc.) uvm. Meist wird dabei auch in administrative Teile der Registry geschrieben.
  • Wenn Änderungen an der Windows-Firewall vorgenommen werden, da diese irgendwo unter %systemroot% abgelegt werden. Ferner werden Privilegien wie SeCreateGlobalPrivilege u.a. benötigt.
  • Wenn Einblick in Order und Verzeichnisse genommen werden soll, die für Standardnutzer nicht einsehbar sind, und/oder Daten zwischen Benutzerverzeichnissen kopiert werden.

Eine besondere Rolle nimmt das Verzeichnis %programdata% ein, das standardmäßig unsichtbar geschaltet ist. Hier haben Benutzer Vollzugriff, %programdata%\Microsoft und seine Unterverzeichnisse können aber nur von Administratoren beschrieben werden. Die Unterorder Microsoft Antimalware und Windows Defender können aus Gründen des Selbstschutzes nur von Administratoren, SYSTEM und TrustedInstaller gelesen und beschrieben werden. Änderungen an MSE bzw. Defender erfordern deshalb Adminrechte.

Geschützter Modus und AppContainer

Mit dem Aufkommen der Benutzerkontensteuerung war klar, dass Schadware versuchen würde, allein mit Standardnutzerrechten auszukommen. Hier kommen die Verbindlichkeitsstufen ins Bild: Alle administrativen Pfade werden de facto durch Zugriffssteuerungslisten und Privilegen vor dem Zugriff tieferstehender Anwendungen und Nutzer geschützt. Die Verbindlichkeitsstufen betreffen hier nur die laufenden Prozesse, welche durch UIPI (No Read-up, No Write-up) durch Zugriff von unten geschützt sind. Verzeichnisse welche mit IL „high“ geschützt sind gibt es standardmäßig nicht. Bei der Entwicklung von Vista war sich Microsoft schon damals des Problems bewusst, dass ein Webbrowser im gleichen Rechtekontext läuft, wie die Gehaltsabrechnung einer Firma. Die Integritätsstufen „low“ und „untrusted“ werden deshalb zum Sandboxing von Anwendungen und ihren Verzeichnissen eingesetzt.[5]

Dialogbox zur Rechteerhöhung „low“ auf „medium“.

Mit dem Internet Explorer 7 in Vista wurde die erste Anwendung geschaffen, die mit niedriger Verbindlichkeitsstufe läuft. Wie bereits oben erwähnt, gibt es auf der Festplatte unter %userprofile%\Appdata\LocalLow ein Verzeichnis mit niedriger Verbindlichkeitsstufe, in das diese Prozesse schreiben können. In der Registy steht mit HKCU\Software\AppDataLow ein äquivalenter Verzeichnispfad zur Verfügung. Damit Daten aus der Sandbox iexplorer.exe in das Benutzerprofil gelangen können, ist ein Broker-Prozess ieuser.exe mit IL „medium“ nötig.[1] Inzwischen wurde das Sandboxing auch von anderer Software übernommen: Beim Chrome läuft der Broker-Prozess chrome.exe mit IL „medium“, die Registerkarten chrome.exe mit „nicht vertrauenswürdiger Verbindlichkeitsstufe“, d.h. ohne Schreibzugriff auf die Festplatte. Der Adobe Reader hat inzwischen einen „Protected Mode“, Microsoft Office 2010 „Protected View“ usw.[5]

Wird aus diesen Sandkästen eine Datei mit IL „low“ in ein Verzeichnis mit IL „medium“ per Drag and Drop verschoben, erscheint die „UAC-Abfrage für Arme“ im Bild rechts, da eine Rechteerhöhung von niedriger auf mittlere Verbindlichkeitsstufe stattfinden würde. Dies hat mit der Benutzerkontensteuerung direkt nichts zu tun, da der Standardnutzer selbst IL „mittel“ besitzt, also keine Adminrechte benötigt, um Dateien “auf sein Niveau” zu erhöhen. Die Benutzerkontensteuerung unter Windows Vista und 7 ist insofern relevant, da das Abschalten derselben (oder das Arbeiten mit dem eingebauten Administratorkonto, was denselben Effekt hat) dieses Sandboxing zerstört. TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN wird nur bei Benutzeraccounts gesetzt und bewirkt, dass Prozesse keinen höheren Integrity Level bekommen können als wie der Anwendung zugewiesen wurde. Wenn die Benutzerkontensteuerung abgeschaltet wird, bekommen alle Prozesse Adminrechte zugewiesen. Aus diesem Grund ist der Protected Mode des IE abgeschaltet, wenn UAC deaktiviert ist.

Unter Windows 8 ist die Benutzerkontensteuerung nicht abgeschaltet, wenn der UAC-Regler auf unterster Stufe steht. Die Rechteerhöhung auf Wunsch einer Anwendung findet dann geräuschlos statt. Dies ist notwendig, da für die Windows-Apps Sandboxing erzwungen wird. Da immer mehr Windows-Anwendungen auf niedriger Verbindlichkeitsstufe laufen wurde zudem ein Weg gesucht, damit diese nicht in die „Low“-Verzeichnisse einer anderen Anwendung schreiben können. Deshalb bekommt jede Windows-App (bzw. ihre Dateien und Anwendungen) einen individuellen Security Identifier (S-1-15-2-...) zugewiesen. Diese Kapselung wird als AppContainer bezeichnet.[Anm. 3] Diese AppContainer werden unter %programfiles%\WindowsApps abgelegt, das Verzeichnis besitzt niedrige Verbindlichkeitsstufe. Der Internet Explorer ist unter Windows 8 die einzige Anwendung, die auch als Desktop-Programm in einem AppContainer laufen kann („Erweiterter geschützter Modus“).[22] Mit Windows 10 sollen die AppContainer auch auf dem Desktop Einzug halten. In beiden Betriebssystemen kann die Benutzerkontensteuerung nur abgeschaltet werden, wenn in den Lokalen Sicherheitsrichtlinien (secpol.msc) „Alle Administratoren im Administratorbestätigungsmodus ausführen“ auf „Deaktiviert“ gesetzt wird.[5] Wenig überraschend kommt dann, wenn eine Windows-App gestartet werden soll, eine Fehlermeldung mit der Aufforderung, UAC wieder zu aktivieren.

Hürde oder Bürde?

Wenn ein Angreifer bei einem Unix-System Zugang zu einem Account bekommt, der sudo ausführen kann, hat er praktisch schon gewonnen. Bei Windows Vista und höher ist dies nicht anders.[1] Bereits beim Erscheinen von Vista 2007 stellten Russinovich und Johansson klar, das die Benutzerkontensteuerung weder zum nerven, noch als Schutz gegen ausgeklügelte Angriffe zur Rechteausweitung gedacht ist. Damit hatte man nun dasselbe Problem, an dem UNIX seit 20 Jahren arbeitet. Ferner schützt die UAC nicht vollständig höhere Prozesse gegen Manipulation durch niedere Prozesse, da eben kein vollständiges Sandboxing stattfindet, was auch nicht geplant war.[23] Schadware mit Nutzerrechten läuft bei Geschützten Administratoren im selben Account wie erhöhte Prozesse. Da viele Anwendungen in das Nutzerprofil schreiben und lesen, kann sich hier eine Lücke ergeben, die zu einer Rechteausweitung führt. Russinovich nannte z.B. das Anhängen von Schadware an Shell-Extensions in der Registry, um sich früher oder später Adminrechte zu erschleichen. Ferner teilen sich privilegierte Prozesse denselben Namensraum mit Standardnutzerprozessen. Wenn Schadware weiß, wann ein privilegierter Prozess (IL: high/system) auf einen bestimmten Speicherbereich zugreift, könnte diese durch einen Pufferüberlauf Schadcode in den Prozess injizieren.[12] Die einfachste Möglichkeit ist, unter einem wohlklingenden Namen einen UAC-Prompt auszulösen in der Hoffnung, dass unerfahrene Nutzer auf „Ja“ klicken.[12] Wie Jesper M. Johansson im Microsoft TechNet schon 2007 treffend formulierte:[23]

„Wenn den bösen Jungs kein anderer Weg einfällt UAC zu besiegen, werden sie sicher darin Zuflucht nehmen den User zu bitten es zu tun. Wenn es die Wahl zwischen tanzenden Schweinen und Sicherheit gibt, wissen wir aus Erfahrung, dass die tanzenden Schweine immer gewinnen.“[Anm. 4]

Aufgrund dieser Möglichkeiten wurde die Benutzerkontensteuerung von Microsoft auch nicht als Sicherheitsbarriere gesehen. Als Sicherheitsbarriere wird von Microsoft eine Schranke bezeichnet, durch die Code oder Daten nur passieren können, wenn die Sicherheitsrichtlinien es erlauben. Beispielsweise kann ein Standardnutzer die Daten eines anderen Nutzers nicht manipulieren, oder diesen zwingen, bestimmten Code auszuführen. Wenn es doch möglich wäre, wäre dies eine Sicherheitslücke in Windows (oder einem Drittprogramm). Diese strikte Art der Trennung findet bei der Benutzerkontensteuerung nicht statt, als Kompromiss aus Bequemlichkeit und Sicherheit. Deshalb stellen die Integritätsebenen auch keine Sicherheitsbarriere dar, da standardmäßig eben nur No Write-up gilt. Die Benutzerkontensteuerung war in erster Linie eine Bequemlichkeit, die das Wechseln zwischen den Benutzerkonten zur Rechteerhöhung erleichtern sollte. Ihr Kernanliegen ist es, dass alle User nur mit Standardnutzerrechten arbeiten, um das Prinzip des least-privileged user account (LUA) durchzusetzen.[12][14]

Eine Zahlenkolonne möchte Administratorrechte

Im Jahre 2011, also vier Jahre und eine Version der UAC später (Windows 7), sah Microsoft auch einen Nutzen gegen Malware. Die Schadwareschreiber begannen, ihre Software auf Standardnutzerrechte anzupassen. Für die meisten Schadprogramme stellte dies kein Problem dar. Die Umgehung der UAC stellte sich für Malware aber als sehr schwierig heraus. Ein Teil der Schadware ging deshalb dazu über, die Benutzerkontensteuerung zu deaktivieren, um böse UAC-Prompts der Schadware direkt nach dem Neustart zu vermeiden. Genannt wurden Sality-Viren, Alureon-Rootkits, FakePAV, Autostart-Würmer, Banking-Trojaner usw. Für die Änderung der UAC-Einstellungen benötigt die Malware bereits Adminrechte, was durch Exploits, eine Abschaltung der UAC oder einen „Ja“-Klick zur falschen Zeit möglich ist. Microsoft reagierte darauf, indem Microsoft Security Essentials nun darauf achtet, ob Software die UAC-Einstellungen ändert, und nutzt dies als Verhaltenserkennung. Da normale Software immer weniger UAC-Abfragen stellt, wurde die Verhaltenserkennung einfacher. Da 23% aller infizierten Rechner die Benutzerkontensteuerung deaktiviert hatten wurden die Nutzer gebeten, diese aktiviert zu lassen. Es wurde nochmals daraufhingewiesen, dass UAC nicht als Virenschutz gedacht ist, aber die Sicherheit des Betriebssystems verbessert.[24]

Die Benutzerkontensteuerung schützt nicht per se vor Malware, sie sorgt nur für eine strikte Trennung zwischen Benutzer- und Administratorrechten. Jedes Mal wenn die Grenze von unten nach oben durchschritten werden soll, erfolgt eine UAC-Abfrage. Der „Schutz“ besteht also darin, dass man bestimmen kann, welches Programm Adminrechte bekommt, und welches nicht. Alle administrativen Einstellungen die man von Hand am Rechner vornimmt können auch von einer Software durchgeführt werden, die Frage ist eben bloß, ob man das will. Bei tanzenden Schweinen, Zahlenkolonnen und chinesischen Schriftzeichen die Administratorrechte möchten sollte man besser vorsichtig sein. Der UAC-Prompt im Bild rechts stammt z.B. von einer Schadware, die am 30. Dezember 2014 von der Malc0de Database zu Testzwecken in ein Windows 10 TP heruntergeladen wurde. Der Schadwareprogrammierer rechnete wohl mit dem Dümmsten Anzunehmenden User (DAU), der entweder auf „Ja“ klickt, oder die Benutzerkontensteuerung abgeschaltet hat. Knapp zwei Tage später, zu Silvester, erkannte der Windows Defender die Zahlenkolonne als Win32/Sality. Der SmartScreen-Filter war dabei zu Testzwecken deaktiviert, da er die Schadware mangels PKI-Zertifikat geblockt hätte.

Wie oben erwähnt, ist die Benutzerkontensteuerung nicht zum Schutz gegen ausgeklügelte Angriffe zur Rechteausweitung gedacht. Das Metasploit Framework bietet verschiedene Möglichkeiten die UAC zu umgehen, sowie die Möglichkeit, unter wohlklingendem Namen einen UAC-Prompt auslösen, und dreist um Adminrechte zu bitten. Die Varianten ohne UAC-Pop-up arbeiten alle mit DLL Hijacking und DLL-Injection, und nutzen unter Windows 7/8/8.1 die automatische Rechteerhöhung durch die UAC-Whitelist (autoElevate) aus. Vista ist dagegen immun.[25] Aus diesem Grund ist es sinnvoll den UAC-Regler auf die höchste Stufe zu stellen, bzw. mit getrennten Konten zu arbeiten. Jesper M. Johansson stellte 2007 folgende Liste der Best practices auf:[23]

Wertung Einstellung
Am Schlimmsten Benutzerkontensteuerung abschalten
Schlecht Automatische Rechteerhöhung ohne Nachfrage
Gut Arbeiten im Administratorbestätigungsmodus
Besser Getrennte Konten, Rechteerhöhung durch OTS
Am Besten Getrennte Konten, Kontowechsel für Admin-Aufgaben[Anm. 5]
  • Windows 8.1 Security Internals Vortrag und Demonstration (englisch) der Sicherheitsarchitektur von Windows NT 6.X: Security Identifiers, Token, UAC-Mechanismus, UAC-Sicherheitsrichtlinien, AppCompat und UAC, UAC-Installationserkennung, Verbindlichkeitsstufen, UIPI, AppContainer, IE als Desktop-App, Google Chrome.

Anmerkungen

  1. Alle Admins sind auch Benutzer, d.h. sie besitzen auch SeIncreaseWorkingSetPrivilege. Ist aber nicht Teil der Privilegien der Gruppe Administratoren
  2. Ist auch der Grund, warum bei Bildschirm-Recordern oder Remotedesktop-Anwendungen die UAC-Abfrage nicht erscheint. Sie findet auf einem anderen Desktop statt als dem, wo aufgezeichnet wird.
  3. Die Details haben nicht direkt mit der Benutzerkontensteuerung zu tun, weswegen hier nur oberflächlich darauf eingegangen wird. Das nicht alles was wie eine Windows-App aussieht auch eine ist, d.h. ein AppContainer, bleibt hier auch unerwähnt. „PC-Einstellungen“ z.B. hat App-Design, ist aber kein AppContainer. Details dazu sollten im Artikel Windows-App stehen.
  4. „If the bad guys can't think of any other way to defeat UAC, they will almost certainly resort to asking the user to do it for them. Given the choice of dancing pigs and security, we know from experience that the dancing pigs win every time.“
  5. Sinnvollerweise sollte dann bei "Verhalten der Benutzeraufforderung für erhöhte Rechte für Standardbenutzer" die Option "Anforderungen für erhöhte Rechte automatisch ablehnen" gewählt werden.

Einzelnachweise

<references>

[2]

[3]

[1]

[4]

[6]

[7]

[8]

[9]

[10]

[11]

[12]

[13]

[14]

[15]

[16]

[17]

[18]

[19]

[20]

[21]

[22]

[23]

[24]

[25]

[5]

  1. a b c d e Roger A. Grimes, Jesper M. Johansson: Windows Vista Security: Securing Vista Against Malicious Attacks. Wiley, 7/2007, ISBN 0-470-10155-5.
  2. a b Benutzer in Windows 7. com!, , abgerufen am 1. Januar 2015.
  3. a b Russell Smith: Least Privilege Security for Windows 7, Vista and XP. Packt Publishing, 7/2010, ISBN 1-84968-004-3.
  4. a b c How the Integrity Mechanism Is Implemented in Windows Vista. Microsoft, abgerufen am 1. Januar 2015 (englisch).
  5. a b c d e Windows 8.1 Security Internals. Chris Jackson, 11. November 2014, abgerufen am 1. Januar 2015 (englisch).
  6. a b Sicherheitsmechanismus "Integrity Level" (IL). WinFAQ, abgerufen am 1. Januar 2015.
  7. a b c Windows Integrity Mechanism Design. Microsoft, abgerufen am 1. Januar 2015 (englisch).
  8. a b Rechte und Rechtschaffenheit - Die Sicherheitsarchitektur von Windows Vista, Teil 1. c't, , abgerufen am 1. Januar 2015.
  9. a b Windows Vista. TechNet Magazine, , abgerufen am 1. Januar 2015 (englisch).
  10. a b Martin Grotegut: Windows Vista. Springer, 12/2007, ISBN 3-540-38882-6.
  11. a b c d Understanding and Configuring User Account Control in Windows Vista. Microsoft TechNet, abgerufen am 1. Januar 2015 (englisch).
  12. a b c d e f g Inside Windows Vista User Account Control. Microsoft TechNet, , abgerufen am 1. Januar 2015 (englisch).
  13. a b c Windows Vista Application Development Requirements for User Account Control Compatibility. Microsoft, , abgerufen am 1. Januar 2015 (englisch).
  14. a b c PsExec, User Account Control and Security Boundaries. Microsoft TechNet, , abgerufen am 1. Januar 2015 (englisch).
  15. a b Benutzerkontensteuerung (UAC – User Account Control). WinFAQ, abgerufen am 1. Januar 2015.
  16. a b UAC-Gruppenrichtlinien- und Registrierungsschlüsseleinstellungen. Microsoft TechNet, abgerufen am 1. Januar 2015.
  17. a b Windows 7: CTRL+ALT+DEL - Require to Press to Approve UAC Elevation. Windows SevenForums, , abgerufen am 1. Januar 2015 (englisch).
  18. a b Spielen in einer sicheren Umgebung. Microsoft TechNet, , abgerufen am 1. Januar 2015.
  19. a b c d e Engineering Windows 7. Microsoft, , abgerufen am 1. Januar 2015 (englisch).
  20. a b c Die Desktopdateien. Microsoft TechNet, , abgerufen am 1. Januar 2015.
  21. a b Paul Thurrott, Rafael Rivera: Windows 7 Secrets. Wiley, 9/2009, ISBN 0-470-50841-8.
  22. a b Erweiterter geschützter Modus auf Desktop IE. Microsoft, abgerufen am 1. Januar 2015.
  23. a b c d Security Watch - The Long-Term Impact of User Account Control. Microsoft TechNet, , abgerufen am 1. Januar 2015 (englisch).
  24. a b UAC plays defense against Malware. Microsoft TechNet, , abgerufen am 1. Januar 2015 (englisch).
  25. a b User Account Control – What Penetration Testers Should Know. Raphael Mudge, , abgerufen am 1. Januar 2015 (englisch).