Когда стандартный пользователь входит в компьютер Windows, есть некоторые действия и деятельность, которые нужно защитить. Эта защита не всегда успешна, поскольку некоторые версии Windows не защищают общую систему так, как хотелось бы. Действия, которые нужно защитить, включают в себя изменения и записи в системные папки и системные расположения в реестре. Это необходимо для защиты общей стабильности и безопасности ОС. Windows Vista предоставляет отличное решение для помощи в защите этих ключевых областей системы. Vista использует управление пользовательскими учетными записями (User Account Control) и виртуализацию для обеспечения защиты и безопасности. В этой статье будет рассмотрено, как UAC использует виртуализацию для защиты системы.
Историческое поведение приложений бизнеса (LOB)
Директория программных файлов (Program Files) (обычно расположенная на C:\Program Files и обозначаемая %ProgramFiles%) является тем каталогом, где в большинстве производственных сценариев хранятся исполняемые файлы приложений. Параметры LOB приложений хранятся в ключе HKEY_LOCAL_MACHINE\Software в системном реестре в большинстве случаев. Большинство из этих мест защищено ОС, то есть системе и администратору разрешен доступ с записью, а пользователям дан доступ только чтения и выполнения.
LOB приложения должны разрабатываться так, чтобы записывать в указанную пользователем папку данных приложения, которая расположена в профиле пользоваться. Обычно она располагается в C:\Users\<username>\AppData и обозначается %AppData%. Если есть какие-то специфические пользовательские параметры, которые необходимо хранить, они должны располагаться в ключе реестра HKEY_CURRENT_USER\Software. Оба этих расположения созданы для каждого отдельного пользователя и защищены так, что лишь этот пользователь имеет доступ к данным, которые записаны по умолчанию.
Однако многие (я бы даже сказал БОЛЬШИНСТВО) LOB приложения сделаны не в соответствии с вышеописанной технологией. Вместо этого они хранят специфичные для пользователя данные в папке %ProgramFiles% и в HKEY_LOCAL_MACHINE\Software. К сожалению, обычные пользователи не имеют доступа для записи в эти директории, что заставило многие компании добавлять обычных пользователей в группы локальных администраторов, чтобы они могли выполнять эти приложения. Конечно, это не идеальное решение, так как пользователь в таком случае может изменять что угодно на компьютере, а не только определенные параметры LOB приложения в этих директориях системы.
Специфика виртуализации UAC
Поскольку LOB не легко изменить, и тем не менее пользователям необходимо выполнять эти приложения, Vista использует другой подход для решения этой проблемы. В Vista, UAC протягивает руку помощи, виртуализируя файловую систему и пространство имен системного реестра. UAC виртуализирует наследственные приложения, позволяя стандартному пользователю оставаться «стандартным пользователем» и в то же время выполнять приложения. Определение наследственного в этом случае включает тридцати двух разрядные процессы, работающие без административных привилегий, и не включает явный файл Windows Vista. Если процесс или операция не отвечает этим критериям, он(а) не виртуализируется. Следующие процессы и операции также не виртуализируются:
- Стандартные приложения Vista
- Файлы с такими исполняемыми расширениями, как .EXE, .BAT, .VBS и .SCR. Можно добавлять дополнительные исключения расширения файлов в HKLM\System\CurrentControlSet\Services\Luafv\Parameters\ExcludedExtensionsAdd
- 64-разрядные приложения и процессы
- Приложения с запрошенной директивой уровня исполнения (Execution Level directive) в своем исполняемом проявлении, как большинство исполняемых файлов Vista
- Процессы или приложения, работающие с правами администратора
- Приложения в режиме Kernel
- Операции, не имеющие происхождения в интерактивных сеансах, такие как совместное использование файлов
- Приложения, изменяющие ключ реестра флажком Don't_Virtualize (не виртулизировать)
Виртуализация файловой системы и реестра, конечно, не распространена на всю систему. Есть лишь ограниченное количество мест, которые виртуализируются, и все они необходимы для работы и безопасности ОС. Вот практически полный список расположений, которые виртуализируются:
- \Program Files и подпапки
- \Program Files (x86) на 64-разрядных системах
- \Windows и все подпапки, включая System32
- \Users\%AllUsersProfile%\ProgramData
- \Documents and Settings (symbolic link)
- HKLM\Software
Верификация UAC виртуализации
Когда действие виртуализируется, результирующее содержимое хранится в профиле пользователя, как говорилось раньше. Однако, как на самом деле узнать наверняка, что информация была виртуализирована? В зависимости от того, какое содержимое было виртуализировано, есть некоторые указатели в различных интерфейсах, которые помогут вам увидеть виртуализацию.
Первый указатель находится в интерфейсе проводника Windows Explorer GUI. В зависимости от того, какая папка или файлы были виртуализированы, появляются дополнительные опции меню в Windows Explorer. На рисунке 1 показано, что отображает Windows Explorer, когда у вас есть виртуализированные файлы в папке C:\Windows.
Увеличить
Рисунок 1: Выделенное красное поле указывает, что есть виртуальные файлы
Дополнение функции ‘Файлы совместимости (Compatibility Files)’ в меню Windows Explorer появляется только при наличии виртуальных файлов. Новая опция меню появляется только для тех папок, которые содержат виртуальные папки или файлы.
Когда опция Compatibility Files в меню выбрана, она направит окно Windows Explorer к виртуальным файлам и содержащим их папкам. Рисунок 2 демонстрирует, как выглядит содержимое этих виртуальных файлов и папок.
Увеличить
Рисунок 2: Опция Compatibility Files в меню хранится в папке VirtuaStore
Как видно, опция меню Compability Files открывает папку VirtualStore, расположенную в профиле пользователей. Как видно из рисунка 2, это <username>\AppData\VirtualStore.
Заключение
Все знают, что приложения, работающие на компьютерах Windows неудачно построены. Основной причиной этого является запись приложений в защищенные системные файлы, папки и директории реестра. Это требует, чтобы пользователь имел права локального администратора или чтобы было использовано другое решение. Включение пользовательских учетных записей в группу локальных администраторов в целях возможности успешно запускать приложения, не является хорошим решением. В зависимости от того, как построено приложение, UAC виртуализация файлов и реестра представляет собой отличное решение. Файлы и записи реестра, которые должны были расположиться в этих защищенных местах системы, просто виртуализируются и располагаются в личном профиле пользователя. Это помогает защитить систему и сеть и в то же время позволяет пользователям запускать свои приложения.