Uac file virtualization driver отключить или нет

Обновлено: 05.07.2024

Начиная с Windows Vista, Microsoft включила в состав операционной системы механизм управления учетными записями пользователей (сокращенно UAC). Механизм работы UAC большинство пользователей восприняли негативно, так как бесконечные дополнительные валидации в виде затенения экрана и прощелкивания кнопочки Yes могли вывести из себя даже самого терпеливого. Зачастую UAC функционировал не вполне корректно, что приводило к не возможности работы с рядом программ, которые были написаны под ранние версии Windows. C выходом SP1 для Vista UAC был доработан, но пользователи уже успели отключить UAC и забыть что это такое.

В Windows 7 UAC приобрел дополнительные настройки. И я бы хотел рассказать, как именно сделать UAC действительно полезным инструментом для защиты ОС.

Точно ли работает UAC?

Или скопируйте какой-нибудь файл в System32 в проводнике или стороннем файловом менеджере. Появится диалог, где будет кнопка со щитом, ведущая к успеху. Занятно, что запроса UAC вроде как нет, но все-таки от вас требуют подтвердить операцию правами администратора.

UAC turn off

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

Уязвимости Windows

  1. Файловая система (как правило: заражение исполняемых файлов)
  2. Службы Windows
  3. Реестр

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

Заключение

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

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

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

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

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

Хочу напомнить, что отключая user account control вы подвергаете всю систему опасности и превращаете вашу ОС в windows XP, а не просто отключаете надоедливые окошки.
При этом отключая UAC вы выключаете windows resource protection, который собирает все необходимые для «жизни» файлы в хранилище, что бы после критического сбоя восстановить поврежденные файлы.
Виртуализация осуществятся в режиме ядра.
* Файловая система: драйвером luafv.sys.
* Реестр: встроенными средствами.
Перенаправляемые каталоги системы:
\Program Files, \Windows, \Windows\System32.
Исключения: Системные *.exe и *.dll.
Перенаправляемые разделы реестра:
HKLM\Software
Исключения: Некоторые ключе подраздела Microsoft.
Приложение работающее с обычными правами, перенаправляет в:
* Запись:
\Users\\AppData\Local\Virtual Store
HKCU\Software\Classes\VirtualStore
Что совершенно прозрачно происходит для самого приложения, т.е. приложение продолжает думать что оно пишет к примеру в \Program Files.
* Чтение:
Сначала используется зона пользователя, затем глобальное расположение.

Повышение привилегий для определенного приложения:
* В свойствах ярлыка поставить галочку «Запускать от имени администратора».
* Эвристическим инсталлятором.
* Явным запросом пользователя.
* В манифесте.

* Изменения в каталогах %SystemRoot% и %ProgramFiles% — в частности, инсталляция/деинсталляция ПО, драйверов и компонентов ActiveX; изменение меню «Пуск» для всех пользователей.
* Установка обновлений Windows, конфигурирование Windows Update.
* Перенастройка брандмауэра Windows.
* Перенастройка UAC.
* Добавление/удаление учётных записей.
* Перенастройка родительских запретов.
* Настройка планировщика задач.
* Восстановление системных файлов Windows из резервной копии.
* Любые действия в каталогах других пользователей.
* Изменение текущего времени (впрочем, изменение часового пояса UAC не вызывает).

Недавно я писал в Telegram и ВК о том, что Microsoft не тестирует Windows 10 с отключенным контролем учетных записей. Вдогонку я сделал опрос, где поинтересовался, включен ли UAC у читателей. В варианте для Telegram было три варианта ответа «Да», но только один вариант «Нет».

UAC turn off

А следовало бы сделать два варианта, чтобы выяснить, какая доля от 17% выбравших пункт «Нет» пребывает в ложной уверенности ;)

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

UAC turn off

В этом положении отключаются только запросы UAC с вопросом Да/Нет.

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

Виртуализация UAC тоже работает при отключении уведомлений. У меня самурайский менеджер буфера обмена Charu установлен в Program Files, там же он пытается создавать папки для пользователей и писать данные в них. Но виртуализация UAC перенаправляет все в профиль вне зависимости от положения ползунка.

UAC turn off

Настройка UAC


В Windows 7 появилась возможность настройки уровня предупреждений для UAC. Экран настройки UAC выглядит следующим образом:

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

  1. Самый высокий уровень – предупреждения при любых попытках модифицировать системные настройки и файлы, а так же при установке программного обеспечения
  2. Второй уровень – предупреждения только при попытках внести изменения в системную конфигурацию и настройки пользователя
  3. Третий уровень – предупреждения только при попытках внести изменения в системную конфигурацию
  4. Четвертый уровень – полное отключение UAC.

Рассмотрим более подробно некоторые из политик UAC:

  1. Behavior of the elevation prompt for administrators – позволяет задать режим поведения окна валидации при повышении администраторских прав. К примеру, можно включить подтверждение прав с помощью пароля (prompt for credentials) или оставить подтверждение прав только с помощью нажатия OK (prompt for consent).
  2. Behavior of the elevation prompt for users – аналогично первому пункту, но для учетных записей в режиме пользователя.
  3. Switch to the secure desktop when prompting for elevation – переключению рабочего стола в безопасный режим при прохождении валидации. Для пользователя включение данной политики отражается в виде затенения рабочего стола при прохождении проверки. В дествительности роль данной политики в изоляции процедуры валидации от других работающих программ с целью предотвратить перехват окна UAC программными способами.
  4. Virtualizes file and registry write failures to per-user locations – виртуализация файлов и реестра. Позволяет работать с программами в режиме виртуализации с целью исключить повреждения файловой системы и реестра (режим песочницы).

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

Проверка функционирования защиты UAC

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

Приведу пример функционирования вируса при включенном UAC’е.

В качестве примера я возьму троянскую программу Win32.Injector. Данный троян действует весьма просто просто: записывает себя в директорию C:\Windows\System32 и прописывает свою загрузку в реестр. В итоге после перезагрузки компьютера запускается большое количество cmd.exe и services.exe. Самый простой способ распространения – запуск из autorun’а на флеш-накопителях.


Попытаемся запустить данный троян с включенным UAC’ом. У меня это исполняемый файл nsshell.exe, который по-умолчанию так же является скрытым.

Рис. 4. Троянская программа nsshell.exe.


Чтобы убедиться, что это действительно вирус, проверим nsshell.exe c помощью антивируса:

Рис. 5. Антивирус показывает, что nsshell.exe – троян.


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

Рис. 6. Срабатывание UAC при запуске nsshell.exe

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

Как процессы получают полные права

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

Установщики подавляющего большинства программ прописывают в манифесте уровень highestAvailable. В этом случае у администраторов установщик запускается с полными правами сразу, поэтому запись в системные расположения (Program Files) ведется без подтверждений.

В этом и заключается недостаток работы с отключенными уведомлениями UAC. Вы никак не контролируете запуск процессов с полными правами.

Дополнительная защита

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

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

Проблемы со старыми программами

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

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

Вообще, можно посоветовать не ставить старые программы в ProgramFiles, чтобы избежать проблем с правами доступа.

Резюме

Microsoft нашла баланс между комфортом пользователей и совместимостью приложений – старых и современных.

Именно магазинные приложения в Windows 8 подтолкнули к этому изменению!

UAC отключается, конечно, но только политикой или в реестре. (При этом магазинные приложения в Windows 10 все равно запускаются, но виртуализация UAC отключена, конечно.) Однако дома никакого смысла в этом нет. Тем более, что Microsoft даже не рассматривает такой вариант работы.

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

  • сдвинул ползунок вниз, думая, что отключает UAC – вам комфортно работается?
  • отключает UAC полностью – какую цель вы преследуете?

Метки: UAC, безопасность, нюансы Информация в статье применима к Windows 8 и новее

Вадим - владелец этого блога, и почти все записи здесь вышли из-под его пера. Подробности о блоге и авторе здесь. Поддержать автора вы можете тут.

Вас также может заинтересовать:

Подпишитесь на канал и читайте интересные записи чаще! Есть вопросы? Задайте их в чате.

комментарий 31

Ваша оценка: 0

Новый билд Office 365 не ставится, если UAC выключен. Судя по окну, которое выкидывает установщик, проверка встроена на уровне манифеста, поэтому фанатам выключенного UAC остается только Resource Hacker и аналоги.

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

Не использую UAC на тестовых машинах, но только не тогда, когда надо протестировать сам UAC ;)

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

Ваша оценка: 0

Да, это проблема. В принципе, решается запуском от имени адмнистратора, но сторонних ФМ на серверах не держат, а с проводником это неудобно.

Есть еще способ блокнот (или так, кто не в ТГ) для разовых задач. Но раз ты ходишь в системные папки часто, тоже не очень удобно.

Ваша оценка: +1

Есть же PowerShell, ну или cmd, на худой конец.
Интересности начинаются при доступе по smb. Сразу получаешь наивысшие привилегии, которые у тебя есть.

Ваша оценка: 0

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

Ваша оценка: 0

Отключены уведомления, юак включен.

Ваша оценка: 0

Есть ещё те, кто отключают UAC. Странно. UAC позволяет точно знать, нужны запускаемому приложению повышенные привилегии, или нет.

Ваша оценка: +1


Николай

Вне зависимости ОСи отключено всё, брандмауэр, защитник виндовс ну и uac естественно

Ваша оценка: -2

Надеюсь, курсивом выделен сарказм.

Ваша оценка: +1

Странно для читателя этого блога

Ваша оценка: +1


Николай

Ваша оценка: 0

Дня выхода в интернет, авторизации на разных ресурсах, написания комментариев оно не используется? Ну, ок:)

Ваша оценка: 0


Николай

Вадим, имею в работе два системника и два ноутбука))

Ваша оценка: 0

В общем, излагайте внятно сразу, и вас будет намного проще понять.

Ваша оценка: 0


Dmitry Yanchenko

Ваша оценка: +1 Ваша оценка: +1


Dmitry Yanchenko

Ваша оценка: 0

О, Вадим ещё живой.
Пришлось таки пересесть на эту десятку, UAC естественно не трогал, вполне нормальный механизм. А вот встроенный антивирус не нужон, вырубил. И конечно же редакция LTSC, в ней раза в три меньше хлама )

Ваша оценка: 0

Поздравляю с прогрессом лол

Ваша оценка: 0

Еще стоит накатить батник от ВестЛайфа (WestLife).

Ваша оценка: 0 Ваша оценка: 0

Виталий, есть другие способы написать, и даже получить ответ.
И да, к предыдущей сборке набор был.

Ваша оценка: 0 Ваша оценка: 0 Ваша оценка: 0

Возможно, в Nvidia тоже не тестируют с отключенным UAC :)

Ваша оценка: 0 Ваша оценка: +1

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

Ваша оценка: +1

UAC всегда включен, переключатель в рекомендуемом положении. Вообще все переключатели в ОС предпочитаю оставлять в рекомендуемом положении; если инженеры в МС за меня подумали, то нафига мне тратить мозг на тоже самое? Я прислушаюсь и оставлю себе время для основной работы.
По первой, когда увидел работу UAC, все эти уведомления мешали. Но научился с ними жить, и даже помогает, сразу видно, что кто-то в компьютере хочет совершить какую-то пакость. Сейчас набор запускаемых программ ограничен (не программно, а только моими потребностями), и уведомлений UAC почти не вижу. Иногда вдруг вспоминаю про них, пугаюсь, и лезу проверять, «включен ли UAC, что-то давно не было его видно.»

Ваша оценка: +1

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

Ваша оценка: 0

UAC отключаю. Во-первых, я привык к некоторым программам, которым нет замены или они просты и легки, в отличии от современных аналогов. Например это программка Scroll, позволяющая скроллить мышкой то окно, над которым находится курсор. Во-вторых, не доверяю M$ и лучше пусть за доступом к значимым областям ОС следит HIPS Comodo. Свидетелем огромного количества заражений я уже был, когда UAC включённый на компьютерах доменной политикой, пропускал пакостные вирусы и зловреды. Кстати, на то время у нас в сети использовался майкрософтовский антивирь. В-третьих, приходится создавать мульти-загрузочные флешки. И вот с UAC такие программы работают некорректно. В частности xBoot зависал на пол пути создания флешки и Qemu из его состава работал не пойми как.

Ваша оценка: 0

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

Вы не поверите, но в Windows 10 это есть из коробки :)

Обожаю такие комментарии от пользователей Windows :)

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

Akelman: В-третьих, приходится создавать мульти-загрузочные флешки. И вот с UAC такие программы работают некорректно.

Технология UAC — не лишний компонент безопасности ОС Windows последних версий и пользователи приходят к этой мысли, борясь с malware и вирусами. Программистам, в свою очередь, стоит грамотно подходить к написанию приложений и принимать во внимание наличие такого «обстоятельства».

image

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

Ниже я расскажу как это делать в Вашем приложении.

Манифест

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

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

Итак, реализация (взято отсюда)

  • asInvoker — уровень прав текущего пользователя (процесса-родителя). Этот вариант устанавливается по-умолчанию.
  • highestAvailable — наивысший уровень прав для текущего пользователя. Т.е. администратор получит полные права после подтверждения юзером кнопкой в окошке, обычный же пользователь ничего не получит.
  • requireAdministrator — самый интересный вариант. Всегда запрашивает разрешение или ввод авторизационных данных администратора.

Другие решения

Проверка на наличе прав
Запуск процесса с запросом прав

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

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

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

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

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

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

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

Оформление приложений

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


Такой щит размещается на кнопках, link-label'ах или других элементах управления, после нажатия на которые пользователь увидит запрос от UAC. К счастью, нам не придется таскать повсюду картинку, поскольку в системе, как ни странно, она уже есть и ее можно получить.

Для WinForms-приложений можно указать системе разместить иконку щита на кнопке.


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

Пример

Рассмотрим теперь маленький пример, реализующий изложенные выше принципы.
В приложении имеется кнопка, которая должна выполнять действия с правами администратора (у меня она просто отображает MessageBox). Если приложение уже запущено с правами, то мы оставляем ее доступной. Если же нет, кнопку блокируем и отображаем панельку с предупреждением и другой кнопкой, позволяющей перезапустить приложение в привилегированном режиме. На кнопке отображаем православную иконку щита.


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


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

Читайте также: