Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Секреты Windows: статьи о реестре, rundll32.exe, программах Еще раз о механизме UAC


Другие наши рассылки:
  • Новости IT-мира: Ежедневно ссылки на новости и статьи сайтов ixbt.com, thevista.ru, xakep.ru, securitylab.ru, oszone.ru, inattack.ru, ht.ua, overclockers.ru, центр загрузки Microsoft, softportal.com, realcoding.net, 3dcenter.ru, ladoshki.com, smti.ru, seonews.ru, ibm.com и др.
  • Рецензии на новые книги: Описание новых книг о компьютерах, дизайне, бухгалтерии, психологии и др. направлениях мысли человечества.

Данная статья была написана для журнала Мой компьютер.

Надзирай за надзирателем. Именно этой фразой можно охарактеризовать основное предназначение механизма UAC. Именно благодаря этой фразе отношение к механизму UAC среди администраторов столь отрицательное.

В общем, данной фразе Microsoft обязана многим. Единственное, чему она не обязана этой фразе, так это еще более отрицательному отношению к механизму UAC у обычных пользователей. Здесь вина не в предубеждении, а в излишней назойливости механизма UAC. Согласитесь, как хорошо было раньше — попробовал пользователь сделать что-то, требующее прав администратора, и перед ним отобразилось сообщение с одним и тем же содержанием: в доступе отказано. Ну отказано, так отказано, и все, и забыли. А что же теперь? Да собственно, ничего нового — все то же. Все так же отображается диалог, даже красивее и более функциональный, чем раньше. Единственное, что теперь при отображении диалога Windows переходит на так называемых защищенный рабочий стол. То есть, пока вы не закроете диалог повышения прав (UAC), вы не сможете работать с другими открытыми окнами и функциями Windows. Вот и все. Поэтому возникает вопрос, почему же недовольны обычные пользователи? Давайте подумаем вместе.

Работа UAC: повышение прав доступа

Механизм UAC, впервые реализованный в операционной системе Windows Vista, предназначен для ограничения и контролирования автоматического выполнения действий, которые требуют прав администратора.

Проявление работы То есть, если вы обладаете административными правами и попробуете выполнить какое-либо действие, требующее прав администратора, перед вами отобразится диалог с просьбой подтвердить то, что вы хотите сделать (рисунок 1). Это сделано для того, чтобы различные вредоносные программы не могли автоматически в контексте вашей учетной записи выполнять свои вредоносные действия.

Рисунок 1

Если же вы не обладаете административными правами и попытаетесь выполнить какое-либо действие, требующее прав администратора, перед вами отобразится диалог с просьбой ввести пароль какой-либо административной учетной записи (рисунок 2). Этот диалог также является частью UAC.

Рисунок 2

Единственной учетной записью, которая не ограничивается механизмом UAC, является встроенная учетная запись Администратор. Однако по умолчанию эта учетная запись заблокирована, и перед тем как использовать ее, необходимо выполнить разблокировку с помощью консоли lusrmgr.msc (оснастка Локальные пользователи и группы).

Принцип работы Если это вам не интересно, возможно, вас заинтересует другое — представляете, при использовании механизма UAC даже пользователи с правами администратора работают в операционной системе от имени обычных пользователей. Если вы обычный пользователь, неужели это не вызывает у вас иронии? До чего же нужно было довести Microsoft, чтобы она решила опустить администраторов в разряд обычных пользователей?

На самом деле это очень интересная задумка.

В предыдущих версиях Windows (а также в Windows Vista после отключения UAC) при входе пользователя (администратора) в систему ему выдается единственный маркер доступа, содержащий в себе описание всех прав и возможностей (административных задач), которые разрешено выполнять пользователю.

А вот в Windows Vista с включенным механизмом UAC пользователю с правами администратора выдается сразу два маркера: фильтрованный маркер доступа обычного пользователя и полный маркер доступа администратора. При запуске оболочки (explorer.exe) используется фильтрованный маркер доступа обычного пользователя. То есть, как оболочка, так и все вызываемые с ее помощью диалоги и программы запускаются от имени обычного пользователя. А вот если администратор при запуске программы, в появившемся диалоге UAC, подтвердил запуск программы, тогда эта самая программа будет запущена с использованием полного маркера доступа администратора. Также запустить программу с использованием полного маркера доступа администратора можно при помощи команды Запустить от имени администратора контекстного меню значка или ярлыка программы.

Возникает еще один вопрос, какие же программы требуют повышения прав доступа? На этот вопрос нам поможет ответить сама операционная система: если для запуска программы требуются административные права доступа, тогда в правом нижнем углу значка программы появится значок щита (рис 3).

Рисунок 3

Например, среди стандартных программ требованием административного доступа могут похвастаться следующие:

  • Консоли mmc.exe. CompMgmtLauncher.exe (управление компьютером), perfmon.exe (монитор надежности и производительности), mmc.exe (консоль управления Microsoft), eventvwr.exe (просмотр событий), dcomcnfg.exe (службы компонентов).
  • Диалог Свойства системы. SystemPropertiesHardware.exe (вкладка Оборудование), SystemPropertiesPerformance.exe (вкладка Визуальные эффекты диалога Параметры быстродействия), SystemPropertiesProtection.exe (вкладка Защита системы), SystemPropertiesAdvanced.exe (вкладка Дополнительно), SystemPropertiesRemote.exe (вкладка Удаленное использование) SystemPropertiesComputerName.exe (вкладка Имя компьютера), SystemPropertiesDataExecutionPrevention.exe (предотвращение выполнения данных).
  • Апплеты. iscsicpl.exe (Свойства: Инициатор iSCSI), odbcad32.exe (Администратор источников данных ODBC), cliconfg.exe (программа сетевого клиента SQL-сервер), bthudtask.exe (работа с устройствами Bluetooth).
  • Диалоги. OptionalFeatures.exe (компоненты Windows), sysprep.exe (программа подготовки системы к клонированию), syskey.exe (программа изменения места хранения ключа доступа к зашифрованным ветвям реестра), Netplwiz.exe (учетные записи пользователей), msconfig.exe (конфигурации системы), MdSched.exe (средство диагностики памяти Windows), FirewallSettings.exe (параметры брандмауэра Windows), DpiScaling.exe (масштабирование).
  • Мастера. BitLockerWizard.exe, rstrui.exe (восстановление системы) , shrpubw.exe (мастер создания общих ресурсов), hdwwiz.exe (установка оборудования), msdt.exe (средство диагностики технической поддержки Microsoft), ComputerDefaults.exe (настройка доступа программ и умолчаний), mrt.exe (средство удаления вредоносных программ).
  • Установщики. wusa.exe (установка обновлений Windows), rrinstaller.exe, PkgMgr.exe (установка компонентов Windows), ocsetup.exe (установка компонентов Windows), lpksetup.exe (установка нового языка), InfDefaultInstall.exe (установка inf-файлов), tcmsetup.exe (установка клиента телефонии), а также все программы для удаления и обновления (не зависимо от того, что именно они удаляют/обновляют).
  • Программы. SecEdit.exe (работа с шаблонами безопасности), regedt32.exe (редактор реестра), regedit.exe (редактор реестра), WinSAT.exe (определение быстродействия компьютера, оценка системы), eudcedit.exe (редактор личных знаков), diskpart.exe (работа с жесткими дисками), diskraid.exe (работа с RAID-массивами), chkntfs.exe (проверка ошибок файловой системы), TpmInit.exe (настойка модуля TPM), sdbinst.exe, netcfg.exe (установка/удаление сетевых компонентов Windows), iscsicli.exe (настройка прав доступа).
  • Другое. printui.exe (набор команд rundll32.exe для работы с принтером), wpcer.exe (запрос на перекрытие для службы родительского контроля Windows), dfrgui.exe (выполнение автоматической дефрагментации), wmpconfig.exe (настройка Windows Media Player).

Также административного доступа могут требовать только отдельные функциональные возможности компонентов Windows. Например, изменение настроек службы времени, изменение даты и времени, а также архивирование всего компьютера (Windows Complete PC).

Проявление UAC при доступе к папкам Существует два вида диалогов повышения прав доступа UAC. Первый из них появляется при попытке запуска какой-либо программы. Второй же появляется при попытке доступа/копирования в папку, разрешение на доступ/копирование в которую пользователь не имеет. Надеюсь, теперь вы понимаете, почему система так часто отображается диалоги UAC при работе с папками Windows: поскольку проводник запущен от имени обычного пользователя, то и работа с папками (копирование) происходит от его имени, а не от имени администратора.

Настройка диалога повышения прав доступа Как и большинство компонентов Windows, работу диалога повышения прав доступа можно настроить. Делается это при помощи групповых политик: элементов раздела Конфигурация компьютера/Конфигурация Windows/Параметры безопасности/Локальные политики/Параметры безопасности оснастки Редактор объектов групповой политики (рисунок 4).

Рисунок 4

Управление учетными записями пользователей: переключение к безопасному рабочему столу при выполнении запроса на повышение прав. По умолчанию диалог UAC выводится на безопасный рабочий стол (это видно по тому, что при выводе диалога UAC все остальные элементы рабочего стола затемняются, и вы не можете получить доступа к ним до тех пор, пока не закроете диалог UAC). С помощью же данной политики можно добиться вывода диалога UAC на обычный рабочий стол.

Если диалог UAC будет выводиться на рабочий стол пользователя, тогда вы сможете работать с другими программами даже тогда, когда для одной из них отображен диалог UAC. Кроме того, любые вредоносные программы смогут программно управлять данным диалогом, например, автоматически разрешить запуск приложения.

Управление учетными записями пользователей: поведение запроса на повышение прав для администраторов в режиме одобрения администратором. Пусть вас не пугает эта страшная фраза: «режим одобрения». На самом деле работой в режиме одобрения называется работа администратора с включенным механизмом UAC. То есть, данная политика позволяет отключить UAC для административных учетных записей. Для этого необходимо установить ее в состояние Повышение без запроса.

Управление учетными записями пользователей: поведение запроса на повышение прав для обычных пользователей. Данная политика позволяет отключить UAC для обычных пользователей (для этого установите политику в состояние Автоматически отклонять запросы на повышение прав). То есть, после отключения UAC при попытке обычных пользователей выполнить действия, требующие административные права, операционная система запретит им сделать это.

Управление учетными записями пользователей: повышать права для UIAccess-приложений только при установке в безопасных местах. По умолчанию приложение может устанавливаться с повышенными правами (на уровне целостности UIAccess, то есть с записью с пометкой UIAccess=true в манифесте приложения) только в том случае, если оно находится в каталоге %programfiles%, либо %systemroot%. Несколько слов об уровнях целостности будет сказано чуть позже в этой статье.

Если же вы отключите данную политику, тогда на уровне UIAccess будет разрешено запускать любые приложения, не зависимо от того, в каком каталоге они находятся.

Управление учетными записями пользователей: повышение прав только для подписанных и проверенных исполняемых файлов. По умолчанию механизм повышения прав может применяться при запуске любых приложений. Если же вы установите данную политику, тогда использование механизма повышения прав будет разрешено только для тех программ, которые имеют цифровую подпись.

Контроль учетных записей пользователей: режим одобрения администратором для встроенной учетной записи администратора. Как было сказано ранее, механизм UAC не применяется для встроенной учетной записи Администратор. Если же вы включите данную политику, тогда применение UAC будет выполняться даже для встроенной учетной записи администратора.

Работа UAC: установка приложений

Также механизм UAC используется для определения того, может ли обычный пользователь запустить инсталляцию конкретного приложения. Эта проверка выполняется при каждом запуске какой-либо программы, и действует примерно так.

  • Пользователь пытается запустить программу и API-функция ShellExecute вызывает функцию CreateProcess.
  • Функция CreateProcess вызывает системы AppCompat, Fusion и Installer Detection, которые и определяют, может ли данный пользователь просто запустить программу, или эта программа требует прав администратора, а значит, требует запуска UAC. Также данная функция проверяет значение requestedExecutionLevel из манифеста программы. Это значение непосредственно указывает на уровень пользователя, который необходим для запуска программы, однако в контексте данной статьи оно нам не интересно.
  • Если система обнаружения установщика Installer Detection определяет, что данная программа является установщиком, которому к тому же еще и требуются права администратора, тогда функция CreateProcess возвращает ошибку ERROR_ELEVATION_REQUIRED (требуется расширение полномочий).
  • Получив ошибку ERROR_ELEVATION_REQUIRED, функция ShellExecute выполняет запуск диалога UAC.

Настройка UAC при установке приложений Данное проявление работы механизма UAC также настраивается при помощи групповых политик: элементов раздела Конфигурация компьютера/Конфигурация Windows/Параметры безопасности/Локальные политики/Параметры безопасности оснастки Редактор объектов групповой политики.

Управление учетными записями пользователей: обнаружение установки приложений и запрос на повышение прав. Итак, как мы поняли, если обычный пользователь пытается установить программу, которой необходимы административные права, перед ним отобразится диалог повышения прав доступа. При помощи данной политики вы можете запретить отображение данного диалога.

Кроме того, работу UAC при установке приложений можно настроить с помощью групповых политик раздела Конфигурация компьютера/Административные шаблоны/Система/Диагностика/Диагностика совместимости приложений. В данном разделе нам интересны следующие групповые политики.

Обнаружение средств установки приложений, требующих прав администратора. Данная политика позволяет отключить обнаружение установщиков программ, для которых механизм UAC запретил запуск с правами администратора. По умолчанию если система обнаружит потенциальный запрет на запуск с правами администратора, она отобразит диалог с предложением ручного перезапуска установки программы с правами администратора.

Обнаружение приложений, неспособных запустить средства установки при включенном контроле учетных записей пользователей (UAC). Данная политика позволяет отключить обнаружение установщиков программ, которые не смогут работать со включенным механизмом UAC (либо из-за самого установщика, либо из-за дочерних процессов установщика). По умолчанию если система обнаружит, что инсталляция программы не сможет пройти при включенном UAC, она задействует режим совместимости ELEVATECREATEPROCESS (то есть, средство установки будет считать, что оно обладает правами администратора).

Работа UAC: механизм виртуализации

Механизм виртуализации файловой системы и реестра — еще одно проявление работы UAC. Основное его назначение заключается в следующем.

Если какая-либо программа, не имеющая административных прав, пытается выполнить запись в охраняемые механизмом виртуализации каталоги и ветви реестра, тогда механизм UAC автоматически (невидимо для программы) перенаправляет запись данной программы в другое место. Для каталогов это %userprofile%\AppData\Local\VirtualStore\[путь к каталогу, в который пытается записать данные программа, без буквы диска]. А для ветвей реестра это HKEY_CURRENT_USER\Software\Classes\VirtualStore\[путь к ветви реестра, в которую пытается записать данные программа].

По умолчанию данный механизм применяется для каталогов %ProgramFiles%, %Windir%, %Windir%\system32, а также для ветви реестра HKEY_LOCAL_MACHINE\Software.

То есть, обратите внимание на такой пример. По умолчанию программа QIP помещает файлы, переданные непосредственно с ее помощью, в папку вида %programfiles%\QIP\Users\«ваш номер ICQ»\RcvdFiles\«номер ICQ передающего файл». Если же вы работаете с включенной виртуализацией, тогда впоследствии не сможете найти в этой папке переданных данных — они будут находиться в каталоге %userprofile%\AppData\Local\VirtualStore\Program Files\QIP\Users\«ваш номер ICQ»\RcvdFiles\«номер ICQ передающего файл».

Настройка механизма виртуализации Вы можете самостоятельно отключить работу механизма виртуализации для конкретных подразделов ветви реестра HKEY_LOCAL_MACHINE\Software. Для этого достаточно воспользоваться командой вида reg flags [ветвь реестра] set DONT_VIRTUALIZE. Если же необходимо вернуть возможность виртуализации для определенной ветви реестра, следует воспользоваться командой reg flags [ветвь реестра] set. Данная команда для указанной ветви реестра сбрасывает флаги DONT_VIRTUALIZE, DONT_SILENT_FAIL, RECURSE_FLAG.

Кроме того, вы можете полностью отключить механизм виртуализации без отключения UAC. Для этого достаточно воспользоваться политикой Управление учетными записями пользователей: виртуализация сбоев записи в файл или реестр в расположения пользователей раздела Конфигурация компьютера/Конфигурация Windows/Параметры безопасности/Локальные политики/Параметры безопасности оснастки Редактор объектов групповой политики.

Механизм целостности

Механизм UAC является лишь частью более глобального механизма, называемого механизмом целостности. Механизм целостности вводит в систему 6 уровней целостности, выполняя следующее ограничение по их использованию: приложения с более низким уровнем целостности не могут изменять приложения с более высоким уровнем целостности.

Итак, существует 6 уровней целостности.

  • Доверенный инсталлятор. Самый высокий уровень целостности. Объекты (программы) с данным уровнем могут вносить любые изменения в ОС. Например, данным уровнем целостности обладает «мифическая» учетная запись Trusted Installer (такой учетной записи нет ни в одном из списков учетных записей Windows, однако она является владельцем критически важных файлов и ветвей реестра), с использованием которой работает процесс trustedInstaller.exe (служба Установщик модулей Windows). Данная служба используется при установке и удалении компонентов операционной системы.
  • Системный. Объекты с данным уровнем целостности являются частью операционной системы. Например, данным уровнем целостности обладают учётные записи локальной и сетевой службы.
  • Высокий. Данным уровнем целостности обладает учетная запись администратора, а также такие учетные записи, как оператор архива или оператор шифрования.
  • Средний. Данным уровнем целостности обладают стандартные учётные записи пользователей.
  • Низкий. Данным уровнем целостности обладает учётная запись Everyone, а также временные файлы.
  • Недоверенный. Данным уровнем целостности обладают анонимные и гостевые учётные записи.
Отключение UAC

Как мы определились в начале статьи, у администраторов и обычных пользователей механизм UAC вызывает отрицательные эмоции. Причем складывается такое ощущение, что отрицание вкралось уже и в подсознание людей: как у собачек Павлова. Как только прозвенел звонок, сразу же начинается слюноотделение у собачек Павлова. Как только появился намек на UAC, сразу же возникают отрицательные эмоции.

В общем, если данная статья не убедила вас в полезности диалога UAC, тогда давайте продолжим ее чтение. Но перед этим давайте перечислим все плюсы UAC (минус у него, как мы уже узнали, только один — излишняя назойливость, которую, кстати, в SP1 для Windows Vista обещали снизить).

  • Контроль над запуском программ, требующих прав администратора.
  • Исключение автоматического запуска программ.
  • Контроль модификации ветвей реестра, каталогов и файлов, доступ к которым запрещен обычному пользователю.
  • Возможности виртуализации.
  • Облегчение установки программ, требующих прав администратора.

Несмотря на всю привлекательность UAC с точки зрения безопасности компьютера, с точки зрения удобства эта технология вызывает не только возгласы негодования, но и желание поскорее ее отключить. Конечно, отключение UAC нельзя назвать лучшим выходом из положения, но, тем не менее, давайте рассмотрим и эту возможность.

Отключить UAC можно многими способами.

Программа msconfig.exe. Например, можно воспользоваться элементом Отключить контроль учетных записей (UAC) списка, расположенного на вкладке Сервис программы msconfig.exe. После выбора данного элемента достаточно нажать на кнопку Запуск, чтобы механизм UAC вас больше не беспокоил.

Мастер Учетные записи пользователей. Также отключить UAC можно при помощи ссылки Включение и отключение контроля учетных записей (UAC) мастера Учетные записи пользователей. Вызвать данный мастер можно многими способами, например:

  • при помощи панели управления (раздел Учетные записи пользователей и семейная безопасность);
  • при помощи команды control.exe USERPASSWORDS;
  • щелкнув по значку пользователя в меню Пуск.

Оснастка Редактор объектов групповой политики. Еще одним способом настройки UAC является использование политики Управление учетными записями пользователей: все пользователи, включая администраторов, работают как обычные пользователи раздела Конфигурация компьютера/Конфигурация Windows/Параметры безопасности/Локальные политики/Параметры безопасности оснастки Редактор объектов групповой политики.

Последнее слово

Ну что? Вы все-таки решили отключить UAC? Тогда перед этим прочитайте следующие три абзаца статьи.

Хотелось бы рассказать об интересной альтернативе полного отключения UAC. Эту альтернативу мы уже рассматривали выше. Это политики Управление учетными записями пользователей: поведение запроса на повышение прав для администраторов в режиме одобрения администратором и Управление учетными записями пользователей: поведение запроса на повышение прав для обычных пользователей. Только ради примера давайте попробуем установить эти политики равными, соответственно, Повышение без запроса (рисунок 5) и Автоматически отклонять запросы на повышение прав. Что же у нас после этого получилась? Как мы и хотели, при открытии программ диалог повышения прав не отображается. Однако хотелось бы привести один пример.

Рисунок 5

Как и многие пользователи, автор данной статьи пользуется программой Mail.Ru Agent. Все в этой программе чудесно, кроме одного — при своем запуске она автоматически помещает себя в ветвь реестра для автозагрузки (ветвь HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run). А если я не хочу этого? Между прочим, так делают всякие вирусы и вредоносные программы…

Так вот, если вы установите рассмотренные выше политики в значения Повышение без запроса и Автоматически отклонять запросы на повышение прав, тогда программа Mail.Ru Agent, как и всякие вредоносные программы, не сможет без вашего разрешения добавлять себя в автозагрузку. Именно поэтому я советую вместо полного отключения механизма UAC отключить только отображение диалогов на повышение прав доступа. Эффект от механизма UAC почти тот же, а назойливость намного меньше.

На этом данную статью и предполагалось завершить. Однако буквально перед ее отправкой в редакцию возникла еще одна маленькая проблемка, о которой хотелось бы рассказать. При включенном UAC запускать и останавливать пакет веб-сервера DENVER (при помощи его ярлыков Run и Stop) можно только с правами администратора. Происходит это из-за того, что хотя запуск DENVER и не требует прав администратора (то есть, диалог UAC не вызывается), однако он пытается выполнить модификацию файла hosts каталога %systemroot%\system32\driver\etc. Итак, при использовании UAC возникает дилемма: ярлык запускается, однако сервер запуститься не может. Выход из этой дилеммы прост, однако хотелось бы его напомнить: в диалоге Свойства ярлыков на запуск и остановку сервера нажмите на кнопку Дополнительно… и в появившемся диалоге установите флажок Запуск от имени администратора. Теперь пакет DENVER всегда будет запускаться с правами администратора (только давайте не будем в этой статье учитывать аспект безопасности такого вида запуска). Точно также можно устанавливать запуск по умолчанию от имени администратора и для других ярлыков на программы.

Оригинал статьи: http://www.onestyle.com.ua/txt.php?u=104

В избранное