Прогон программы заимствования маркера доступа и получения из него нужной информации
В качестве "сложного" упражнения рекомендуется написать программу, задача которой - создать маркер доступа с нужным уровнем перевоплощения для указанной учетной записи и передать его текущему процессу. Затем для контроля нужно вывести на экран основные характеристики этого (уже ставшего текущим) маркера, например, перечень привилегий, после чего вернуть значение текущего маркера к исходному и извлечь из него привилегии еще раз.
Другие возможности настройки контекста пользователя
В ОС Windows имеются и другие возможности настройки контекста пользователя в соответствии со сложными требованиями защиты с учетом принципа минимума привилегий. В качестве примера можно упомянуть схему контроля доступа при помощи маркеров, называемых ограниченными. Ограниченные маркеры создаются функцией CreateRestrictedToken. В этот маркер в момент его создания можно внести следующие изменения: удалить привилегии, отключить некоторые SID-идентификаторы и добавить "ограниченные" SID'ы учетных записей. Последние просто добавляют ряд новых проверок к уже существующим при организации доступа к объекту. Ограниченные маркеры удобны, когда приложение подменяет клиента при выполнении кода, способного нанести ущерб системе.
Заключение
В соответствии с политикой безопасности в системе реализованы: аутентификация пользователей, аудит и защита от повторного использования объектов. Успешная аутентификация заканчивается формированием маркера доступа, который передается всем процессам пользователя в течение сеанса работы. Для наблюдения за действиями пользователей поддерживается журнал, где можно фиксировать все события, которые могут повлиять на состояние безопасности системы. Обнуление страниц памяти перед ее выделением процессу призвано не допустить считывания информации, оставшейся от их прежнего владельца. В ОС Windows имеется защита от модификации системных файлов, которая базируется на фиксации изменений в файлах и замене искаженных системных файлов их резервной копией. Для тонкой настройки контекста пользователя в соответствии со сложными сценариями защиты поддерживается механизм перевоплощения.
Содержание
· Лекция 1. Создание ОС Windows. Структура ОС Windows
· Краткая история создания ОС Windows
· Наиболее важные моменты эволюции операционных систем
· Онтогенез повторяет филогенез
· Архитектурные особенности операционных систем.
· Создание ОС Windows
· Возможности системы
· Структура ОС Windows
· Общее описание структуры системы
· Подсистема Win32
· Заключение
· Приложение. Некоторые понятия и термины
· Лекция 2. Разработка Win32 приложений. Инструментальные средства изучения системы
· Win32 API
· Компилятор Visual C++ и среда программирования для Windows
· Прогон программы "Hello, world"
· Типы данных, используемые в Win32-приложениях
· Unicode
· Разработка приложений с использованием Unicode
· Прогон программы вывода строки в формате Unicode
· Прогон программы записи в файл в Unicode и обычном формате
· Обработка ошибок
· Прогон программы, синтезирующей информацию об ошибке, которая имитирует отсутствие нужного файла
· Инструментальные средства изучения системы
· Штатные и встроенные средства
· Утилиты и программные средства, входящие в состав Platform SDK
· Утилиты, поставляемые в составе Resourse Kit (ресурсы Windows)
· Утилиты с сайта sysinternals.com
· Заключение
· Лекция 3. Базовые понятия ОС Windows
· Прерывания, исключения, системные вызовы
· Прогон программы реализующей структурную обработку исключений
· Реализация прерываний, системных вызовов и исключений в ОС Windows
· Ловушки
· Приоритеты. IRQL
· Заключение
· Лекция 4. Объекты. Менеджер объектов. Реестр
· Введение
· Объекты ядра
· Структура объекта. Методы объекта
· Методы объекта
· Описатели объектов
· Именование объектов. Разделяемые ресурсы
· Прогон программы, создающей объект
· Совместное использование объектов
· Реестр
· Заключение
· Лекция 5. Реализация процессов и потоков
· Понятие процесса и потока
· Потоки
· Реализация процессов
· Внутреннее устройство процессов в ОС Windows
· Создание процесса
· Функция CreateProcess
· Прогон программы создания процесса
· Реализация потоков
· Состояния потоков
· Прогон программы, иллюстрирующей состояния потоков
· Отдельные характеристики потоков
· Волокна и задания
· Внутреннее устройство потоков
· Создание потоков
· Функция CreateThread
· Прогон программы создания потока
· Контекст потока, переключение контекстов
· Заключение
· Лекция 6. Планирование потоков
· Введение
· Алгоритмы планирования
· Приоритеты
· Динамическое повышение приоритета
· Прогон программы, демонстрация приоритетного планирования
· Величина кванта времени
· Планирование в условиях многопроцессорности
· Привязка к процессорам
· Заключение
· Лекция 7. Межпроцессный обмен
· Введение
· Способы межпроцессного обмена.
· Понятие о разделяемом ресурсе
· Каналы связи
· Организация каналов в ОC Windows
· Анонимные каналы
· Прогон программы общения процесса через анонимный канал с самим собой
· Прогон программы общения через анонимный канал клиента и сервера
· Именованные каналы
· Использование именованных каналов
· Прогон программы общения двух процессов через именованный канал
· Заключение
· Лекция 8. Синхронизация потоков
· Введение. Проблема взаимоисключения
· Переменная-замок
· TSL команды
· Семейство Interlocked-функций
· Прогон программы синхронизации с помощью переменной замка
· Спин-блокировка
· Critical Sections
· Прогон программы
· Синхронизация потоков с использованием объектов ядра
· Семафоры
· Мьютексы
· События
· Суммарные сведения об объектах ядра
· Синхронизация в ядре
· Заключение
· Лекция 9. Введение. Виртуальное адресное пространство процесса
· Введение
· Связывание адресов
· Общее описание виртуальной сегментно-страничной памяти ОС Windows
· Инструментальные средства наблюдения за работой менеджера памяти
· Виртуальное адресное пространство процесса
· Регионы в виртуальном адресном пространстве
· Создание (резервирование) региона и передача ему физической памяти
· Прогон программы выделения памяти при помощи функции Virtual Alloc
· Прогон программы, демонстрирующей выделение больших массивов памяти
· Регион куча
· Прогон программы выделения памяти в стандартной куче
· Регион стека потока. Сторожевые страницы
· Прогон программы, моделирующей обращение к сторожевым страницам
· Регион файла, отображаемого в память
· Прогон программы, демонстрирующей отображение файла в память
· Написание, компиляция и прогон программы, демонстрирующей различные аспекты проецирования файла в память
· Заключение
· Лекция 10. Функционирование менеджера памяти
· Разделяемая память
· Прогон программы, демонстрирующей передачу информации от одного процесса к другому через разделяемую память
· First.c
· second.c
· Написание, компиляция и выполнение программы обмена информацией через разделяемый буфер памяти с использованием системной области выгрузки
· Физическая память
· Рабочие наборы процессов
· Прогон программы, иллюстрирующей увеличение рабочего набора процесса
· База данных PFN. Страничные демоны
· Эксперимент. Наблюдение за ошибками страниц
· Отдельные аспекты функционирования менеджера памяти
· Локализация страниц в памяти
· Прогон программы, демонстрирующей блокировку страниц в памяти
· Копирование при записи
· Прогон программы, иллюстрирующей отложенное выделение памяти
· Контроль процессом памяти другого процесса
· Написание, компиляция и выполнение программы, осуществляющей доступ к памяти дочернего процесса
· Заключение
· Лекция 11. Интерфейс файловой системы
· Введение
· Основные функции для работы с файлами
· Прогон программы чтения и записи в файл
· Именование файлов
· Типы файлов
· Атрибуты файлов
· Прогон программы получения атрибутов файла
· Организация файлов и доступ к ним. Понятие об асинхронном вводе-выводе
· Пример применения операции асинхронного чтения из файла
· Структура OVERLAPPED
· Прогон программы, осуществляющей асинхронное чтение из уже существующего файла
· Операция позиционирования в случае синхронного доступа к файлу
· Написание, компиляция и прогон программы, осуществляющей перемещение указателя текущей позиции внутри открытого файла
· Директории. Логическая структура файлового архива
· Прогон программы, задача которой создать каталог на диске и сделать его текущим
· Самостоятельное упражнение
· Разделы диска. Операция монтирования
· Эксперимент. Монтирование логического диска с помощью штатной утилиты mountvol
· Защита файлов
· Заключение
· Лекция 12. Реализация файловой системы. Файловая система NTFS
· Введение
· Кластеры
· Эксперимент. Получение информации о потенциальном размере кластера
· Структуры данных, необходимые для описания файловой системы на диске
· Главная файловая таблица MFT
· Эксперимент. Просмотр кластеров, принадлежащих файлу с помощью утилиты nfi.exe
· Управление свободным и занятым дисковым пространством
· Реализация директорий
· Поиск файла по имени
· Прогон программы, осуществляющей поиск файла в каталоге
· Точки повторного анализа. Монтирование дисков. Образование ссылок
· Монтирование файловых систем
· Создание связей
· Написание, компиляция и прогон программы, определяющей, помечен ли указанный каталог в качестве точки повторного анализа
· Совместный доступ к файлу
· Написание, компиляция и прогон программы захвата части файла для монопольного доступа
· Производительность файловой системы
· Кэширование
· Прогон программы, иллюстрирующей функционирование кэша
· Оптимальное размещение информации на диске
· Hадежность файловой системы
· Восстанавливаемая файловая система NTFS
· Проверка целостности файловой системы при помощи утилит
· Решение проблемы плохих блоков
· Фиксация изменений в файловой системе
· Поддержка нескольких файловых систем
· Заключение
· Лекция 13. Система управления доступом
· Введение
· Инструментальные средства управления безопасностью
· Пользователи и группы пользователей
· Создание учетной записи пользователя
· Прогон программы создания новой учетной записи
· Написание, компиляция и прогон программы, удаляющей из системы учетную запись
· Идентификатор безопасности SID
· Структура идентификатора безопасности
· Прогон программы получения идентификатора безопасности
· Написание, компиляция и прогон программы получения имени пользователя по данному значению идентификатора безопасности
· Объекты. Дескриптор защиты
· Прогон программы получения информации из дескриптора защиты файла
· Написание, компиляция и прогон программы получения списка контроля доступа к файлу из его дескриптора защиты
· Субъекты безопасности. Процессы, потоки. Маркер доступа
· Написание, компиляция и прогон программы получения стандартного списка контроля доступа к объектам из маркера доступа процесса
· Проверка прав доступа
· Заключение
· Приложение. Формальные модели защищенности в ОС Windows
· Дискреционная модель контроля и управления доступом
· Каналы утечки информации в системах с дискреционным доступом
· Ролевая политика безопасности
· Лекция 14. Структура системы защиты. Привилегии
· Основные компоненты системы безопасности ОС Windows
· Политика безопасности
· Ролевой доступ. Привилегии
· Понятие привилегии
· Управление привилегиями
· Задача перечисления привилегий учетной записи
· Прогон программы перечисления привилегий пользователя
· Добавление привилегий пользователю
· Написание, компиляция и прогон программы, позволяющей добавить пользователю одну или несколько привилегий
· Заключение
· Лекция 15. Отдельные аспекты безопасности Windows
· Аутентификация пользователя. Вход в систему
· Написание, компиляция и прогон программы создания нового пользователя с правами входа в систему
· Написание, компиляция и прогон программы получения маркера доступа по имени пользователя и его паролю
· Выявление вторжений. Аудит системы защиты
· Недопустимость повторного использования объектов
· Защита от внешнего навязывания
· Маркер доступа. Контекст пользователя
· Считывание сведений о привилегиях пользователя из маркера доступа
· Прогон программы получения списка привилегий из маркера доступа процесса
· Включение и отключение привилегий в маркере
· Перевоплощение
· Прогон программы заимствования маркера доступа и получения из него нужной информации
· Другие возможности настройки контекста пользователя
· Заключение
· Дополнения
· Литература
Дополнения
Литература
1. , Department of Defense, Trusted Computer System Evaluation Criteria. — DoD 5200.28, STD. 1993
2. Карпов В.Е., Коньков К.А, Основы операционных систем, Издательство "Интуит.ру". 2005 г.– 2-е издание
3. Кастер Хелен, Основы Windows NT и NTFS, М.: Русская редакция. 1996
4. Рихтер, Windows для профессионалов: создание эффективных Win32-приложений с учетом специфики 64разрядныой версии Windows, СПб: Питер; M.: Издательско-торговый дом "Русская редакция", 2003
5. Рихтер, Кларк, Программирование серверных приложний для Microsof Windows 2000, СПб: Питер; M.: Издательско-торговый дом "Русская редакция", 2001
6. Руссинович М., Соломон Д, Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP и Windows 2000, M.: Издательско-торговый дом "Русская редакция"; СПб.: Питер, 2005
7. Сорокина С.И., Тихонов А.Ю., Щербаков А.Ю, Программирование драйверов и систем безопасности, СПб.: БХВ-Петербург, М.:Издатель Молгачева С.В., 2003
8. Столлингс В, Операционные системы, М.: Вильямс, 2001
9. Харт Д, Системное программирование в среде Win32, М.: Издательский дом "Вильямс", 2001
10. Ховард, Разработка защищенных Web-приложений на платформе Microsoft Windows 2000, СПб: Питер; M.: Издательско-торговый дом "Русская редакция", 2001
11. Таненбаум Э, Современные операционные системы, СПб.: Издательский дом Питер, 2002