Oui, il s'exécute avec des privilèges élevés.
Test simple:
Vous pouvez tester cela assez facilement en ouvrant une invite de commande élevée et une invite de commande non élevée. Exécutez la commande notepad.exe
dans les deux et essayez d'enregistrer un fichier texte vide dans C:\Windows
. On va enregistrer, on va lancer une erreur de permissions.
Test approfondi:
Si cela ne suffit pas pour le confirmer (cela ne m'a pas vraiment satisfait), vous pouvez utiliser AccessChk de SysInternals. Vous devrez l'exécuter à partir d'une invite de commandes élevée.
Commençons par vérifier les deux processus du Bloc-notes en cours d'exécution:
Bloc-notes: ( 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
L'un s'exécute sous mon nom d'utilisateur de domaine, l'autre s'exécute sous le groupe intégré Administrateurs. Il a également un niveau obligatoire élevé . Vous pouvez également exécuter avec l' -f
indicateur pour une ventilation des privilèges et jetons.
Fichiers MSIExec et MSI
Je pensais que les choses pourraient devenir un peu plus compliquées lors de la course msiexec
. J'ai un programme d'installation autonome de Google Chrome qui était pratique à tester.
msiexec.exe lance le programme d'installation de Chrome à partir d'une invite élevée:
D:\Users\tannerf>accesschk.exe -p msiexec.exe
[10540] msiexec.exe
RW BUILTIN\Administrators
RW NT AUTHORITY\SYSTEM
chrome_installer.exe généré par MSI:
D:\Users\tannerf>accesschk.exe -p chrome_installer.exe
[5552] chrome_installer.exe
NT AUTHORITY\SYSTEM
OWNER RIGHTS
RW NT SERVICE\msiserver
Plus coupé et sec! Il semble qu'un chrome_installer.exe
processus ait été exécuté via le service MSIServer.
Cela me fait me demander quel comportement les autres installateurs pourraient avoir, alors j'ai exécuté un Evernote.msi que j'avais à portée de main:
Elevated msiexec.exe lançant un programme d'installation Evernote:
[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
Intéressant; il y a un msiexec.exe qui est exécuté sous le niveau système cette fois. J'ai utilisé Process Monitor pour constater que la fenêtre d'installation réelle qui apparaît provient du processus msiexec au niveau système. Tuer le niveau obligatoire élevé a également tué le processus au niveau du système.
Msiexec.exe non élevé lançant un programme d'installation Evernote:
[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
On dirait qu'Evernote obtiendra un accès au niveau du système de toute façon. Double-cliquer sur le programme d'installation a le même résultat.
Conclusion:
Je pense qu'il est assez bien démontré qu'un processus héritera des autorisations, sauf indication contraire. Cela ne garantit pas msiexec SomeProgram.msi
l'exécution avec un niveau obligatoire élevé dans tous les processus de processus; il pourrait s'exécuter au niveau du système ou sous MSIServer. Votre kilométrage peut varier, et je ne serais pas surpris de voir de nombreux cas où ces règles semblent être "enfreintes".
C:\Windows
malgré le démarrage du Bloc-notes à partir de l'élévation cmd.exe. Existe-t-il un moyen de rompre la règle "supposé hériter du parent"?Par défaut, les processus Windows héritent de leur contexte de sécurité du parent:
MSDN sur la sécurité des processus et les droits d'accès
Il est cependant possible de générer des processus avec moins de privilèges:
Wikipedia sur le contrôle d'intégrité obligatoire relatif à cette autre page MSDN , également mentionné ici . Une autre présentation mentionne également l'héritage des processus.
Cependant, je crois que cmd.exe lancera des processus enfants avec le plus haut niveau d'héritage de privilèges possible, comme le montrent les tests et les réponses de @ Tanner.
la source
Il peut y avoir deux façons de supprimer les privilèges de la commande exécutée:
runas /trustlevel:0x20000 "msiexec SomeProgram.msi"
(exécutezrunas /showtrustlevels
pour savoir qu'il0x20000
s'agit du niveau de confiance de l'utilisateur par défaut - cela fonctionne même pour l'installation / l'exécution de programmes qui "nécessitent" des privilèges élevés - sans les octroyer réellement lorsqu'ils sont exécutés en tant qu'administrateur. Cela passe le test du bloc-notes de Tanner ) selon cette réponse SUpsexec -l -d msiexec SomeProgram.msi
par cette réponse SU (peut-être que certains "" sont également requis, je n'ai pas testé cela car celarunas
fonctionne assez bien pour moi)la source