- •Сборник методических указаний к лабораторным работам
- •Безопасность операционных систем
- •Содержание
- •Лабораторная работа № 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. Библиографический список
7. Библиографический список
1. Олифер В.Г. Сетевые операционные системы: Учеб. пособие для вузов / В.Г. Олифер, Н.А. Олифер .— М.: Питер, 2003. — 544с.
2. Таненбаум Э. Современные операционные системы / Э. Таненбаум.— 2-е изд. — М.: Питер, 2006 .— 1038с.
3. Монадьеми П. Защита от хакеров в Windows XP/ П. Монадьеми, Б. Мюллер; пер. с нем. под ред. С.Н. Банникова.— М.: БИНОМ, 2005 .— 320с.
4. Немет Э. UNIX: Руководство системного администратора/ Э. Немет, Г. Снайдер, С. Сибасс, Т.Р. Хейн. 3-е изд. — М.: Питер, 2003 .— 925с.
Лабораторная работа № 10. Методы и средства несанкционированного доступа к ресурсам ос
1. Цель работы
Получить навыки в исследовании методов несанкционированного доступа к системе, изучить способы его предотвращения и устранения, а также способы сокрытия важной информации.
2. Теоретические сведения
Одним из аспектов сетевой безопасности NT-систем, которому часто уделяется недостаточно внимания, являются совместно используемые ресурсы (shares). Объявление общих ресурсов со слабой защищенностью, позволяющей неавторизированным пользователям просматривать системные файлы, является одной из наиболее распространенных брешей в безопасности. Система не предоставляет средств для просмотра видимых в сети ресурсов машины и их установок безопасности. Однако, используя NetBIOS, можно просмотреть доступные компьютеры внутри домена и изучить доступные дисковые ресурсы, общие принтеры, а также их установки безопасности. Данный способ наиболее эффективен для администратора домена, поскольку именно он имеет возможность просматривать все ресурсы сети.
Для отображения локальных дисков на сетевые каталоги используются функции:
WNetOpenEnum - получение манипулятора перечисления сетевых ресурсов (дисков и принтеров) с заданными параметрами;
WNetEnumResource – заполнение структуры NETRESOURCE информацией о перечисляемом сетевом ресурсе;
WNetCloseEnum – удаление манипулятора перечисления.
Для получения списка совместно используемых ресурсов (включая скрытые), а также количества подключённых к ним пользователей существуют следующие API функции:
NetShareEnum – перечисление совместно используемых ресурсов;
NetShareAdd – добавление совместно используемого ресурса;
NetShareDel – удаление совместно используемого ресурса.
Другой деятельностью, так или иначе связанной с безопасностью системы, являются:
вход в системы/выход из системы;
запуск и остановка процессов;
создание и удаление токенов (tokens);
запуск и остановка сервисов;
заимствование прав (Windows NT позволяет одному процессу заимствовать атрибуты безопасности у другого процесса);
изменение приложением привилегий безопасности.
Для управления и слежения за этими действиями существуют различные функции Win32 API, в том числе и недокументированные. Так, например, для отслеживания процесса выхода из системы нам понадобится использование недокументированных функций для регистрации callback-процедур, наблюдения за данным процессом:
NTSTATUS SeRegisterLogonSessionTerminatedRoutine(PVOID CallbackRoutine);
NTSTATUS SeUnregisterLogonSessionTerminatedRoutine(PVOID CallbackRoutine);
В то же время процедуру входа системы можно отследить с помощью перехвата (hook) системной функции NtCreateToken из Native API.
С помощью функции PsSetCreateProcessNotifyRoutine, описанной в Windows 2000 DDK, но доступной и в NT 4.0, можно зарегистрировать callback–функцию, отслеживающую запуск и остановку процессов в системе. При этом важно получить информацию и о контексте запуска, что позволяет произвести полный анализ происходящего в системе. Это приобретает особенную актуальность при исследовании машины на наличие программных закладок.
Получение имени родительского процесса демонстрирует следующий участок кода:
PsLookupProcessByProcessId( ParentId, &Parent );
ObDereferenceObject( Parent );
ProcessMonitorGetProcess( Parent, ParentName );
Здесь используется недокументированная функция PsLookupProcessByProcessId, которая может быть описана как:
NTSTATUS PsLookupProcessByProcessId(PVOID ProcessId, PEPROCESS *Process );
Для получения имени исполняемого процесса можно воспользоваться следующей функцией:
// Используется недокументированное смещение в структуре данных
// для получения имени исполняемого в данный момент процесса
PWCHAR ProcessMonitorGetProcess(PEPROCESS Process, PWCHAR Name)
{
char *nameptr;
int i;
if( ProcessNameOffset ) {
i = 0;
nameptr = (PCHAR) Process + ProcessNameOffset;
while( nameptr[i] && i < NT_PROCNAMELEN-1 ) {
Name[i] = (WCHAR) nameptr[i++];
}
Name[i] = 0;
swprintf( Name + wcslen(Name), L":%d", PsGetCurrentProcessId());
} else {
wcscpy( Name, L"???" );
}
return Name;
}
Для получения значения переменной ProcessNameOffset можно воспользоваться следующей функцией:
// Используется непосредственный разбор Kernel Process
//Environment Block для поиска имени соответствующего системного
// процесса
ULONG TokenmonGetProcessNameOffset(VOID)
{
PEPROCESS curproc;
int i;
curproc = PsGetCurrentProcess();
for( i = 0; i < 3*PAGE_SIZE; i++ ) {
if( !strncmp( SYSNAME, (PCHAR) curproc + i, strlen(SYSNAME) )) {
return i;
}
}
// Имя не найдено
return 0;
}
Для получения информации о запущенных в системе процессах необходимо использовать специально предназначенные для этого API функции. С помощью API-функции CreateToolhelp32Snapshot, описанной в tlhelp32.dll сначала делается моментальный снимок системы, после чего функциями Process32First и Process32Next перечисляются все активные процессы. В параметрах этим функциям передается указатель на снимок (SnapShot) и адрес структуры, из которой извлекается вся информация о процессе, включая информацию о запущенных им нитях.
Сервисом или службой называется обычное Windows-приложение, содержащую дополнительную инфраструктуру, которая позволяет рассматривать его особым образом, например, давать возможность администратору запускать и останавливать это приложение с удалённой машины.
Сама ОС Windows включает много служб, например Event Log, Net Logon, Messenger и др. Работа служб обеспечивается взаимодействием компонентов трёх типов:
диспетчер управления службами (Service Control Manager, SCM);
приложение-служба;
программа управления службой (Service Control Program, SCP).
SCP — это приложение, которое (в отличие от обыкновенной службы) имеет пользовательский интерфейс, позволяющий пользователю запустить, остановить, продолжить работу и выполнить другие функции управления службами, установленными на машине.
Информация о системных сервисах может быть получена непосредственно из реестра, где в разделе HKLM\System\CurrentControlSet\Services располагается информация о каждом из системных сервисов и его параметрах (подробнее об этом можно прочитать в соответствующем разделе книги David A. Solomon, Mark Russinovich Inside Microsoft Windows 2000 ISBN 0-7356-1021-5, где приводится также и таблица с подробным описанием всех параметров), либо с помощью функций Win32 API для работы с сервисами. Например, функция EnumServicesStatus перечисляет сервисы из специальной базы данных сервисов, а функция OpenSCManager устанавливает соединение с базой данных сервисов на удалённом компьютере.