Проверка подлинности пользователей NTLM

В этой статье содержатся некоторые сведения о проверке подлинности пользователей NTLM.

Применяется к: Windows Server 2012 R2
Исходный номер базы знаний: 102716

Сводка

В этой статье рассматриваются следующие аспекты проверки подлинности пользователей NTLM в Windows:

  • Хранение паролей в базе данных учетной записи
  • Проверка подлинности пользователя с помощью пакета проверки подлинности MSV1_0
  • Сквозная проверка подлинности

Дополнительная информация

Хранение паролей в базе данных учетной записи

Учетные записи пользователей сохраняются в базе данных диспетчера учетных записей безопасности (SAM) или в базе данных Active Directory. Каждая учетная запись связывается с двумя паролями: с паролем, совместимым с LAN Manager, и с паролем Windows. Каждый пароль зашифровывается и сохраняется в базе данных SAM или в базе данных Active Directory.

Пароль, совместимый с lan Manager, совместим с паролем, который используется диспетчером локальной сети. Этот пароль основан на исходном наборе символов изготовителя оборудования (OEM). Этот пароль не учитывает регистр и может содержать до 14 символов. Версия OWF этого пароля также называется версией OWF lan Manager или ESTD. Этот пароль вычисляется с помощью шифрования DES для шифрования константы с помощью пароля с прозрачным текстом. Пароль OWF lan Manager имеет длину 16 байт. Первые 7 байтов пароля для ввода текста используются для вычисления первых 8 байтов пароля OWF lan Manager. Вторые 7 байт пароля в виде чистого текста используются для компьютера с 8 байтами пароля OWF lan Manager.

Пароль Windows основан на наборе символов Юникода. Этот пароль учитывает регистр и может содержать до 128 символов. Версия этого пароля OWF также называется паролем Windows OWF. Этот пароль вычисляется с помощью хэш-функции RSA MD4. Эта функция вычисляет 16-байтовый дайджест переменной длины строки паролей с явным текстом.

Для любой учетной записи пользователя может не хватить пароль диспетчера локальной сети или пароль Windows. Однако при каждой попытке сохранить обе версии пароля.

Например, если учетная запись пользователя перенесена из базы данных LAN Manager UAS с помощью PortUas или если пароль изменен из клиента LAN Manager или из клиента Windows for Workgroups, будет существовать только версия lan Manager пароля. Если пароль установлен или изменен в клиенте Windows, а пароль не имеет представления LAN Manager, будет существовать только версия пароля для Windows. (Пароль может не иметь представления LAN Manager, так как длина пароля превышает 14 символов или из-за того, что символы не могут быть представлены в наборе символов OEM.)

Ограничения пользовательского интерфейса в Windows не позволяют паролям Windows превышать 14 символов. Последствия этого ограничения рассматриваются далее в этой статье.

В Windows 2000 с пакетом обновления 2 (SP2) и более поздних версиях Windows доступен параметр, позволяющий запретить Windows хранить хэш локальной сети диспетчера паролей. Дополнительные сведения проверка следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:

299656 Как запретить Windows хранить хэш вашего пароля диспетчера локальной сети в Active Directory и локальных базах данных SAM

Примечание.

Корпорация Майкрософт не поддерживает ручное или программное изменение базы данных SAM.

Проверка подлинности пользователя с помощью пакета проверки подлинности MSV1_0

Windows использует API LsaLogonUser для всех видов проверки подлинности пользователей. API LsaLogonUser проверяет подлинность пользователей путем вызова пакета проверки подлинности. По умолчанию LsaLogonUser вызывает пакет проверки подлинности MSV1_0 (MSV). Этот пакет входит в состав Windows NT. Пакет проверки подлинности MSV хранит записи пользователей в базе данных SAM. Этот пакет поддерживает сквозную проверку подлинности пользователей в других доменах с помощью службы Netlogon.

Внутри пакета проверки подлинности MSV состоит из двух частей. Первая часть пакета проверки подлинности MSV выполняется на компьютере, к которому подключено подключение. Вторая часть выполняется на компьютере с учетной записью пользователя. Когда обе части выполняются на одном компьютере, первая часть пакета проверки подлинности MSV вызывает вторую часть без использования службы Netlogon. Первая часть пакета проверки подлинности MSV распознает необходимость сквозной проверки подлинности, так как переданное доменное имя не является собственным доменным именем. Если требуется сквозная проверка подлинности, MSV передает запрос в службу Netlogon. Затем служба Netlogon направляет запрос в службу Netlogon на конечном компьютере. В свою очередь, служба Netlogon передает запрос другой части пакета проверки подлинности MSV на этом компьютере.

LsaLogonUser поддерживает интерактивные входы, входы в службу и сетевые входы. В пакете проверки подлинности MSV все формы входа передают имя учетной записи пользователя, имя домена, содержащего учетную запись пользователя, и некоторые функции пароля пользователя. Различные типы входа представляют пароль по-разному, когда они передают его В LsaLogonUser.

Для интерактивных входов, пакетных входов и входа в службу клиент входа находится на компьютере, на котором выполняется первая часть пакета проверки подлинности MSV. В этом случае пароль с четким текстом передается в LsaLogonUser и в первую часть пакета проверки подлинности MSV. Для входа в службу и пакетного входа диспетчер управления службами и планировщик задач обеспечивают более безопасный способ хранения учетных данных учетной записи.

Первая часть пакета проверки подлинности MSV преобразует пароль с прозрачным текстом как в пароль OWF lan Manager, так и в пароль OWF Windows NT. Затем первая часть пакета передает пароль в виде ясного текста в службу NetLogon или во вторую часть пакета. Вторая часть затем запрашивает у базы данных SAM пароли OWF и гарантирует, что они идентичны.

Для входа в сеть клиенту, который подключается к компьютеру, ранее был задан 16-байтовый вызов или "nonce". Если клиент является клиентом LAN Manager, клиент вычислил 24-байтовый ответ на запрос, зашифровав 16-байтовый запрос с помощью 16-байтового пароля OWF LAN Manager. Затем клиент LAN Manager передает серверу этот ответ на запрос LAN Manager. Если клиент является клиентом Windows, то "ответ на вызов Windows NT" вычисляется с помощью того же алгоритма. Однако клиент Windows использует 16-байтовые данные Windows OWF вместо данных OWF lan Manager. Затем клиент Windows передает серверу ответ на запрос lan Manager и ответ на вызов Windows NT. В любом случае сервер проверяет подлинность пользователя, передав все следующие данные в API LsaLogonUser:

  • Доменное имя
  • Имя пользователя
  • Оригинальный вызов
  • Ответ на запрос LAN Manager
  • Необязательный ответ на запрос Windows NT

Первая часть пакета проверки подлинности MSV передает эти сведения без изменений во вторую часть. Во-первых, вторая часть запрашивает пароли OWF из базы данных SAM или из базы данных Active Directory. Затем вторая часть вычисляет ответ на запрос с помощью пароля OWF из базы данных и переданного запроса. Затем во второй части вычисляемый ответ на запрос сравнивается с ответом на переданный запрос.

Примечание.

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

Как упоминалось ранее, в базе данных SAM или в базе данных Active Directory может отсутствовать любая версия пароля. Кроме того, в вызове LsaLogonUser может отсутствовать любая версия пароля. Если доступны как версия пароля Windows из базы данных SAM, так и версия пароля windows из LsaLogonUser, они используются. В противном случае для сравнения используется версия пароля lan Manager. Это правило помогает обеспечить учет регистра при входе в сеть из Windows в Windows. Это правило также обеспечивает обратную совместимость.

Сквозная проверка подлинности

Служба NetLogon реализует сквозную проверку подлинности. Он выполняет следующие функции:

  • Выбирает домен для передачи запроса на проверку подлинности.
  • Выбирает сервер в домене.
  • Передает запрос на проверку подлинности на выбранный сервер.

Выбрать домен очень просто. Доменное имя передается в LsaLogonUser. Доменное имя обрабатывается следующим образом:

  • Если доменное имя соответствует имени базы данных SAM, проверка подлинности обрабатывается на этом компьютере. На рабочей станции Windows, которая является членом домена, имя базы данных SAM считается именем компьютера. На контроллере домена Active Directory имя базы данных учетной записи — это имя домена. На компьютере, который не является членом домена, все входы обрабатывают запросы локально.
  • Если указанное доменное имя является доверенным для этого домена, запрос на проверку подлинности передается в доверенный домен. На контроллерах домена Active Directory список доверенных доменов легко доступен. На члене домена Windows запрос всегда передается в основной домен рабочей станции, что позволяет основному домену определить, является ли указанный домен доверенным.
  • Если указанное доменное имя не является доверенным для домена, запрос проверки подлинности обрабатывается на компьютере, к которому подключено, как если бы указанное доменное имя было этим доменным именем. NetLogon не различает несуществующий домен, недоверенный домен и неправильно введенное доменное имя.

NetLogon выбирает сервер в домене с помощью процесса, называемого обнаружением. Рабочая станция Windows обнаруживает имя одного из контроллеров домена Windows Active Directory в основном домене. Контроллер домена Active Directory обнаруживает имя контроллера домена Active Directory в каждом доверенном домене. Компонент, выполняющий обнаружение, — это указатель контроллера домена, который выполняется в службе Netlogon. Указатель контроллера домена использует разрешение имен NETBIOS или DNS для поиска необходимых серверов в зависимости от типа настроенного домена и доверия.