Отдельные аспекты безопасности Windows
Аутентификация пользователя. Вход в систему
В настоящей лекции будут рассмотрены вопросы аутентификации пользователя, системного аудита, защиты от повторного использования объектов и внешнего навязывания, а также возможности тонкой настройки контекста пользователя.
Согласно п.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
Для того чтобы заставить систему отслеживать события, связанные с доступом к конкретному файлу, необходимо сделать следующее.
- Открыть диалоговое окно "Локальные параметры политики безопасности\ Политика аудита" (см. рис. 15.1) административной консоли панели управления.
- Включить в список проверки нужную совокупность событий, например, аудит доступа к объектам.
- С помощью программы Windows Explorer выбрать файл для аудита. Вызвать панель фиксации событий, которые связаны с файлом, подлежащим аудиту. Для этого при помощи мыши в контекстном меню открыть окно "Свойства", выбрать вкладку "Безопасность", затем, нажав кнопку "Дополнительно", выбрать "Аудит". Затем с помощью кнопки "Добавить" выбрать пользователя, действия которого подлежат аудиту, и перечень событий, подлежащих аудиту (см. рис. 15.2).
- В случае успеха попробовать осуществить обращение к данному файлу. Все оговоренные действия в отношении файла должны найти отражение в журнале событий безопасности. Для просмотра журнала событий нужно выбрать окно "Просмотр событий" через иконку "Администрирование" панели управления.
- В случае отказа проверить наличие у пользователя (в том числе и у администратора), от имени которого производится эксперимент, привилегии "Создание журналов безопасности" и, в случае ее отсутствия, назначить ее пользователю с помощью консоли "Назначение прав пользователям".
Как уже говорилось, список SACL, входящий в состав дескриптора защиты объекта, можно формировать и модифицировать программными средствами. Это можно сделать с помощью функции SetSecurityInfo, которая является обратной по отношению к уже знакомой нам функции GetSecurutyInfo и содержит тот же набор параметров. Поскольку речь идет об аудите, то параметр SecurityInfo, который специфицирует компонент дескриптора защиты, подлежащий изменению, должен включать значение SACL_SECURITY_INFORMATION.