FAQ zu Sicherheitsfragen der Windows Registrierung

Copyright © 2001-2006 Frank Heyne - All rights reserved.

Bitte nehmen Sie davon Abstand, eine Kopie dieser Seite selbst öffentlich anzubieten. Verwenden Sie statt dessen einen Link auf http://www.heysoft.de/de/informationen/registry-sicherheit.php. Die Gründe für diese Bitte dürften klar sein: Einerseits würden Sie mit der Veröffentlichung einer Kopie meine Urheberrechte verletzen und andererseits hätten Sie erheblichen Aufwand, immer die aktuellste Version der FAQ anzubieten.

Diese Seite wurde zuletzt am 29. Mai 2006 aktualisiert.


1. Wie kann ich individuelle Berechtigungen für einen Registrierungswert statt für einen Registrierungsschlüssel festlegen? 03. Januar 2001

Sie müssen alle Werte, die zu einem Registrierungsschlüssel abgespeichert sind, genau so betrachten wie den Inhalt einer Datei. Obwohl Sie Zugriffsberechtigungen für eine Datei festlegen können, können Sie das nicht für Teile von deren Inhalt tun. Wenn beispielsweise jemand Lesezugriff auf eine Datei hat, so kann er deren gesamten Inhalt einsehen. In Analogie dazu kann jemand, der Lesezugriff für einen Registrierungsschlüssel hat, auch sämtliche zugehörigen Werte lesen.

2. Wie kann ich schnell die Registrierung durchsuchen, wenn ich eine Liste aller Schlüssel benötige, für die ein Benutzer oder eine Gruppe zum Beispiel Schreibzugriff hat? 03. Januar 2001

Die Vollversion von RegDACL erlaubt es Ihnen, einen ganzen Teilbaum der Registrierung nach beliebigen Berechtigungen zu durchsuchen. Sie können auch nach effektiven Berechtigungen suchen. Wenn Sie z.B. wissen möchten, worauf Mitglieder der Gruppe Interaktiv schreibend zugreifen können, sollten Sie nicht direkt nach den Einträgen für diese Gruppe suchen, sondern besser nach den effektiven Berechtigungen für diese Gruppe. Das führt dazu, dass auch Schlüssel mit Schreibzugriff für die Gruppe Jeder (deren Mitglied Interaktiv auch ist) in der Ergebnisliste erscheinen, für die Interaktiv dadurch auch Schreibberechtigungen hat.

3. Ich habe keine Vorstellung davon, wer Mitglied der folgenden vordefinierten Gruppen ist: Dienst, Batch, Netzwerk, Interactive, Lokal 03. Januar 2001

Sie können keinen Benutzer dauerhaft zum Mitglied dieser Gruppen machen. Die Mitgliedschaft in einer solchen Gruppe erwirbt der Benutzer nur temporär mit einer bestimmten Anmeldung am Rechner für die Dauer dieser Sitzung. Ein Benutzer kann gleichzeitig in verschiedenen Sitzungen an einem Rechner angemeldet sein. Daraus folgt, dass verschiedene Programme, die alle zugleich unter dem Konto dieses Benutzers laufen, verschiedene Berechtigungen haben, weil die entsprechenden Anmeldesitzungen temporäre Zugehörigkeiten zu verschiedenen vordefinierten Gruppen bewirken.

  • Die Anmeldung als Dienst bewirkt eine Mitgliedschaft dieser Anmeldesitzung in den Gruppen Dienst und Lokal.
  • Ein Programm, welches vom Scheduler-Dienst gestartet wurde, hat die Mitgliedschaft in den Gruppen Batch und Lokal.
  • Ein Benutzer, der lokal angemeldet ist, ist Mitglied in den Gruppen Interaktiv und Lokal.
  • Ein Benutzer, der über das Netzwerk angemeldet ist, ist Mitglied in den Gruppen Netzwerk.

4. Erlaubt RegDACL mir, normale Benutzer davon abzuhalten, Software auf einem Windows-Rechner zu installieren? 03. Januar 2001

RegDACL erlaubt Ihnen, die Sicherheitseinstellungen der Registrierung so zu setzen, dass normale Benutzer dort keine Einträge für neue Programme anlegen können. Sie müssen aber (z.B. mit cacls) auf jeden Fall auch das Dateisystem gegen die Installation von Dateien in kritische Verzeichnisse absichern.

5. Wie verwende den Befehl /AQ richtig auf einem Netzwerkrechner mit RegTools? 03. Januar 2001

Sie benötigen die Vollversion von RegTools, um auf Netzwerkrechner zuzugreifen. Damit funktioniert es z.B. so:

set computer=pc1
set acct_name=testuser
RegDACL \\%computer%\HKU\S-1-5-21-865348-386294-40770-1013 /GAQ%computer%\%acct_name%:F /Subtree

6. Kann es Probleme bereiten, Berechtigungen in der Registrierung eines NT 4 Rechners über das Netzwerk von einem W2K Rechner aus zu bearbeiten? 08. Januar 2001

Das hängt von der Betrachtungsweise ab. Microsoft bezeichnet es als Feature, wir bevorzugen die Bezeichnung Ärgernis. Unter NT 4 ist keine Vererbung unter bestehenden Objekten bekannt. Somit ändern sich auch die Berechtigungen von vorhandenen Teilschlüsseln nicht, wenn Sie die berechtigungen eines Registrierungsschlüssels ändern und das Kontrollkästchen "Berechtigungen in allen bestehenden Teilschlüsseln ändern" nicht markiert ist.
Wenn Sie aber die Berechtigungen in der Registrierung eines NT 4 Rechners über das Netzwerk von einem W2K Rechner aus bearbeiten, ist das Ergebnis schlecht vorhersehbar:

  • Wenn sich die Berechtigungen von Schlüssel und Teilschlüssel unterscheiden, werden die Änderungen nicht an den Teilschlüssel vererbt.
  • Wenn sich die Berechtigungen von Schlüssel und Teilschlüssel nicht unterscheiden, werden die Änderungen an den Teilschlüssel vererbt, es sei denn
  • Wenn es einen Eintrag für Ersteller Besitzer gibt, werden die Änderungen nicht an den Teilschlüssel vererbt, oder
  • Wenn Sie (oder jemand anders) bereits mehrmals die Berechtigungen von Schlüssel und Teilschlüssel geändert haben, werden selbst, wenn die Berechtigungen jetzt wieder übereinstimmen, manchmal die Änderungen trotzdem nicht vererbt.
Sie werden also in der Regel nicht wissen, was passieren wird, wenn Sie die Berechtigungen eines Schlüssels, unter dem sich ein großer Teilbaum befindet, ändern. Es kann sein, dass sich die Berechtigungen in einem Teil des teilbaumes ändern, während sie sich im anderen Teil des Teilbaumes nicht ändern.

Sie können jedoch vorher feststellen, ob die Änderungen auf einen Teilschlüssel vererbt werden werden oder nicht: Sie müssen "nur" für jeden Teilschlüssel prüfen, ob das Kontrollkästchen "Vererbbare übergeordnete Berechtigungen übernehmen" markiert ist oder nicht. Weil NT 4 keine Vererbung auf bestehende Objekte kennt, ist auch das Vererbungsflag nicht bekannt und daher auch nicht gesetzt, aber RegEdt32 für W2K denkt manchmal, das es gesetzt sein sollte, und gemäß Microsoft:

> "This is expected behavior. When editing/viewing NT4 style security from
> Win2K we decide whether or not inheritance was intended using the
> exisiting security on the parent and the object. If all the inheritable
> aces from the parent exist on the object, we mark the inheritance checkbox."

Allerdings warte ich noch immer auf die Antwort auf meine Frage, warum das nicht zutrifft, wenn es einen Eintrag für Ersteller Besitzer gibt.
Übrigens ist das nicht nur ein Problem der Registrierung! Den gleichen Ärger werden Sie erleben, wenn Sie die Berechtigungen eines NT 4 Dateiverzeichnisses mit dem W2K Explorer bearbeiten!

7. Kann es Probleme bereiten, Überwachungseinstellungen in der Registrierung eines NT 4 Rechners über das Netzwerk von einem W2K Rechner aus zu bearbeiten? 08. Januar 2001

Oh ja. Das Problem ist sogar noch kritischer als das soeben beschriebene wegen der Berechtigungen. RegEdt32 für W2K weiß nichts über die Bugs in RegEdt32 für NT 4. Nachdem Sie mit RegEdt32 für W2K einen Überwachungseintrag hinzugefügt haben, kann RegEdt32 für NT 4 die gesamte SACL nicht mehr anzeigen. selbst die Einträge nicht, die zuvor von diesem Programm selbst angelegt wurden. Es löscht die gesamte SACL, wenn Sie versuchen, sie zu öffnen :-(
RegEdt32 für NT 4 löscht auch Überwachungseinstellungen auf W2K-Rechnern, so daß es keine Version von RegEdt32 gibt, mit der sie gefahrlos sämtliche Überwachungseinstellungen in einer gemischten NT 4/5 Umgebung manipulieren können!
Die Lösung heißt in diesem Falle RegAudit, weil dieses Programm zuerst prüft, welche Version von Windows auf dem Zielrechner läuft, um dann entscheiden zu können, welche Fehler emuliert werden müssen und welche Optionen erlaubt sind.

8. Angeblich sollen die RegTools jetzt alle Schlüssel auflisten können. Gilt das auch für die Teilschlüssel von hklm\security\Policy\Secrets\ auf W2K-Rechnern? Selbst mit dem LocalSystem-Trick ist mir das nicht gelungen! 08. Januar 2001

Meinen Sie vielleicht diese Schlüssel?
hklm\security\Policy\Secrets\SAC
hklm\security\Policy\Secrets\SAC\CupdTime
hklm\security\Policy\Secrets\SAC\CurrVal
hklm\security\Policy\Secrets\SAC\OldVal
hklm\security\Policy\Secrets\SAC\OupdTime
hklm\security\Policy\Secrets\SAC\SecDesc
hklm\security\Policy\Secrets\SAI
hklm\security\Policy\Secrets\SAI\CupdTime
hklm\security\Policy\Secrets\SAI\CurrVal

Die Vollversion von RegTools kennt die Tricks ;-))

9. Aber es ist mir nicht möglich, einen Schlüssel zu öffnen, der einen DENY ALL ACCESS Eintrag für mich enthält und dessen Besitzer ich auch nicht bin, oder? 08. Januar 2001

Selbst die Freewareversion von RegDACL kennt den Trick ;-)) Es funktioniert aber nur, wenn Sie ein Mitglied der Gruppe der Administratoren sind! Wie würden Sie denn sonst die "verdorbenen" Sicherheitseinstellungen von irgendwelchen sehr klugen Benutzern reparieren, wenn RegDACL solche Schlüssel nicht öffnen könnte?

10. Was ist eigentlich der LocalSystem-Trick? 08. Januar 2001

Lassen Sie den Scheduler-Dienst (oder wie auch immer Microsoft ihn auf Ihrem Rechner gerade wieder umbenannt hat) unter dem Systemkonto laufen, und geben Sie dann folgenden Befehl ein:
at 12:00 /i regedt32
Zur Mittagszeit werden Sie eine Instanz von RegEdt32 unter dem Systemkonto auftauchen sehen. Sie erlaubt Ihnen, z.B. einen Blick in hklm\security zu werfen, ohne dazu irgendwelche Sicherheitseinstellungen ändern zu müssen.

11. Wenn ich versuche, mit RegDACL die Einstellungen für den Schlüssel
"hklm\software\Data Access Corporation" zu ändern, bekomme ich zur Antwort
"Kann Registrierungsschlüssel hklm\software\Data nicht öffnen" 29. Juli 2002

Versuchen Sie es mit:
regdacl "hklm\software\Data Access Corporation" /Sge:F
Wie bei jedem anderen Befehl, der mit einem Parameter mit Leerzeichen aufgerufen wird, müssen Sie den Parameter in Anführungszeichen einschließen.

12. Das Aufteilen eines Befehles über mehrere Zeilen funktioniert bei mir nicht 29. Juli 2002

Standardmäßig besteht ein Befehl aus einer Zeile. Wenn Sie einen Befehl auf mehrere Zeilen aufteilen möchten, müssen Sie dem System mitteilen, daß die Eingabetaste den Befehl nicht beendet. Das machen Sie, indem Sie ein "^" als letztes Zeichen eingeben und die Folgezeile mit einem Leerzeichen beginnen:

RegDACL hklm\software /qgu:r ^
  && echo Jeder Benutzer kann auf diesem Rechner Software installieren :-(^
  || echo Nicht jeder Benutzer kann auf diesem Rechner jede Software installieren :-)

13. RegDACL funktioniert nicht in unserem Script. Gibt es einen Debug-Mode, den wir verwenden können, um den Fehler zu suchen? 29. Juli 2002

 

  • Sie können ein "/L" an den Aufruf von RegDACL anhängen.
    Das führt zu einer Ausgabe der Berechtigungen für den angegebenen Registrierungsschlüssel.
     
  • Falls Sie die Programmausgabe nicht sehen, weil Sie das Script über den Task Scheduler aufrufen, sollten Sie folende Parameter an den Aufruf von RegDACL anhängen:
      >> c:\result.txt 2>> c:\errors.txt
    Das leitet die Ausgabe von stdout nach c:\result.txt um und die Ausgabe von stderr nach c:\errors.txt
     
  • Vergessen Sie nicht: Geben Sie immer den vollständigen Pfad an!

14. Wie lautet die Abkürzung für Hauptbenutzer auf dem lokalen Rechner? Ich habe die Option AL ausprobiert, aber RegDACL sagt immer, eine solche Gruppe würde es nicht geben. 29. Juli 2002

Hauptbenutzer sind in RegDACL nicht vordefiniert.
Sie waren auf dem richtigen Weg, AL"Hauptbenutzer" ist korrekt, aber dieser Befehl funktioniert nur in der Vollversion von RegDACL.
Beispiel:
regdacl hklm\software\test /sal"Hauptbenutzer":f(ci)

15. Gibt es Programme, die auf unbenutzte Registrierungsdateien zugreifen können? (z.B. um Dateien von einem kompromittierten Rechner forensich zu untersuchen) 29. Juli 2002

RegEdt32 (kommt mit Windows) lädt solche Dateien (von Microsoft als "Struktur" bezeichnet) in die Registrierung. Reg (vom ResKit) macht das auch.
Stellen Sie sicher, daß Sie beim Laden einer Struktur keinen vorhandenen Registrierungsschlüssel überschreiben!

Wenn Sie eine Registrierungsdatei von einem anderen Rechner auf Ihren kopieren und dann in die Registrierung laden, wird nichts in dieser Struktur geändert (es sei denn, Sie ändern selbst etwas daran).
Weil in der Registry nur die letzte Schreibzeit vermerkt ist, können Sie diese nun auch auslesen, zum Beispiel mit RegLast.
Windows selbst wird auf die zusätzliche Struktur nicht von sich aus zugreifen (es sei denn, Sie haben sie in einen bereits bestehenden Schlüssel geladen, was keine gute Idee ist).

Ich habe Bedenken, daß bereits beim Booten eines kompromittierten Rechners die Registrierung geladen und modifiziert wird.
Das ist wahr. Vielleicht können Sie die HD in einen anderen Rechner stecken oder in einer unbenutzten Partition des kompromittierten Rechners eine zusätzliche Installation von Windows einrichten, um Zugriff auf die unveränderten Registrierungsdateien zu erhalten.

16. Ich möchte mit einem Befehl die Berechtigungen für HKLM\Software\XXX und alle Teilschlüssel von XXX setzen 29. Juli 2002

Die korrekte Syntax hängt von der verwendeten Version von Windows ab. Um zum Beispiel für "Benutzer" Lese- und Schreibzugriff und für "Jeder" Lesezugriff zu gewähren, müssen Sie folgende Befehle verwenden:

Unter NT4:
RegDACL HKLM\Software\XXX /ggu:RW /gge:R -subtree

Unter NT5.x:
RegDACL HKLM\Software\XXX /pc
RegDACL HKLM\Software\XXX /ggu:RW /gge:R
RegDACL HKLM\Software\XXX /propagate


Im letzten beispiel könnten Sie die ersten beiden Befehle zusammen fassen, ich habe sie nur der Klarheit wegen separat geschrieben.
Der erste Befehl beendet die Vererbung vom übergeordneten Schlüssel und kopiert die dortigen Berechtigungen.
Der zweite Befehl fügt die gewünschten Berechtigungen hinzu.
Der dritte Befehl vererbt die aktuellen Berechtigungen auf alle Teilschlüssel.
Der Grund dafür, daß /Propagate als einziger Schalter verwendet werden muß, liegt in seiner Mächtigkeit. Ich hatte Befürchtungen, daß jemand unbeabsichtigt seine Registrierungseinstellungen durcheinander bringen könnte, wenn er zu viele Optionen mit einem einzigen Aufruf kombinieren kann.

17. Mit regedt32 von Windows 2000 kann ich auch die Option "Vererbbare übergeordnete Berechtigungen übernehmen" auf einem über Netzwerk verbundenen NT4-Rechner setzen. Kann ich das auch mit RegDACL? 29. Juli 2002

Sie könnten das mit RegDACL machen, aber ich empfehle es nicht! Der Grund ist, daß RegEdt32 für NT4 diese Art der Vererbung nicht kennt und dieses Flag daher ignoriert.
Falls Sie aber die Sicherheitseinstellungen eines NT4-Rechners bereits mit RegEdt32 für W2K geändert haben, können Sie versuchen, sie mit RegDACL wieder zu reparieren.

18. Wofür wird HKEY_USERS\.DEFAULT benötigt? 29. Juli 2002

Dieses Profil wird für das lokale Systemkonto verwendet. Alle Dienste, die darunter laufen, können es als HKCU ansprechen. Hier können Sie zum Beispiel auch den Hintergrund ändern, der vom Anmeldebildschirm verwendet wird.

19. Gibt es Probleme mit dem Überwachen der Registrierungs-Rootkeys? 29. Mai 2006

Auf wichtigen Rechnern kann es sinnvoll sein, sich über Zugriffsversuche auf das Dateisystem oder die Registrierung ein Bild zu machen. Um über das Netzwerk auf die Registrierung eines Rechners zugreifen zu können, muß man immer zuerst eine Verbindung zu einem der beiden Rootkeys HKEY_LOCAL_MACHINE oder HKEY_USERS aufbauen. Sie können also in den Sicherheitsrichtlinien die Überwachung von Objektzugriffsversuchen aktivieren und in den Eigenschaften der beiden Registrierungsschlüssel einen Überwachungseintrag hinzufügen.

Das Problem dabei: Nachdem der Rechner neu gestartet wurde, hat der die Überwachungseinträge für die beiden Rootkeys verloren. Dieses Problem betrifft alle aktuellen Versionen von Windows.

Workaround: Erzeugen Sie einen RegAudit-Befehl zur Wiederherstellung der Überwachungseinstellungen im Startscript des Rechners.