Неудивительно, что компания Microsoft продолжила борьбу с вредоносными программами в Windows Server 2008 и Windows Vista. Windows Server 2008 и Vista располагают несколькими новыми компонентами безопасности для более надежной защиты операционной системы, данных и пользователей от вредоносных программ.

Два компонента новых механизмов защиты от опасных программ стали результатом фундаментальных изменений в архитектуре безопасности Windows: User Account Control (UAC), решение для работы с наименее важными привилегиями, и Integrity Control, механизм изоляции (песочница) для вредителей, непреднамеренно загруженных пользователями из Internet. Integrity Control также представляет собой расширение существующей модели управления доступом Windows — логики операционной системы, определяющей, кто может обращаться к ресурсам. Подробно UAC рассмотрен в статье «Использование минимальных привилегий Windows Vista», опубликованной в Windows IT Pro/RE № 8 за 2006 г. В этой статье речь пойдет об архитектуре, функционировании и настройке Integrity Control. В UAC и Integrity Control используются различные механизмы защиты, но они предоставляют схожие службы, которые дополняют друг друга и обеспечивают эшелонированную оборону. Как UAC, так и Integrity Control могут изолировать вредные программы и предотвратить их распространение по операционной системе Windows.

Что может Integrity Control

Компонент Integrity Control операционной системы Windows Vista также известен как Windows Integrity Control (WIC) и Mandatory Integrity Control (MIC). С помощью Integrity Control администраторы могут назначить защищаемым объектам Windows, таким как системные папки и файлы или разделы и папки реестра, уровень доверия, или целостности, по терминологии Microsoft. Целостность объекта не заменяет, но дополняет привычные разрешения доступа к объектам. Уровни целостности могут быть сопоставлены не только объектам Windows, но и учетным записям пользователей или процессам. Они не заменяют, а расширяют типичные права и членство в группах для пользователей и процессов.

Уровни целостности Integrity Control гарантируют, что объекты, пользователи или процессы с низким уровнем целостности не могут влиять на ресурсы с более высоким уровнем целостности. Например, программному коду, непреднамеренно загруженному из Internet и сохраненному браузером Microsoft Internet Explorer (IE) в папке Temporary Internet Files, по умолчанию назначается низкий уровень целостности. Если такая программа попытается выполнить запись в раздел реестра, то Integrity Control блокирует ее, так как по умолчанию Windows назначает разделам реестра более высокий уровень целостности. Integrity Control может не только запретить объектам, пользователям и процессам с низким уровнем целостности вести запись в ресурсы с более высоким уровнем, но и ограничивает их право задействовать ресурсы более высокого уровня.

Уровни целостности расширяют и замещают типичные разрешения для ресурсов; даже если загруженный из Internet программный код через учетную запись пользователя получает полные права в разделе реестра, вести запись в этом разделе запрещено из-за низкого уровня целостности.

Integrity Control, DAC и MAC

Идея Integrity Control заимствована из механизма маркировки, используемого для документов в военных и правительственных учреждениях: «для служебного пользования», «совершенно секретно» и т. д. Сотрудникам, которые нуждаются в доступе к информации, назначается соответствующий допуск.

Только что описанная модель управления доступом известна как обязательное управление доступом (Mandatory Access Control, MAC). Основной принцип MAC заключается в том, что организация (или система) и ее ИТ-администраторы определяют политику управления доступом как для пользователей, так и для ресурсов. Другими словами, пользователи, обладатели ресурсов, не управляют разрешениями доступа к своим ресурсам. В результате такого ограничения пользовательского управления модель MAC сильно отличается от модели избирательного управления доступом (Discretionary Access Control, DAC). В Windows всегда использовалось сочетание моделей MAC и DAC для управления к ресурсам.

Модель MAC занимает преобладающее положение в Windows 2008 и Vista по сравнению с предшествующими версиями Windows. Через Integrity Control операционная система автоматически назначает ресурсам уровни целостности на основе модели MAC. Администраторы могут изменять уровни целостности только после того, как они будут назначены операционной системой, т. е. операционная система может назначить столь высокий уровень целостности, что он будет недоступен даже администраторам.

Уровни целостности Integrity Control

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

  • Ненадежный (untrusted) — низший уровень целостности. Integrity Control назначает его процессам, которые были зарегистрированы анонимно.
  • Низкий (low) уровень назначается любым объектам, непреднамеренно загруженным в компьютер Windows из Internet и сохраненным в папке Temporary Internet Files. IE 7.0 (браузер по умолчанию в Windows 2008 и Vista) также имеет низкий уровень целостности, работая в защищенном режиме (в песочнице), режиме IE по умолчанию.
  • Средний (medium) — уровень целостности по умолчанию. Он неявно назначается объектам, пользователям и процессам, для которых явно не определен уровень целостности. Средний уровень также назначается материалам, сознательно загружаемым пользователями из Internet с помощью функции Save As.
  • Высокий (high) — уровень целостности по умолчанию для учетных записей администратора.
  • Системный (system) — высший уровень целостности. В Windows 2008 и Vista системный уровень целостности назначается всем системным службам и процессам ядра.

На экране 1 показано, какие последствия имеют уровни целостности для пользователей Windows. Если пользователь со средним уровнем целостности пытается выполнить с помощью Notepad запись в файл wic.txt, которому назначен высокий уровень целостности, то Windows блокирует эту попытку и выдает сообщение об ошибке.

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

В приведенном выше списке показано, как Integrity Control использует низкий уровень целостности, чтобы эффективно изолировать вредные программы, непреднамеренно загруженные пользователями из Internet и сохраненные браузером в папке Temporary Internet Files. Низкий уровень целостности располагается ниже выбираемого по умолчанию среднего уровня в иерархии уровней целостности. Это означает, что Integrity Control автоматически блокирует попытки доступа к локальным ресурсам со стороны вредных программ из Internet. По умолчанию средний уровень целостности назначается всем немаркированным объектам, пользователям и процессам, т. е. большинству объектов, пользователей и процессов в системах Windows 2008 и Vista.

Integrity Control не блокирует программы, загруженные в компьютер из источников, отличных от Internet, например с дискет, USB-накопителей, CD-ROM или DVD-дисков. Таким программам будет назначен средний или высокий уровень, в зависимости от учетной записи, с которой был зарегистрирован пользователь при появлении программы. Поэтому важно внимательно относиться к наименьшим привилегиям, даже в Windows 2008 и Vista. Никогда нельзя отключать UAC и следует чрезвычайно осторожно обращаться с дискетами, USB-устройствами, CD-ROM и DVD-дисками из процессов административного уровня.

Просмотр и изменение уровней целостности

Выяснив принципы работы Integrity Control и организации уровней целостности, можно рассмотреть способы применения уровней целостности объектов, пользователей и процессов.

В дополнение к списку DACL, в котором Windows хранит разрешения доступа объекта, у каждого объекта Windows есть системный список управления доступом (System ACL, SACL), в котором хранится уровень целостности объекта. В предшествующих версиях Windows список SACL использовался только для хранения параметров аудита объекта. При открытии SACL объекта из расширенного режима в программе просмотра ACL уровень целостности не отображается. Специалисты Microsoft решили не показывать уровни целостности объекта в программе просмотра ACL в Windows 2008 и Vista.

Чтобы увидеть уровень целостности объекта, необходимо использовать новую утилиту командной строки icacls.exe из состава Windows 2008 и Vista. Icacls также имеется в Windows Server 2003 SP2. Не удивляйтесь, если при запуске Icacls увидите только параметры аудита объекта, но не уровень целостности. Большинству объектов Windows по умолчанию присваивается средний уровень целостности, который не сохраняется в SACL. Только после того, как администратор явно назначит уровень, отличный от среднего, он будет отображен командой Icacls.

На экране 2 показано, как установить уровень целостности объекта с использованием команды Icacls и ключа /setintegritylevel, а затем извлечь уровень целостности того же объекта с помощью команды Icacls. Обратите внимание на то, что уровень целостности отображается с доменным именем Mandatory Label. Благодаря этому имени проще распознать уровень целостности среди различных разрешений объекта в списке SACL.

Экран 2. Изменение и просмотр уровня целостности объекта с использованием команды Icacls

Integrity Control также назначает уровни целостности пользователям и процессам. Уровень целостности пользователя хранится как объект специальной группы в маркере доступа пользователя. Маркер доступа — цифровой маркер, который получает каждый пользователь после успешной проверки подлинности в Windows. Он содержит сведения о правах пользователя и членстве в группах. Процесс проверки подлинности в Windows использует маркер доступа, чтобы определить, может ли пользователь обратиться к ресурсу.

Для просмотра содержимого персонального маркера доступа используйте команду Whoami с ключом /groups. На экране 3 показаны группы в маркере доступа встроенной учетной записи Administrator: первыми в списке расположены идентификаторы безопасности (SID) групп, членом которых является встроенная административная учетная запись, а последним — групповой SID уровня целостности Administrator. По умолчанию в Windows 2008 и Vista встроенной учетной записи Administrator назначают высокий уровень целостности. Также обратите внимание на SID, связанный с высоким уровнем целостности; компания Microsoft определила набор новых известных участников безопасности и идентификаторы SID, которые представляют уровни целостности в маркерах доступа пользователей и процессов. Список идентификаторов SID каждого уровня приведен в таблице.

Экран 3. Уровень целостности, отображаемый в маркере доступа учетной записи (просмотр с использованием Whoami)

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

Windows 2008 и Vista не располагают средствами для проверки уровня целостности (использовать для этой цели Whoami или Task Manager пока нельзя). Однако можно выполнить проверку с помощью Sysinternals Process Explorer, бесплатного инструмента, загружаемого по адресу http://www.microsoft.com/technet/sysinternals/processesandthreads/processexplorer.mspx . Для просмотра уровня целостности процесса в Process Explorer необходимо сначала добавить столбец Integrity Level. Сделать это можно в диалоговом окне Select Columns, вызываемом из меню View в Process Explorer. На экране 4 показан столбец Integrity Level в интерфейсе Process Explorer.

Экран 4. Process Explorer со столбцом Integrity Level

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

Разрешение изменить уровень целостности объекта обеспечивается новым правом пользователя, появившимся в Windows 2008 и Vista: Modify an object label (или SeRelabelPrivilege). Встроенной учетной записи администратора это право предоставляется по умолчанию, хотя данное разрешение не отображается при проверке маркера доступа администратора с использованием Whoami или из контейнера User Rights Assignments в параметрах объекта Group Policy Object (GPO).

Пользователи и администраторы, которым назначено право SeRelabelPrivilege, должны также иметь разрешения Change permissions и Take ownership для объекта, прежде чем они смогут изменить уровень целостности объекта. Важное ограничение для администраторов и пользователей, которым назначено право SeRelabelPrivilege, заключается в том, что они никогда не смогут поднять уровень целостности объекта выше уровня целостности учетной записи пользователя. Любой пользователь с разрешением Read для объекта может только узнать уровень целостности объекта.

Изолируйте вредные программы из Internet

Integrity Control гарантирует, что ненадежные программы, которые могут оказаться опасными, не воздействуют на другого пользователя или системные данные. Защита Integrity Control в Windows 2008 и Vista в основном прозрачна для пользователей: операционная система автоматически назначает уровни целостности для Web-контента и гарантирует, что этот контент не взаимодействует с ресурсами, имеющими более высокий уровень целостности. Integrity Control располагает мощной моделью управления доступом, которая в будущем может применяться ко всем ресурсам Windows, а не только к ресурсам из Internet.


Жан де Клерк (jan.declerq@hp.com ) — член Security Office корпорации HP. Специализируется на проблемах управления идентичностью и вопросах безопасности продуктов Microsoft