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), включающее этапы согласования, вызова и ответа.
Этапы аутентификации
- Negotiate (согласование). Клиент отправляет серверу сообщение
NEGOTIATE_MESSAGE, содержащее список поддерживаемых версий протокола, флаги возможностей (например, поддержка NTLMv2, 128-битного шифрования, подписи сообщений) и имя домена (если применимо). - Challenge (вызов). Сервер отвечает сообщением
CHALLENGE_MESSAGE, которое включает случайное 8-байтовое число (nonce), называемое «вызовом» (challenge), а также информацию о версии сервера и его домене. - 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 →