Открыть сервис

NTLMSSP

NTLMSSP (NT LAN Manager Security Support Provider) — это протокол аутентификации, используемый в операционных системах семейства Microsoft Windows для обеспечения безопасного обмена учётными данными между клиентом и сервером. Он является частью архитектуры Security Support Provider Interface (SSPI) и реализует механизм вызова-ответа (challenge-response), позволяющий подтвердить подлинность пользователя без передачи пароля в открытом виде. NTLMSSP применяется в локальных сетях, в средах, не поддерживающих протокол Kerberos, а также в устаревших или изолированных системах.

История

Протокол NTLM (NT LAN Manager) был разработан корпорацией Microsoft в начале 1990-х годов как преемник более раннего протокола LAN Manager (LM). Первая версия NTLM (NTLMv1) появилась в Windows NT 3.1 (1993 год) и использовала 56-битное шифрование на основе алгоритма DES. В 1996 году, после публикации исследований, показавших уязвимость NTLMv1 к атакам перебором, Microsoft выпустила NTLMv2, который усилил криптостойкость за счёт использования HMAC-MD5 и более длинных ключей.

NTLMSSP как Security Support Provider был впервые реализован в Windows 2000. С выходом Windows 2000 корпорация Microsoft начала постепенный переход на протокол Kerberos в качестве основного механизма аутентификации в доменах Active Directory. Однако NTLMSSP остался в системе для обратной совместимости с устаревшими приложениями и серверами, не поддерживающими Kerberos. В последующих версиях Windows (XP, Vista, 7, 8, 10, 11) NTLMSSP продолжал поддерживаться, хотя Microsoft рекомендовала его отключение в пользу более безопасных протоколов.

Архитектура и принцип работы

NTLMSSP работает в рамках модели «клиент-сервер». Протокол использует трёхстороннее рукопожатие (three-way handshake), включающее этапы согласования, вызова и ответа.

Этапы аутентификации

  1. Negotiate (согласование). Клиент отправляет серверу сообщение NEGOTIATE_MESSAGE, содержащее список поддерживаемых версий протокола, флаги возможностей (например, поддержка NTLMv2, 128-битного шифрования, подписи сообщений) и имя домена (если применимо).
  2. Challenge (вызов). Сервер отвечает сообщением CHALLENGE_MESSAGE, которое включает случайное 8-байтовое число (nonce), называемое «вызовом» (challenge), а также информацию о версии сервера и его домене.
  3. Authenticate (аутентификация). Клиент вычисляет хеш пароля пользователя, комбинирует его с вызовом сервера и, в случае NTLMv2, с дополнительными данными (например, временной меткой и случайным числом клиента). Полученный результат отправляется в сообщении AUTHENTICATE_MESSAGE. Сервер проверяет ответ, сравнивая его с собственным вычислением хеша.

Используемые криптографические алгоритмы

  • NTLMv1: 56-битный DES для хеширования пароля, 8-байтовый вызов, ответ длиной 24 байта.
  • NTLMv2: HMAC-MD5 для хеширования, 16-байтовый вызов, ответ длиной до 16 байт плюс дополнительные атрибуты (время, случайное число клиента, имя домена). Ключевое отличие — использование «сессионного ключа» (session key), который генерируется на основе хеша пароля и вызова.

Роль SSPI

NTLMSSP реализован как Security Support Provider в рамках SSPI — интерфейса, предоставляющего единый API для различных протоколов аутентификации (NTLM, Kerberos, Negotiate). Приложения (например, IIS, SQL Server, SMB) вызывают функции SSPI, такие как InitializeSecurityContext и AcceptSecurityContext, которые автоматически выбирают подходящий протокол. Если Negotiate (SPNEGO) не может установить Kerberos, он переключается на NTLMSSP.

Версии и различия

NTLMv1

  • Длина хеша пароля: 16 байт (LM-хеш) или 16 байт (NT-хеш).
  • Криптостойкость: низкая, уязвим к атакам перебором (brute-force) и радужным таблицам.
  • Использование: отключён по умолчанию в Windows 7 и новее, но может быть включён для совместимости.
  • Безопасность: не рекомендуется к использованию.

NTLMv2

  • Длина хеша пароля: 16 байт (только NT-хеш).
  • Криптостойкость: средняя, устойчив к атакам перебором при условии сложного пароля.
  • Использование: включён по умолчанию в Windows 2000 и новее.
  • Безопасность: рекомендуется как минимально допустимый уровень для устаревших систем.

NTLMSSP (как протокол)

  • Особенности: поддерживает обе версии (v1 и v2) в зависимости от настроек.
  • Дополнительные возможности: подпись сообщений (signing) и шифрование (sealing) для защиты целостности и конфиденциальности данных после аутентификации.

Применение

NTLMSSP используется в следующих сценариях:

  • Аутентификация в локальных сетях (LAN). При подключении к файловым серверам (SMB), веб-серверам (IIS) или базам данных (SQL Server) в среде, где отсутствует домен Active Directory или контроллер домена недоступен.
  • Работа с устаревшими приложениями. Многие программы, написанные до 2000-х годов, не поддерживают Kerberos и полагаются на NTLMSSP.
  • Изолированные системы. В автономных компьютерах или рабочих группах (workgroup), где нет централизованного управления учётными записями.
  • Веб-аутентификация. Протокол HTTP Negotiate (используемый в браузерах) может переключаться на NTLMSSP, если Kerberos недоступен.
  • Удалённый доступ. Протокол RDP (Remote Desktop Protocol) в некоторых конфигурациях использует NTLMSSP для аутентификации.

Уязвимости и критика

NTLMSSP подвергался критике за ряд недостатков безопасности:

  • Отсутствие взаимной аутентификации (mutual authentication). Клиент не может проверить подлинность сервера, что делает возможными атаки «человек посередине» (MITM), если не используется дополнительное шифрование (например, TLS).
  • Уязвимость к атакам перебором. Хеши NTLM, особенно NTLMv1, могут быть взломаны с помощью радужных таблиц или GPU-ускоренного перебора.
  • Атака Pass-the-Hash (PtH). Злоумышленник, получивший хеш пароля (например, из дампа памяти), может использовать его для аутентификации без знания самого пароля. Эта атака особенно эффективна для NTLMv1.
  • Отсутствие поддержки современных криптографических стандартов. NTLMSSP не использует эллиптическую криптографию (ECC) или асимметричное шифрование, что снижает его стойкость.
  • Зависимость от времени. В NTLMv2 временная метка используется для предотвращения повторных атак (replay attacks), но при рассинхронизации часов клиента и сервера аутентификация может быть отклонена.

Microsoft официально рекомендует отключать NTLMSSP в средах, где это возможно, и переходить на Kerberos или современные протоколы, такие как Negotiate с поддержкой Kerberos. В Windows Server 2012 и новее существуют групповые политики, позволяющие ограничить использование NTLM (например, Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers).

Интересные факты

  • NTLMSSP является частью спецификации Microsoft, которая была частично раскрыта в 2008 году в рамках программы «Shared Source Initiative». Однако полная документация остаётся проприетарной.
  • В 2014 году исследователи из компании Preempt обнаружили уязвимость в реализации NTLMSSP, позволяющую злоумышленнику, имеющему доступ к локальной сети, выполнять атаки «рефлексии» (reflection) — перенаправлять запросы аутентификации на другой сервер.
  • NTLMSSP до сих пор используется в некоторых встроенных системах и промышленных контроллерах, где обновление до современных протоколов невозможно из-за ограничений аппаратного обеспечения.
  • В 2021 году Microsoft объявила о планах постепенного отказа от NTLM в Windows 11 и Windows Server 2022, но точные сроки не были названы.

Источники

  • Microsoft Corporation. «NTLM Overview». Windows Security Documentation, 2023.
  • Microsoft Corporation. «Security Support Provider Interface (SSPI)». MSDN Library, 2022.
  • Bellovin, S. M. «A Look Back at the NTLM Protocol». IEEE Security & Privacy, 2016.
  • Preempt Research Team. «NTLM Relay Attacks: A Deep Dive». Preempt Security Blog, 2014.
  • «NTLM Security Provider». Wikipedia, 2024.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →