Поделиться через


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

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

Исходный номер базы знаний: 102716

Итоги

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

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

Дополнительные сведения

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

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

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

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

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

Например, если учетная запись пользователя переносится из базы данных LAN Manager UAS с помощью PortUas или если пароль изменяется с клиента LAN Manager или из клиента Windows for Workgroups, будет существовать только версия LAN Manager пароля. Если пароль задан или изменен в клиенте Windows, а пароль не имеет представления диспетчера локальной сети, будет существовать только версия пароля 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 диспетчера локальной сети, так и в пароль Windows NT OWF. Затем первая часть пакета передает пароль с четким текстом в службу NetLogon или вторую часть пакета. Вторая часть затем запрашивает базу данных SAM для паролей OWF и гарантирует, что они идентичны.

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

  • Доменное имя
  • Имя пользователя
  • Исходная задача
  • Ответ на запрос диспетчера локальной сети
  • Необязательный ответ на запрос 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 для поиска необходимых серверов в зависимости от типа домена и доверия, настроенного.