[Aufmachergrafik: heller, corporate design] Gute Dienste, schlechte Dienste (Un-)Sicherheit von Windows-Diensten

Ordnungsmerkmale

erschienen in: <kes> 2007#3, Seite 6

Rubrik: Bedrohung

Schlagwort: Windows-Dienste

Zusammenfassung: Etliche Programme laufen unter Windows "im Hintergrund" als Dienste, viele davon stammen von Drittanbietern, manche ermöglichen Angreifern einen leichten Zugang zum System. Risiken und Abhilfen erläutert dieser Artikel.

Autor: Von Carsten Köhler und Lars Weimer, Frankfurt/Main

Microsoft Windows 2000, XP, Server 2003 und Vista führen zahlreiche Programme (Dienste) im Hintergrund aus, die zum Teil direkt beim Laden des Betriebssystems starten. Neben den Systemdiensten von Windows sind dies zum großen Teil auch Dienste zusätzlich installierter Anwendungen; Beispiele sind die Druckwarteschlange, bestimmte Netzwerkfunktionen und -applikationen oder auch die meisten Viren-Scanner.

In der Praxis ist dabei leider festzustellen, dass ein hoher Prozentsatz dieser Dienste nicht sicher konfiguriert ist und somit die Kompromittierung eines Windows-Netzwerks auf einfache Weise ermöglicht. Der vorliegende Beitrag stellt die Risiken dar, die sich aufgrund einer unsicheren Konfiguration solcher Dienste ergeben und schildert Möglichkeiten zum Gegensteuern; er basiert auf einem an der Universität Princeton entwickelten Ansatz [1].

Dienste werden in der Regel unabhängig vom angemeldeten Benutzer ausgeführt und verfügen meist über umfangreiche Zugriffsberechtigungen. Oftmals erfolgt die Ausführung im Kontext des virtuellen Benutzers "Lokales System", der sogar über mehr Rechte verfügt als ein Administrator. Gelingt es daher einem Angreifer, einen Dienst so umzukonfigurieren, dass ein vom ihm frei wählbarer Befehl ausgeführt wird, dann erlangt er uneingeschränkte Kontrolle über das betroffene IT-System.

----------Anfang Textkasten----------

Tipps für den sicheren Umgang mit Diensten

----------Ende Textkasten----------

Um die konkreten Risiken auf einem System zu beurteilen und gegebenenfalls Dienste besser abzusichern, muss man naturgemäß zunächst ergründen, welche Prozesse wie eingerichtet sind. Die Anzeige und Konfiguration von Diensten erfolgt üblicherweise über den Eintrag "Dienste" in der Computerverwaltung. Diese grafische Oberfläche ermöglicht einen komfortablen Zugriff auf den Service Control Manager (SCM), der für die Verwaltung der Dienste zuständig ist. Hierüber sind unter Anderem das Starten und Stoppen von Diensten sowie die Konfiguration der Startmethode möglich (automatisch, manuell, deaktiviert).

Leider stehen jedoch einige zentrale und aus Sicherheitssicht wichtige Funktionen des SCM über diese Oberfläche nicht zur Verfügung. Hierzu gehören beispielsweise die Anzeige der Zugriffsberechtigungen von Diensten und die Änderung des vom beziehungsweise als Dienst auszuführenden Programms. Zudem bleibt in dieser Verwaltungssicht eine äußerst wichtige Eigenschaft des SCM verborgen: Die Konfiguration der Dienste ist – abhängig vom eingesetzten Betriebssystem – für jeden authentifizierten Benutzer auch über das Netzwerk zugreifbar, und zu diesen zählen in einem üblichen Windows-Netzwerk auch alle Domänenbenutzer.

Letztendlich bedeutet dies, dass jeder Mitarbeiter über das Netzwerk vollständigen Zugriff auf die IT-Systeme seiner Kollegen oder auf Server innerhalb der Domäne erhalten kann, sofern auch nur ein einziger Dienst auf dem Zielsystem es ihm gestattet, die Konfiguration "zu seinen Gunsten" zu verändern. Ferner sind hierzu keine speziellen Programme oder Werkzeuge notwendig, sondern dies kann bereits durch den Einsatz von Windows-Bordmitteln erfolgen (vgl. Kasten "Angriff per Dienst").

Es ist daher von entscheidender Bedeutung zu wissen,

----------Anfang Textkasten----------

Angriff per Dienst

Das Ausnutzen fehlerhaft zugriffsgeschützter Dienste für einen Angriff soll im Folgenden durch ein Beispiel verdeutlicht werden. Als Szenario dient die Windows-Domäne TEST, in der es neben dem Domänen-Controller die beiden Client-Systeme ATTACKER und VICTIM gibt; diese Systeme werden durch zwei Mitarbeiter verwendet: BADGUY und GOODGUY.

Für GOODGUY wurde im Rahmen der Softwareverteilung auf VICTIM eine Software installiert, die während der Installation auf diesem System den Dienst NEWSERVICE hinzugefügt hat. Der Mitarbeiter BADGUY stellt nun fest, dass er diesen Dienst auf dem PC seines Kollegen über das Netzwerk umkonfigurieren kann: Er verändert dazu mit dem Kommandozeilen-Befehl sc die Konfiguration von NEWSERVICE auf VICTIM so, dass dieser Dienst beim nächsten Start einen neuen Befehl auf dem Zielsystem ausführt:

net user EVIL Ev_16355 /add 
  && net localgroup Administratoren EVIL /add

Dieser Befehl bewirkt, dass beim nächsten Start von NEWSERVICE auf VICTIM ein neuer (lokaler) Benutzer mit der Benutzerkennung EVIL erzeugt und der Gruppe der lokalen Administratoren hinzugefügt wird. Per net stop und net start kann der Angreifer den Neustart des Dienstes sogar noch beschleunigen, sofern er auch über die entsprechenden Rechte verfügt. Alternativ könnte er im Rahmen der Konfigurationsänderung den Starttyp des Dienstes auf "automatisch" setzen, um beim nächsten Hochfahren des IT-Systems VICTIM die Ausführung des vorgegebenen Befehls zu erzwingen. Sobald dies geschehen ist, kann sich BADGUY über den neuen lokalen Admin-Account an VICTIM anmelden und dort nach Lust und Laune agieren.

----------Ende Textkasten----------

Zugriffsrechte für Dienste

Wie bereits angemerkt, ist es über die "normale" grafische Oberfläche nicht möglich anzuzeigen, wer Zugriffsberechtigung auf welche Dienste besitzt – einzig die Fehlermeldung "Zugriff verweigert" deutet darauf hin, dass die Rechte des eigenen Benutzerkontos für die gewünschte Funktion (beispielsweise das Stoppen eines Dienstes) nicht ausreichen.

Unter den Windows-Bordmitteln findet man als Alternative noch den Kommandozeilenbefehl sc (Service Control). Die Ausgabe dieses Programms im SDDL-Format (Security Descriptor Definition Language, siehe [2]) ist jedoch auch für einen versierten Benutzer nicht leicht verständlich – und zusätzlich muss man den Befehl für jeden Dienst auf jedem IT-System einzeln aufrufen, was eine umfassende Analyse deutlich erschwert.

Alternativ bietet Microsoft im Rahmen der Windows-Server-Resource-Kits das Tool subinacl zum Download an ([externer Link] www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&DisplayLang=en), das immerhin die Anzeige der Zugriffsrechte aller installierten Systemdienste in einem auch für Menschen lesbaren Format gestattet (vgl. Kasten "Arbeit mit Subinacl"). Die Auswertung der Ausgabe für alle IT-Systeme einer Domäne ist jedoch auch hiermit nicht in einem vertretbaren zeitlichen Rahmen möglich, da sich die Ergebnisse nicht maschinell zusammenfassen lassen. Als Alternative bleibt dann noch Software von Drittanbietern; das Ergebnis der Untersuchungen sollte im Idealfall eine tabellarische Auflistung aller Dienste je IT-System mit den ermittelten Zugriffsrechten sein.

----------Anfang Textkasten----------

Arbeit mit Subinacl

Subinacl ist ein Microsoft-Tool zur Anzeige und Modifikation der gesetzten Zugriffsrechte für zahlreiche Objekttypen, beispielsweise Dateien, Registrierungsschlüssel, Freigaben oder auch Dienste. Die Anzeige der Zugriffsrechte für einen Dienst kann durch Aufruf von subinacl /service <dienstname> erfolgen. Um beispielsweise die Zugriffsrechte für den Dienst "Ablagemappe" anzuzeigen, müsste daher subinacl /service clipsrv aufgerufen werden. Statt des Dienstnamens kann man jedoch auch ein Sternchen (*) als Platzhalter zur Anzeige aller Dienste verwenden.

In der Ausgabe des Tools erscheinen zunächst Information über den Eigentümer und die gesetzten Audit-Einstellungen für den Dienst. Erst ab der Zeile /perm. ace count = x, welche die Anzahl unterschiedlicher Permission Access Control Entries (PACEs) angibt, werden die Zugriffsrechte aufgelistet. Ein beispielhafter Eintrag könnte wie folgt aussehen:

/pace =vordefiniert\hauptbenutzer
   ACCESS_ALLOWED_ACE_TYPE-0x0
        SERVICE_QUERY_CONFIG-0x1
        SERVICE_QUERY_STATUS-0x4
        SERVICE_ENUMERATE_DEPEND-0x8
        SERVICE_INTERROGATE-0x80
        READ_CONTROL-0x20000

Jeder dieser Einträge beginnt in der ersten Zeile mit der Angabe der Gruppe (oder des Benutzers), für die der Eintrag relevant ist, im Beispiel also für die Gruppe "Hauptbenutzer". Es folgt die Art des Eintrags: ACCESS_ALLOWED_ACE_TYPE bedeutet, dass die in den folgenden Zeilen genannten Rechte gewährt werden. Im Beispiel erhalten alle Benutzer der Gruppe "Hauptbenutzer" für den Dienst "Ablagemappe" unter anderem das Recht, die Konfiguration abzufragen (SERVICE_QUERY_CONFIG). Hinsichtlich der im Haupttext beschriebenen Analyse wären vor allem die Einträge SERVICE_CHANGE_CONFIG-0x2 oder SERVICE_ALL_ACCESS besonders interessant: Sie hätten zur Folge, dass die entsprechenden Benutzer die Konfiguration des Dienstes ändern können.

----------Ende Textkasten----------

Voraussetzungen für Missbrauch

Um die Konfiguration eines Dienstes ändern zu können, müssen zwei Voraussetzungen erfüllt sein: Zum einen muss der Service Control Manager (SCM) des Zielsystems für den Angreifer zugreifbar sein. Unter Windows 2000, XP und Server 2003 ist dies "problemlos" möglich, sofern der Angreifer über ein gültiges Benutzerkonto zur Anmeldung am Zielsystem verfügt – in der Regel genügt also ein normales Domänenbenutzerkonto. Unter Windows Server 2003 (SP1) und Vista sind hingegen für den SCM-Zugriff administrative Berechtigungen notwendig, weswegen diese Betriebssysteme diesbezüglich als sicherer einzustufen sind und im Folgenden nicht weiter betrachtet werden.

Zum anderen muss auf dem Zielsystem ein für Angreifer konfigurierbarer Dienst installiert sein. Geht man von einem Szenario ohne besondere Berechtigungen des Angreifers aus, sind dies all jene Dienste, die von einem Domänenbenutzer konfiguriert werden dürfen.

Da in einer Standardinstallation, beispielsweise von Windows XP (SP2) kein durch einen normalen Benutzer konfigurierbarer Dienst vorhanden ist, liegt das Problem – wie so oft – in installierter Zusatzsoftware. Eines von zahlreichen Beispielen ist etwa der Dienst, der bei der Installation bestimmter Druckertreiber eines namhaften Anbieters installiert wird: Dieser Dienst ist nach der Installation durch normale Benutzer konfigurierbar und liefert somit Missbrauchspotenzial.

Erfahrungen bei der Untersuchung größerer Windows-Netzwerke haben gezeigt, dass in der Praxis ungefähr ein Drittel bis die Hälfte aller IT-Systeme mindestens einen Dienst beheimaten, der die Kompromittierung dieses Systems gestattet. Der in der Regel bessere Schutz von Serversystemen rührt im Wesentlichen daher, dass dort seltener Zusatzsoftware installiert wird oder der SCM (ab Windows Server 2003 SP1) nur noch mit administrativen Rechten zugreifbar ist.

Die unmittelbare Gefahr besteht somit primär für Client-Systeme. Spätestens nach deren Kompromittierung und dadurch gegebenenfalls auch einer Kompromittierung von Passwörtern der IT-Abteilung ist es jedoch sehr wahrscheinlich, dass ein Angreifer letztendlich Zugriff auf alle kritischen Daten im Windows-Netzwerk eines Unternehmens erlangt.

Schutz verbessern

Die Inventarisierung der Dienste und Zugriffsrechte auf lokalen und über das Netzwerk erreichbaren IT-Systemen mittels der beschriebenen Werkzeuge ist der erste Schritt zur Verbesserung der Lage. Die Anpassung der Zugriffsberechtigungen könnte man mit einigem Aufwand ebenfalls mit diesen Tools über die Kommandozeile durchführen – hierfür gibt es jedoch eine einfachere Möglichkeit: die Nutzung von Gruppenrichtlinien.

Per Gruppenrichtlinie lassen sich standardmäßig zwar nur die Dienste auf den Client-Systemen konfigurieren, die auch auf dem Domänen-Controller selbst installiert sind; denn dieser "weiß" normalerweise nichts von den zahlreichen Diensten, die auf dem einen oder anderen Client zusätzlich installiert wurden. Mittels einer so genannten Sicherheitsvorlage kann man hier jedoch Abhilfe schaffen – diese Vorlagen enthalten sicherheitsbezogene Einstellungen, die anschließend in die Gruppenrichtlinie importiert und so auf eine Vielzahl von IT-Systemen angewendet werden können.

Um die Zugriffsrechte nicht-standardmäßig installierter Dienste anzupassen, muss man eine neue oder bereits existierende Sicherheitsvorlagendatei entsprechend modifizieren (defaultmäßig unter C:\Windows\security\templates). Hierzu werden der Sicherheitsvorlagendatei mit einem Texteditor alle neu identifizierten Dienste hinzugefügt. Am einfachsten dupliziert man hierzu die Zeile eines beliebigen anderen Dienstes und ändert dann als erstes in der neuen Zeile den Kurznamen des Dienstes (siehe Abb. 1).

[Screenshot]
Abbildung 1: Um Dienste von Drittanbietern in die Verwaltung per Gruppenrichtlinie aufzunehmen, muss man diese zunächst in eine Sicherheitsvorlage aufnehmen.

Im nächsten Schritt können anhand der modifizierten Sicherheitsvorlage die Zugriffsrechte der Dienste angepasst werden: Hierzu startet man zunächst die Microsoft-Management-Konsole durch Eingabe von mmc auf der Kommandozeile. Anschließend wählt man über den Menüpunkt "Snap-in hinzufügen / entfernen" das Snap-in "Sicherheitsvorlagen" aus. Nun sollte eine Auflistung aller Sicherheitsvorlagen erscheinen und im Unterpunkt "Systemdienste" der soeben manuell modifizierten Sicherheitsvorlage sollten die neu hinzugefügten Dienste auftauchen (siehe Abb. 2).

[Screenshot]
Abbildung 2: Das Sicherheitsvorlagen-Snap-in ermöglicht in der Management-Konsole (MMC) eine Vorkonfiguration von Diensten.

In den zugehörigen Eigenschaften eines jeden Dienstes lassen sich dann Startmodus und gewünschte Zugriffsrechte komfortabel anpassen (siehe Abb. 3). Aufgrund eines Fehlers in bestimmten Versionen von Windows XP werden übrigens in diesem Dialog manchmal die Einstellungen auch dann übernommen, wenn der Benutzer auf Abbrechen geklickt hat – daher sollte für die beschriebenen Schritte im Idealfall Windows Server 2003 zum Einsatz kommen. Genauere Erläuterungen des Problems sowie eine Beschreibung der Thematik aus Sicht von Microsoft liefert das XP-Handbuch "Bedrohungen und Gegenmaßnahmen" [3].

[Screenshot]
Abbildung 3: Sicherheitseinstellungs-Dialog für Dienste

Abschließend kann die erstellte und konfigurierte Sicherheitsvorlage in die entsprechende Gruppenrichtlinie importiert und somit auf alle Client-Systeme in der Domäne angewendet werden (Näheres siehe [4]).

Fazit

Die Analyse und Konfiguration der Dienste von Zusatzsoftware bedeutet einen nicht unerheblichen Aufwand, kann aber die Angriffsfläche von Windows-Systemen und -Netzen deutlich verringern. Bei höheren Sicherheitsanforderungen ist zudem ein Review der Windows-Systemdienste ratsam, wie es in den Microsoft Sicherheitshandbüchern für XP und Vista beschrieben wird [5,6].

Carsten Köhler beschäftigt sich bei Ernst & Young mit der Durchführung von IT-Sicherheitsuntersuchungen und Penetrationstests, Lars Weimer ist dort verantwortlich für den Bereich Informationssicherheit im Bankenumfeld.

Literatur

[1]
Sudhakar Govindavajhala, Andrew W. Appel, Windows Access Control Demystified, [externer Link] www.cs.princeton.edu/~sudhakar/papers/winval.pdf
[2]
Microsoft Developer Network (MSDN), Security Descriptor String Format [externer Link] http://msdn2.microsoft.com/en-us/library/aa379570.aspx
[3]
Microsoft TechNet, Bedrohungen und Gegenmaßnahmen, Sicherheitseinstellungen unter Windows Server 2003 und Windows XP, Kapitel 7: Systemdienste, [externer Link] www.microsoft.com/germany/technet/sicherheit/topics/serversecurity/tcg/tcgch07n.mspx
[4]
Microsoft TechNet, Importieren einer Sicherheitsvorlage in ein Gruppenrichtlinienobjekt, [externer Link] www.microsoft.com/technet/prodtechnol/windowsserver2003/de/library/ServerHelp/7e5267b0-87cf-496a-b36c-6b47a9f9723f.mspx?mfr=true
[5]
Microsoft, Windows-XP-Sicherheitshandbuch, [externer Link] www.microsoft.com/germany/technet/sicherheit/prodtech/windowsxp/secwinxp/default.mspx
[6]
Microsoft, Windows-Vista-Sicherheitshandbuch, [externer Link] www.microsoft.com/germany/technet/prodtechnol/windowsvista/secprot/sicherheitshandbuch/default.mspx