Как работает контроль учетных записей

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

Процесс UAC и принципы взаимодействия

Каждое приложение, для которого требуется маркер доступа администратора, должно делать запрос на продолжение. Единственным исключением является связь, существующая между родительским и дочерним процессами. Дочерние процессы получают маркер доступа пользователя от родительского процесса. Однако при этом родительский и дочерний процессы должны иметь одинаковый уровень целостности. Windows 10 защищает процессы, маркируя их уровни целостности. Уровни целостности являются мерой степени доверия. Приложение «высокого» уровня целостности – это приложение, выполняющее задачи, предполагающие изменение системны данных, например, приложение для сегментирования дисковой памяти, а приложение «низкого» уровня целостности – это приложение, выполняющее задачи, которые потенциально могут поставить операционную систему под угрозу, например, веб-браузер. Приложения с более низкими уровнями целостности не могут изменять данные в приложениях с более высоким уровнем целостности. Когда обычный пользователь пытается запустить приложение, требующее маркера доступа администратора, служба UAC требует, чтобы пользователь предоставил действительные учетные данные администратора.

Для лучшего понимания этого процесса давайте рассмотрим процесс входа в систему Windows.

Процесс входа в систему

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

Процесс входа в систему Windows при использовании контроля учетных записей

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

В случае входа в систему администратора, для пользователя создаются два отдельных маркера доступа: маркер доступа обычного пользователя и маркер доступа администратора. Маркер доступа обычного пользователя содержит те же данные о пользователе, что и маркер доступа администратора, но без административных привилегий и идентификаторов безопасности Windows. Маркер доступа обычного пользователя используется для запуска приложений, не выполняющих задач администрирования (обычные пользовательские приложения). Маркер доступа обычного пользователя используются для последующего отображения рабочего стола (explorer.exe). Explorer.exe является родительским процессом, от которого все остальные начатые пользователем процессы наследуют маркер доступа. В результате все приложения запускаются от имени обычного пользователя, если пользователь не предоставит согласие или учетные данные для подтверждения права использовать маркер полного доступа на уровне администратора для данного приложения.

Пользователь, который является членом группы «Администраторы», с помощью маркера доступа обычного пользователя может входить в систему, просматривать интернет-страницы и читать электронную почту. Если же администратору необходимо выполнить задачу, требующую маркера доступа администратора, Windows 10 автоматически запрашивает согласие пользователя. Такой запрос называется запросом на повышение прав запроса на повышение прав, и порядок действий в таком случае можно настроить с помощью оснастки локальной политики безопасности (Secpol.msc) или групповой политики. Дополнительные сведения см. в разделе Параметры политики безопасности контроля учетных записей.

Взаимодействие UAC с пользователем

Если включен контроль учетных записей, взаимодействие с обычным пользователем отличается от взаимодействия с администраторами в режиме одобрения администратором. Рекомендуемый и более безопасный метод запуска Windows 10 – сделать учетную запись основного пользователя записью обычного пользователя. Запуск системы от имени обычного пользователя повышает безопасность управляемой среды. Благодаря встроенному компоненту для повышения привилегий контроля учетных записей обычные пользователи могут легко выполнять задачи администрирования, введя действительные учетные данные локальной учетной записи администратора. По умолчанию встроенным компонентом для повышения привилегий UAC для обычных пользователей является запрос учетных данных.

Запускать систему можно также от имени администратора в режиме одобрения администратором. Благодаря встроенному компоненту повышения привилегий контроля учетных записей члены локальной группы «Администраторы» могут с легкостью выполнять задачи администрирования, предоставив соответствующее подтверждение. Стандартный встроенный компонент повышения привилегий контроля учетных записей для учетной записи администратора в режиме одобрения администратором называется запросом на продолжение.

Запрос на продолжение и запрос учетных данных

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

Запрос на продолжение

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

Запрос на продолжение UAC

Запрос учетных данных

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

Ниже приведен пример запроса учетных данных UAC.

Запрос учетных данных UAC

Запросы на повышение прав контроля учетных записей

Запросы на повышение прав контроля учетных отображаются разными цветами для каждого конкретного приложения, позволяя моментально определять, для какого приложения существует потенциальная угроза. Если предпринимается попытка запустить приложение с маркером полного доступа на уровне администратора, Windows 10 вначале анализирует исполняемый файл, чтобы определить его издателя. Сначала приложения разделяются на три категории в соответствии с издателем: Windows 10, подтвержденный издатель (подписанный) и неподтвержденный издатель (неподписанный). На схеме ниже показано, как Windows 10 определяет, каким цветом необходимо выделить запрос на повышение прав для пользователя.

Для запросов на повышение прав используется следующая цветовая кодировка:

  • красный фон с красным значком щита: приложение заблокировано групповой политикой или поступило от заблокированного издателя;

  • синий фон с сине-золотым значком щита: приложение является административным приложением Windows 10 (например, элемент панели управления);

  • синий фон с синим значком щита: приложение подписано с помощью Authenticode и является доверенным для данного локального компьютера;

  • желтый фон с желтым значком щита: приложение не подписано или подписано, но еще не входит в список доверия данного локального компьютера.

Значок щита

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

Значок щита UAC

Значок щита на кнопке Изменить дату и время означает, что для данной процедуры требуется маркер полного доступа на уровне администратора, и в случае выполнения отобразится запрос на повышение прав UAC.

Обеспечение безопасности функции запроса на повышение прав

Дополнительная безопасность процесса повышения прав обеспечивается путем направления запроса на безопасный рабочий стол. Запрос на продолжение и запрос учетных данных по умолчанию отображаются в Windows 10 на безопасном рабочем столе. Только процессы Windows могут получить доступ к безопасному рабочему столу. Для повышения уровня безопасности рекомендуется, чтобы параметр политики Контроль учетных записей: переключение к безопасному рабочему столу при выполнении запроса на повышение прав был включен.

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

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

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

Архитектура UAC

На схеме ниже изображена архитектура контроля учетных записей.

Архитектура UAC

Чтобы лучше понять назначение каждого компонента, рассмотрите таблицу ниже.

КомпонентОписание

Пользователь

Пользователь выполняет операцию, требующую привилегий

Если операция предполагает изменение файловой системы или реестра, вызывается виртуализация. Все остальные операции вызывают ShellExecute.

ShellExecute

ShellExecute вызывает CreateProcess. ShellExecute ищет ошибку ERROR_ELEVATION_REQUIRED в CreateProcess. Получив ошибку, ShellExecute вызывает службу сведений о приложении, чтобы попытаться выполнить запрошенную задачу с помощью командной строки с повышенными привилегиями.

CreateProcess

Если приложение требует повышения прав, CreateProcess отклоняет вызов ERROR_ELEVATION_REQUIRED.

Система

Служба сведений о приложении

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

Повышение привилегий для установки ActiveX

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

Проверка уровня ползунка контроля учетных записей

Для UAC предусмотрено на выбор четыре уровня уведомлений, а также ползунок, применяемый для выбора уровня уведомлений.

  • Высокий

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

  • Средний

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

    • Если этот параметр политики включен, то перед выдачей разрешения на запуск файла выполняется проверка пути сертификации инфраструктуры открытых ключей (PKI) для данного файла.

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

  • Низкий

    Если ползунок установлен в положение Уведомлять только при попытках приложений внести изменения в компьютер (не затемнять рабочий стол), выполняется вызов CreateProcess.

  • Никогда не уведомлять

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

    Важно  

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

     

Включен безопасный рабочий стол

Напротив параметра политики Контроль учетных записей: переключение к безопасному рабочему столу при выполнении запроса на повышение прав устанавливается флажок:

  • если включен безопасный рабочий стол, все запросы на повышение прав выводятся на безопасный рабочий стол независимо от параметров политики поведения запроса для администраторов и обычных пользователей;

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

CreateProcess

CreateProcess вызывает функции AppCompat, фьюжн и обнаружение установщика, чтобы оценить, требует ли приложение повышения прав. Затем файл проверяется для определения запрашиваемого уровня выполнения, данные о котором хранятся в манифесте приложения для данного файла. CreateProcess не сработает, если запрошенный уровень выполнения, указанный в манифесте, не соответствует маркеру доступа и возвращает ошибку (ERROR_ELEVATION_REQUIRED) в ShellExecute). Дополнительные сведения см. в разделе Запрашиваемый уровень выполнения.

AppCompat

База данных AppCompat содержит сведения в виде записей исправления совместимости приложений для каждого приложения.

Фьюжн

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

Обнаружение установщика

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

Ядро

Виртуализация

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

Файловая система и реестр

Виртуализация файлов и реестра для конкретных пользователей перенаправляет запросы записи файлов и реестра для каждого конкретного компьютера в эквивалентные файлы расположения пользователей. Запросы чтения перенаправляются вначале в виртуализированный файл расположения пользователя, а затем в расположение компьютера.

 

Ползунок никогда не отключает контроль учетных записей полностью. Если задать значение Никогда не уведомлять, произойдет следующее:

  • служба контроля учетных записей останется включенной;

  • все запросы повышения прав, сделанные администраторами, будут автоматически утверждены без отображения запроса UAC;

  • все запросы повышения прав для обычных пользователей будут отклонены.

Важно  

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

 
Предупреждение  

Универсальные приложения для Windows не будут работать после отключения контроля учетных записей.

 

Виртуализация

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

Windows 10 включает технологию виртуализации файлов и реестра для приложений, несовместимых с системой контроля учетных записей, а также для таких, которые предполагают наличие маркера доступа администратора. При попытке административных приложений, несовместимых с UAC, выполнить запись в защищенную папку, например Program Files, система контроля учетных записей предоставляет приложению его собственное виртуализированное представление ресурса, который оно пытается изменить. Виртуализированная копия сохраняется в профиле пользователя. Такая стратегия предполагает создание отдельной копии виртуализированного файла для каждого пользователя, запускающего несовместимое приложение.

Большинство задач приложения выполняются как следует благодаря применению функций виртуализации. Хотя виртуализация позволяет запускать большинство приложений, этот метод является краткосрочной мерой, а не постоянным решением. Разработчики приложений должны как можно скорее изменить свои приложения, обеспечив их совместимость, а не полагаться на виртуализацию файлов, папок и реестра.

Виртуализацию не следует применять в описанных ниже случаях.

  • Виртуализация не применяется к приложениям с повышенными правами, а также к приложениям, которые выполняются с использованием маркера полного доступа на уровне администратора.

  • Виртуализация поддерживает только 32-разрядные приложения. 64-разрядные приложения без повышенных прав просто получают сообщение об отказе при попытке получения дескриптора (уникального идентификатора) для объекта Windows. Собственные 64-разрядные приложения Windows должны быть совместимы с системой контроля учетных записей и должны выполнять запись данных в нужные расположения.

  • Виртуализация отключается, если приложение содержит манифест приложения с запрошенным атрибутом уровня выполнения.

Уровни выполнения запроса

Манифест приложения представляет собой XML-файл, описывающий и определяющий общие и закрытые параллельные сборки, к которым приложение должно осуществлять привязку во время выполнения. Манифест приложения включает записи для контроля совместимости приложений UAC. Административные приложения, содержащие запись в манифесте приложения, запрашивают разрешение пользователя на получение доступа к маркеру доступа пользователя. Если запись в манифесте приложения отсутствует, большинство административных приложений могут работать без изменения с помощью исправлений совместимости приложения. Исправления совместимости приложений – это записи базы данных, обеспечивающие нормальную работу приложений, несовместимых с системой контроля учетных записей.

Все приложения, совместимые с системой контроля учетных записей, должны иметь запрошенный уровень выполнения, включенный в манифест приложения. Если приложению требуются административные права доступа к системе, маркировка приложения, включающая запрошенный уровень выполнения «требуется администратор», гарантирует, что система определит эту программу как административное приложения и выполнит необходимые действия для повышения прав. Запрошенные уровни выполнения определяют привилегии, требуемые для приложения.

Технология обнаружения установщика

Программы установки представляют собой приложения, разработанные для развертывания программного обеспечения. Большинство программ установки выполняют запись в системные папки и разделы реестра. Эти защищенные системные расположения, как правило, доступны для записи только администратору при использовании технологии обнаружения установщика, а значит, обычные пользователи не имеют достаточного уровня доступа для установки программ. Windows 10 эвристически вычисляет программы установки и запрашивает учетные данные администратора или согласие администратора для запуска данных программ с привилегиями доступа. Кроме того, Windows 10 эвристически определяет обновления и программы, которые выполняют удаление приложений. Одним из назначений контроля учетных записей является предотвращение установки без ведома и согласия пользователя, поскольку программы установки выполняют запись в защищенные области файловой системы и реестра.

Обнаружение установщика применяется только к следующим типам содержимого:

  • 32-разрядные исполняемые файлы;

  • приложения без атрибута запрошенного уровня выполнения;

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

Перед созданием 32-разрядного процесса в целях обнаружения установщика выполняется проверка следующих атрибутов:

  • имя файла, содержащее такие ключевые слова, как «install» (инсталлировать), «setup» (установить) или «update» (обновить);

  • поля ресурсов управления версиями, содержащие следующие ключевые слова: «Vendor» (поставщик), «Company Name» (название компании), «Product Name» (название продукта), «File Description» (описание файла), «Original Filename» (исходное имя файла),« Internal Name» (внутреннее имя) и «Export Name» (имя операции экспорта);

  • ключевые слова в параллельном манифесте, внедренные в исполняемый файл;

  • ключевые слова в конкретных записях StringTable, связанные в исполняемом файле;

  • атрибуты ключа в данных описания ресурсов, связанные в исполняемом файле;

  • целевые последовательности байтов в исполняемом файле.

Примечание  

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

 
Примечание  

Чтобы система обнаружения установщика могла выявлять программы установки, должен быть включен параметр политики «Контроль учетных записей: обнаружение установки приложений и запрос на повышение прав». Дополнительные сведения см. в разделе Параметры политики безопасности контроля учетных записей.

 

 

 

Показ: