виртуализация uac что это
UAC немного деталей
Здравствуйте уважаемые! Хотелось бы рассказать немного про один из механизмов защиты ОС.
Наверняка многие не по наслышке знаю что это такое, но надеюсь так же многие подчеркнут для себя что то новое из этого топика, и так приступим!
UAC (User Account Control) — это средство контроля пользовательских учетных записей, впервые появившийся в Windows Vista.
Главная задача 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.
* Чтение:
Сначала используется зона пользователя, затем глобальное расположение.
Повышение привилегий для определенного приложения:
* В свойствах ярлыка поставить галочку «Запускать от имени администратора».
* Эвристическим инсталлятором.
* Явным запросом пользователя.
* В манифесте.
Ну и в довершение неполный список действий, вызывающих сообщение User Account Control:
* Изменения в каталогах %SystemRoot% и %ProgramFiles% — в частности, инсталляция/деинсталляция ПО, драйверов и компонентов ActiveX; изменение меню «Пуск» для всех пользователей.
* Установка обновлений Windows, конфигурирование Windows Update.
* Перенастройка брандмауэра Windows.
* Перенастройка UAC.
* Добавление/удаление учётных записей.
* Перенастройка родительских запретов.
* Настройка планировщика задач.
* Восстановление системных файлов Windows из резервной копии.
* Любые действия в каталогах других пользователей.
* Изменение текущего времени (впрочем, изменение часового пояса UAC не вызывает).
UAC немного деталей
Здравствуйте уважаемые! Хотелось бы рассказать немного про один из механизмов защиты ОС.
Наверняка многие не по наслышке знаю что это такое, но надеюсь так же многие подчеркнут для себя что то новое из этого топика, и так приступим!
UAC (User Account Control) — это средство контроля пользовательских учетных записей, впервые появившийся в Windows Vista.
Главная задача 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.
* Чтение:
Сначала используется зона пользователя, затем глобальное расположение.
Повышение привилегий для определенного приложения:
* В свойствах ярлыка поставить галочку «Запускать от имени администратора».
* Эвристическим инсталлятором.
* Явным запросом пользователя.
* В манифесте.
Ну и в довершение неполный список действий, вызывающих сообщение User Account Control:
* Изменения в каталогах %SystemRoot% и %ProgramFiles% — в частности, инсталляция/деинсталляция ПО, драйверов и компонентов ActiveX; изменение меню «Пуск» для всех пользователей.
* Установка обновлений Windows, конфигурирование Windows Update.
* Перенастройка брандмауэра Windows.
* Перенастройка UAC.
* Добавление/удаление учётных записей.
* Перенастройка родительских запретов.
* Настройка планировщика задач.
* Восстановление системных файлов Windows из резервной копии.
* Любые действия в каталогах других пользователей.
* Изменение текущего времени (впрочем, изменение часового пояса UAC не вызывает).
UAC, давай дружить!
Технология UAC — не лишний компонент безопасности ОС Windows последних версий и пользователи приходят к этой мысли, борясь с malware и вирусами. Программистам, в свою очередь, стоит грамотно подходить к написанию приложений и принимать во внимание наличие такого «обстоятельства».
На хабре и вообще в сети много статей на тему «Как отключить UAC», «Как обойти UAC» и др. Но зачем отключать, функция ведь полезная? Зачем обходить, мы ведь не злоумышленники?
Ниже я расскажу как это делать в Вашем приложении.
Манифест
Для начала рассмотрим самый простой и некрасивый, по моему мнению, вариант — редактирование манифеста. Чем он плох? Тем, что подходит только для тех приложений, которым всегда нужно иметь привелегии администратора. Как это будет выглядеть? Пользователь при запуске вашего приложения получить знакомое окошко, в котором ему нужно будет подтвердить разрешение на выполнение программой действий с привилегиями администратора. И так каждый раз при запуске программы. В принципе, вариант приемлим для программ, которые запускаются нечасто и в одном экземпляре.
Сразу нужно сказать, что в автозапуск (не уверен, что всеми способами, но по крайней мере, через реестр) такие приложения помещать нельзя. Windows их просто прихлопнет на старте, не показав никакого окна UAC. Может быть, в этом случае есть смысл использовать технологии служб Windows.
Итак, реализация (взято отсюда)
Другие решения
Проверка на наличе прав
В первую очередь после запуска приложения или в тех местах, где это требуется, нужно проверить не запущены ли мы уже с правами администратора (вдруг юзер уже отключил UAC). Если это так, то большинства последующих манипуляций можно будет избежать. Проверка делается просто (да, кстати, код здесь и дальше на C#):
Запуск процесса с запросом прав
Допустим, нет у нас прав. Что же дальше? Приложение, запущенное с какими-либо правами, не может их изменить в процессе своей работы. Для выполнения действий с повышенными привилегиями необходимо запускать новый процесс с запросом прав. Как вообще это сделать:
2. Запуск собственного дополнительного приложения с параметрами. Допустим, вам ну очень нравится использовать WinAPI и не хочется разбиратся с системными утилитами или ваша задача не столь банальна, как приведенная выше. В таком случае вы можете написать маленькую консольную утилиту, которая будет выполнять нужные вам действия. Но это и лишние затраты времени, и необходимость поддержки дополнительной утилиты, интерфейсов взаимодействия и т.д.
2а. Дополнительное приложение может запускатся только один раз и продолжать висеть в памяти. Организовав общение с ним из основного приложения, вы можете выполнять нужные вам административные задачи без последующих запросов прав. Но это еще более сложный вариант. Опять же таки, в этом случае есть смысл посмотреть в сторону служб Windows в качетсве дополнительного приложения, которые по-умолчанию запускаются с привилегиями администратора.
3. Запуск еще одного экземпляра основного приложения с параметрами. Допустим, у вас есть пять простых действий, которые нужно выполнять с правами администратора. Забейте для них параметры командной строки вашего же приложения и на запуске проверяйте их наличие. Получив какой-либо из этих параметров, выполните соответствующее действие и завершите работу. Данный вариант, судя по StackOverflow является самым распространенным, по скольку код остается в рамках одного приложения, да и реализуется все просто.
4. Введение двух режимов работы приложения. Если приложению права администратора необходимы редко, то стоит ввести два режима работы: обычный и привилегированый. В обычном режиме (а мы это определяем с помощью указанной выше функции IsAdmin()) операции, требующие права администратора, остаются заблокированными, но у пользователя появляется возможность перезапустить приложение с правами админа и получить доступ к забокированному функционалу. В привилегированном режиме (IsAdmin() возвращает true) мы не блокируем функционал.
Таким образом, запрос появляется перед пользователем только один раз и в процессе подальшей работы с приложением больше не будет отвлекать. Если же пользователь отключил UAC, то об «обычном» режиме он даже не узнает.
Данный подход требует немного усилий на начальном этапе, но дальше позволяет писать приложение без каких-либо ограничений и вынесений кода в другие программы и блоки. Небольшой пример будет рассмотрен ниже.
Оформление приложений
Всем нам хочется писать стильные и красивые оконные приложения и в вопросах использования UAC без фирменного щитка на контролах ну никак не обойтись.
Такой щит размещается на кнопках, link-label’ах или других элементах управления, после нажатия на которые пользователь увидит запрос от UAC. К счастью, нам не придется таскать повсюду картинку, поскольку в системе, как ни странно, она уже есть и ее можно получить.
Для WinForms-приложений можно указать системе разместить иконку щита на кнопке.
Для тех, кто уже отказался от WinForms и перешел к разработке приложений с помощью WPF, также есть решение. Для того, чтобы получить ImageSource иконки и указать ее в каком-либо контроле, можно использовать следующий код.
Пример
Рассмотрим теперь маленький пример, реализующий изложенные выше принципы.
В приложении имеется кнопка, которая должна выполнять действия с правами администратора (у меня она просто отображает MessageBox). Если приложение уже запущено с правами, то мы оставляем ее доступной. Если же нет, кнопку блокируем и отображаем панельку с предупреждением и другой кнопкой, позволяющей перезапустить приложение в привилегированном режиме. На кнопке отображаем православную иконку щита.
Кроме того, окно приложения после перезапуска отображается в том же месте и с теми же размерами благодаря передаче контекста через командную строку.
Конечно, пример простейший, но он в общих чертах демонстрирует самый близкий мне подход к решению проблемы взаимодействия с UAC. Код примера на github.
Буду рад услышать ваши замечания, коментарии и пожелания.
Виртуализация uac что это
В Windows 7 встроено множество средств защиты пользователей от угроз, не все эти средства понятны пользователя, что в итоге приводит к отключению. Самой первой моей статьей в этом блоге была настройка брандмауера Windows Vista, а не так давно я писал про отключение UAC для определенных приложений. Исследуя аппаратную виртуализацию в Windows 7(известная как XP Mode) я натолкнулся на упоминание о UAC виртуализации. Оказалось, что это простое решение для программ, которые требуют администраторских привилегий.
Причины несовместимости
Что-бы понять в чем заключается виртуализация, нужно сначала понять в чем проблема,зачем программам уровень администратора.
Собственно именно для такого «кривого софта» Microsoft реализовало виртуализацию UAC. В описании на сайте майкрософта написано, что разработчикам не следует во всем полагаться на виртуализацию, а писать свой софт правильно, да кто-ж их слушает.
Суть работы
Все сводится к тому, что UAC перехватывает запросы на запись в защищенные папки (C:\Windows,C:\Program Files\) и реестр, а вместо этого записывает эти данные в папки пользователя. Софту кажется, что запись и чтение ведется из одного места, а на самом деле работа происходит в каталоге пользователя.
Метод действенный, но не стоит его использовать для действительно важного софта. Запись производиться в свободную для записи область жесткого диска, а значит теоретически вирус может повредить или инфицировать эти файлы, а UAC этого даже не заметит.
Как включить UAC виртуализацию
Сначала нужно зайти в диспетчер задач и зайти в меню выбора столбцов. Нас тут интересует пункт «Виртуализация контроля учетных записей»
Теперь находим нужный процесс и нажимаем на нем правой кнопкой мыши. В появившемся окне нужно выбрать «Виртуализация UAC«
Виртуализация uac что это
В Windows 7 встроено множество средств защиты пользователей от угроз, не все эти средства понятны пользователя, что в итоге приводит к отключению. Самой первой моей статьей в этом блоге была настройка брандмауера Windows Vista, а не так давно я писал про отключение UAC для определенных приложений. Исследуя аппаратную виртуализацию в Windows 7(известная как XP Mode) я натолкнулся на упоминание о UAC виртуализации. Оказалось, что это простое решение для программ, которые требуют администраторских привилегий.
Причины несовместимости
Что-бы понять в чем заключается виртуализация, нужно сначала понять в чем проблема,зачем программам уровень администратора.
Собственно именно для такого «кривого софта» Microsoft реализовало виртуализацию UAC. В описании на сайте майкрософта написано, что разработчикам не следует во всем полагаться на виртуализацию, а писать свой софт правильно, да кто-ж их слушает.
Суть работы
Все сводится к тому, что UAC перехватывает запросы на запись в защищенные папки (C:Windows,C:Program Files) и реестр, а вместо этого записывает эти данные в папки пользователя. Софту кажется, что запись и чтение ведется из одного места, а на самом деле работа происходит в каталоге пользователя.
Метод действенный, но не стоит его использовать для действительно важного софта. Запись производиться в свободную для записи область жесткого диска, а значит теоретически вирус может повредить или инфицировать эти файлы, а UAC этого даже не заметит.
Как включить UAC виртуализацию
Сначала нужно зайти в диспетчер задач и зайти в меню выбора столбцов. Нас тут интересует пункт «Виртуализация контроля учетных записей»
Теперь находим нужный процесс и нажимаем на нем правой кнопкой мыши. В появившемся окне нужно выбрать «Виртуализация UAC«
Содержание
Предпосылки создания [ править | править код ]
Ограничение прав, с которыми выполняются приложения (например, различение между «суперпользователем» и «обычными пользователями»), в течение десятилетий было обычным явлением в операционных системах для серверов и мейнфреймов. Домашние же операционные системы Майкрософт (такие, как MS-DOS, Windows 3.x и Windows 9x) не имели разделения прав: программа могла выполнить на компьютере любое действие. По этой причине компьютеры общего пользования быстро подвергались заражению вредоносными программами.
Несмотря на появление разделения прав в Windows NT, пользователи по привычке и для удобства использовали для работы учётную запись с правами администратора, нарушая принцип «запускать любую программу с минимально возможными правами». К тому же многие программы, написанные для Windows 9x или протестированные только с правами суперпользователя, не работали с урезанными правами — например, хранили конфигурационные файлы в каталоге с программой или в общей для всех пользователей ветке реестра.
Получается замкнутый круг: разработчики делают программное обеспечение, которому требуются широкие права пользователей, потому что пользователи «сидят под администраторами»; пользователи ведут же повседневную работу с правами администраторов, потому что этого требует программное обеспечение. Поэтому, несмотря на то, что ОС линейки Windows 9x уже много лет не производятся, на большинстве компьютеров с Windows 2000 и более поздними система разграничения доступа простаивает, а вредоносные программы получают администраторские права. Пропаганда Microsoft, призывавшая делать программы совместимыми с разграничением доступа, действовала, но медленно — многие программы (особенно небольшие утилиты, написанные одиночками) продолжали исполнять операции с повышенными привилегиями. Для того, чтобы склонить разработчиков писать более «безопасные» программы, и был разработан Контроль учётных записей пользователей.
Принцип работы [ править | править код ]
В случае, если программа запрашивает действие, требующее прав администратора, выполнение программы приостанавливается и система выдает запрос пользователю. Окно с запросом размещается на защищённом рабочем столе, чтобы предотвратить «нажатие» программой кнопки разрешения.
Так, выдаются запросы при попытке изменения системного времени, установки программы, редактирования реестра, изменения меню «Пуск».
Список действий, вызывающих срабатывание [ править | править код ]
Вот (неполный) список действий, вызывающих срабатывание Контроля учётных записей пользователей [1] :
Есть три способа написать программу, совместимую с Контролем учётных записей пользователей.
По рекомендациям Microsoft, на элементах интерфейса, которые требуют прохождения Контроля учётных записей пользователей, должна быть нарисована иконка щита.
Недостатки [ править | править код ]
Настройка [ править | править код ]
В Windows Vista контроль учётных записей можно отключить в апплете Панели управления «Учетные записи пользователей», однако уровень обеспечения конфиденциальности и целостности программ и данных существенно снизится.
В Windows 7 Контроль учётных записей пользователей был доработан, в частности, в панели управления вместо единственной настройки, либо включавшей его, либо выключавшей, появились четыре режима работы:
Что такое UAC знают не все пользователи Windows, однако сталкиваться с ним приходится постоянно. Вообще аббревиатура расшифровывается как User Account Control или, если говорить по-русски, контроль учетных записей.
Как заявляют разработчики, UAC контролирует загрузку приложений в операционной системе и препятствует запуску вредоносных приложений, ну а помогает ему супер экран, снабженный искусственным интеллектом, под названием Smart Screen и Windows Defender. Несмотря на все похвалы со стороны Microsoft’a, у меня есть несколько доводов, чтобы отключить все эти агрегаты.
Почему стоит отключить User Account Control?
Как отключить UAC?
Если вы читаете эту статью, значит UAC вас достал, а значит нужно его отключить. Дабы вы не напрягались и не искали эту информацию, выкладываю простую инструкцию.
Инструкция по отключению UAC
Вообще в панели управления есть опция отключения, но с ее помощью не получится полностью вырубить эту субстанцию. На скриншоте как раз она.
Для полного отключения нам понадобится вызвать редактор реестра. Итак, нажимаем клавиши Win + R и в появившееся окно вводим regedit. Далее переходим в этот раздел
где находим параметр EnableLUA и меняем его значение на 0. В центре уведомлений сразу же появится запрос на перезагрузку компьютера и мы конечно же перезагружаемся. После такой операции запросы на запуск программ от UAC не будут нас беспокоить.
Инструкция по отключению Smart Screen
Однако Smart Screen будет нас по-прежнему доставать, поэтому мы отключим и его. Запускаем редактор реестра, как написано выше, и переходим по этому пути
В этом разделе создаем параметр DWORD (32 бита), причем для ОС с любой разрядностью. Параметру задаем имя EnableSmartScreen и присваиваем ему значение 0.
После выполнения всех процедур все всплывающие окна с запросами о разрешении запуска программ или запроса прав администратора исчезнут. По поводу Windows Defender беспокоиться не стоит – он, осознав свою бесполезность, отключится сам, когда вы установите любую антивирусную программу.
Что еще нужно сделать?
Отключив все это, не забудьте установить себе на компьютер хороший, а лучше всего коммерческий антивирус. Наша редакция рекомендует использовать комбайны от ведущих антивирусных вендоров – DrWeb или Kaspersky.