Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 2.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
193.66 Кб
Скачать
  1. Mandatory Integrity Control (принудительный контроль целостности)

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

ОС Windows поддерживает метки процессов и объектов, обозначающие уровни целостности. Эти уровни целостности представлены как элементы управления доступом в системном списке управления доступом (SACL) с несколькими особыми флагами.

Уровни целостности представлены идентификаторами безопасности (SID), которые представляют также пользователей и группы, уровень которых закодирован в относительном идентификаторе (RID) идентификатора SID. Ниже показаны отображаемое имя, SID и шестнадцатеричная версия RID идентификатора SID для четырех основных уровней целостности. В шестнадцатеричных числах видны промежутки размером 0x1000 между каждым уровнем, что допускает создание промежуточных уровней для использования приложениями со специальными возможностями интерфейса пользователя и будущего развития.

Windows назначает каждому процессу уровень целостности, помещая его в маркер вместе с кодами SID групп, к которым относится пользователь, выполняющий процесс. Процессы обычно наследуют уровень целостности своего родителя, но процесс может также запустить процессс другим уровнем целостности. Уровни целостности процесса можно просмотреть с помощью встроенной служебной программы Whoami, указав параметр /all, или с помощью программы ProcessExplorer.

SID идентификаторы уровней целостности

SID

Уровень целостности

Примеры процессов

S-1-16-0x0

Untrusted(0) (ненадежный)

Используется процессами, запущенными группой Anonymous. Он блокирует большинство доступов по записи

S-1-16-4096 0x1000

Low (1) (низкий)

Используется защищенным режимом InternetExplorer. Он блокирует доступ по записи к большинству объектов системы (таких как файлы и разделы реестра)

S-1-16-8192 0x2000

Medium (2) (средний)

Используется обычными приложениями, запущенными при включенной системеUAC (UserAccountControl)

S-1-16-12288 0x3000

High(3) (высокий)

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

S-1-16-16384 0x4000

System(4) (системный)

Используется службами и другими приложениями системного уровня (например, Wininit, Winlogon, Smss и т.д.)

По умолчанию для большинства объектов, включая файлы и параметры реестра, применяется политика “Нет записи”, которая запрещает процессу доступ для записи к объектам, имеющим более высокий уровень целостности, даже если список управления доступом на уровне пользователей (DACL) объекта предоставляет пользователю такой доступ. Другая политика применяется только к объектам-потокам и объектам-процессам. Эта политика, “Нет записи” плюс “Нет чтения”, запрещает процессу с более низким уровнем целостности встраивать код и считывать данные — например пароли — из процесса, имеющего более высокий уровень целостности.

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

Политика

Объекты, в которых она присутствует по умолчанию

Описание

No- Write- Up

(отказ в записи)

Подразумевается на всех объектах

Используется для ограничения доступа к объекту по записи со стороны процессов, имеющих более низкий уровень целостности

No- Read- Up

(отказ в чтении)

Только на объектах процессов

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

No- Execute- Up

(отказ в выполнении)

Только на двоичных реализациях COM- классов

Используется для ограничения доступа к объекту по выполнению со стороны процессов, имеющих более низкий уровень целостности. Конкретное использование в отношении COM- классов преследует цель ограничения прав на запуск и активацию COM- класса

Каждый защищаемый объект обладает уровнем целостности, который может быть явным или неявным. Процессы, потоки и маркеры всегда имеют явно назначенный уровень целостности, который обычно совпадает с уровнем целостности, сохраненным в маркере соответствующего процесса. Большинство объектов не имеет явного уровня целостности, поэтому к ним по умолчанию применяется средний (Medium) уровень целостности. Уровень целостности, отличный от среднего, имеют только объекты, создаваемые процессом, работающим с низким (Low) уровнем целостности. Просмотреть уровень целостности файлов можно с помощью встроенного средства iсacls (%SystemRoot%\System32\iсacls.exe).

Если у объекта есть явный уровень целостности, он хранится в записи управления доступом (ACE) нового типа — Label ACE, в списке управления системным доступом (SACL) дескриптора безопасности объекта. SID в ACE соответствует уровню целостности объекта, а с помощью флагов ACE кодируется политика целостности объекта.

Чтобы процесс мог изменить уровень целостности объекта, он должен иметь доступ “Смена владельца” (WRITE_OWNER) к объекту и уровень целостности, равный или более высокий, чем у объекта. При этом процесс может установить уровень целостности, только равный его собственному уровню целостности или ниже. Привилегия “Изменение метки объекта” дает процессу возможность изменить уровень целостности любого объекта, к которому процесс имеет доступ, и даже установить уровень целостности выше собственного уровня целостности процесса. Однако по умолчанию эта привилегия не назначается никакой учетной записи.

Когда процесс пытается открыть объект, то перед тем как функция ядра выполнит стандартную проверку DACL Windows, происходит проверка целостности. Согласно применяемым по умолчанию политикам целостности, процесс может открыть объект для записи, только если выполняются два условия: его уровень целостности равен или выше, чем уровень целостности объекта, и DACL предоставляет процессу необходимые типы доступа. Например, процесс с низким уровень целостности не сможет открыть процесс со средним уровнем целостности для записи, даже если DACL предоставляет процессу такое право.

Применяемая по умолчанию политика целостности позволяет процессам открыть любой объект — за исключением объектов-процессов и объектов-потоков — для чтения, если DACL объекта предоставляет им такой доступ. Это означает, что процесс, работающий с низким уровнем целостности, может открыть любые файлы, доступные для учетной записи пользователя, под которой он работает. С помощью уровня целостности обозреватель Internet Explorer защищенного режима предотвращает блокировку изменения параметров учетной записи пользователя вредоносной программой, но не может помешать ей читать документы пользователя.

Объекты-процессы и объекты-потоки — исключения, поскольку их политика целостности содержит также компонент “Нет чтения”. Это означает, что уровень целостности процесса должен быть равен или выше, чем уровень целостности процесса или потока, который данному процессу необходимо открыть, а DACL должен предоставить ему доступ требуемых типов.

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

Задания

  1. Создайте папку Data в разделе С: . Создайте в папке Data несколько файлов.

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

  3. Если некоторые разрешения назначены пользователю лично, а другие - как члену группы, какие итоговые разрешения получит пользователь? Убедитесь на примере вашей папки. Как в подобном случае действуют запреты?

  4. Изучите механизм наследования прав объектами файловой системы NTFS. Какие права унаследует файл в папке при установленном флажке "Переносить наследуемые от родительского объекта разрешения на этот объект".

  5. Измените права доступа пользователей к данным объектам файловой системыNTFS.

  6. Установите специальные разрешения для папки. Какую область действия можно задать для этих разрешений? Проверьте возможность установки специальных разрешений для файла.

  7. Кто является владельцем файла? Как и кому можно передать владение файлом?

  8. Создайте новый каталог Profiles в разделе С. Сделайте новый каталог разделяемым (открыть общий доступ).

  9. Установите некоторые разрешения на доступ по сети всем пользователям, отдельному пользователю или группе. Как взаимодействуют локальные разрешения и сетевые?

  10. Исследуйте механизмы реализации принудительного контроля целостности.

  • Запустите программу Process Explorer. Добавьте в окно программы Process Explorer столбец Integrity Level (Уровень целостности). Посмотрите, какие процессы исполняются на системном, высоком, среднем, низком уровне целостности.

  • Программы хранят свои данные и настройки в папке %userprofile%\appdata в трех разных папка: Roaming, Local (помимо прочего внутри нее, в папке Temp, хранятся временные файлы), LocalLow — содержит данные, записанные с низким уровнем целостности, и сама она имеет такой же уровень.

Запустите командную строку. Встроенная служебная программа icacls.exe позволяет просматривать и изменять уровни целостности, присвоенные файлам и каталогам. По умолчанию объектам присваивается средний уровень целостности. Запустив программу icacls.exe с параметром /SetIntegrityLevel [уровень], можно изменить уровень целостности объектов, имея необходимые для этого права.

Убедитесь, что папкам Local и LocalLow и их дочерним объектам присвоены соответственно средний и низкий уровни целостности.

  • Запустите командную строку (cmd.exe):

- с высоким уровнем целостности (запуск от имени администратора)

- со средним уровнем целостности (с обычными правами)

-с низким уровнем целостности (запустите в командной строке с обычными правами программу Psexec, измените с помощью этой программы уровень целостности командной строки на низкий)

psexec -l -d cmd.exe.

  • Для трех различных вариантов запуска командной строки :

-создайте в папках Local\Temp и LocalLow текстовые файлы и попробуйте их прочесть.

Создание файла: echo Привет!>1.txt

Чтение файла: type 1.txt

  • Поясните полученный результат.