Sicherheit auf dem PrüfstandDiensthärtung in Windows Vista

Wole Moses

Microsoft kündigte die Trustworthy Computing Initiative Anfang des Jahres 2002 nach der Ausbreitung einiger gefährlicher Viren und Würmer an, die Chaos in Windows-Systemen auslösten, ganze IT-Abteilungen lahm legten und Unternehmen wie Verbrauchern bei der Beseitigung teuer zu stehen kamen. Diese Initiative kam einem Schuldeingeständnis von Microsoft

hinsichtlich der vergangenen Sicherheitsvorfälle gleich. Das Unternehmen korrigierte umgehend den Kurs sowie das Leitmotiv bei der Entwicklung von Software mit möglichst vielen Funktionen und hoher Verwertbarkeit zu Software-Sicherheit und Integrität. Im August 2003 schlug der Wurm Blaster zu und trieb die Sicherheitsinitiative noch weiter voran. (Siehe Kurzartikel "Angriff der Klone")

Die Trustworthy Computing Initiative basiert auf den Grundsätzen "Secure by Design", der Philosophie der sicheren Codierung; "Secure by Default", die standardmäßige Nutzung der sichersten Einstellungen für Windows®-Komponenten; und "Secure in Deployment", der Entwicklung von Tools und verpflichtenden Leitlinien, um Unternehmen und Verbraucher bei der Absicherung ihrer Windows-Infrastruktur zu unterstützen.

Insgesamt führte die Trustworthy Computing Initiative zu weitreichenden Verbesserungen bei der Sicherheit. Leider konnte Windows XP nie umfassend von dieser Initiative profitieren, da es 2 Jahre vor ihrem Start auf den Markt kam. (Obwohl beim Service Pack 2, SP2, große Anstrengungen unternommen wurden, war es nicht möglich, die Grundsätze der Initiative vollständig in Windows XP zu integrieren.)

Insofern ist Windows Vista™ das erste Desktop-Betriebssystem von Microsoft, bei dem die Ziele von Trustworthy Computing vollständig verwirklicht wurden. Die Windows Vista-Diensthärtung, eine spezielle Implementierung des Trustworthy Computing-Grundsatzes "Secure by Default" (siehe Abbildung 1), ist eine wichtige neue Fähigkeit, um willkürliches Verhalten von Diensten zu verhindern. Diese Problematik wird von vielen Malware-Programmen heute ausgenutzt. Mit der Diensthärtung erzielt Microsoft große Fortschritte beim Ändern des Standardverhaltens und der Sicherheitsprofile von Windows-Diensten.

Figure 1 Secure by Default: Windows-Dienste

Funktion Beschreibung Ergebnis
Geringste Rechte Windows Vista-Dienste sind für die Ausführung mit geringsten erforderlichen Rechten konfiguriert. Windows Vista reduziert die Standardberechtigungen von Windows-Diensten und somit die potenziellen Auswirkungen von Malware.
Isolation von Diensten Sicherheitskennungen (SIDs) werden eingesetzt, um Dienste für Konten mit geringen Rechten ausführen zu lassen. Windows Vista kann Malware-Angriffe durch die SID-basierte Einschränkung des Zugriffs auf seine Ressourcen vereiteln.
Eingeschränkter Netzwerkzugriff Netzwerkeinschränkungen werden standardmäßig bei allen Windows Vista-Diensten implementiert. Windows Vista schränkt die Ausnutzung von Diensten durch Malware für schädliche Netzwerkaktivitäten ein.
Isolation der Sitzung 0 Die Sitzung 0 ist für Dienste reserviert. Windows Vista hindert böswillige Anwendungen an der Übernahme von Diensten mit weitreichenden Rechten durch auf Meldungen basierte Angriffe, da diese nicht mehr in der gleichen Sitzung ausgeführt werden.

Dienste mit Risiken

Windows-Dienste, bisher NT-Dienste genannt, sind ausführbare Anwendungen mit langer Laufzeit, die in ihrer eigenen Windows-Sitzung ausgeführt werden. Dienste können automatisch beim Start eines Computers gestartet, angehalten und fortgesetzt werden, zeigen gewöhnlich keine Benutzeroberfläche an und können im Sicherheitskontext eines Kontos ausgeführt werden, das nicht mit dem des angemeldeten Benutzers oder dem Standardkonto des Computers übereinzustimmen muss. Windows-Dienste sind somit äußerst hilfreich für die Entwicklung bestimmter Anwendungstypen und Endbenutzer, die diese Anwendungen benötigen. Aufgrund ihrer Leistungsstärke und Flexibilität waren Windows-Dienste jedoch seit jeher anfällig für Exploidangriffe und das aus mehreren Gründen.

In der Vergangenheit liefen Windows-Dienste zunächst unter Konten mit weitreichenden Rechten, wie z. B. dem lokalen Systemkonto. Wird ein für dieses Konto ausgeführter Dienst von Malware angegriffen und gesteuert, hat die Malware gute Chancen, wirklich alles nur Erdenkliche auf dem System anzurichten. Denken Sie beispielsweise nur einmal an den Windows XP-Dienst Remoteprozeduraufruf (RPC, Remote Procedure Call). Vor Windows XP SP2, lief der RPC-Dienst unter dem lokalen Systemkonto, weshalb Blaster, Welchia und andere Würmer nach der Ausnutzung der RPC-Anfälligkeit in der Lage waren, Administratoraufgaben durchzuführen.

Weiterhin sind viele Dienste auf Netzwerke ausgerichtet, wodurch Malware die Möglichkeit bekommt, die Dienste durch das Herstellen von eingehenden Verbindungen über das Netzwerk auszunutzen. Gleichzeitig haben infizierte Dienste die Möglichkeit, eine ausgehende Verbindung herzustellen, um andere Systeme zu infizieren oder andere unzulässige Aktivitäten durchzuführen, wie z. B. die Überwachung und Weiterleitung von Tastenanschlägen. Gegenwärtig erfolgt die Ausbreitung von Würmern oder Malware meist über irgendeine Art von Netzwerkverbindung.

Und schließlich laufen Dienste normalerweise über einen langen Zeitraum, d. h. sie werden beim Hochfahren des Computers gestartet und laufen, bis der Computer ausgeschaltet wird. Dieser Umstand ist verlockend für Malware-Programmier, da sie somit den Dienst so lange auf Lücken testen können, wie das System aktiv ist, wodurch Malware letztendlich mehr als genug Zeit für schädliche Aktivitäten zur Verfügung gestellt wird.

Angriff der Klone

Es könnte sein größter Triumph werden. Würde alles nach Plan laufen, könnte er schon bald Hunderttausende von Windows-Systemen auf der ganzen Welt kontrollieren, beliebige Befehle virtuell an sie senden, sich zurücklehnen und zusehen, wie sie alle seinen Befehlen gehorchen.

Zu Beginn hatte er mit seinen hartnäckigen jedoch gleichzeitig schwer zu fassenden Methoden heimlich mehrere Computersysteme untersucht, um Sicherheitslücken zu finden und in die Systeme einzubrechen. Es dauerte nicht lange, bis er genau das fand, wonach er suchte, ein nicht aktualisiertes System mit bekannten Sicherheitslücken, von denen er genau wusste, wie er sie ausnutzen könnte.

Diese Sicherheitslücke war umso schlimmer, da er bei einem erfolgreichen Exploid volle Administratorrechte über das System erhalten würde. Er würde nicht nur die Kontrolle über ein Konto erlangen: Er würde das mächtigste Administratorkonto in Windows manipulieren. Seine nächsten Schritte würden nur durch seine Phantasie begrenzt.

Nach kurzer Überlegung testete er seinen bösartigen Code auf dem ungepatchten Computer — und siehe da, es funktionierte! So einfach ging das. Er verfügte jetzt über uneingeschränkte Rechte auf dem Computer. Er nutzte seine Administratorenrechte, um Trojaner herunterzuladen und zu installierten, änderte die Registereinstellungen und startete anschließend den Computer neu. Er wandelte den infizierten Computer in einen Zombie um, der willig darauf wartete, seine Befehle auszuführen. Durch die Registrierungsänderungen wurde die böswillige Software bei jedem Neustart des Computers ausgeführt.

Jetzt wurden seine Absichten klar. Einmal infiziert, würde jeder kontaminierte Computer alle anderen Computer des Netzwerks nach bestimmten Netzwerkanschlüssen überprüfen. War ein Netzwerkanschluss offen und bestanden weiterhin die Sicherheitslücken, wurde der Trojaner auf diesem Computer heruntergeladen und installiert. Dieselben Registrierungsänderungen würden vorgenommen. Der Zyklus würde sich immer wieder wiederholen und eine Armee angreifender Klonen schaffen. Am Ende des Tages zählten Tausende von Windows-Systemen auf der ganzen Welt zu seinem unheilvollen Klonkommando, das einzig und allein auf seine Befehle reagierte.

Und als ob das noch nicht genug wäre, wandte er sich nun der Microsoft Windows Update-Website zu und wies alle seine Klone an, am 15. August 2003 einen Denial-of-Service-Angriff (DoS oder Dienstverweigerungsangriff) durchzuführen, um alle Computer auf der ganzen Welt am Download des - interessanterweise seit Monaten verfügbaren - Patch zu hindern.

Inzwischen werden Sie wahrscheinlich gemerkt haben, dass ich gerade den Angriff des Wurms MS Blaster vom August 2003 geschildert habe, der Computer in jedem Winkel der Erde getroffen hat. Blaster war sicherlich einer der schwersten Angriffe auf Windows überhaupt und verursachte Schäden in Milliardenhöhe. Ironischerweise war die Implementierung von MS Blaster, der enorme Macht über kontaminierte Computer hatte, überraschend einfach.

So funktioniert Blaster

Blaster und seine Ableitungen nutzen Anfälligkeiten im Windows RPC-Dienst, um einen Pufferüberlauf zu generieren. Ein Angreifer, der diese Anfälligkeiten erfolgreich nutzt, kann in einem kontaminierten System Code mit Berechtigungen für das lokale Systemkonto ausführen, wodurch er jede beliebige Aktion im System ausführen kann: Programme installieren, Daten anzeigen, ändern, oder löschen und neue Konten mit uneingeschränkten Benutzerrechten anlegen.

Im Fall von Blaster durchsuchte der Wurm in Netzwerken automatisch nach Computern mit offenem TCP-Port 135. Fand er ein Opfer, versuchte Blaster die RPC-Anfälligkeit auszunutzen. Im Erfolgsfall stellte er eine Verbindung zum Port 4444 des Ziels her und wies das Opfer an, das Trivial File Transfer-Protokoll (tfpt) zu starten und eine Kopie des Wurms mit der Bezeichnung MSBLAST.EXE vom kontaminierten System herunterzuladen. (Tftp ist bei Windows 2000, Windows XP und Windows Server 2003 Teil des Betriebssystems.) Das angreifende System wies den neu infizierten Computer dann an, MSBLAST.EXE auszuführen und das Opfer wird wiederum zu einem Angreifer. Blaster schrieb auch Code in den Registrierungsschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Windows\CurrentVersion\Run und sorgte so selbst dafür, dass der Wurm bei jedem Systemstart ausgeführt wurde.

Diensthärtung

Die Sicherheit von Diensten wurde in Windows Vista durch vier Methoden verstärkt: Dienste werden mit den geringsten Rechten ausgeführt, Dienste werden isoliert, der Netzwerkzugriff wird beschränkt und Sitzung 0 isoliert. Ich werde jede dieser vier Methoden detailliert beschreiben.

Dienstausführung mit geringsten Rechten Viele Windows-Dienste wurden bisher im Kontext des lokalen Systemkontos ausgeführt, dem Windows-Konto mit den meisten Rechten. Das lokale Systemkonto verfügt über Benutzerrechte und Berechtigungen, wie z. B. die Fähigkeit auf fast alle Systemobjekte oder die Profile anderer Benutzer zuzugreifen, andere Benutzeridentitäten zu imitieren und empfindliche Registrierungsschlüssel wie HKLM\SECURITY zu öffnen und die Anmeldeinformationen des Computers an Remoteserver zu senden. Da Malware-Programmierer nur allzu gerne über einen so weitreichenden Zugriff und somit die Kontrolle über Windows verfügen würden, ist natürlich jeder Dienst im Zusammenhang mit dem lokalen Systemkonto eine große Verlockung.

Obwohl zahlreiche Windows-Dienste für die Ausführung unter dem lokalen Systemkonto konfiguriert wurden, stellte sich heraus, dass viele davon nur einen Teil der Rechte benötigen, die eindeutig mit dem lokalen Systemkonto verbunden sind. Leider funktionieren Windows XP und andere Vorgängerversionen von Windows nach dem Prinzip "ganz oder gar nicht", d. h. sie verfügen über keinen Auswahlmechanismus für erforderliche Rechte. Daher werden viele Windows-Dienste letztendlich mit unnötigen und exzessiven Berechtigungen ausgeführt.

Die Windows Vista-Diensthärtung löst dieses Problem durch die Einführung des Konzepts der geringsten Rechte bei der Konfiguration von Diensten. Durch die Verwendung der geringsten Rechte können Dienste mit den minimal erforderlichen Berechtigungen ausgeführt werden, anstatt die Ausführung mit allen Rechten des Kontos zu erzwingen, das bei der Anmeldung benutzt wurde.

Beispielsweise muss ein Dienst als Teil des Betriebssystems handeln können, muss aber nicht in der Lage sein, einen Sicherheitstoken zu erstellen. Mit den geringsten Rechten können Sie die Berechtigungen für die Token-Erstellung entziehen. Somit begrenzen Sie den Schaden, den ein Angreifer anrichten könnte, wenn dieser Dienst in der Zukunft einmal für einen Exploid anfällig werden sollte. Entwickler können Befehlszeilentools wie SC.exe (siehe Abbildung 2) oder Programmiermethoden nutzen, um die Berechtigungen, die ihr spezieller Dienst erfordert, zu definieren und zu spezifizieren. Microsoft hat die Standardberechtigungen bei allen seriell vorinstallierten Windows Vista-Diensten durch die Anwendung der geringsten Rechte reduziert.

Abbildung 2 SC-Befehlsoptionen definieren Berechtigungen von Windows Vista-Diensten

Abbildung 2** SC-Befehlsoptionen definieren Berechtigungen von Windows Vista-Diensten **(Klicken Sie zum Vergrößern auf das Bild)

Isolation von Diensten Bei den Windows-Versionen vor Windows Vista greift ein Dienst im Bedarfsfall auf ein privilegiertes Objekt (beispielsweise einen sensibler Registrierungsschlüssel oder eine sensible Datei) durch eine der drei folgenden Methoden zu: Zugriff auf das Objekt über das lokale Systemkonto; Herabsetzen der Sicherheitsstufe für den Registrierungsschlüssel oder die Datei, um einem Dienstkonto mit geringeren Berechtigungen den Zugriff zu ermöglichen; oder Erstellen eines speziellen Kontos für den Dienst und Gewährung des Zugriffs auf die Objekte nur für dieses Konto.

Obwohl alle drei Vorgehensweisen funktionieren, hat doch jede grundlegende Probleme. Die ersten beiden sind generell risikobelastet und die letzte bringt die problematische manuelle Verwaltung der Kennwörter für die neuen Konten mit sich.

Angenommen, ein Antivirenprogramm installiert einen Dienst, der den Zugriff auf diverse sensible Systemobjekte erfordert, wie z. B. die Antivirensignaturen und Registrierungseinträge im Zusammenhang mit der Antivirensoftware. Wurde der Antivirendienst konfiguriert, um über das lokale Systemkonto oder ein anderes integriertes Sicherheitskonto auf seine Objekte zuzugreifen, würde dies bedeuten, sollte ein anderer Windows-Dienst, der dieses Konto benutzt, von Malware kontaminiert werden, dass Malware potenziell auf die Antivirensignaturen zugreifen und sie sowie Registrierungseinstellungen ändern kann, wodurch die Funktionsweise der Antivirensoftware beeinträchtigt oder der Dienst ganz einfach komplett ausgeschaltet wird. Fest steht, dass gegenwärtige Malware einige dieser Techniken anwendet, um unentdeckt weiter funktionieren zu können.

Windows Vista pariert diese Sicherheits- und Verwaltungsprobleme durch die Isolation von Diensten. Ein Dienst kann somit ein Objekt exklusiv für seine Verwendung reservieren, indem er die Ressource - beispielsweise eine Datei oder einen Registrierungsschlüssel - durch einen Kontozugriffseintrag mit einer dazugehörigen Sicherheitskennung (SID, Security ID) für den Dienst sichert. Dadurch könnte der in unserem Beispiel beschriebene Antivirendienst im Rahmen eines Kontos mit geringen Berechtigungen ausgeführt werden, aber immer noch Zugriff auf sensible Signaturen oder Registrierungsschlüssel haben. Zur Aktivierung dieses Zugriffs würde der (im Konto mit geringen Berechtigungen ausgeführte) Antivirendienst über eine von Windows Vista zugewiesene Sicherheitskennung (SID) verfügen. Nachdem die Sicherheitskennung (SID) zugewiesen wurde, könnte das Antivirenprogramm dann die Zugriffssteuerungslisten (ACL, Access Control List) seines Dateisystems und Registrierungsobjekts ändern, um ausschließlich dem Antivirendienst Zugriff zu gewähren.

Ein weiteres Beispiel: Gehen wir zurück ins Jahr 2003, als der Welchia-Wurm anfing, eine Sicherheitslücke im Remoteprozeduraufruf (RPC) zu nutzen, um sich selbst in %System%\Wins\Dllhost.exe zu schreiben. Dieser Wurm fügte weiterhin Schlüssel zu HKLM\SYSTEM\CurrentControlSet\Services hinzu, um seine eigenen Dienste im kontaminierten Windows-System zu installieren. Heute könnte Windows Vista Welchia jedoch einen Strich durch die Rechnung machen, indem der Zugriff auf beide Speicherplätze speziell auf entsprechende Dienste beschränkt wird und der Zugriff dieser Dienste über ein Konto mit geringen Berechtigungen erfolgt.

Eingeschränkter Netzwerkzugriff Windows Vista beinhaltet eine neue Firewall, die auf den Funktionen der Windows XP SP2-Firewall aufbaut. Neue Schlüsselfunktionen umfassen ausgehende Filter sowie die IPsec-Integration. Die neue Firewall integriert ebenfalls die Windows Vista-Diensthärtung, um die Ausführung von Malware innerhalb eines genutzten Windows-Dienstes und dessen Missbrauch für schädliche Netzwerkaktivitäten zu erschweren.

In der Windows Vista-Firewall werden Windows-Diensten Netzwerk-Firewallrichtlinien zugewiesen, die das Verhalten von Diensten einschränken. So kann einem Dienst, z. B. Plug & Play, der wahrscheinlich niemals über einen Netzwerkanschluss kommunizieren muss, der Zugriff auf ein Netzwerk untersagt werden. Mit solch einer Einschränkung könnte dieser Dienst nie mehr zum Ziel netzwerkbasierter Angriffe werden. Jeder Versuch dieses eingeschränkten Dienstes, eine ein- oder ausgehende Kommunikation aufzubauen, würde durch die Firewall blockiert. Andere Dienste, die einen legitimen Zugriff auf ein Netzwerk erfordern, können so konfiguriert werden, dass sie nur bestimmte Anschlüsse benutzen. Entwickler können diese Funktion nutzen, um Netzwerkzugriffe ihrer Dienste zu beschränken.

Netzwerkeinschränkungen bieten in Kombination mit der Diensthärtung einen soliden Schutz vor potenziellen, dienstbasierten Angriffen. Das ist im Vergleich zu vorherigen Windows-Versionen ein großer Vorteil. Bisher konnte Windows nicht entscheiden, welche Dienste wie, wo und wann über das Netzwerk kommunizieren durften. Dank der Windows Vista-Firewall mit ihren Netzwerkeinschränkungen für RPC-Dienste könnten jedoch Viren oder Würmer wie Blaster, Sasser oder Welchia an der Ausnutzung von kontaminierten Diensten zur Kommunikation mit anderen Computern gehindert werden.

Isolation der Sitzung 0 Die schnelle Benutzerumschaltung in Windows XP verwaltet gleichzeitig angemeldete Benutzer, indem sie jedem Benutzer eine andere Windows-Sitzung zuteilt. Die Sitzung 0 wird während des Startvorgangs geöffnet. Weitere Sitzungen werden je nach Bedarf hinzugefügt. Dienste liefen stets in Sitzung 0 und vor Windows Vista konnten benutzerspezifische Anwendungen ebenfalls in Sitzung 0 ausgeführt werden. Das gleichzeitige Ausführen von benutzerspezifischen Anwendungen und Windows-Diensten in der gleichen Sitzung stellt jedoch ein Sicherheitsrisiko dar, weil Dienste über weitreichende Berechtigungen verfügen und dadurch ein ideales Ziel für böswillige Software darstellen, die nach Mitteln und Wegen sucht, mehr Berechtigungen zu erhalten.

Windows Vista beseitigt dieses Sicherheitsrisiko, indem es Sitzung 0 ausschließlich für Dienste reserviert und Anwendungen in anderen Sitzungen ausführt. Sitzung 0 ist zudem nicht interaktiv, d. h. ein Dienst kann keine Benutzeroberflächen wie Dialogfelder oder Eingabeaufforderungen generieren, auf die Benutzer zugreifen können. Aufgrund dieser Änderungen wirkt sich die Isolation von Sitzung 0 für alle Entwickler von Windows-Diensten oder Treibern auf die Kompatibilität von Anwendungen aus.

Zusammenfassung

Windows Vista ist das erste Betriebssystem von Microsoft für Desktops, bei dem alle Ziele der Trustworthy Computing Initiative verwirklicht und bedeutende Fortschritte erzielt wurden, die Windows-Benutzer langfristig schützen. Andererseits ist die Computersicherheit ein Bereich, der sich ständig weiter entwickelt, und Malware-Programmierer werden ohne Zweifel auch weiterhin unablässig nach neuen Wegen und Mitteln für den Missbrauch von Windows suchen. Sie werden es durch die neuen Diensthärtungsfunktionen von Windows Vista, die verstärkten Standardsicherheitseinstellungen sowie die Reduzierung von potenziellen Angriffspunkten jedoch erheblich schwerer haben. Weitere Informationen zu diesen grundlegenden Verbesserungen finden Sie unter microsoft.com/whdc/system/vista/Vista_Services.mspx.

Wole Moses, Microsoft Regional Windows Lead, gehört mit acht Jahren Betriebszugehörigkeit zu den Microsoft-Veteranen. Gegenwärtig in Istanbul, Türkei, basiert, betreut und unterstützt Wole die größten Kunden der Schwellenmärkte im Mittleren Osten und Afrika bei der Planung und Entwicklung von Microsoft-basierten Lösungen zur Optimierung ihrer IT-Infrastrukturen und Maximierung der Sicherheit.

© 2008 Microsoft Corporation und CMP Media, LLC. Alle Rechte vorbehalten. Die nicht genehmigte teilweise oder vollständige Vervielfältigung ist nicht zulässig.