Beschränken des Zugriffs eines Programms auf die Windows-Registrierung

2053
Alexandr Zarubkin

Kann man verhindern, dass ein bestimmtes Programm auf die Windows-Registrierung zugreift? Ich weiß, dass es ACLs gibt, um einen Benutzer auszusperren, aber was ist mit der ausführbaren Steuerung?

2
Nein, denn es ist das Konto, das der Programmprozess ausführt, während das Programm in seinem Namen in die Registrierung schreibt. Welches Programm wollen Sie blockieren? Mit welchen Registrierungsschlüsseln versuchen Sie das Schreiben zu stoppen? Abhängig davon, in welchem ​​Teil der Registrierung Sie das Schreiben verhindern möchten, können Sie möglicherweise alle Personen abweisen. Aber für mich riecht das nach einem [XY-Problem] (http://xyproblem.info); Was ist das ACTUAL-Problem, das Sie durch Blockieren der Registrierungsschreibvorgänge lösen möchten? Ƭᴇcʜιᴇ007 vor 8 Jahren 2
In Linux können Sie über Systeme wie SeLinux und AppArmour obligatorische Zugriffskontrollmechanismen auf Apps anwenden. In Windows ist jedoch alles benutzerbasiert. Weitere Einzelheiten finden Sie hier: https://msdn.microsoft.com/de-de/library/windows/desktop/bb648648(v=vs.85).aspx Frank Thomas vor 8 Jahren 0
@ Ƭᴇcʜιᴇ007 Richtig. Es gibt auch eine obligatorische Zugriffskontrolle in Windows. Hier kann eine niedrige Integrität hilfreich sein. Ben N vor 8 Jahren 0

2 Antworten auf die Frage

3
Ben N

Entschuldigung, das ist nicht möglich, zumindest nicht in dem Maße, wie Sie es wollen. Wie in den Kommentaren von Ƭᴇcʜιᴇ007 erwähnt, basiert die gesamte Windows-Zugriffskontrolle auf Benutzern. Jedem Prozess ist ein Token zugeordnet, mit dem festgelegt wird, unter welchem ​​Benutzer er ausgeführt wird. Es gibt keinen Unterschied zwischen dem Ausführen einer Aktion und einem Programm, das unter Ihrem Konto ausgeführt wird, da Sie buchstäblich alles durch den einen oder den anderen Prozess ausführen. "Programme greifen Benutzer nicht an, Benutzer greifen Benutzer an."

Dabei greift praktisch jeder Prozess auf die Registry zu. Selbst wenn das Programm selbst nicht explizit auf die Registrierung zugreift, zeigt eine Untersuchung mit Process Monitor, dass jede GUI-App mit einer Bootload von Registry Reads beginnt, um herauszufinden, wie die grafischen Steuerelemente eingerichtet werden. Führen Sie Process Monitor für eine App aus, von der Sie glauben, dass sie die Registrierung nicht benötigt. du wirst überrascht sein.

Wenn Sie jedoch alle Schreibvorgänge und nur Schreibvorgänge blockieren möchten, gibt es tatsächlich etwas, das helfen kann. Windows hat ein Konzept der "Integritätsstufen", ein Teil der Benutzerkontensteuerung. Grundsätzlich kann ein Programm, das auf einer bestimmten Integritätsstufe ausgeführt wird, nicht in Objekte schreiben, die mit einer höheren Integritätsstufe gekennzeichnet sind. Normale Prozesse und normale Dateien (und Registrierungsschlüssel) haben die mittlere Integritätsstufe. Sie können Prozesse jedoch manuell mit der niedrigen Stufe starten. Laden Sie das PsExec- Tool herunter . Wenn Sie eine Eingabeaufforderung erstellen möchten, die nicht an normalen Stellen schreiben kann, führen Sie Folgendes aus:

psexec -l -i cmd 

Der -lSchalter stellt niedrige Integrität ein; Der -iSchalter macht den Prozess interaktiv. Die resultierende Eingabeaufforderung kann nur an Stellen schreiben, die speziell als "Niedrige Integrität" gekennzeichnet sind.

C:\Users\Ben>reg add HKCU\Test ERROR: Access is denied. 

Dieser Befehl funktioniert in einer normalen Eingabeaufforderung, jedoch nicht in dieser Art von gesperrter Eingabeaufforderung.

1
Alexandr Zarubkin

Eine andere Lösung ist die Verwendung von Sandboxie . Dieses Programm kann jeden Prozess in der Sandbox ausführen, so dass alle Änderungen an dem System, die durch diesen Prozess vorgenommen wurden, rückgängig gemacht werden können.