- •Сборник методических указаний к лабораторным работам
- •Безопасность операционных систем
- •Содержание
- •Лабораторная работа № 1. Получение информации о конфигурации компьютера
- •1. Цели работы
- •2. Теоретические сведения
- •1. Реестр Windows
- •2. Использование функций Windows api
- •3. Использование wmi-интерфейса
- •7. Библиографический список
- •Лабораторная работа № 2. Командные интерпретаторы posix-совместимых операционных систем
- •1. Цели работы
- •2. Теоретические сведения
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 3. Работа с файлами и каталогами в ос Unix
- •1. Цель работы
- •2. Теоретические сведения
- •Ino_t d_ino; /* номер индексного дескриптора */
- •Int closedir (dir *dirptr); /* dirptr - дескриптор каталога */
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 4. Структура системы управления вводом-выводом в ос Unix
- •1. Цели работы
- •2. Теоретические сведения
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 5. Работа с процессами в ос Unix. Сигналы и каналы в Unix
- •1. Цель работы
- •2. Теоретические сведения
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 6. Базовые технологии безопасности операционных систем
- •1. Цель работы
- •2. Теоретические сведения
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 7. Парольная политика безопасности операционных систем
- •1. Цель работы
- •2. Теоретические сведения
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 8. Оценка защищенности nt-системы: безопасность файловой системы, права доступа, квоты, связи и их настройка
- •1. Цель работы
- •2. Теоретические сведения Особенности файловой системы ntfs
- •3. Контроль доступа к файлам и каталогам
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 9. Оценка защищенности nt-системы: защита реестра
- •1. Цель работы
- •2. Теоретические сведения
- •I. Организация реестра
- •II. Дублирование подразделов в разных ветвях
- •III. Файлы system.Dat и user.Dat
- •IV. Роль реестра при загрузке ос
- •V. Функции api для работы с реестром
- •VI. Основные вредительские действия, связанные с изменением реестра
- •VII. Проблемы защиты реестра Windows
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 10. Методы и средства несанкционированного доступа к ресурсам ос
- •1. Цель работы
- •2. Теоретические сведения
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 11. Оценка защищенности nt-системы: политика безопасности в области паролей и аудита
- •1. Цель работы
- •2. Теоретические сведения
- •I. Пароли
- •II. Получение хэшей паролей
- •III. Системный аудит
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 12. Администрирование ос Windows с помощью средства автоматизации Microsoft PowerShell
- •1. Цель работы
- •2. Теоретические сведения
- •Первый запуск
- •Справка
- •Практика
- •Установка уровня политики ExecutionPolicy
- •Редактирование скриптов
- •Создание запланированных заданий
- •7. Библиографический список
- •Лабораторная работа № 13. Windows PowerShell: управление компьютером
- •1. Цель работы
- •2. Теоретические сведения Управление сеансами пользователей
- •Управление питанием
- •Сбор информации о системе
- •Получение данных об установленных приложениях и заплатках
- •Установка по
- •Обновление по
- •Удаление по
- •Просмотр списка служб
- •Практика
- •Настройка сервисов
- •Создание локальных процессов
- •Создание удаленных процессов
- •Завершение неотвечающих процессов
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
- •Лабораторная работа № 14. Windows PowerShell: работа с файлами, папками и реестром
- •1. Цель работы
- •2. Теоретические сведения Работа с файлами и папками
- •Практика
- •Создание дополнительных дисков
- •Поиск в реестре
- •Примеры
- •Удаленный реестр
- •Правка реестра
- •7. Библиографический список
- •Лабораторная работа № 15. Windows PowerShell: работа с системными журналами
- •1. Цель работы
- •2. Теоретические сведения
- •Поиск событий
- •Просмотр событий на локальном компьютере
- •Просмотр событий на удаленном компьютере
- •Фильтрация событий
- •Получение данных из файла
- •Экспорт данных
- •Работа с удаленными компьютерами
- •3. Оборудование
- •4. Задание на работу
- •5. Оформление отчета
- •6 Контрольные вопросы
- •7. Библиографический список
Лабораторная работа № 8. Оценка защищенности nt-системы: безопасность файловой системы, права доступа, квоты, связи и их настройка
1. Цель работы
Получить навыки в исследовании защищенности заданной конфигурации ОС, изучить особенности организации файловой системы NT-подобных операционных систем.
2. Теоретические сведения Особенности файловой системы ntfs
Файловая система NTFS была разработана в качестве основной файловой системы для ОС Windows NT в начале 90-х годов с учетом опыта разработки FAT и HPFS (основная файловая система для OS/2). Основными отличительными свойствами NTFS являются:
поддержка больших файлов и дисков больших объёмом;
восстанавливаемость после сбоев и отказов программ и аппаратуры управления дисками;
высокая скорость операций, в том числе и для больших дисков;
низкий уровень фрагментации, в том числе и для больших дисков;
гибкая структура, допускающая развитие за счет добавления новых типов записей и атрибутов файлов с сохранением совместимости с предыдущими версиями ФС;
устойчивость к отказам дисковых накопителей;
поддержка длинных символьных имен;
контроль доступа к каталогам и отдельным файлам.
3. Контроль доступа к файлам и каталогам
Файлы – это частный, хотя и самый популярный, вид разделяемых ресурсов, доступ к которым операционная система должна контролировать. Существуют и другие виды ресурсов, с которыми пользователи работают в режиме совместного использования. Во всех этих случаях действует общая схема: пользователи пытаются выполнить с разделяемым ресурсом определённые операции, а ОС должна решить, имеют ли пользователи на это право. Пользователи являются субъектами доступа, а разделяемые ресурсы – объектами. Для каждого типа объектов существует набор операций, которые с ними можно выполнять. Таким образом, в Windows 2000/NT используется унифицированная структура – объект безопасности, - которая создаётся не только для файлов и устройств, но и для любых разделяемых ресурсов. Это позволяет использовать в Windows 2000/NT для контроля доступа к ресурсам любого вида общий модуль ядра – менеджер безопасности.
В качестве субъектов доступа могут выступать как отдельные пользователи, так и группы пользователей. Объединение пользователей в группу и задания прав доступа в целом для группы позволяет существенно ускорить процесс по обработке пользователей с одинаковыми правами и является примером администрирования в больших системах.
Например, определить права доступа к реестру – значит определить для каждого пользователя набор операций, которые ему разрешено применять к данному ресурсу (допустим, ветви реестра).
В самом общем случае права доступа могут быть описаны матрицей прав доступа, в которой столбцы соответствуют всем файлам системы, строки – всем пользователям, а на пересечении строк и столбцов указываются разрешённые операции. Практически во всех ОС матрица прав доступа хранится “по частям”, т.е. для каждого файла или каталога создаётся так называемый список управления доступом (Access Control List, ACL), в котором описываются права на выполнение операций пользователей по отношению к этому ресурсу. ACL являются частью характеристик файла или каталога. Список ACL состоит из элементов управления доступом (Access Control Element, ACE). Все объекты, включая файлы, потоки, события, даже токены доступа, когда они создаются, снабжаются дескриптором безопасности, который и содержит список управления доступом ACL. Структура дескриптора безопасности компанией Microsoft не разглашается, но существует набор API функций, позволяющих работать с этим объектом.
Ниже приведён фрагмент кода, демонстрирующий пример работы с дескриптором безопасности и ACL:
LONG ResFunc;
//Получаем информацию о длине дескриптора безопасности
DWORD LenSD;
ResFunc = GetFileSecurity(lpsFileName,NULL,NULL,0,&LenSD);
//Получаем дескриптор без-ти
PSECURITY_DESCRIPTOR pSD;
pSD = (BYTE *)LocalAlloc(LMEM_FIXED,LenSD);
ResFunc = GetFileSecurity(lpsFileName,NULL,pSD,LenSD,NULL);
if(ResFunc)
{
//обработка ошибки;
return;
}
//Получим информацию о SID и ACL из дескриптора без-ти
PACL pACL;
PSID pSID;
ResFunc = GetNamedSecurityInfo(lpsFileName,SE_FILE_OBJECT, OWNER_SECURITY_INFORMATION|GROUP_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION, &pSID,NULL,&pACL,NULL,&pSD);
if(ResFunc)
{
//обработка ошибки;
return;
}
if(pACL == NULL)
{
ShowMessage("Невозможно получить ACL объекта файловой системы.”);
return;
}
SID_NAME_USE sid_name_use;
PACE_HEADER pACE_header;
DWORD Record = 0;
for(int i = 0; i<pACL->AceCount; i++)
{
if(GetAce(pACL,i,(LPVOID *)&pACE_header))
{
//определим тип ACE
switch(pACE_header->AceType)
{
case ACCESS_ALLOWED_ACE_TYPE: //ACE типа “разрешить”
{
//получаем необходимую информацию из структуры
break;
}
case ACCESS_DENIED_ACE_TYPE: //ACE типа “запретить”
{
//получаем необходимую информацию из структуры
break;
}
...
}
}
Файловая система. Принципы безопасного удаления файлов и очистки дискового пространства
Одной из важных особенностей NT-систем, введенных в соответствии с требованиями безопасности уровня C2, является реализация защиты объектов от повторного использования. Это означает, что когда приложение выделяет дисковое пространство или виртуальную память оно не сможет увидеть данные, которые находились там ранее. Windows NT заполняет нулями оперативную память и место на диске, где до этого размещались файлы, и предоставляет эти ресурсы приложению. Однако защита от повторного использования не работает, когда файл удаляется с диска. Высвобождаемое дисковое пространство не обнуляется. Причина такого поведения заключается в том, что предполагается полный контроль ОС за доступам к ресурсам компьютера. Однако, когда операционная система не активна, используя программы низкоуровневого доступа к диску и средства восстановления, можно просмотреть и даже восстановить освобожденные системой дисковые ресурсы. Таким образом, даже при использовании шифрующей файловой системы (EFS) информация из оригинальных (незашифрованных) файлов остается на диске после создания их зашифрованной версии.
Единственным способом, гарантирующим что удаленные (впрочем, как и зашифрованные) файлы не могут быть восстановлены, является использование средств безопасного удаления. Приложение, обеспечивающее безопасное удаление, перезаписывает удаляемые файлы данными, используя методики, которые гарантируют невозможность восстановления информации даже с использованием специальных технологий восстановления, базирующихся на исследовании остаточной намагниченности и обеспечивающих хороший процент восстановления для ненадежно стертых файлов. Одна из методик безопасного удаления описана, в частности, стандартом DOD 5220.22-M на полное удаление информации с носителей разных типов (Department of Defense clearing and sanitizing standard DOD 5220.22-M). Для удаления информации рекомендуется первоначальная перезапись файла некоторым символом, затем его дополнением, и после этого некоторым набором случайных данных. При этом подчеркивается, что для Совершенно секретной информации необходимо применять физические методы удаления (от размагничивания до полного уничтожения).
Безопасное удаление файлов, не имеющих специальных атрибутов, довольно простая задача — приложение просто перезаписывает свободное место по некоторому алгоритму. Более сложным является удаление сжатых, зашифрованных и сильно разреженных файлов, а также безопасная очистка свободного дискового пространства.
Сжатые и зашифрованные файлы организованы в NTFS в виде блоков по 16 кластеров. Если программа осуществляет запись в такой файл, то независимо от типа записи (перезапись, добавление, замещение) NTFS выделяет новое место на диске для сохранения данных, а затем, после осуществления записи, освобождает ранее занимаемое файлом место. Данный консервативный подход применяется в целях обеспечения целостности данных. Таким образом, перезапись таких файлов не приведет к безопасному удалению их содержимого с диска.
Для манипуляций этими типами файлов можно воспользоваться функциями Defragmentation API (более подробно см. Platform SDK: File Storage. Defragmentation в MSDN Library). Используя Defragmentation API, можно определить, в каких кластерах на диске расположены такие файлы, после чего, используя прямой доступ к диску, удалить информацию.
Очистка свободного места также сопряжена с проблемами. Поскольку ни NTFS ни FAT не предоставляют приложению средств для непосредственных манипуляций свободным дисковым пространством, необходимо применять некоторые “обходные” маневры. Прежде всего, мы можем воспользоваться способом, описанным для удаления зашифрованных файлов. Однако такой способ сопряжен с одной серьезной проблемой — даже при очень аккуратном использовании низкоуровневого доступа существует вероятность коллизий при наличии активных дисковых процессов в системе. Например, приложение для безопасного удаления определяет некоторый кластер как свободный. В этот же момент времени система производит запись в этот участок диска, тем самым, занимая выбранный кластер. Но наше приложение перезаписывает эти данные, уничтожая только что записанную информацию. Ситуация может значительно ухудшиться, если в данный участок диска записываются системные метаданные. Применение низкоуровневой очистки в этом случае может привести к полному или частичному краху файловой системы.
Другой подход основан на непрямой перезаписи свободного места. Прежде всего, используя некэшированный ввод-вывод (non-cached file I/O), необходимо создать файл максимально возможного размера. Поскольку используется некэшированный ввод-вывод, то данные системного кэша не будут сброшены на диск и перезаписаны приложением безопасного удаления. Поскольку некэшированный файл должен быть выровнен относительно границы сектора (512 байт), то, вероятно, останется дисковое пространство, не выделенное приложению, хотя размер файла увеличить не удастся. Для захвата оставшегося дискового пространства необходимо создать кэшированный файл максимального размера. Для каждого из созданных файлов (кэшированного и некэшированного) необходимо выполнить безопасную перезапись.
Однако для NTFS данные операции не обязательно гарантируют полную очистку свободного места. Дело в том, что NTFS сохраняет небольшие файлы (размер которых не превышает размера одной записи MFT) непосредственно в MFT (Master File Table). При этом никаких дополнительных кластеров вне MFT для файла не выделяется. Поэтому, создавая файлы, не превышающие размером MFT (максимальный размер записи может составлять 4 КБ), можно полностью очистить и записи внутри таблицы размещения файлов. Когда файлы займут все свободное пространство в MFT, NTFS будет отклонять любую возможность создать файл, поскольку на диске кластеров больше не осталось (они заняты созданными ранее двумя файлами). По завершении этих процессов все свободное место можно считать полностью очищенным.
Для уничтожения информации об именах файлов необходимо применить многократное переименование файла (в качестве одного из алгоритмов переименования можно использовать 26-и кратное переименование одним из символов латинского алфавита). Низкоуровневые манипуляции со служебной информацией в этом случае крайне нежелательны, поскольку, хотя директории и могут содержать информацию об именах удаленных файлов, это дисковое пространство не доступно для непосредственного использования.