11

Если в окне cmd.exe в строке заголовка указано "Администратор", что указывает на то, что оно было запущено с повышенными привилегиями, означает ли это, что все, что я запускаю из этого командного окна, также запускается с повышенными привилегиями?

В частности, если я запускаю что-то вроде:

msiexec SomeProgram.msi

мой установщик запускается с повышенными привилегиями, потому что он был запущен из cmd.exe, который был запущен с повышенными привилегиями?

Более конкретно: мне интересно, если приложения, которые представляют пользовательский интерфейс и сразу возвращают подсказку в окне cmd.exe, как, например, вызов msiexec выше, выполняются с повышенными привилегиями.

3 ответа3

16

Да, он выполняется с повышенными привилегиями.

Простой тест:

Вы можете легко проверить это, открыв одну командную строку с повышенными правами и одну без повышенных прав. Запустите команду 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. Ваш пробег может варьироваться, и я не удивлюсь, увидев много случаев, когда эти правила кажутся "нарушенными".

11

По умолчанию процессы Windows наследуют свой контекст безопасности от родительского:

Списки ACL в дескрипторе безопасности по умолчанию для процесса происходят из основного маркера или маркера олицетворения создателя.

MSDN о безопасности процессов и правах доступа

Однако возможно порождать процессы с меньшими правами:

Хотя процессы наследуют уровень целостности процесса, который его породил, уровень целостности можно настраивать во время создания процесса. Помимо определения границы оконных сообщений в технологии изоляции привилегий пользовательского интерфейса, обязательный контроль целостности используется приложениями, такими как Windows Explorer, Internet Explorer, Google Chrome и Adobe Reader, для изоляции документов от уязвимых объектов в системе.

Википедия по обязательному контролю целостности, относящаяся к этой другой странице MSDN, также упоминается здесь. В другой презентации также упоминается процесс наследования.

Однако я считаю, что cmd.exe запустит дочерние процессы с максимально возможным уровнем наследования привилегий, как показывает тестирование и ответ @ Tanner.

2

Может быть два способа отменить привилегии исполняемой команды:

  • runas /trustlevel:0x20000 "msiexec SomeProgram.msi" (запустите runas /showtrustlevels чтобы узнать, что 0x20000 является уровнем доверия пользователя по умолчанию - это даже работает для установки / запуска программ, которые "требуют" повышенных привилегий - без фактического предоставления их при запуске от имени администратора. Это проходит тест блокнота Таннера) согласно этому ответу SU
  • psexec -l -d msiexec SomeProgram.msi соответствии с этим ответом SU (возможно, требуется также несколько символов "", я не проверял это, так как runas работает достаточно хорошо для меня)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .