Материал: Лекция4 - идент и аут в windows

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Протоколы lan Manager и nt

Компания IBM разработала протокол LAN Manager, применив его в ранних версиях Windows и сетях Windows. Как все протоколы аутентификации Microsoft, LAN Manager генерирует хеш паролей (LM hash), который хранится и используется отправителем и получателем в процессе аутентификации.

LM-хеши используются для совместимости с другим программным обеспечением корпорации Microsoft (Windows for Workgroups, Windows и Lan Manager) и хранятся в базе данных SAM в стандарте Lan Manager.

LAN Manager формирует LM-хеши следующим образом.

1.Все буквенные символы исходной строки пользовательского пароля приводятся к верхнему регистру.

2.Если пароль содержит меньше 14 символов, то он дополняется нулями.

3.Из каждой 7-байтовой половины преобразованного таким образом пароля пользователя отдельно формируется ключ для шифрования фиксированной 8-байтовой последовательности по DES-алгоритму.

4.Полученные в результате две 8-байтовые половины хешированного пароля Lan Manager еще раз шифруются по DES-алгоритму (при этом в качестве ключа используется RID пользователя) и помещаются в базу данных SAM.

Если раньше LAN Manager был вполне приемлем, то сейчас он считается очень ненадежным. С помощью специальных инструментов пароли, зашифрованные методом хеширования LAN Manager, можно всего за несколько секунд преобразовать в исходный текст.

LM-хешам свойственны принципиальные недостатки, а также имеется ряд уязвимых мест:

  • для составления пароля можно использовать только 128 символов ASCII;

  • длина пароля не должна превышать 14 символов;

  • если пароль содержит менее 14 символов, то отсутствующие символы заменяются нулями, что позволяет точно определить длину пароля;

  • перед хешированием LAN Manager преобразует все буквенные символы пароля в верхний регистр.

Почему LAN Manager до сих пор не вышел из употребления? В целях обратной совместимости он активен по умолчанию во всех компьютерах Windows, в том числе Windows Server 2003. В новейших базах данных аутентификации Windows слабый LM-хеш хранится наряду с более надежными, просто на случай, если придется выполнить транзакцию LAN Manager.

Если на предприятии не используются другие приложения, требующие аутентификации LAN Manager, то можно (и нужно) LAN Manager отключить.

NT-хеш формируется следующим образом.

1.Строка символов пользовательского пароля хешируется с помощью функции MD4. В итоге из символьного пароля, введенного пользователем, получается 16-байтовая последовательность — хешированный пароль Windows.

2.Данная последовательность затем шифруется по DES-алгоритму 5, и результат шифрования сохраняется в базе данных SAM. При этом в качестве ключа шифрования используется так называемый относительный идентификатор пользователя (Relative Identifier, RID), который представляет собой автоматически увеличивающийся порядковый номер учетной записи данного пользователя в базе данных SAM.

Протокол ntlm

С появлением Windows NT компания Microsoft спроектировала и развернула более надежный протокол аутентификации NTLM.

Протокол NTLM является закрытым протоколом компании Microsoft, вся имеющаяся о нём информация была получена методом reverse engineering (обратный анализ). Он применяется практически всегда, когда не возможно использование протокола Kerberos, например, вне домена Active Directory. Впервые данный протокол появился в Windows NT 3.5.

В NTLM используется более эффективный алгоритм аутентификации, который создает более надежный хеш паролей (NTLM hash). Пароль NTLM может содержать до 128 символов. В отличие от LAN Manager, ограниченного использованием только 128 символов ASCII, NTLM совместим с полным набором символов Unicode, что повышает сложность паролей.

Протокол NTLM функционирует следующим образом:

  1. Пользователь указывает имя пользователя, пароль и имя домена при входе на компьютер-клиент.

  2. Клиент создает хеш данного пароля и удаляет оригинал.

  3. Клиент отправляет серверу имя пользователя в открытом виде.

  4. Сервер отправляет клиенту 16-битный фрагмент случайных данных.

  5. Клиент шифрует этот фрагмент, шифрует хеш пароля пользователя и передает их на сервер.

  6. Сервер передает имя пользователя, случайный фрагмент данных и ответ клиента на контроллер домена.

  7. Контроллер домена шифрует отрезок случайных данных вместе со своим собственным хешем пароля пользователя, после чего сравнивает их с элементами, присланными сервером.

  8. Если значения совпадают, контроллер домена уведомляет сервер об успешном завершении аутентификации.

  9. Если значения или имя пользователя не совпадают, контроллер домена уведомляет об этом сервер, который передает клиенту соответствующее сообщение. После этого браузер клиента запрашивает у пользователя аутентификационные данные.

Протоколы ntlMv1 и ntlMv2

В последствии выяснилось, что и NTLM уязвим, и специалисты Microsoft подготовили протокол NTLMv2, который до сих пор считается достаточно надежным.

В хеше пароля NTLMv2 используется аутентификация сообщений HMAC-MD5, а последовательности запрос-ответ присваивается метка времени, чтобы предотвратить атаки, в ходе которых взломщик записывает учетные данные и впоследствии их использует.

В целом NTLMv2 более устойчив к атакам с применением «грубой силы», нежели NTLM, так как в протоколе применяется 128-разрядный ключ шифрования.

Первая версия протокола используется до сих пор и сейчас известна под названием NTLMv1. Аутентификация выполняется следующим образом:

1.Клиент отправляет серверу запрос на аутентификацию.

2.В ответ на запрос сервер отвечает случайным 8-байтным числом – server challenge.

3.Клиент формирует 16-байтный NT хеш пароля, дополняет его нулями до 21-ого байта и полученную последовательность разбивает на 3 части по 7 байтов. Каждая из этих частей используется как ключ для независимого шифрования ответа сервера алгоритмом DES. Три полученных шифрованных последовательности соединяются в одно 24-байтное значение, которое отправляется серверу.

4.Сервер выполняет аналогичное преобразование своего ответа, используя свою версию NT хеша. Если полученное значение совпадает с ответом клиента, то аутентификация считается успешной.

Протокол NTLMv2 начиная с Windows Vista, является основным и включен в конфигурации по умолчанию. Это означает, что данные операционные системы по умолчанию не посылают запросов и откликов по протоколу NTLMv1. Данная версия протокола сложнее и надёжнее. Её можно описать следующим образом:

1.Клиент отправляет серверу запрос на аутентификацию.

2.В ответ на запрос сервер отвечает случайным 8-байтным числом – server challenge.

3.Клиент формирует NT хеш пароля, дополняет его именами пользователя и домена и вычисляет для этих идентификационных данных HMAC-MD5 хеш. Затем он генерирует 8-байтное случайное число (client challenge). Эта информация будет использоваться для формирования двух частей ответа.

4.Первая часть ответа включает хеш идентификационных данных, полученных на шаге 3, и два числа - server challenge и client challenge. Эти данные сообща хешируются алгоритмом HMAC-MD5, после чего клиент приписывает к ним client challenge в открытом виде (это необходимо, чтобы сервер мог выполнить проверку).

5.Вторая часть ответа включает хеш идентификационных данных, server challenge и client challenge 2. Как и в случае первой части данные хешируются алгоритмом HMAC-MD5, после чего в конец дописывается client challenge 2 в открытом виде. В свою очередь client challenge 2 содержит следующие данные: фиксированный заголовок, текущее время, client challenge и имя домена.

6. Обе части отправляются серверу.

7. Сервер формирует аналогичные хеши, используя свою версию NT хеша пароля пользователя, имена пользователя и домена и переданные в открытом виде числа - client challenge и client challenge 2. Если полученное значение совпадает с ответом клиента, то аутентификация считается успешной.