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

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

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

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

Windows защищает процессы, указывая их уровни целостности. Уровни целостности — это измерения доверия:

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

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

Чтобы лучше понять, как работает этот процесс, давайте подробнее рассмотрим процесс входа в Windows.

Процесс входа

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

Схема, описывающая процесс входа в Windows UAC.

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

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

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

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

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

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

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

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

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

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

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

Снимок экрана: запрос учетных данных контроля учетных данных.

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

Снимок экрана: запрос на предоставление согласия для контроля учетных записей.

Запросы на повышение прав UAC

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

  • Windows
  • Проверка издателя (подпись)
  • Издатель не проверен (без знака)

Запросы на повышение прав обозначаются цветом следующим образом:

  • Серый фон. Приложение является административным приложением Windows, например элементом панель управления или приложением, подписанным проверенным издателем. Снимок экрана: запрос учетных данных UAC с подписанным исполняемым файлом.
  • Желтый фон: приложение без знака или подписи, но не является доверенным Снимок экрана: запрос согласия UAC с неподписанным исполняемым файлом.

Значок щита

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

Снимок экрана: значок щита UAC в свойствах даты и времени.

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

Защита запроса на повышение прав

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

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

Примечание.

Начиная с Windows Server 2019, невозможно вставить содержимое буфера обмена на безопасный рабочий стол. Это то же поведение, что и для поддерживаемых в настоящее время версий клиентских ОС Windows.

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

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

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

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

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

Чтобы лучше понять каждый компонент, ознакомьтесь со следующими таблицами:

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

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

Система

Компонент Описание
Служба сведений о приложениях Системная служба, позволяющая запускать приложения, для выполнения которых требуется одна или несколько повышенных привилегий или прав пользователя, например, локальные задачи администрирования и приложения, требующие более высокого уровня целостности. Служба сведений о приложениях помогает запускать такие приложения, создавая новый процесс для приложения с маркером полного доступа администратора, когда требуется повышение прав. В зависимости от настроенных политик пользователь может дать согласие.
Повышение прав для установки ActiveX Если ActiveX не установлен, система проверяет уровень ползунка контроля учетных записей. Если технология ActiveX установлена, будет выбран параметр групповой политики Контроль учетных записей: переход на безопасный рабочий стол при выполнении запроса на повышение прав.
Выбор уровня ползунка UAC Ползунок UAC позволяет выбрать один из четырех уровней уведомления.
  • Всегда уведомлять:
    • Уведомляет, когда программы пытаются установить программное обеспечение или внести изменения на компьютере.
    • Уведомляет, когда вы вносите изменения в параметры Windows.
    • Замораживает выполнение других задач, пока вы не ответите.
    Рекомендуется, если вы часто устанавливаете новое программное обеспечение или посещаете незнакомые веб-сайты.
  • Уведомлять только при попытках приложений внести изменения в компьютер:
    • Уведомляет, когда программы пытаются установить программное обеспечение или внести изменения на компьютере.
    • Не уведомляет, когда вы вносите изменения в параметры Windows.
    • Замораживает выполнение других задач, пока вы не ответите.
    Рекомендуется, если вы не часто устанавливаете приложения или посещаете незнакомые веб-сайты.
  • Уведомлять только при попытках приложений внести изменения в компьютер (не затемнять рабочий стол):
    • Уведомляет, когда программы пытаются установить программное обеспечение или внести изменения на компьютере.
    • Не уведомляет, когда вы вносите изменения в параметры Windows.
    • Не замораживает выполнение других задач, пока вы не ответите.
    Не рекомендуется. Выбирайте этот вариант, только если затемнение рабочего стола компьютера занимает много времени.
  • Никогда не уведомлять (отключить запросы UAC):
    • Не уведомляет, когда программы пытаются установить программное обеспечение или внести изменения на компьютере.
    • Не уведомляет, когда вы вносите изменения в параметры Windows.
    • Не замораживает выполнение других задач, пока вы не ответите.
    Не рекомендуется по соображениям безопасности.
Безопасный рабочий стол включен Выбран параметр групповой политики Контроль учетных записей: переход на безопасный рабочий стол при выполнении запроса на повышение прав.
  • Если включен безопасный рабочий стол, все запросы на повышение прав поступают на него независимо от параметров политики поведения запросов для администраторов и обычных пользователей.
  • Если безопасный рабочий стол не включен, все запросы на повышение прав переходят на рабочий стол интерактивного пользователя, а также используются параметры для администраторов и стандартных пользователей.
CreateProcess CreateProcess вызывает AppCompat, Fusion и функцию обнаружения установщика, чтобы определить, не требуется ли приложению повышение прав. Затем файл проверяется для определения запрошенного уровня выполнения, данные о котором хранятся в манифесте приложения для данного файла. CreateProcess завершается ошибкой, если запрошенный уровень выполнения, указанный в манифесте, не соответствует маркеру доступа, и возвращает ошибку (ERROR_ELEVATION_REQUIRED) в ShellExecute.
AppCompat В базе данных совместимости приложений хранятся сведения в виде записей об исправлении совместимости для каждого приложения.
Fusion В базе данных Fusion хранятся сведения из манифестов приложений, содержащие описание этих приложений. Схема манифеста обновлена — в нее добавлено новое поле запрошенного уровня выполнения.
Обнаружение установщика Обнаружение установщика обнаруживает файлы установки, что помогает предотвратить запуск установок без ведома и согласия пользователя.

Ядро

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

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

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

Важно.

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

Warning

Некоторые приложения универсальной платформы Windows могут не работать при отключении UAC.

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

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

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

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

Виртуализация не является вариантом в следующих сценариях:

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

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

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

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

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

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

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

  • 32-разрядные исполняемые файлы
  • Приложения без атрибута запрошенного уровня выполнения
  • Интерактивные процессы, выполняемые от имени обычного пользователя с включенным UAC

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

  • Имя файла содержит такие ключевые слова, как "install", "setup" или "update".
  • Поля ресурсов управления версиями содержат такие ключевые слова, как Vendor, Company Name, Product Name, File Description, Original Filename, Internal Name и Export Name.
  • Ключевые слова в параллельном манифесте встроены в исполняемый файл.
  • Ключевые слова в специальных записях StringTable связаны в исполняемом файле.
  • Ключевые атрибуты в данных сценария ресурса связаны в исполняемом файле.
  • Это целевые последовательности байтов внутри исполняемого файла.

Примечание.

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

Примечание.

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

Дальнейшие действия

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