ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2019
Просмотров: 12603
Скачиваний: 26
421
WLX_SAS_ACTION_SHUTDOWN - пользователь потребовал завершить
работу системы. Получив данное возвращаемое значение, Winlogon
последовательно вызывает функции библиотеки GINA WlxLogojfn
WlxShutdown.
Если пользователь нажал комбинацию Ctrl-Alt-Del, уже войдя в систему,
Winlogon вызывает функцию WlxLoggedOnSas. GINA выводит на экран
диалоговое окно и, в зависимости от решения пользователя, выполняет
следующие действия:
если пользователь решил не предпринимать никаких действий, GINA
возвращает в Winlogon значение WLX_SAS_ACTION_NONE. Winlogon
возвращает систему в то же состояние, в котором она была до нажатия
комбинации Ctrl-Alt-Del;
если пользователь желает просмотреть список активных процессов, GINA
возвращает значение WLX_SAS_ACTION_TASKLIST. Winlogon возвращает
систему в состояние, в котором она была до нажатия комбинации Ctrl-Alt-Del
и активизирует процесс Task Manager,
если пользователь желает заблокировать рабочую станцию, GINA
возвращает
значение
WLX_SAS_ACTION_LOCK_WKSTA.
Winlogon
блокирует систему;
если пользователь желает выйти из системы, GINA возвращает значение
WLX_SAS_ACTION_LOGOFF. Winlogon в ответ вызывает функцию GINA
WlxLogoff;
если пользователь желает завершить работу с компьютером, GINA
возвращает
значение
WLX_SAS_ACTION_SHUTDOWN,
Winlogon
последовательно вызывает функции GINA WlxLogoff к WlxShutdown.;
если пользователь желает перезагрузить компьютер, GINA возвращает
значение
WLX_SAS_ACTION_SHUTDOWN_REBOOT.
Winlogon
последовательно вызывает функции GINA WlxLogoff и WlxShutdown. По
окончании выгрузки системы компьютер автоматически перезагружается;
если пользователь желает, закончить работу с компьютером и выключить
его, GINA возвращает значение WLX_SAS_ACTION_SHUTDOWN_
REBOOT_ POWER_OFF. Winlogon последовательно вызывает функции
GINA WlxLogoff и WlxShutdown. По окончании выгрузки системы
компьютер автоматически выключается. Если аппаратная часть компьютера
не допускает программного отключения питания, данное возвращаемое
значение имеет тот же эффект, что и WLX_SAS_ACTION_ SHUTDOWN;
если пользователь желает изменить свой пароль, GINA выводит на экран
соответствующее диалоговое окно, по окончании ввода пользователем
нового пароля вызывает функцию WlxChangePasswordNotify и затем
возвращает в Winlogon значение WLX_SAS_ACTION_PWD_ CHANGED.
422
Когда рабочая станция заблокирована, а пользователь нажал комбинацию
Ctrl – Alt - Del, Winlogon вызывает функцию GINA WlxWkstaLockedSas.
GINA запрашивает у пользователя параметры идентификации и проверяет
их. В зависимости от результата проверки GINA возвращает одно из
следующих значений:
WLX_UNLOCK_WKSTA - разблокировать рабочую станцию;
WLX_FORCE_LOGOFF
-
принудительный выход из системы с
последующим входом в систему администратора;
WLX_NO_ACTION - рабочая станция остается заблокированной.
Если пользователь вошел в систему и один из процессов вызывает
системную функцию ExitWindowsEx, Winlogon в зависимости от параметров
ExitWindowsEx вызывает либо WlxLogoff, либо последовательно WlxLogoff
и WlxShutdown. При этом соответственно, либо пользователь выходит из
системы, либо система завершает работу.
Если GINA получает от пользователя нестандартную SAS, она вызывает
функцию Winlogon WlxSasNotify, после чего Winlogon вызывает одну из
вышеперечисленных функций GINA, в зависимости от контекста, в котором
была получена SAS.
5.2. Протокол аутентификации Kerberos
Windows 2000 поддерживает несколько технологий аутентификации для
различных целей. Основным методом идентификации в Windows 2000
является протокол аутентификации Kerberos.
Kerberos представляет собой набор методов идентификации и проверки
истинности партнеров по обмену информацией (рабочих станций,
пользователей или серверов) в открытой (незащищенной) сети. Процесс
идентификации не зависит от аутентификации, выполняемой сетевой
операционной системой, не основывается в принятии решений на адресах
хостов и не предполагает обязательную организацию физической
безопасности всех хостов сети. Кроме того, допускается, что пакеты
информации, передаваемые по сети, могут быть изменены, прочитаны и
переданы в любой момент времени. Следует, однако, отметить, что
большинство приложений использует функции протокола Kerberos только
при создании сеансов передачи потоков информации. При этом
предполагается, что последующее несанкционированное разрушение потока
данных невозможно. Поэтому применяется прямое доверие, основанное на
адресе хоста. Kerberos выполняет аутентификацию как доверенная служба
третьей стороны, используя шифрование с помощью общего секретного
ключа (shared secret key).
423
Аутентификация выполняется следующим образом:
1. Клиент посылает запрос серверу аутентификации (Authentication Server,
AS) на информацию, однозначно идентифицирующую некоторый нужный
клиенту сервер.
2. Сервер AS передает требуемую информацию, зашифрованную с помощью
известного пользователю ключа. Переданная информация состоит из билета
сервера и временного ключа, предназначенного для шифрования (часто
называемого ключом сеанса) С .
3. Клиент пересылает серверу билет, содержащий идентификатор клиента и
ключ сеанса, зашифрованные с помощью ключа, известного серверу.
4. Теперь ключ сеанса известен и клиенту, и серверу. Он может быть
использован для аутентификации клиента, а также для аутентификации
сервера.
Ключ сеанса можно применять для шифрования передаваемой в сеансе
информации
или
для
взаимного
обмена
ключами
подсеанса,
предназначенными
для
шифрования
последующей
передаваемой
информации.ъ
Протокол Kerberos функционирует на одном или нескольких серверах
аутентификации, работающих на физически защищенном хосте. Серверы
аутентификации ведут базы данных партнеров по обмену информацией в
сети (пользователей, серверов и т. д.) и их секретных ключей. Программный
код, обеспечивающий функционирование самого протокола и шифрование
данных, находится в специальных библиотеках. Для того чтобы выполнять
аутентификацию Kerberos для своих транзакций, приложения должны
сделать несколько обращений к библиотекам Kerberos. Процесс
аутентификации состоит из обмена необходимыми сообщениями с сервером
аутентификации Kerberos.
Протокол Kerberos состоит из нескольких субпротоколов (или протоколов
обмена сообщениями). Существует два метода, которыми клиент может
запросить
у
сервера
Kerberos
информацию,
идентифицирующую
определенный сервер. Первый способ предполагает, что клиент посылает AS
простой текстовый запрос билета для конкретного сервера, а в ответ
получает данные, зашифрованные с помощью своего секретного ключа. Как
правило, в данном случае клиент посылает запрос на билет, позволяющий
получить билет (Ticket Granting Ticket, TGT), который в дальнейшем
используется для работы с выдающим билеты сервером (Ticket Granting
Server, TGS). Второй способ предполагает, что клиент посылает TGT-билеты
на TGS-сервер так же, как будто он обменивается информацией с другим
сервером приложений, требующим аутентификации Kerberos.
424
Информация, идентифицирующая сервер, может быть использована для
идентификации партнеров по транзакции, что позволит гарантировать
целостность Передаваемых между ними сообщений или сохранить в секрете
передаваемую информацию.
Для идентификации партнеров по транзакции клиент посылает билет на
сервер. Поскольку посылаемый билет "открыт" (некоторые его части
зашифрованы, но они не помешают выполнить посылку копии) и может быть
перехвачен и использован злоумышленником, для подтверждения
истинности партнера, пославшего билет, передается дополнительная
информация, называемая аутентификатором. Она зашифрована с помощью
ключа сеанса и содержит отсчет времени, подтверждающий, что сообщение
было сгенерировано недавно и не является копией оригинальной посылки.
Шифрование аутентификатора с помощью ключа сеанса доказывает, что
информация была передана истинным партнером по обмену данными.
Поскольку, кроме запрашивающего партнера и сервера, никто не знает ключ
сеанса (он никогда не посылается по сети в открытом виде), с его помощью
можно полностью гарантировать истинность партнера. Целостность
сообщений, которыми обмениваются партнеры, гарантируется с помощью
ключа сеанса (передается в билете и содержится в информации
идентификации партнера). Этот подход позволяет обнаружить атаки типа
посылки злоумышленником перехваченной копии запроса и модификации
потока данных. Это достигается генерированием и пересылкой контрольной
суммы (хэш-функции) сообщения клиента, зашифрованной с помощью
ключа сеанса. Безопасность и целостность сообщений, которыми
обмениваются
партнеры,
может
быть
обеспечена
шифрованием
передаваемых данных с помощью ключа сеанса, передаваемого в билете и
содержащегося в информации идентификации партнера.
5.3. Cсохранность паролей учетных записей
Несомненно, самым главным аспектом при анализе безопасности Windows
2000 является сохранность паролей учетных записей с правами
Администратора, т.к. знание пароля позволяет получить полный доступ к
этому компьютеру как локально, так и по сети.
Информация
об
учетных
записях
пользователей
хранится
в
"HKEY_LOCAL_MACHINESAM" (SAM - Security Account Manager) реестра.
А так как в Windows 2000 все ветки реестра "физически" расположены на
диске в каталоге %SystemRoot%System32Config в нескольких файлах, то и
эта ветка - не исключение. Она располагается в файле SAM. Этот файл по
умолчанию недоступен для чтения никому, даже Администратору, но все-
425
таки к нему можно получить доступ. К файлу SAM (а также к остальным
файлам без расширений в этой директории - system, software и др.) нет
доступа по той причине, что Windows 2000 используют реестр "на лету" - т.е.
при внесении в реестр изменений они становятся доступны сразу же и
перезагрузка компьютера не требуется, но для этого системе нужно иметь
монопольный доступ к файлам реестра.
Windows 2000 хранит пароли пользователей не в "явном" виде, а в виде
хэшей (hash).
Рассмотрим хранение паролей пользователей подробнее. Среди сложной
структуры SAM-файла нам интересна структура, называемая V-блок. Она
имеет размер 32 байта и содержит в себе хэш пароль для локального входа -
NT Hash длиной 16 байт, а также хэш, используемый при аутентификации
доступа к общим ресурсам других компьютеров - LanMan Hash или просто
LM Hash, длиной также 16 байт.
Алгоритмы формирования этих хэшей следующие:
Формирование NT Hash:
1.Пароль пользователя преобразуется в Unicode-строку.
2.Генерируется хэш на основе данной строки с использованием алгоритма
MD4.
3.Полученный хэш шифруется алгоритмом DES, причем в качестве ключа
используется RID (т.е. идентификатор пользователя). Это необходимо для
того, чтобы два пользователя с одинаковыми паролями имели разные хэши.
Все пользователи имеют разные RID-ы (RID встроенной учетной записи
Администратора равен 500, встроенной учетной записи Гостя равен 501, а
все остальные пользователи последовательно получают RID-ы, равные 1000,
1001, 1002 и т.д.).
Формирование LM Hash:
1.Пароль пользователя преобразуется в верхний регистр и дополняется
нулями до длины 14 байт.
2.Полученная строка делится на две половинки по 7 байт и каждая из них по
отдельности шифруется алгоритмом DES, на выходе которого получаем 8-
байтный хэш - в сумме же имеем один хэш длиной 16 байт.
3.Далее LM Hash дополнительно шифруется так же, как и в шаге 3
формирования NT Hash.
Для повышения безопасности хранения паролей полученные хэши
дополнительно шифруются еще одним алгоритмом с помощью утилиты
syskey. Т.е. к вышеописанным алгоритмам добавляется еще 4-й шаг -
получение с помощью syskey нового хэша от хэша, полученного на шаге 3.
Методы доступа к SAM-файлу: