NTLM (NT LAN Manager)
Последнее изменение этой страницы: 18:08, 18 июня 2016.
Разработчики: | Microsoft Windows Corporation |
---|---|
Написана на: | C++ |
Операционная система: | MS-DOS, Windows Server |
Тип ПО: | NT LAN Менеджер |
Веб-сайт | Официальный сайт |
NTLM (NT LAN Manager) — является протоколом сетевой аутентификации, разработанным фирмой Microsoft для Windows NT. Протоколы проверки подлинности NTLM включают LAN Manager версий 1 и 2, а также NTLM версий 1 и 2. Протоколы проверки подлинности NTLM проверяют подлинность пользователей и компьютеров, основываясь на механизме запроса/подтверждения, доказывающем серверу или контроллеру домена, что пользователю известен пароль, связанный с учетной записью. При использовании протокола NTLM сервер ресурсов должен выполнять одно из следующих действий для проверки удостоверения пользователя или компьютера каждый раз, как возникает необходимость в новом маркере доступа:
- Свяжитесь со службой проверки подлинности домена на контроллере домена, чтобы получить домен учетной записи компьютера или пользователя, если эта учетная запись является учетной записью в домене.
- Если же учетная запись пользователя или компьютера является локальной учетной записью, то ее можно найти в локальной базе данных учетных записей.
Принцип работы NTLM
Принцип работы NTLM имеет много общего с LAN Manager [1]и эти протоколы обратно совместимы, но есть и существенные отличия. NT-хэш формируется на основе пароля длиной до 128 символов по алгоритму MD4, пароль регистрозависимый и может содержать не только ACSII символы, но и Unicode, что существенно повышает его стойкость по сравнению с LM. Работа происходит следующим способом(рис.1):

Для получения доступа к ресурсу клиент направляет серверу запрос с именем пользователя. Сервер в ответ передает ему случайное число, называемое запросом сервера. Клиент зашифровывает данный запрос по алгоритму DES, используя в качестве ключа NT-хэш пароля, использую 40 или 56 битный ключ(хеш делится на три части и каждая часть шифрует запрос сервера отдельно), так как NT-хэш имеет 128 битную длину.
Зашифрованный хэшем пароля запрос сервера называется ответом NTLM и возвращается обратно серверу, сервер берет из SAM хэш пароля пользователя, чье имя было ему передано и выполняет те же самые действия с запросом сервера, и после сравнивает полученный результат с ответом от NTLM. При совпадении значений, аутентификация считается успешной, и это значит пользователь клиента действительно тот, за кого себя выдает.
При получении доступа третьими ресурсами схема изменяется(рис.2):

Получив запрос от клиента, сервер направляет ему запрос сервера, но получив NTLM-ответ он не имеет возможности посчитать значение для проверки у себя на стороне, так как у него нету хэша пароля доменного пользователя, и тогда он переадресует NTLM-ответ контроллеру домена и отправляет ему свой запрос сервера. Получив эти данные, контроллер домена извлекает хэш указанного пользователя и вычисляет на основе запроса сервера проверочную последовательность, которую уже и сравнивает с полученным NTLM-ответом. Если они равны, на сервер отправляется сообщение, что аутентификация успешно пройдена.
Несмотря на на что, протокол NTLM на сегодняшний день считается слабым. Слабое шифрование делает возможным достаточно быстро восстановить хэш пароля, а если использовался не только NTLM, а еще и LM-ответ, то и восстановить пароль.
NTLMv2
Поэтому появляется вторая версия в которой учтены ошибки слабого шифрования и низкой криптостойкости. Здесь уже клиент, обращаясь к серверу сообщает ему имя пользователя и имя домена, а сервер в ответ передает ему случайное число, называемое "запрос сервера". В ответ клиент генерирует также случайное число, куда добавляется метка времени, которая называется "запрос клиента". Наличие метки времени позволяет избежать ситуации, когда атакующий первоначально накапливает перехваченные данные, а потом с их помощью осуществляет атаку.
Запрос сервера объединяется с запросом клиента и от этой последовательности вычисляется HMAC-MD5 хэш. Затем от данного хэша берется еще один HMAC-MD5 хэш, ключом в котором выступает NT-хэш пароля пользователя. Получившийся результат называется NTLMv2-ответом и вместе с запросом клиента пересылается серверу.
Сервер, получая NTLMv2-ответ и запрос клиента, соединяет полученные данные и также вычисляет HMAC-MD5 хэш, а после пересылает его вместе с ответом контроллеру домена. Тот берет из хранилища сохраненный хэш пароля пользователя и производит вычисления над HMAC-MD5 хешем запросов сервера и клиента, сравнивая получившийся результат с переданным ему NTLMv2-ответом. В случае совпадения серверу возвращается ответ об успешной аутентификации.
Использование версий протокола
NTLMv2 вполне безопасный протокол, но если система настроена неправильно, то злоумышленник может послать NTLM или LM запрос и получить соответствующий ответ, который позволит успешно осуществить атаку. Поэтому рассмотрим о политиках безопасности, За выбор протокола аутентификации отвечает локальная или групповая политика.
И становится очевидным, что сегодня безопасными могут считаться значения выше 3(Отправлять только NTLMv2 ответ). Примечания
Ссылки |
ISSN 2542-0356
Следуй за Полисом
Оставайся в курсе последних событий
Лицензия
Если не указано иное, содержание этой страницы доступно по лицензии Creative Commons «Attribution-NonCommercial-NoDerivatives» 4.0, а примеры кода – по лицензии Apache 2.0. Подробнее см. Условия использования.