Sí, se ejecuta con privilegios elevados.
Prueba simple:
Puede probar esto con bastante facilidad abriendo un símbolo del sistema elevado y uno no elevado. Ejecute el comando notepad.exe
en ambos e intente guardar un archivo de texto en blanco en C:\Windows
. Uno guardará, uno arrojará un error de permisos.
Prueba exhaustiva:
Si eso no es suficiente para confirmarlo (realmente no me satisfizo), puede usar AccessChk de SysInternals. Deberá ejecutar esto desde un símbolo del sistema elevado.
Comencemos revisando los dos procesos de Bloc de notas que se están ejecutando:
Bloc de notas: ( 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
Uno se ejecuta con mi nombre de usuario de dominio, el otro se ejecuta con el grupo integrado Administradores. También tiene un alto nivel obligatorio . También puede ejecutar con la -f
bandera para un desglose de los privilegios y tokens.
MSIExec y archivos MSI
Pensé que las cosas podrían complicarse un poco más cuando se ejecuta msiexec
. Tengo un instalador independiente de Google Chrome que fue útil para probar.
msiexec.exe inicia el instalador de Chrome desde el indicador elevado:
D:\Users\tannerf>accesschk.exe -p msiexec.exe
[10540] msiexec.exe
RW BUILTIN\Administrators
RW NT AUTHORITY\SYSTEM
chrome_installer.exe generado por MSI:
D:\Users\tannerf>accesschk.exe -p chrome_installer.exe
[5552] chrome_installer.exe
NT AUTHORITY\SYSTEM
OWNER RIGHTS
RW NT SERVICE\msiserver
¡Ya no está tan cortado y seco! Parece que un chrome_installer.exe
proceso se ejecutó a través del servicio MSIServer.
Esto me hace preguntarme qué comportamiento podrían tener otros instaladores, así que ejecuté un Evernote.msi que tenía a mano:
Elevado msiexec.exe al iniciar un instalador de 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
Interesante; hay un msiexec.exe que se ejecuta bajo el nivel del sistema esta vez. Utilicé Process Monitor para encontrar que la ventana de instalación real que aparece proviene del proceso msiexec a nivel de sistema. Matar el alto nivel obligatorio también mató el proceso de nivel del sistema.
Msiexec.exe no elevado que inicia un instalador de 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
Parece que Evernote obtendrá acceso a nivel de sistema de cualquier manera. Hacer doble clic en el instalador tiene el mismo resultado.
Conclusión:
Creo que está bastante bien demostrado que los procesos heredarán permisos a menos que se especifique lo contrario. Eso no garantiza que msiexec SomeProgram.msi
se ejecutará con un alto nivel obligatorio en todos los procesos; podría ejecutarse bajo el nivel del sistema o bajo MSIServer. Su kilometraje puede variar, y no me sorprendería ver muchos casos en los que estas reglas parecen estar "rotas".
C:\Windows
pesar de haber iniciado el Bloc de notas desde el cmd.exe elevado. ¿Hay alguna manera de romper la regla "se supone que hereda del padre"?Por defecto, los procesos de Windows heredarán su contexto de seguridad del padre:
MSDN sobre seguridad de procesos y derechos de acceso
Sin embargo, es posible generar procesos con menos privilegios:
Wikipedia sobre Control de integridad obligatorio relacionado con esta otra página de MSDN , también mencionada aquí . Otra presentación también menciona la herencia del proceso.
Sin embargo, creo que cmd.exe lanzará procesos secundarios con el mayor nivel de herencia de privilegios posible, como lo demuestran las pruebas y la respuesta de @ Tanner.
fuente
Puede haber dos formas de eliminar los privilegios del comando ejecutado:
runas /trustlevel:0x20000 "msiexec SomeProgram.msi"
(ejecuterunas /showtrustlevels
para aprender que0x20000
es el nivel de confianza predeterminado del usuario, esto incluso funciona para instalar / ejecutar programas que "requieren" privilegios elevados, sin otorgarlos realmente cuando se ejecuta como administrador. Esto pasa la prueba del bloc de notas de Tanner ) según esta respuesta SUpsexec -l -d msiexec SomeProgram.msi
según esta respuesta SU (quizás también se requieran algunos "", no probé esto ya querunas
funciona lo suficientemente bien para mí)fuente