Да, он выполняется с повышенными привилегиями.
Простой тест:
Вы можете легко проверить это, открыв одну командную строку с повышенными правами и одну без повышенных прав. Запустите команду notepad.exe
в обоих и попробуйте сохранить пустой текстовый файл в C:\Windows
. Один сохранит, другой выдаст ошибку прав доступа.
Тщательный тест:
Если этого недостаточно, чтобы подтвердить это для вас (это меня не очень устраивало), вы можете использовать AccessChk из SysInternals. Вам нужно будет запустить это из командной строки с повышенными правами.
Давайте начнем с проверки двух запущенных процессов Блокнота:
Блокнот: ( 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
Один работает под моим именем пользователя домена, другой работает под встроенной группой администраторов. Он также имеет высокий обязательный уровень . Вы также можете запустить с -f
флагом для разбивки привилегий и токенов.
MSIExec и MSI файлы
Я думал, что все может стать немного сложнее при запуске msiexec
. У меня есть автономный установщик Google Chrome, который был удобен для тестирования.
msiexec.exe запускает установщик Chrome из командной строки с повышенными правами:
D:\Users\tannerf>accesschk.exe -p msiexec.exe
[10540] msiexec.exe
RW BUILTIN\Administrators
RW NT AUTHORITY\SYSTEM
chrome_installer.exe, созданный MSI:
D:\Users\tannerf>accesschk.exe -p chrome_installer.exe
[5552] chrome_installer.exe
NT AUTHORITY\SYSTEM
OWNER RIGHTS
RW NT SERVICE\msiserver
Уже не так стричь и сушить! Похоже, chrome_installer.exe
процессы запускались через службу MSIServer.
Это заставляет меня задуматься о поведении других инсталляторов, поэтому я запустил Evernote.msi, который мне пригодился:
Повышенный msiexec.exe запускает установщик 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
Интересный; на этот раз есть msiexec.exe, который запускается на системном уровне. Я использовал Process Monitor, чтобы обнаружить, что всплывающее окно фактической установки происходит из процесса msiexec системного уровня. Убийство высокого обязательного уровня также убило процесс системного уровня.
Msiexec.exe без повышенных прав запускает программу установки 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
Похоже, Evernote получит доступ на системном уровне в любом случае. Двойной щелчок установщика приводит к тому же результату.
Вывод:
Я думаю, что это довольно хорошо продемонстрировано, что процессы будут наследовать разрешения, если не указано иное. Это не гарантирует, что msiexec SomeProgram.msi
будет работать с высоким обязательным уровнем для всех процессов процессов; он может работать на системном уровне или под MSIServer. Ваш пробег может варьироваться, и я не удивлюсь, увидев много случаев, когда эти правила кажутся «нарушенными».
C:\Windows
несмотря на то, что запустил Блокнот из повышенного cmd.exe. Есть ли способ нарушить правило «наследовать от родителя»?По умолчанию процессы Windows наследуют свой контекст безопасности от родительского:
MSDN о безопасности процессов и правах доступа
Однако возможно создание процессов с меньшими правами:
Википедия по обязательному контролю целостности, относящаяся к этой другой странице MSDN , также упоминается здесь . В другой презентации также упоминается процесс наследования.
Однако я считаю, что cmd.exe запустит дочерние процессы с максимально возможным уровнем наследования привилегий, как показывает тестирование и ответ @ Tanner.
источник
Может быть два способа отменить привилегии исполняемой команды:
runas /trustlevel:0x20000 "msiexec SomeProgram.msi"
(запустите,runas /showtrustlevels
чтобы узнать, что0x20000
это уровень доверия пользователя по умолчанию - это даже работает для установки / запуска программ, которые «требуют» повышенных привилегий - без фактического предоставления их при запуске от имени администратора. Это проходит тест блокнота Таннера ) согласно этому ответу SUpsexec -l -d msiexec SomeProgram.msi
согласно этому ответу SU (возможно, некоторые "" также требуются, я не проверял это, так какrunas
работает достаточно хорошо для меня)источник