Защита системных файлов с помощью виртуализации UAC (часть 1)

Опубликовано: 9 Апреля, 2023

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

Историческая линия поведения бизнес-приложений

Каталог Program Files (обычно расположенный в C:Program Files и именуемый %ProgramFiles%) — это место, где большинство бизнес-приложений хранят исполняемые файлы приложения. Настройки для LOB-приложения в большинстве случаев хранятся в разделе HKEY_LOCAL_MACHINESoftware в реестре. Оба эти расположения защищены операционной системой, предоставляя системе и администраторам доступ только для записи, тогда как пользователи имеют доступ только для чтения и выполнения.

Бизнес-приложения должны быть разработаны для записи в указанную пользователем папку данных приложения, которая находится в профиле пользователя. Обычно он находится в папке C:Users<username>AppData и называется %AppData%. Если есть пользовательские настройки, которые необходимо сохранить, они должны быть расположены в реестре по адресу HKEY_CURRENT_USERSoftware. Оба этих расположения создаются для каждого пользователя и защищены таким образом, что только этот пользователь имеет доступ к данным, которые записываются по умолчанию.

Однако многие (могу сказать, БОЛЬШИНСТВО) LOB-приложений не предназначены для такой работы. Вместо этого они предназначены для хранения пользовательских данных в %ProgramFiles% и HKEY_LOCAL_MACHINESoftware. К сожалению, обычные пользователи не имеют доступа для записи в эти расположения, из-за чего многие компании добавляют обычных пользователей в локальную группу администраторов для запуска этих приложений. Конечно, это не идеально, так как теперь пользователь может изменять что угодно на компьютере, а не только специфические изменения LOB-приложений в этих местах в системе.

Особенности виртуализации UAC

Так как LOB-приложения нелегко изменить, и пользователи все равно должны запускать эти приложения, Vista применяет другой подход к устранению проблемы. В Vista UAC протягивает руку помощи, виртуализируя файловую систему и пространство имен реестра. UAC будет виртуализировать устаревшие приложения, позволяя обычным пользователям оставаться «стандартными пользователями», но по-прежнему запускать приложения. Определение устаревшего в этом случае включает 32-разрядные процессы, работающие без прав администратора, и не включает файл манифеста Windows Vista. Если процесс или операция не соответствуют этим критериям, они не виртуализируются. Кроме того, следующие процессы и операции не виртуализируются:

  • Приложения Vista по умолчанию
  • Файлы с исполняемыми расширениями, такими как.EXE,.BAT,.VBS и.SCR. Вы можете добавить дополнительные исключения расширений файлов в HKLMSystemCurrentControlSetServicesLuafvParametersExcludedExtensionsAdd
  • 64-битные приложения и процессы
  • Приложения с запрошенной директивой Execution Level в их исполняемом манифесте, как и большинство исполняемых файлов Vista.
  • Процессы или приложения, работающие с правами администратора
  • Приложения режима ядра
  • Операции, не связанные с интерактивным сеансом входа, например обмен файлами.
  • Приложения, изменяющие ключ реестра, помеченный флагом реестра Don't_Virtualize

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

  • Program Files и вложенные папки
  • Program Files (x86) в 64-битных системах
  • Windows и все вложенные папки, включая System32
  • Пользователи\%AllUsersProfile%ProgramData
  • Документы и настройки (символическая ссылка)
  • HKLMПрограммное обеспечение

Проверка виртуализации UAC

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

Первый индикатор будет находиться в графическом интерфейсе проводника Windows. В зависимости от того, какие папки и файлы были виртуализированы, вы увидите дополнительные пункты меню в проводнике Windows. На рис. 1 показано, что показывает проводник Windows, когда у вас есть виртуализированные файлы в папке C:Windows.

Изображение 23926
Рис. 1. Выделенное красным поле указывает на наличие виртуализированных файлов.

Дополнение меню «Файлы совместимости» в проводнике Windows появляется только при наличии файлов, которые были виртуализированы. Новый пункт меню появляется только для тех папок, в которых есть виртуализированные файлы или папки.

Когда выбран пункт меню «Файлы совместимости», он направляет окно проводника Windows к виртуализированным файлам и содержащей их папке. На рис. 2 показано, как выглядит содержимое этой виртуализации файлов и папок.

Изображение 23927
Рис. 2. Параметр меню «Файлы совместимости» хранится в папке VirtuaStore.

Как видите, пункт меню «Файлы совместимости» открывает папку VirtualStore, расположенную в профиле пользователя. Как видно на рисунке 2, это <username>AppDataVirtualStore.

Резюме

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