Wenn eine Windows-Datei cmd.exe mit erhöhten Berechtigungen ausgeführt wird, wird irgendetwas, das ich an der Eingabeaufforderung ausführe, auch mit erhöhten Berechtigungen ausgeführt?

11

Wenn in meinem cmd.exe-Fenster in der Titelleiste "Administrator" angezeigt wird, was darauf hinweist, dass es mit erhöhten Berechtigungen gestartet wurde, bedeutet dies, dass alles, was ich in diesem Befehlsfenster ausführe, auch mit erhöhten Berechtigungen ausgeführt wird?

Insbesondere, wenn ich so etwas wie:

msiexec SomeProgram.msi

Wird mein Installationsprogramm mit erhöhten Berechtigungen ausgeführt, weil es von einer cmd.exe ausgeführt wurde, die mit erhöhten Berechtigungen ausgeführt wurde?

Genauer gesagt: Ich frage mich, ob Anwendungen, die eine Benutzeroberfläche anzeigen und die Eingabeaufforderung im Fenster cmd.exe sofort zurückgeben, wie der msiexecobige Aufruf, mit erhöhten Berechtigungen ausgeführt werden.

Ian C.
quelle

Antworten:

16

Ja, es wird mit erhöhten Berechtigungen ausgeführt.

Einfacher Test:

Sie können dies ganz einfach testen, indem Sie eine erhöhte und eine nicht erhöhte Eingabeaufforderung öffnen. Führen Sie den Befehl notepad.exein beiden Fällen aus und versuchen Sie, eine leere Textdatei in zu speichern C:\Windows. Man wird speichern, man wird einen Berechtigungsfehler auslösen.

Gründlicher Test:

Wenn dies nicht ausreicht, um es für Sie zu bestätigen (es hat mich nicht wirklich zufriedengestellt), können Sie AccessChk von SysInternals verwenden. Sie müssen dies an einer Eingabeaufforderung mit erhöhten Rechten ausführen.

Beginnen wir mit dem Auschecken der beiden laufenden Notepad-Prozesse:

Notizblock: ( accesschk.exe -v -p notepad)

[11140] notepad.exe
  Medium Mandatory Level [No-Write-Up, No-Read-Up]
  RW DOMAIN\Tannerf
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS
[11004] notepad.exe
  High Mandatory Level [No-Write-Up, No-Read-Up]
  RW BUILTIN\Administrators
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS

Einer wird unter meinem Domänenbenutzernamen ausgeführt, der andere unter der integrierten Gruppe Administratoren. Es hat auch ein hohes Pflichtniveau . Sie können auch mit dem -fFlag eine Aufschlüsselung der Berechtigungen und Token ausführen .

MSIExec- und MSI-Dateien

Ich dachte, die Dinge könnten beim Laufen etwas komplizierter werden msiexec. Ich habe ein eigenständiges Google Chrome-Installationsprogramm, das zum Testen praktisch war.

msiexec.exe Starten des Chrome-Installationsprogramms über eine Eingabeaufforderung mit erhöhten Rechten:

D:\Users\tannerf>accesschk.exe -p msiexec.exe

[10540] msiexec.exe
  RW BUILTIN\Administrators
  RW NT AUTHORITY\SYSTEM

chrome_installer.exe von MSI erzeugt:

D:\Users\tannerf>accesschk.exe -p chrome_installer.exe

[5552] chrome_installer.exe
     NT AUTHORITY\SYSTEM
     OWNER RIGHTS
  RW NT SERVICE\msiserver

Nicht mehr so ​​geschnitten und trocken! Es sieht so aus, als ob ein chrome_installer.exeProzess über den MSIServer-Dienst ausgeführt wurde.


Ich frage mich daher, wie sich andere Installer verhalten könnten, und habe daher eine Evernote.msi ausgeführt, die ich zur Hand hatte:

Erhöhte msiexec.exe startet ein Evernote-Installationsprogramm:

[6916] msiexec.exe
  High Mandatory Level [No-Write-Up, No-Read-Up]
  RW BUILTIN\Administrators
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS
[4652] msiexec.exe
  System Mandatory Level [No-Write-Up, No-Read-Up]
  R  BUILTIN\Administrators
        PROCESS_QUERY_INFORMATION
        PROCESS_QUERY_LIMITED_INFORMATION

Interessant; Es gibt eine msiexec.exe, die diesmal unter Systemebene ausgeführt wird. Ich habe Process Monitor verwendet, um festzustellen, dass das tatsächlich angezeigte Installationsfenster vom msiexec-Prozess auf Systemebene stammt. Das Beenden der hohen obligatorischen Stufe hat auch den Prozess auf Systemebene beendet.

Nicht erhöhte msiexec.exe startet ein Evernote-Installationsprogramm:

[7472] msiexec.exe
  Medium Mandatory Level [No-Write-Up, No-Read-Up]
  RW DOMAIN\Tannerf
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS
[4404] msiexec.exe
  System Mandatory Level [No-Write-Up, No-Read-Up]
  R  BUILTIN\Administrators
        PROCESS_QUERY_INFORMATION
        PROCESS_QUERY_LIMITED_INFORMATION

Es sieht so aus, als würde Evernote in beiden Fällen Zugriff auf Systemebene erhalten. Ein Doppelklick auf das Installationsprogramm führt zum gleichen Ergebnis.


Fazit:

Ich denke, es ist ziemlich gut demonstriert, dass ein Prozess Berechtigungen erbt, sofern nicht anders angegeben. Dies garantiert nicht, msiexec SomeProgram.msidass alle Prozessprozesse mit einem hohen Pflichtniveau ausgeführt werden. Es kann unter Systemebene oder unter MSIServer ausgeführt werden. Ihr Kilometerstand kann variieren, und ich wäre nicht überrascht, wenn viele Fälle auftreten, in denen diese Regeln "gebrochen" zu sein scheinen.

Tanner Faulkner
quelle
2
Neben empirischen Tests werden Windows - Prozesse sollen erben Berechtigungen vom übergeordneten.
Bob
Toller Punkt beim Test. Ich habe es von einer cmd.exe aus versucht, die mit erhöhten Berechtigungen gestartet wurde, und mir wurde die Berechtigung verweigert, die Datei zu speichern, C:\Windowsobwohl Notepad von der erhöhten cmd.exe aus gestartet wurde. Gibt es eine Möglichkeit, die Regel "soll vom Elternteil erben" zu brechen?
Ian C.
@ IanC. Es ist möglich, einen untergeordneten Prozess mit weniger Berechtigungen auszuführen. Ich hätte meinen vorherigen Kommentar als " standardmäßig erben " formulieren sollen . Ich habe meine Antwort geändert, um diese Informationen aufzunehmen. Notepad sollte jedoch Administratorrechte geerbt haben.
Bob
@ IanC. Seltsam, es hat bei mir funktioniert. Hast du zufällig accesschk probiert? Ich bin mir nicht sicher, was der Unterschied sein könnte.
Tanner Faulkner
11

Standardmäßig erben Windows-Prozesse ihren Sicherheitskontext vom übergeordneten Element:

Die ACLs in der Standardsicherheitsbeschreibung für einen Prozess stammen aus dem primären oder Identitätswechsel-Token des Erstellers.

MSDN zu Prozesssicherheit und Zugriffsrechten

Es ist jedoch möglich, Prozesse mit weniger Berechtigungen zu erzeugen:

Während Prozesse die Integritätsstufe des Prozesses erben, der sie erzeugt hat, kann die Integritätsstufe zum Zeitpunkt der Prozesserstellung angepasst werden. Neben der Definition der Grenze für Fenstermeldungen in der Benutzeroberflächen-Berechtigungsisolationstechnologie wird die obligatorische Integritätssteuerung von Anwendungen wie Windows Explorer, Internet Explorer, Google Chrome und Adobe Reader verwendet, um Dokumente von anfälligen Objekten im System zu isolieren.

Wikipedia zur obligatorischen Integritätskontrolle in Bezug auf diese andere MSDN-Seite , die ebenfalls hier erwähnt wird . In einer anderen Präsentation wird auch die Prozessvererbung erwähnt.

Ich glaube jedoch, dass cmd.exe untergeordnete Prozesse mit der größtmöglichen Vererbung von Berechtigungen starten wird, wie die Tests und Antworten von @ Tanner zeigen.

Bob
quelle
2

Es gibt zwei Möglichkeiten, die Berechtigungen des ausgeführten Befehls aufzuheben:

  • runas /trustlevel:0x20000 "msiexec SomeProgram.msi"(Ausführen runas /showtrustlevels, um zu erfahren, dass dies 0x20000die Standard-Vertrauensstufe für Benutzer ist - dies funktioniert sogar zum Installieren / Ausführen von Programmen, für die erhöhte Berechtigungen "erforderlich" sind - ohne sie tatsächlich zu gewähren, wenn sie als Administrator ausgeführt werden. Dies besteht Tanners Notizblock-Test ) gemäß dieser SU-Antwort
  • psexec -l -d msiexec SomeProgram.msigemäß dieser SU-Antwort (vielleicht sind auch einige "" erforderlich, ich habe dies nicht getestet, da es runasfür mich gut genug funktioniert)
Tobias Kienzler
quelle