ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 05.12.2019

Просмотров: 12407

Скачиваний: 24

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

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.  


background image

 

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).  


background image

 

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.  


background image

 

424 

Информация,  идентифицирующая  сервер,  может  быть  использована  для 
идентификации  партнеров  по  транзакции,  что  позволит  гарантировать 
целостность Передаваемых между ними сообщений или сохранить в секрете 
передаваемую информацию.          
Для  идентификации  партнеров  по  транзакции  клиент  посылает  билет  на 
сервер.  Поскольку  посылаемый  билет  "открыт"  (некоторые  его  части 
зашифрованы, но они не помешают выполнить посылку копии) и может быть 
перехвачен  и  использован  злоумышленником,  для  подтверждения 
истинности  партнера,  пославшего  билет,  передается  дополнительная 
информация,  называемая  аутентификатором.  Она  зашифрована  с  помощью 
ключа сеанса и содержит отсчет времени, подтверждающий, что сообщение 
было  сгенерировано  недавно  и  не  является  копией  оригинальной  посылки. 
Шифрование  аутентификатора  с  помощью  ключа  сеанса  доказывает,  что 
информация  была  передана  истинным  партнером  по  обмену  данными. 
Поскольку, кроме запрашивающего партнера и сервера, никто не знает ключ 
сеанса (он никогда не посылается по сети в открытом виде), с его помощью 
можно  полностью  гарантировать  истинность  партнера.    Целостность 
сообщений,  которыми  обмениваются  партнеры,  гарантируется  с  помощью 
ключа  сеанса  (передается  в  билете  и  содержится  в  информации 
идентификации  партнера).  Этот  подход  позволяет  обнаружить  атаки  типа 
посылки  злоумышленником  перехваченной  копии  запроса  и  модификации 
потока данных. Это достигается генерированием и пересылкой контрольной 
суммы  (хэш-функции)  сообщения  клиента,  зашифрованной  с  помощью 
ключа  сеанса.  Безопасность  и  целостность  сообщений,  которыми 
обмениваются 

партнеры, 

может 

быть 

обеспечена 

шифрованием 

передаваемых  данных  с  помощью  ключа  сеанса,  передаваемого  в  билете  и 
содержащегося в информации идентификации партнера.   
 

5.3. Cсохранность паролей учетных записей  

 
Несомненно,  самым  главным  аспектом  при  анализе  безопасности  Windows 
2000  является  сохранность  паролей  учетных  записей  с  правами 
Администратора,  т.к.  знание  пароля  позволяет  получить  полный  доступ  к 
этому компьютеру как локально, так и по сети.  
Информация 

об 

учетных 

записях 

пользователей 

хранится 

в 

"HKEY_LOCAL_MACHINESAM" (SAM - Security Account Manager) реестра. 
А  так  как  в  Windows  2000  все  ветки  реестра  "физически"  расположены  на 
диске  в  каталоге  %SystemRoot%System32Config  в  нескольких  файлах,  то  и 
эта  ветка  -  не  исключение.  Она  располагается  в  файле  SAM.  Этот  файл  по 
умолчанию  недоступен  для  чтения  никому,  даже  Администратору,  но  все-


background image

 

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-файлу: