|
Управление учетными записями
пользователей (UAC) — функция Windows Vista, которую часто
недооценивают. В моей серии из трех статей в журнале TechNet
Magazine, посвященной нововведениям в ядре Windows Vista,
которую можно прочесть на веб-узле technetmagazine.com, я не
касался UAC, поскольку чувствовал, что эта тема достойна отдельной
статьи.
В этой статье мы затронем
проблемы, которые решает UAC, а также архитектуру и реализацию ее
ключевых технологий. Эти технологии включают пересмотр операций,
которые ранее требовали административных прав; облегченную
виртуализацию, которая помогает программам правильно работать без
административных привилегий; возможность явного запроса программами
административных прав и изоляцию административных процессов от
неадминистративных, работающих в той же пользовательской
системе.
Назначение
UAC
Функция UAC призвана
обеспечить пользователям возможность работать с правами обычного
пользователя, не прибегая к административным. Обладая
административными правами, пользователь может просматривать и
изменять любую часть операционной системы, включая код и данные
других пользователей и даже самой Windows®. Без административных прав пользователи не
могут случайно (или преднамеренно) изменить системные параметры,
вредоносная программа не может изменить параметры системной
безопасности или отключить антивирусное программное обеспечение, а
пользователи не могут нарушить безопасность важных данных других
пользователей на общедоступных компьютерах. Работа с правами
обычного пользователя, таким образом, помогает уменьшить количество
срочных вызовов службы поддержки в корпоративных средах, смягчить
ущерб от вредоносной программы, способствует более четкой работе
домашних компьютеров и защищает уязвимые данные на
общедоступных.
С помощью UAC предполагалось
решить несколько проблем с тем, чтобы работа под учетной записью
обычного пользователя стала общепринятой практикой. Во-первых, до
Windows Vista™ общепринятой моделью использования Windows была
работа с привилегиями администратора. Разработчики программного
обеспечения почему-то считали, что их программы должны иметь
получать доступ и изменять любой файл, параметр реестра или
настройку операционной системы. Даже когда в Windows NT® были введены функции безопасности и разные
уровни доступа для административных учетных записей и обычных
пользователей, в процессах настройки продолжала широко
использоваться встроенная учетная запись “Администратор” или учетная
запись, входящая в группу “Администраторы”.
Второй проблемой, которую
должна была решить функция UAC, было то, что пользователи иногда
нуждаются в административных правах для выполнения таких операций,
как установка программного обеспечения, изменение системного времени
и открытие портов в брандмауэре.
Решение этих проблем с
помощью UAC состоит в том, чтобы большинство приложений запускать с
правами обычного пользователя, исключить потребность в частом
использовании прав администратора и поощрять разработчиков
программного обеспечения создавать приложения, работающие с правами
обычного пользователя. UAC достигает этого, реже требуя
административных прав, обеспечивая работу более ранних версий
приложений с правами обычного пользователя, позволяя обычным
пользователями легко получать административные права (когда они в
них действительно нуждаются), а администраторам — работать так, как
если бы они были обычными пользователями.
Работа с правами обычного
пользователя
В ходе полной проверки всех
административных операций во время разработки Windows Vista было
установлено, что многие из них могли бы выполняться обычными
пользователями без ущерба для безопасности системы. К примеру, даже
корпорации, в которых на настольных системах Windows XP принято
использовать учетные записи обычных пользователей, не могли удалить
своих мобильных пользователей из группы “Администраторы” по той
простой причине, что Windows XP не делает отличий между изменением
часового пояса и изменением системного времени. Пользователь
переносного компьютера, который хочет настроить локальный часовой
пояс так, чтобы в поездках его встречи правильно отображались в
календаре, должен иметь привилегию “Изменение системного времени”
(внутреннее имя SeSystemTimePrivilege), которая по умолчанию
предоставляется только администраторам.
Время обычно используется в
протоколах безопасности, таких как Kerberos, но часовой пояс влияет
только на способ отображения времени. Поэтому в Windows Vista
добавлена новая привилегия, “Изменение часового пояса”
(SeTimeZonePrivilege), которая назначена группе “Пользователи” (см.
рис. 1). Это позволяет корпоративным
пользователям переносных компьютеров работать с учетными записями
обычных пользователей.
Рис.
1 Привилегия “Изменение часового
пояса”
Windows Vista также позволяет
обычным пользователям настраивать параметры WEP-шифрования при
подключении к беспроводным сетям, создавать подключения к
виртуальной частной сети, изменять параметры управления
электропитанием и устанавливать критические обновления Windows.
Кроме того, в Windows Vista введены параметры групповой политики, с
помощью которых обычные пользователи могут устанавливать драйверы
принтера и других устройств, одобренные ИТ-администраторами, и
устанавливать элементы управления ActiveX®
с одобренных администраторами веб-узлов.
А что же потребительские и
бизнес-приложения, которые неправильно работали с учетными записями
обычного пользователя? Хотя для работы некоторых программ
действительно требуются административные права, многие из них
совершенно необоснованно хранят пользовательские данные в областях,
общих для всей системы. Корпорация Майкрософт рекомендует, чтобы
установщики глобальных приложений, которые должны работать с
административными правами, для хранения исполняемых файлов и
вспомогательных данных приложений создавали подкаталоги в каталоге
%ProgramFiles%, а для параметров приложений — подраздел в разделе
реестра HKEY_LOCAL_MACHINE\Software. Приложение может работать с
разными учетными записями пользователей и поэтому должно хранить
данные пользователей в соответствующих им каталогах %AppData%, а
параметры, относящиеся к данному пользователю — в профиле
пользователя в разделе реестра HKEY_CURRENT_USER\Software. Учетные
записи обычного пользователя не имеют доступа для записи к каталогу
%ProgramFiles% и разделу HKEY_LOCAL_MACHINE\Software. Однако,
поскольку большинство систем Windows является однопользовательскими,
а большинство пользователей вплоть до Windows Vista были
администраторами, то приложения, даже если неправильно сохраняли
пользовательские данные и параметры в этих местах, в любом случае
работали.
В Windows Vista эти старые
приложения могут работать с учетными записями обычного пользователя
за счет применения виртуализации файловой системы и пространства
имен реестра. Когда приложение изменяет данные в частях файловой
системы или реестра, общих для всей системы, и эта операция проходит
неудачно из-за отказа в доступе, Windows перенаправляет операцию в
область соответствующего пользователя. Когда приложение считывает
данные из системно-глобального размещения, Windows сначала проверяет
данные в области пользователя и, если их там не находит, разрешает
чтение из глобального размещения.
Для целей этой виртуализации
Windows Vista обрабатывает процесс как устаревший, если он
32-разрядный (а не 64-разрядный), выполняется не с административными
правами и не имеет файла манифеста, указывающего, что он написан для
Windows Vista. Любые операции, происходящие из процесса, не
подпадающего под это определение, включая доступ к сетевому общему
файловому ресурсу, не виртуализуются. Состояние виртуализации
процесса хранится в виде флага в его маркере, представляющем собой
структуру данных ядра, которая отслеживает контекст безопасности
процесса, включая его учетную запись пользователя, членство в
группах и привилегии.
Чтобы увидеть состояние
виртуализации процесса, можно добавить столбец “Виртуализация” к
странице “Процессы” диспетчера задач. На рис.
2 показано, что для большинства компонентов Windows Vista,
включая диспетчер окон рабочего стола (Dwm.exe), подсистему
клиент-серверной среды выполнения (Csrss.exe) и проводник,
виртуализация отключена, поскольку они либо обладают манифестом
Windows Vista, либо выполняются с административными правами и,
следовательно, не допускают виртуализацию. Для обозревателя Internet
Explorer® (iexplore.exe) виртуализация
включена, так как он может поддерживать элементы управления ActiveX
и сценарии и не должен полагаться на то, что они будут правильно
работать с правами обычного пользователя.
Рис.
2 Состояние виртуализации в окне
диспетчера задач
Области файловой системы,
виртуализуемые для устаревших процессов, — это %ProgramFiles%,
%ProgramData% и %SystemRoot%, за исключением некоторых определенных
подкаталогов. Однако из виртуализации исключаются все файлы с
расширением исполняемого файла, в том числе EXE, BAT, SCR, VBS и
другие. В результате программы, которые обновляют себя под учетной
записью обычного пользователя, терпят сбой вместо создания частных
версий своих исполняемых файлов, которые не видны администратору,
запускающему глобальный модуль обновления. Чтобы добавить к списку
исключений дополнительные расширения, введите их в следующем разделе
реестра и перезагрузите компьютер:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Luafv\Parameters\ExcludedExtensionsAdd
Для ввода
нескольких расширений следует использовать мультистроковый тип,
вводя каждое расширение в отдельной строке без начальной точки.
Изменения, производимые в
виртуализованных каталогах устаревшими процессами, перенаправляются
в виртуальный корневой каталог пользователя,
%LocalAppData%\VirtualStore. Например, если виртуализованный
процесс, работающий в моей системе, создает файл
C:\Windows\Application.ini, фактически создается файл
C:\Users\Markruss\AppData\Local\VirtualStore\Windows\Application.ini.
Элемент пути Local указывает на тот факт, что если учетная запись
имеет перемещаемый профиль, виртуализованные файлы не перемещаются с
остальной частью профиля.
Если в проводнике перейти к
каталогу, содержащему виртуализованные файлы, на панели инструментов
появляется кнопка “Файлы совместимости” (рис.
3). Нажатие этой кнопки открывает соответствующий подкаталог
VirtualStore, в котором собраны виртуализованные файлы.
Рис.
3 Кнопка “Файлы совместимости”
говорит о наличии где-то рядом виртуализованных файлов
На рис.
4 показано, как драйвер фильтра UAC для виртуализации файлов
(%SystemRoot%\System32\Drivers\Luafv.sys) реализует виртуализацию
файловой системы. Поскольку это драйвер фильтра файловой системы, он
видит все операции в файловой системе, но реализует функциональные
возможности только для операций из устаревших процессов. Как видно
на рисунке, он изменяет путь целевого файла для устаревшего
процесса, который создает файл в размещении, общем для всей системы,
но не делает этого для процесса приложения Windows Vista,
работающего с правами обычного пользователя. Устаревший процесс
полагает, что операция прошла успешно, если она фактически создала
файл в размещении, полностью доступном пользователю. Но применяемые
по умолчанию разрешения для каталога \Windows не дают доступа к нему
приложению, написанному для Windows Vista.
Рис. 4 Виртуализация файловой системы
Виртуализация реестра
реализована несколько иначе, чем виртуализация файловой системы.
Виртуализованные разделы реестра включают большую часть ветви
HKEY_LOCAL_MACHINE\Software, но есть и многочисленные исключения,
например следующие:
HKLM\Software\Microsoft\Windows
HKLM\Software\Microsoft\Windows NT
HKLM\Software\Classes
Виртуализуются только
разделы, которые часто изменяются устаревшими приложениями, но не
вызывают проблем совместимости или взаимодействия. Windows
перенаправляет операции изменения виртуализуемых разделов устаревшим
приложением в виртуальный корневой раздел реестра пользователя в
разделе HKEY_ CURRENT_USER\Software\Classes\VirtualStore. Этот
раздел расположен в файле
%LocalAppData%\Microsoft\Windows\UsrClass.dat, в кусте Classes
пользователя, который, как и все прочие данные виртуализованных
файлов, с перемещаемым профилем пользователя не перемещается.
Вместо хранения
фиксированного списка виртуализованных размещений, как это делается
для файловой системы, состояние виртуализации раздела хранится в
виде флага REG_ KEY_DONT_VIRTUALIZE в самом разделе. С помощью
служебной программы Reg.exe можно просмотреть этот флаг, а также два
других флага, связанные с виртуализацией, — REG_KEY_
DONT_SILENT_FAIL и REG_KEY_ RECURSE_FLAG (см. рис. 5). Если флаг REG_KEY_DONT_SILENT_FAIL установлен и раздел не виртуализован (установлен флаг
REG_KEY_DONT_VIRTUALIZE), устаревшему приложению, которому иначе
было бы запрещено выполнять операции с разделом, предоставляется
любой уровень доступа к разделу, который имеет пользователь, вместо
доступа, затребованного приложением. Флаг REG_KEY_RECURSE_FLAG указывает, наследуют ли новые разделы флаги виртуализации
родительского раздела, а не только флаги, применяемые по
умолчанию.
Рис.
5 Служебная программа Reg
показывает флаги виртуализации
На рис.
6 показано, как виртуализация реестра реализуется диспетчером
конфигураций, который управляет реестром в ядре операционной
системы, Ntoskrnl.exe. Как и в случае с виртуализацией файловой
системы, устаревший процесс, создающий подраздел виртуализованного
раздела, перенаправляется в виртуальный корневой раздел реестра
пользователя, но процессу Windows Vista будет отказано в доступе
применяемыми по умолчанию разрешениями.
Кроме виртуализации файловой
системы и реестра, для правильной работы с правами обычного
пользователя некоторых приложений требуется дополнительная
поддержка. Например, приложение, которое проверяет членство учетной
записи, под которой оно работает, в группе “Администраторы”,
откажется работать, если учетная запись не входит в эту группу.
Поэтому Windows Vista определяет ряд режимов совместимости
приложений с тем, чтобы такие приложения всё равно смогли работать.
Эти режимы совместимости, обычно применяемые к устаревшим
приложениям для операций с обычными правами, показаны на рис. 7.
Рис 7 Общие режимы совместимости для пользователей
Режим совместимости
Назначение
ElevateCreateProcess |
Изменение функции CreateProcess для обработки ошибок ERROR_ELEVATION_REQUIRED путем вызова службы сведений о приложении для вывода запроса на повышение. |
ForceAdminAccess |
Имитация запросов членства в административных группах. |
VirtualizeDeleteFile |
Имитация успешного удаления глобальных файлов и каталогов. |
LocalMappedObject |
Добавление объектов глобальных областей в пространство имен пользователя. |
VirtualizeHKCRLite, VirtualizeRegisterTypeLib |
Перенаправление глобальной регистрации COM-объектов в разделы пользователей. |
ИТ-специалисты в корпорациях могут
использовать такие инструменты, как набор средств для обеспечения
совместимости приложений (ACT), который можно получить на веб-узле
technet.microsoft .com/windowsvista/aa905066.aspx, и служебную
программу – анализатор обычного пользователя (SUA) из этого набора
или воспользоваться блогом Аарона Маргозиса (Aaron Margosis) LUA
Buglight, где можно определить требования для режимов
совместимости бизнес-приложений. Режимы совместимости назначаются
для приложения с помощью администратора совместимости, также
входящего в состав ACT, затем результирующая база данных
совместимости (файл SDB) развертывается на настольных системах
согласно групповой политике. Следует отметить, что в случае
необходимости виртуализация может быть полностью отключена для
системы с помощью параметра локальной политики безопасности.
Эффекты виртуализации
Состояние виртуализации процесса можно изменить, выбрав
“Виртуализация” в контекстном меню, которое появляется, если
щелкнуть процесс правой кнопкой мыши в окне диспетчера задач. На
рис. А показано поведение командной строки при изменении ее
состояния виртуализации. Командная строка запускается с отключенной
виртуализацией, поскольку обладает манифестом Windows Vista.
Поскольку она работает с правами обычного пользователя, создать файл
в каталоге \Windows ей не удается, но после виртуализации с помощью
диспетчера задач файл, вроде бы, успешно создается. После
возвращения отключенного состояния виртуализации командной строки
она не сможет найти файл, который на самом деле находится в
виртуальном хранилище пользователя.
Рис.
А Изменение состояния
виртуализации
Режим одобрения администратором
Даже если пользователи
запускают только программы, совместимые с правами обычного
пользователя, некоторые операции все равно требуют административных
прав. Подавляющее большинство установок программного обеспечения
требует административных прав для создания каталогов и параметров
реестра в размещениях, общих для всей системы, или для установки
драйверов устройств либо служб. Изменение глобальных системных
параметров Windows и приложений также требует административных прав,
как, например, функция родительского контроля в Windows Vista.
Большую часть этих операций можно было бы выполнить путем
переключения на отдельную учетную запись администратора, но
неудобство такой процедуры вероятнее всего приведет к тому, что
большинство пользователей будет выполнять свои ежедневные задачи,
так и оставшись в административной учетной записи.
В связи с этим Windows Vista
содержит расширенные функциональные возможности “запуска от имени”,
чтобы обычные пользователи могли комфортно запускать процессы с
административными правами. Эти возможности нужны для того, чтобы у
приложений был способ определения операций, для которых система
может по мере необходимости получать административные права от имени
приложения. На этом моменте я кратко остановлюсь ниже.
Далее, чтобы пользователи,
действующие как системные администраторы, могли работать с правами
обычного пользователя, не вводя имена пользователей и пароли каждый
раз, когда им нужно обратиться к административным правам, в Windows
Vista введен режим одобрения администратором (Admin Approval Mode,
AAM). Эта функция создает для пользователя два набора учетных данных
для входа в систему: один с правами обычного пользователя, а другой
с административными. Так как каждый пользователь в системе Windows
Vista или является обычным пользователем, или работает в основном
как обычный пользователь в AAM, разработчики должны рассчитывать на
то, что все пользователи Windows — это обычные пользователи, в
результате чего будет больше программ, работающих с правами обычного
пользователя без виртуализации или режима совместимости.
Предоставление процессу
административных прав называется повышением прав. Если эта процедура
выполняется под учетной записью обычного пользователя, она
называется повышением “через плечо” (Over the Shoulder, OTS),
поскольку требует ввода учетных данных для учетной записи, которая
является членом группы администраторов. Это похоже на ситуацию,
когда “из-за спины” обычного пользователя что-то печатает другой
пользователь. Повышение, выполняемое пользователем AAM, называется
повышением по согласию, поскольку пользователь просто должен
одобрить присвоение его административных прав.
Windows Vista считает
пользователя администратором, если он является членом любой из групп
административного типа, перечисленных на рис. 8.
Рис 8 Административные группы
Встроенная группа “Администраторы”
Администраторы сертификатов |
Администраторы домена |
Корпоративные администраторы |
Администраторы политик |
Администраторы схем |
Контроллеры домена |
Корпоративные контроллеры домена с доступом только для чтения |
Контроллеры домена с доступом только для чтения |
Операторы учета |
Операторы архива |
Операторы шифрования |
Операторы настройки сети |
Операторы печати |
Системные операторы |
Серверы RAS |
Опытные пользователи |
Пред-Windows 2000 доступ |
Многие из перечисленных групп используются
только в системах – участниках доменов и непосредственно не дают
пользователям локальных административных прав, но позволяют им
изменять параметры всего домена. Если пользователь является членом
любой из этих групп, но не фактической группы администраторов, то,
вместо повышений согласия, он обращается к своим административным
правам через OTS-повышения.
Когда пользователь,
принадлежащий одной из перечисленных групп, входит в систему,
Windows Vista создает маркер, представляющий версию
административного идентификатора этого пользователя, но с правами
обычного пользователя. Новый маркер лишается всех привилегий,
назначенных пользователю, кроме привилегий, перечисленных на рис. 9, которые являются применяемыми по умолчанию
привилегиями обычного пользователя.
Рис 9 Привилегии обычного пользователя
Понятное название
Внутреннее имя
Обход перекрестной проверки |
SeChangeNotifyPrivilege |
Завершение работы системы |
SeShutdownPrivilege |
Отключение компьютера от стыковочного узла |
SeUndockPrivilege |
Увеличение рабочего набора процесса |
SeIncreaseWorkingSetPrivilege |
Изменение часового пояса |
SeTimeZonePrivilege |
Кроме того, все группы
административного типа отмечаются в новом маркере флагом
USE_FOR_DENY_ONLY. На рис. 10 в окне
программы Sysinternals Process Explorer (средство управления
процессами, которое можно загрузить на веб-узле microsoft
.com/technet/sysinternals) слева показано членство в группах и
привилегии процесса, работающего с административными правами, а
справа — без административных прав. (Для предотвращения
неосторожного использования модель безопасности Windows требует,
чтобы перед использованием привилегия со снятым флагом была
включена.)
Рис.
10 Маркеры администратора AAM и
обычного пользователя
Группа с флагом “только для
запрещения” может использоваться только для запрещения
пользовательского доступа к ресурсу, но никогда не разрешает доступ.
Тем самым закрывается брешь в системе безопасности, которая может
возникнуть в случае полного удаления группы. Например, у файла есть
список управления доступом (ACL), который запрещает любой доступ для
группы “Администраторы”, но предоставляет некоторый доступ другой
группе, к которой относится пользователь. Если группа
администраторов отсутствует в маркере, этот пользователь получит
доступ к файлу, поскольку версия его идентификатора со стандартными
правами имеет больше прав доступа, чем административная.
Автономные системы, которыми
обычно являются домашние компьютеры, и системы, входящие в состав
доменов, обрабатывают AAM-доступ со стороны удаленных пользователей
по-разному, поскольку доменные компьютеры в своих разрешениях
доступа к ресурсам могут использовать доменные административные
группы. Когда пользователь обращается к общедоступному файловому
ресурсу на автономном компьютере, Windows запрашивает удостоверение
удаленного пользователя с правами обычного пользователя, но на
системах, объединенных в домен, Windows соблюдает все членства
пользователя в группах домена, запрашивая административный
идентификатор пользователя.
Удобное получение административных прав
Определить потребность в
административных правах системы и приложений можно множеством
способов. Один из них — команда контекстного меню и ярлык “Запуск от
имени администратора” в пользовательском интерфейсе проводника. Эти
элементы содержат цветной значок щита, который должен быть добавлен
ко всем кнопкам или пунктам меню, выбор которых приводит к повышению
прав. При выборе элемента “Запуск от имени администратора” проводник
вызывает API-функцию ShellExecute с командой “runas”.
Подавляющее большинство
программ установки требует административных прав, поэтому загрузчик
образов, который инициирует запуск исполняемого файла, содержит код
обнаружения установщиков для выявления устаревших версий
установщиков. Часть алгоритмов используемой загрузчиком эвристики
довольно проста: он ищет слова “setup”, “install” или “update” в
имени файла образа или внутренней информации о версии. Более сложные
алгоритмы включают просмотр в исполняемом файле последовательностей
байтов, обычно применяемых сторонними разработчиками в служебных
программах – установочных оболочках.
Чтобы определить, нуждается
ли целевой исполняемый файл в правах администратора, загрузчик
образов также вызывает библиотеку совместимости приложений
(appcompat). Библиотека обращается к базе данных совместимости
приложений, чтобы определить, связаны ли с исполняемым файлом флаги
совместимости RequireAdministrator или RunAsInvoker.
Самый общий способ запросить
для исполняемого файла административные права — добавить в его файл
манифеста приложения тег requestedElevationLevel. Манифесты — это
XML-файлы, содержащие дополнительные сведения об образе. Они были
введены в Windows XP как способ определения зависимостей для
параллельно используемых библиотек DLL и сборок Microsoft .NET
Framework. Наличие в манифесте элемента trustInfo (он показан ниже
во фрагменте дампа Firewallsettings.exe) означает, что исполняемый
файл был написан для Windows Vista и содержит элемент
requestedElevationLevel. Атрибут level этого элемента может иметь
одно из трех значений: asInvoker, highestAvailable и
requireAdministrator.
<trustInfo
xmlns=”urn:schema-microsoft-com:asm.v3”>
<security>
<requestedPrivileges>
<requestedExecutionLevel
Level=”requireAdministrator”
uiAccess=”false”/>
</requestedPrivileges>
</security>
</trustInfo>
Исполняемые файлы, не
требующие административных прав, например Notepad.exe, имеют
значение атрибута asInvoker. В некоторых исполняемых файлах заложено
допущение, что администраторы всегда хотят получить максимальный
доступ. Поэтому в них используется значение highestAvailable.
Пользователю, запускающему исполняемый файл с этим значением,
предлагается повысить права, только если он работает в режиме AAM
или рассматривается как администратор согласно определенным ранее
правилам и в связи с этим должен повысить права для обращения к
своим административным привилегиям. Примерами приложений, для
которых используется значение highestAvailable, могут служить
программы Regedit.exe, Mmc.exe и Eventvwr.exe. Наконец, значение
requireAdministrator всегда инициирует запрос повышения и
используется всеми исполняемыми файлами, которым не удастся
выполнить свои действия без административных прав.
В приложениях со специальными
возможностями атрибуту uiAccess задается значение "true" для
управления окном ввода в процессах с повышенными правами. Кроме
того, для обеспечения этих возможностей они должны быть подписаны и
находиться в одном из нескольких безопасных размещений, включая
%SystemRoot% и %ProgramFiles%.
Значения, задаваемые
исполняемым файлом, можно легко определить, просмотрев его манифест
с помощью служебной программы Sysinternals Sigcheck, например:
sigcheck –m <executable>
При запуске образа, который
запрашивает административные права, службе сведений о приложении
(известна также как AIS, находится в
%SystemRoot%\System32\Appinfo.dll), которая работает в процессе Service Host (%SystemRoot%\System32\Svchost.exe), предписывается
запустить программу Consent.exe (%SystemRoot%\System32\Consent.exe).
Программа Consent создает снимок экрана, применяет к нему эффект
затемнения, переключается на рабочий стол, доступный только
системной учетной записи, устанавливает затемненный снимок в
качестве фона и открывает диалоговое окно повышения прав, содержащее
сведения об исполняемом файле. Вывод на отдельном рабочем столе
предотвращает изменение этого диалогового окна любой вредоносной
программой, работающей под учетной записью пользователя.
Рис.
11 Диалоговые окна OTS-повышения
Если образ является
компонентом Windows, подписанным цифровой подписью корпорации
Майкрософт, и находится в системном каталоге Windows, то, как
показано вверху на рис. 11, в верхней
части диалогового окна добавляется синяя полоса. Серая полоса
(среднее диалоговое окно) обозначает образы, подписанные цифровой
подписью, отличной от подписи корпорации Майкрософт, а оранжевая
полоса (нижнее диалоговое окно) предназначена для неподписанных
образов. Для образов, подписанных цифровой подписью, в диалоговом
окне повышения показывается значок образа, описание и издатель, а
для неподписанных образов — только общий значок, имя файла и
примечание “Издатель неизвестен”. Это усложняет для вредоносных
программ имитацию подлинного программного обеспечения. Кнопка
“Сведения” внизу диалогового окна раскрывается, показывая командную
строку, которая будет передана исполняемому файлу при его запуске.
Диалоговое окно программы Consent для режима AAM, показанное на
Figure 12, подобно окну для
OTS-повышения, но вместо запроса на ввод учетных данных
администратора там имеются кнопки “Далее” и “Отмена”.
Рис.
12 Диалоговое окно AAM-повышения
Если пользователь отклоняет
повышение прав, Windows возвращает процессу, инициировавшему запуск,
ошибку “Отказано в доступе”. Если пользователь соглашается на
повышение, введя учетные данные администратора или нажав кнопку
“Далее”, служба AIS вызывает функцию CreateProcessAsUser для запуска
процесса с необходимым административным идентификатором. Хотя
технически родителем процесса с повышенными правами является служба
AIS, она использует новую поддержку со стороны функции
CreateProcessAsUser, которая устанавливает запускаемому процессу в
качестве кода родительского процесса код процесса, который
изначально его запустил (см. рис. 13).
Именно поэтому процессы с повышенными правами не изображаются как
потомки процесса Service Hosting службы AIS в таких средствах, как
обозреватель процессов, которые показывают деревья процессов.
Рис. 13 Поток повышения прав
Даже при том, что диалоговые
окна повышения выводятся на отдельном безопасном рабочем столе, по
умолчанию пользователи не имеют никакого способа проверить тот факт,
что они видят подлинное диалоговое окно, а не окно, открытое
вредоносной программой. Для AAM это не проблема, поскольку
вредоносная программа со своим фальшивым диалоговым окном Consent не
может получить административных прав. Однако эта программа может
дождаться ОТС-повышения обычного пользователя, перехватить его и
использовать троянское диалоговое окно для захвата учетных данных
администратора. С этими учетными данными вредоносная программа может
получить доступ к учетной записи администратора и инфицировать
ее.
В связи с этим в
корпоративных средах ОТС-повышения должны быть строго запрещены.
Чтобы отключить ОТС-повышения (и уменьшить количество вызовов службы
поддержки), запустите редактор локальных политик безопасности
(Secpol.msc) и для параметра “Управление учетными записями
пользователей: поведение запроса на повышение прав для обычных
пользователей” выберите значение
Automaticallydenyelevationrequests.
Пользователи домашних
компьютеров, которые сами отвечают за свою безопасность, должны
настроить ОТС-повышения таким образом, чтобы для их применения
необходимо было ввести специальное сочетание клавиш (SAS), которое
вредоносная программа не сможет перехватить или имитировать. Чтобы
настроить SAS, нужно запустить редактор групповых политик (Gpedit.msc), перейти к разделу “Конфигурация компьютера” –
“Административные шаблоны” – “Компоненты Windows” – “Интерфейс
пользователя для учетных данных” и включить параметр “Требовать
достоверный путь для входа в учетную запись”. После этого обратиться
к диалоговому окну повышения можно будет, нажав сочетание клавиш
CTRL+ALT+DELETE.
Продолжение >>>
|
|