Московский физико-технический институт
Опубликован: 12.12.2007 | Доступ: свободный | Студентов: 5591 / 1909 | Оценка: 4.34 / 4.14 | Длительность: 13:57:00
ISBN: 978-5-94774-827-7
Лекция 15:

Отдельные аспекты безопасности Windows

< Лекция 14 || Лекция 15: 123
Аннотация: В лекции рассмотрены вопросы аутентификации пользователя, системного аудита, защиты от повторного использования объектов и внешнего навязывания, а также возможности тонкой настройки контекста пользователя

Аутентификация пользователя. Вход в систему

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

Согласно п.1 политики безопасности для доступа к компьютеру пользователь должен пройти процедуру аутентификации. Эта процедура инициируется комбинацией клавиш "ctrl+alt+del". Данная комбинация клавиш, известная как SAS (secure attention sequence), всегда перехватывается драйвером клавиатуры, который вызывает при этом настоящую (а не троянского коня) программу аутентификации. Пользовательский процесс не может сам перехватить эту комбинацию клавиш или отменить ее обработку драйвером. Говоря языком стандартов, можно сказать, что в системе реализована функциональность пути доверительных отношений (trusted path functionality). Данная особенность также отвечает требованиям защиты уровня B Оранжевой книги.

Процедурой аутентификации пользователя в системе управляет программа, WinLogon, представляющая собой начальную интерактивную процедуру, которая отображает начальный диалог с пользователем на экране. Процесс WinLogon активно взаимодействует с библиотекой GINA (Graphic Identification aNd Authentication - графической библиотекой идентификации и аутентификации). Библиотека GINA является заменяемым компонентом, интерфейс с ней хорошо документирован, поэтому иногда в приложениях, реализующих защиту, присутствует версия GINA, отличная от оригинальной. Получив имя и пароль пользователя от GINA, WinLogon вызывает модуль Lsass для аутентификации этого пользователя. В случае успешного входа в систему Winlogon извлекает из реестра профиль пользователя и определяет тип запускаемой оболочки.

Комбинация SAS может быть получена системой не только на этапе регистрации пользователя. Если пользователь уже вошел в систему, то после нажатия клавиш "ctrl-alt-del" он получает возможность: посмотреть список активных процессов, инициировать перезагрузку или выключение компьютера, изменить свой пароль и заблокировать рабочую станцию. В свою очередь, если рабочая станция заблокирована, то после ввода SAS пользователь имеет возможность ее разблокировки. Иногда может быть осуществлен принудительный вывод пользователя из системы с последующим входом в нее администратора.

В процессе аутентификации вызывается системная функция LogonUser (см. MSDN), которая исходя из имени пользователя, его пароля и имени рабочей станции или домена возвращает указатель на маркер доступа пользователя. Маркер впоследствии передается всем дочерним процессам. При формировании маркера используются ключи SECURITY и SAM реестра. Первый ключ определяет общую политику безопасности, а второй ключ содержит информацию о защите для индивидуальных пользователей.

Задание

Рекомендуется осуществить ввод комбинации клавиш "ctrl-alt-del" в разных ситуациях и инициировать одно из перечисленных выше действий.

Написание, компиляция и прогон программы создания нового пользователя с правами входа в систему

Напишите программу, которая создает новую учетную запись при помощи функции NetUserAdd, а затем назначает ему право входа в систему SeInteractiveLogonRight путем вызова функции LsaAddAccountRights. В случае успешной реализации сделайте попытку регистрации в системе в качестве нового пользователя.

Написание, компиляция и прогон программы получения маркера доступа по имени пользователя и его паролю

В качестве сложного задания рекомендуется написать программу, которая имитирует процедуру входа в систему, то есть получает новый маркер доступа при помощи функции LogonUser. Для справки можно использовать книги [ Рихтер ] , [ Рихтер, Кларк ] .

Выявление вторжений. Аудит системы защиты

Даже самая лучшая система защиты рано или поздно будет взломана, поэтому обнаружение попыток вторжения является важнейшей задачей системы защиты. Основным инструментом выявления вторжений является запись данных аудита. Отдельные действия пользователей протоколируются, а полученный протокол используется для выявления вторжений.

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

  • вход или выход из системы;
  • операции с файлами (открыть, закрыть, переименовать, удалить);
  • обращение к удаленной системе;
  • смена привилегий или иных атрибутов безопасности (режима доступа, уровня благонадежности пользователя и т.п.).

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

Для управления файлом журнала безопасности, а также для просмотра и изменения SACL объектов, процесс должен обладать привилегией SeSecurityPrivilege. Процесс, вызывающий системные записи аудита, должен, чтобы успешно сгенерировать запись аудита в этом журнале, обладать привилегией SeAuditPrivilege.

Задание. Организовать аудит доступа к файлу с помощью инструментальных средств ОС Windows

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

  1. Открыть диалоговое окно "Локальные параметры политики безопасности\ Политика аудита" (см. рис. 15.1) административной консоли панели управления.
    Диалоговое окно "Локальные параметры политики безопасности\ Политика аудита" административной консоли панели  управления

    Рис. 15.1. Диалоговое окно "Локальные параметры политики безопасности\ Политика аудита" административной консоли панели управления
  2. Включить в список проверки нужную совокупность событий, например, аудит доступа к объектам.
  3. С помощью программы Windows Explorer выбрать файл для аудита. Вызвать панель фиксации событий, которые связаны с файлом, подлежащим аудиту. Для этого при помощи мыши в контекстном меню открыть окно "Свойства", выбрать вкладку "Безопасность", затем, нажав кнопку "Дополнительно", выбрать "Аудит". Затем с помощью кнопки "Добавить" выбрать пользователя, действия которого подлежат аудиту, и перечень событий, подлежащих аудиту (см. рис. 15.2).
    Диалоговое окно установки событий, подлежащих аудиту для конкретного файла

    Рис. 15.2. Диалоговое окно установки событий, подлежащих аудиту для конкретного файла
  4. В случае успеха попробовать осуществить обращение к данному файлу. Все оговоренные действия в отношении файла должны найти отражение в журнале событий безопасности. Для просмотра журнала событий нужно выбрать окно "Просмотр событий" через иконку "Администрирование" панели управления.
  5. В случае отказа проверить наличие у пользователя (в том числе и у администратора), от имени которого производится эксперимент, привилегии "Создание журналов безопасности" и, в случае ее отсутствия, назначить ее пользователю с помощью консоли "Назначение прав пользователям".

Как уже говорилось, список SACL, входящий в состав дескриптора защиты объекта, можно формировать и модифицировать программными средствами. Это можно сделать с помощью функции SetSecurityInfo, которая является обратной по отношению к уже знакомой нам функции GetSecurutyInfo и содержит тот же набор параметров. Поскольку речь идет об аудите, то параметр SecurityInfo, который специфицирует компонент дескриптора защиты, подлежащий изменению, должен включать значение SACL_SECURITY_INFORMATION.

< Лекция 14 || Лекция 15: 123
Ирина Оленина
Ирина Оленина
Николай Сергеев
Николай Сергеев

Здравствуйте! Интересует следующий момент. Как осуществляется контроль доступа по тому или иному адресу с точки зрения обработки процессом кода процесса. Насколько я понял, есть два способа: задание через атрибуты сегмента (чтение, запись, исполнение), либо через атрибуты PDE/PTE (чтение, запись). Но как следует из многочисленных источников, эти механизмы в ОС Windows почти не задействованы. Там ключевую роль играет менеджер памяти, задающий регионы, назначающий им атрибуты (PAGE_READWRITE, PAGE_READONLY, PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_NOACCESS, PAGE_GUARD: их гораздо больше, чем можно было бы задать для сегмента памяти) и контролирующий доступ к этим регионам. Непонятно, на каком этапе может включаться в работу этот менеджер памяти? Поскольку процессор может встретить инструкцию: записать такие данные по такому адресу (даже, если этот адрес относится к региону, выделенному менеджером памяти с атрибутом, например, PAGE_READONLY) и ничего не мешает ему это выполнить. Таким образом, менеджер памяти остается в стороне не участвует в процессе...