Руководство по контролю учетных записей пользователей (UAC). Включение, настройка и отключение User Account Control (UAC)

1. Контроль учетных записей пользователей UAC

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

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

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

2. Как и почему может появиться окно UAC

Есть несколько возможных сценариев, которые могут привести к появлению окна UAC:

  • При попытке установки/удаления программ
  • При попытке открыть системную утилиту, такую как MSConfig или Regedit (редактор реестра)
  • Любой вид программ, которые пытаются получить доступ к системным компонентам, или проверить наличие обновлений для сторонних инструментов, или изменить системное время
  • При попытке удалить/добавить каталоги в папке "Program Files" или в системном каталоге (обычно C:\Windows)
  • Последнее, но не менее важное. Окно UAC показывается только тогда, когда вы инициируете процесс, такой как установка/обновление/удаление программного обеспечения, драйверов, плагинов или в некоторых случаях при запуске программ (например, играх), а так же при установки обновлений Windows. И это все. Если окно UAC появляется тогда, когда вы ничего не сделали, то вероятно в вашей системе присутствует вредоносная программа.

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

3. Что пользователи думают о UAC

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

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

4. Администратор или обычный пользователь - плюсы и минусы

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

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

Примечание : Чтобы включить запрос пароля UAC, необходимо войти под учетной записью администратора, так как потребуется запуск системного редактора настроек локальной политики (secpol.msc).

Небольшой трюк.


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

5. Настройки UAC в Windows 7

UAC имеет много настроек, не только настройки отображения (см. как отключить UAC), но большая часть из них находится среди настроек локальной политики безопасности, доступ к которой возможен только через системную утилиту secpol.msc. Там находится порядка 10 настроек. Наибольший интерес для пользователей будет представлять "Контроль учетный записей: поведение запроса на повышение прав для обычных пользователей", в которой можно установить запрос пароля в окне UAC для обычных пользователей.

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

И вот как это можно сделать:

  1. Откройте меню Пуск и в строку поиска введите "secpol.msc" (без кавычек)
  2. В левой части раскройте пункт "Локальные политики"
  3. Затем выберите пункт "Параметры безопасности"
  4. В правой части найдите "Контроль учетных записей: поведение запроса на повышение прав для обычных пользователей" и щелкните по нему дважды
  5. В появившемся окне выберите из выпадающего списка нужный пункт, например, "Запрос учетных данных на безопасном рабочем столе"
  6. Нажмите "ОК"

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

Некоторые издания Windows 7 не имеют secpol.mcs. Поэтому для того, чтобы изменить настройки UAC, вам придется внести изменения в реестр.

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

  1. Откройте меню пуск и в строке поиска введите "regedit" (без кавычек)
  2. В открывшемся редакторе реестра перейдите к ключу:
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  3. Затем дважды щелкните на параметре "ConsentPromptBehaviorUser" и введите 1. Для изменения настроек администратора, выставьте значение 1 в параметре "ConsentPromptBehaviorAdmin"
  4. Закройте реестр

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

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

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

В каждой версии Windows (начиная с Vista) есть стандартный компонент UAC (User Account Control). Он включен по умолчанию и не дает пользователю «выстрелить себе в ногу», запустив какую-нибудь малварь с правами админа. В этой статье мы расскажем, как использовать «контроль учетных записей» в своих целях - например, запустить любой код с правами администратора или даже как системный процесс.

WARNING

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

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

UAC как огромный баг

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

Белый список для черных шляп

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

Провести атаку типа DLL hijack сравнительно просто, хотя и здесь не обходится без подводных камней. Они свои в каждой версии ОС, а также зависят от настроек, учетной записи, разрядности ОС, установленных компонентов и патчей.

Например, в Windows 7/8 (но не 8.1) можно использовать штатную программу подготовки системы к развертыванию sysprep.exe , чтобы подгрузить свою версию cryptbase.dll или другой библиотеки. Для этого достаточно поместить ее рядом с экзешником, поскольку он начинает искать и подгружать DLL’ки из своего каталога. Однако при попытке просто скопировать свой файл в каталог %systemroot%/system32/sysprep/ мы получим сообщение об ошибке.


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

Поместим cryptbase.dll в архив CAB. Не будем останавливаться на том, как сделать эту элементарную операцию. Она подробно описана на сайте Microsoft . Пусть наша библиотека называется evil.dll и находится в каталоге \FCKUAC на диске C:\ . Тогда следующей командой мы сделаем «заряженный» архив:

Makecab C:\FCKUAC\evil.dll C:\FCKUAC\evil.cab

Скормим этот архив автономному установщику обновлений (Windows Update Standalone Installer).

Wusa C:\FCKUAC\evil.cab /quite /extract:%systemroot%\system32\sysprep\

Он распакует его в \system32\sysprep\ , а «контроль учетных записей» будет молчать.


Если умеешь программировать, то можешь запустить sysprep.exe скрыто - например, через CreateProcess() с флагом StartupInfo.wShowWindow = SW_HIDE . На скрытые окна сегодня ругаются эвристические анализаторы многих антивирусов, но сейчас мы говорим только про UAC - ему все равно. После такого запуска sysprep.exe попытается загрузить и выполнить библиотеку CRYPTBASE.dll , но на ее месте окажется наша, уже содержащая нужную нам функциональность. Она совершенно легально поднимет права нашему коду, и UAC примет это как должное.

Это происходит потому, что wusa и sysprep находятся в белом списке, а все приложения из этого списка могут поднимать себе права без участия UAC. Наш же код из подгружаемой установщиком библиотеки унаследует права родительского процесса sysprep.exe и также будет считаться доверенным.


Рассмотренный выше трюк совместного использования wusa и sysprep представляет собой модифицированный метод Лео Дэвидсона (Leo Davidson). Исходный вариант был применим только к непропатченной Windows 7 и был описан еще в 2009 году в рассылке компьютерного сообщества Оксфордского университета. Копия приводится , который из-за обилия подобного кода внесен в списки потенциально опасных.

Метод Дэвидсона в различных модификациях уже много лет используется для внедрения троянов, особенно семейства . Пик эпидемии пришелся на осень 2011 года, но способ до сих пор работает в следующем типичном сценарии: действия выполняются в 32-битной версии Windows 7/8 под учетной записью администратора при включенном UAC с настройками по умолчанию. Простому пользователю нельзя запускать wusa.exe , но многие до сих пор сидят под админом без реальной необходимости. Просто им лень создавать пользовательские учетки и управлять правами доступа даже через встроенные средства.

Мэтт Грэбер (Matt Graeber) уточняет, что данный метод не работает «как есть» в Windows 8.1/10, поскольку в этих ОС изменены как sysprep.exe , так и сам UAC. Теперь программа подготовки системы к развертыванию загружает DLL только из %windir%\system32\ .

Автоматическое повышение привилегий

Если по каким-то причинам доступа к установщику обновлений нет, то можно использовать другой вариант - копирование файла в системный каталог методом IFileOperation .

Суть метода в том, что для обхода UAC в нашей библиотеке создается COM-объект IFileOperation . Он позволяет скопировать файл куда угодно (в том числе в системную директорию \system32\ и ее подкаталоги), автоматически повышая для этого привилегии, так как функция будет иметь флаг auto-elevate .

Список приложений из белого списка можно . Также его можно сгенерировать самому, просто найдя в системном каталоге Windows экзешники, содержащие строку autoelevate .


В зависимости от используемой программы из белого списка и версии Windows можно подменить ту или иную библиотеку (см. таблицу).


Методы перебора этих вариантов собраны в одну PowerShell-утилиту .

ISecurityEditor

Удивительно, что большинство методов обхода «контроля учетных записей» были умышленно заложены самими разработчиками Windows. Провал «Висты» маркетологи связали с неудобным поведением нового компонента, и в «семерке» UAC постарались сделать менее назойливым. Для этого пришлось делать костыли из белого списка и метода автоматического повышения привилегий (без подтверждения пользователем) у сорока с лишним системных программ. К функции autoElevate были написаны COM-интерфейсы: документированный IFileOperation (который разбирался выше) и недокументированный ISecurityEditor, об использовании которого мы поговорим сейчас.

Благодаря встроенным в UAC бэкдорам компьютеры с Windows 7 заражались незаметно для пользователя. Они становились полигоном для малвари и частенько попадали в ботнеты. Один из них (под названием Simda) успешно развивался на протяжении пяти лет, используя для внедрения кода интерфейс ISecurityEditor. В Microsoft проблему частично устранили лишь в 2015 году. Исправленный ISecurityEditor стал работать только с объектами файловой системы, указанными в константе SE_FILE_OBJECT .

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

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов.

UAC - это серверный Анти-Чит который начал разрабатываться не так давно, но смог покорить многих Администраторов серверов, данный анти-чит Universal Anti-Cheat v.2.0 имеет практически все функции CSF , но в то же время работает быстрее и менее нагружает сервер, автор этого чуда Sector , если вы заметили какие либо ошибки в этом анти-чите или у вас есть что предложить, вы всегда можете обратится на официальный форум csall.ru.

Обнаружение запрещенных сообщений или часть их, а так же запрещенные ссылки. Все сообщения выведены в файл, имеется возможность редактирования причин и дополнения файла своими сообщениями. База сообщений взята с других источников. Кол-во сообщений и причин не ограниченно!

Обнаружение запрещенных имен. Все имена выведены в файл, имеется возможность редактирования причин и дополнения файла своими именами. База имен взята с других источников. Кол-во имен и причин не ограниченно!

Обнаружение посторонних софт программ. Программы будут обнаружены, если имеют информацию в setinfo. Вся информация выведена в файл, имеется возможность редактирования причин и дополнения файла своей информацией. База софт программ взята с других источников. Кол-во информации и причин не ограниченно!

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

Обнаружение спама командой Fullupdate. Плагин анализирует, какое кол-во команд было послано игроком за определенное время.

Обнаружение некоторых видов автонаведения и автовыстрела (Aimbot, Autoshot) путем простых подсчетов.

Блокировка программ, которые используют функцию NO Flash. Блокировка происходит через Byte.

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

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

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

Проверка на запрещенные алиасы и скрипты. Метод, который реализован в этом плагине, отличаться от других схожих по функционалу, а именно проверки происходят пошагово т.е. каждая команда посылается игроку раз в некоторое время и не один раз, что опять же снизит нагрузку на сервер, имеет иной подход подсчета команд пришедших и ушедших. Метод не быстрый, но очень действенный и тщательный, так же в причине наказания будет выведен и сам алиас, который плагин обнаружил, например: CD Hack - это облегчит поиск проблемы. Все алиасы выведены в файл, имеется возможность редактирования причины и дополнять файл своими алиасами.

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

Обнаружение антиразброса (No Recoil aka No Spread). Метод обнаружение происходит путем подсчета радиуса движения и некоторых дополнительных проверок, что снижает ложные срабатывания во много раз.

Обнаружение быстрых ударов ножом (Fast Knife Hack). Метод, который представлен тут имеет некоторую особенность, а именно грамотный расчет и подсчет действий игрока с ножиком в руках, тем самым нагрузка на сервер должна быть минимальная.

Проверка на некоторые файлы.spr, в случае их отсутствия плагин автоматически докачает их клиенту.

Плагин выполняет автоматический снимок, непосредственно перед наказанием.

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

Имеется функция игнорировать игроков, которые имеют флаг или серию флагов установленных в файле user.ini и uac_global.cfg.

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

Требуемые модули: Amxmodx, Fakemeta
Локализация: - Русский. - Английский.
sector
Версия: 2.0
Техническая поддержка: csall.ru
Спасибо за тестирование: Denson, Алексею.

История изменений:
Версия 1.0
- Релиз.

Версия 1.1
- Исправлена ошибка с буфером информации.
- Добавлен ряд дополнительных проверок.
- Подправлен код.

Версия 1.2
- Исправлена ошибка связанная с svc.
- Поправлены почти все файлы.
- Добавлено описание к каждой функции как и просили.
- Намного сокращен код, оптимизирован.
- Отредактировано сканирование алиасов и скриптов.
- Добавлены дополнительные модули. (Fakemeta, Hamsandwich)
- Снижена нагрузка от плагина, работа гладкая и тихая.
- В связи с обновлением Steam, отредактирован тип определения ускоренных действий.
- Добавлена проверка на аимбот, автовыстрел.

Версия 1.3
- Поправлен метод определения запрещенных алиасов и скриптов. Теперь он еще лучше и глаже работает.
- Добавлена проверка на быстрое вращение во круг своей оси. (Spin Hack)
- Добавлена проверка на быстрые выстрелы. (Fastfire Hack)
- Немного поправлен код, обнаружения Aim Hack"a.

Версия 1.4
- Убран модуль Hamsandwich.
- Исправлены некоторые ошибки.
- Убран модуль определения быстрых выстрелов за ненадобностью.
- Добавлена переменная uac_s_aimhack.
- Применен принцип "Цепочки" т.е. каждая функция запускает другую.
- Немного изменен вид определения протектора.

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

Версия 1.6
- Исправлены некоторые недочеты в коде.
- Добавлены некоторые алиасы.
- Добавлены новые переменные.
- Добавлен модуль обнаружения антиразброса.

Версия 1.7
Добавлен еще один вид определения ускоренного передвижения, теперь их два и мультимод.
Поправлен языковой файл.
Добавлены новые переменные.
Добавлено уведомление о защите.
Надеюсь исправил "Server tried to send invalid command"
Теперь в логах будет отображаться протокол игрока.

Версия 1.8
Поправлены некоторые недочеты.
Все сообщения перемещены в чат для экономии пространства экрана.
Поправлены некоторые файлы.
Замены требуют все файлы.

Версия 1.9
Добавлен модуль определения быстрых ударов ножом. (Fast Knife Hack)
Исправлен недочет с сообщением о наличие защиты.
Подкорректирован код.
Добавлены новые переменные.

Версия 2.0
Добавлена проверка на 48/47 протоколы.
Добавлена переменная uac_steam.
Добавлен новый файл uac_files.ini
Поправлено логирование.

Контроль учетных записей (User Account Control), вероятно, является самой недооцененной и, возможно, даже самой ненавистной многими функцией, которая дебютировала в Висте и стала частью всех последующих версий Windows. По большей части поток ненависти, который пользователи выплескивают на User Account Control, я считаю незаслуженным, поскольку функция несет реальную пользу. Я полностью согласен, что иногда контроль учетных записей (далее по тексту просто UAC) может быть весьма раздражающим, но он был внедрен в Windows с определенной целью. Нет, не для того чтобы мешать пользователям, а чтобы способствовать плавному переходу от стандартного (ограниченного) аккаунта к учетной записи администратора.

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

Немного предыстории и информация об учетных записях

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

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

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

В Windows 2000 и Windows XP выполнение действий от имени администратора реализовано не достаточно гибко, а потому работать под ограниченной учетной записью было не очень удобно. Один из способов выполнить администраторское действие в этих версиях системы выглядит так: выход из ограниченной учетной записи (или быстрое переключение, если использовалась Windows XP) -> вход в аккаунт администратора -> выполнение действия -> выход из учетки администратора (или быстрое переключение, если использовалась Windows XP) -> возврат в ограниченную учетную запись.

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

Вот почему в Windows Vista была внедрена функция User Account Control, а в Windows 7 была доведена почти до совершенства.

Что такое UAC

UAC – это функция в Windows Vista, 7, 8, 8.1 и 10, которая имеет цель сделать переход из ограниченной среды в администраторскую максимально гладким и беспроблемным, устраняя необходимость запускать файлы с правами администратора вручную или переключаться между учетными записями. Кроме того, UAC – это дополнительный слой защиты, который не требует почти никаких усилий со стороны пользователя, но способен предотвратить серьезный ущерб.

Как работает UAC

При входе пользователя в свою учетную запись Windows создает так называемый user access token, который содержит определенные сведения о данной учетной записи и главным образом различные идентификаторы безопасности, которые операционная система использует для управления возможностями доступа этого аккаунта. Другими словами, этот token является своего рода личным документом (как паспорт, например). Это относится ко всем версиям Windows на основе ядра NT: NT, 2000, XP, Vista, 7, 8 и 10.

Когда пользователь входит в стандартную учетную запись (ограниченную), создается standard user token с ограниченными правами. Когда пользователь входит в администраторский аккаунт, создается т.н. administrator token с полным доступом. Логично.

Однако в Windows Vista, 7, 8 и 10, если UAC включен и пользователь входит в учетную запись администратора, Windows создает два token’а. Администраторский остается на заднем плане, а стандартный используется для запуска Explorer.exe. То есть Explorer.exe запускается с ограниченными правами. При этом все запущенные после этого процессы становятся субпроцессами Explorer.exe с унаследованными ограниченными привилегиями основного процесса. Если процессу требуются права администратора, он запрашивает администраторский token, а Windows в свою очередь спрашивает разрешения пользователя предоставить процессу этот token в виде специального диалогового окна.

Это диалоговое окно содержит так называемый безопасный рабочий стол (secure desktop), доступ к которому имеет только операционная система. Он выглядит как затемненный снимок реального рабочего стола и содержит только окно подтверждения администраторских прав и, возможно, языковую панель (если активировано более одного языка).

Если пользователь не согласится и нажмет «Нет», Windows откажет процессу в администраторском token’е. А если согласится и выберет «Да», операционная система предоставит процессу необходимые ему привилегии, а именно, администраторский token.

Если процесс уже запущен с пониженными правами, он будет перезапущен с таковыми повышенными (администраторскими). Процесс не может быть «понижен» или «повышен» напрямую. После того как процесс был запущен с одним token’ном, он не сможет получить других прав до тех пор, пока снова не будет запущен с новыми правами. В качестве примера можно привести Диспетчер задач, который всегда запускается с ограниченными правами. Если вы нажмете кнопку «Отображать процессы всех пользователей», Task Manager будет закрыт и снова запущен, но уже с правами администратора.

При использовании стандартной учетной записи UAC просит указать конкретный администраторский аккаунт и ввести пароль:

Как UAC защищает пользователя

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

  • основной раздел диска;
  • пользовательские папки других пользователей в папке \Users\;
  • папка Program Files;
  • папка Windows и все ее подпапки;
  • разделы других учетных записей в системном реестре
  • раздел HKEY_LOCAL_MACHINE в системном реестре.

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

Может ли UAC помешать работе старых программ, которые официально не совместимы с Vista/7/8/10

Не должен. Когда UAC включен, также включена и виртуализация. Некоторые старые и/или просто небрежно написанные программы не используют правильные папки для хранения своих файлов (настройки, журналы и т.д.). Правильные папки – это папки в каталоге AppData, которые есть у каждой учетной записи и где каждая программа может создать папку для хранения там всего, что пожелает.

Некоторые программы пытаются сохранить свои файлы в Program Files и/или Windows. Если программа запускается с правами администратора, это не будет проблемой. Однако если программа выполняется с ограниченными разрешениями – она не сможет внести изменения в файлы/папки в Program Files и/или Windows. Операционная система просто не позволит ей этого.

Дабы предотвратить проблемы с такими программами, Windows предлагает виртуализацию папок и ключей реестра, к которым программы с ограниченными правами не имеют доступа в принципе. Когда подобная программа пытается создать файл в защищенной папке, то операционная система перенаправляет ее в специальную папку VirtualStore, которая находится в X:\Users\<имя-вашего-профиля>\AppData\Local\ (где X: это системный раздел, обычно – C:). Т.е. глазами самой программы все в порядке. Она не сталкивается с препятствиями и считает, что создает файлы/папки точно там, где хочет. VirtualStore обычно содержит вложенные папки Program Files и Windows. Вот скриншот Program Files в моей папке VirtualStore:

А вот, что находится в папке SopCast, например:

Т.е. если бы UAC был остановлен, или программа всегда запускалась с правами администратора, эти файлы/папки были бы созданы в C:\Program Files\SopCast. В Windows XP эти файлы и папки были бы созданы без проблем, потому что в ней все программы имеют права администратора по умолчанию.

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

Диалоговые окна UAC

Вы могли заметить, что существует всего три различных диалоговых окна UAC. Тут мы рассмотрим таковые в Windows 7, 8.x и 10. В Vista диалоги несколько отличаются, но мы не будем на них останавливаться.

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

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

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

Настройки UAC

Настройки (режимы работы) контроля учетных записей находятся в Панель управления -> Система и безопасность -> Изменение параметров контроля учетных записей . Их всего 4:

Всегда уведомлять – самый высокий уровень. Этот режим эквивалентен способу работы UAC в Windows Vista. В этом режиме система всегда требует подтверждения прав администратора, независимо от процесса и что он требует.

Второй уровень используется по умолчанию в Windows 7, 8.x и 10. В этот режиме Windows не выводит окно UAC, когда дело доходит до так называемых Windows binaries. Т.е. если файл/процесс, который требует прав администратора, отвечает следующим 3 условиям, операционная система наделит его ими автоматически, без подтверждения со стороны пользователя:

  • файл обладает встроенным или в виде отдельного файла манифестом (manifest), который указывает на автоматическое повышение прав;
  • файл находится в папке Windows (или в любой из ее подпапок);
  • файл подписан действительной цифровой подписью Windows.

Третий режим такой же, как второй (предыдущий), но с той разницей, что при нем не используется безопасный рабочий стол. То есть экран не затемняется, а диалоговое окно UAC появляется как и любое другое. Майкрософт не рекомендует использовать этот вариант, а почему – я объясню позже.

Не уведомлять меня – четвертый и последний уровень. Фактически это означает полное отключение UAC.

Здесь уместно сделать два замечания:

  • цифровая подпись Windows относится конкретно к операционной системе. Я говорю это, потому что существуют и файлы, которые были подписаны цифровой подписью Microsoft. Это две отдельные подписи, при этом UAC признает только цифровую подпись Windows, поскольку она выступает в качестве доказательства, что файл не только от Microsoft, но и является частью операционной системы.
  • не все файлы Windows располагают манифестом для автоматического повышения прав. Есть файлы, которые намеренно лишены этого. Например, regedit.exe и cmd.exe. Понятно, что второй лишен автоматического повышения, потому что очень часто используется для запуска других процессов, а как уже упоминалось – каждый новый процесс наследует права процесса, который его запустил. Это означает, что каждый мог бы использовать командную строку для беспроблемного запуска любых процессов с правами администратора. К счастью, в Microsoft не дураки сидят.

Почему важно использовать безопасный рабочий стол

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

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

Когда нужны права администратора? Когда появляется окно UAC?

Вообще есть три случая, при которых UAC обращается к пользователю:

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

Почему важно не отключать UAC

Контроль учетных записей пользователей обеспечивает высокий уровень защиты, а взамен не требует практически ничего. То есть коэффициент полезного действия UAC очень высок. Я не понимаю, почему он так раздражает людей. В повседневной работе среднестатистический пользователь видит окно UAC 1-2 раза в день. Может быть, даже 0. Это так много?

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

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

Очень немногим программам нужны права администратора для выполнения своей работы. Это в основном дефрагментаторы, инструменты для очистки и оптимизации, некоторые программы для диагностики (AIDA64, HWMonitor, SpeedFan и др.) и настройки системы (Process Explorer и Autoruns, например, но только если нужно выполнить что-то специфичное – скажем, отключить драйвер/службу или стартующую с Windows программу). И все это программы, которые либо можно не использовать вообще, либо в редких случаях. Все часто используемые приложения работают с UAC абсолютно нормально и не задают никаких вопросов:

  • мультимедийные плееры (аудио и/или видео);
  • конвертеры видео/аудио;
  • программы для обработки изображений/видео/аудио;
  • программы для захвата скриншотов рабочего стола или видеозаписи на нем;
  • программы для просмотра изображений;
  • веб-браузеры;
  • загрузчики файлов (download-менеджеры и клиенты P2P-сетей);
  • FTP-клиенты;
  • мессенджеры или программы для голосовой/видео связи;
  • программы для записи дисков;
  • архиваторы;
  • текстовые редакторы;
  • PDF-ридеры;
  • виртуальные машины;
  • и др.

Даже установка обновлений Windows не задействует окно UAC.

Есть люди, которые готовы пожертвовать 1-2 и более минут в день, чтобы «оптимизировать» систему некоторыми криво написанными программами, которые не делают ничего полезного, но не готовы потратить несколько секунд в день, чтобы ответить на запросы UAC.

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

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

И это лишь один из множества примеров.

Запуск приложений вместе с Windows с правами администратора

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

  • откройте Планировщик заданий ;
  • нажмите Создать задачу ;
  • в поле Имя введите что-нибудь по своему усмотрению, а в нижней части окна включите параметр Выполнять с наивысшими правами ;
  • перейдите на вкладку Триггеры и нажмите Создать ;
  • в выпадающем меню сверху выберите При входе в систему ; если вы хотите создать задачу для конкретного пользователя, выберите вариант Пользователь , а затем нажмите Сменить пользователя ; введите имя пользователя и подтвердите нажатием кнопки OK ;
  • перейдите на вкладку Действия и нажмите Создать ;
  • нажмите Обзор , укажите соответствующее приложение и подтвердите свой выбор;
  • перейдите на вкладку Условия и отключите параметр Запускать только при питании от электросети ;
  • на вкладке Параметры отключите параметр Останавливать задачу, выполняемую дольше;
  • подтвердите, нажав OK .

Готово. Задача добавлена, так что теперь приложение будет загружаться автоматически с правами администратора. Здесь, однако, есть одна небольшая загвоздка: все подобные задачи выполняются с приоритетом ниже, чем нормальный – below normal (ниже нормы). Если вас это устраивает, то все в порядке. Если нет, тогда вам придется потрудиться немного больше:

  • запустите Планировщик заданий , если вы уже закрыли его;
  • выберите Библиотека планировщика заданий ;
  • отметьте вашу задачу, нажмите Экспорт и сохраните ее в формате.xml;
  • откройте.xml файл в текстовом редакторе;
  • найдите раздел 7 , который должен быть в конце файла и измените семерку (7) между открывающим и закрывающим тегами на пятерку (5);
  • сохраните файл;
  • в Планировщике заданий снова выделите свою задачу, нажмите Удалить и подтвердите удаление;
  • теперь нажмите Импортировать задачу , укажите только что сохраненный файл и нажмите кнопку OK .

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

Отличного Вам дня!