ntlm аутентификация что это

NTLM-аутентификация — это семейство протоколов проверки подлинности в Windows, основанное на схеме «вызов-ответ» без передачи открытого пароля, применяемое для входа в локальные учетные записи и в доменные сервисы, когда Kerberos недоступен. 🔐 NTLM поддерживает взаимную защиту канала и подпись сообщений, но считается устаревшим из-за известных рисков (relay, pass-the-hash, downgrade). Рекомендуется по возможности заменять NTLM на Kerberos или современные протоколы с TLS.

NTLM (NT LAN Manager) — исторически основной механизм аутентификации в семействах Windows NT/2000/XP/Server, который все еще встречается в современных средах для совместимости: в рабочих группах, при доступе к SMB-шарам, печати, DCOM, WinRM/HTTP-проксировании, а также как резервный вариант в домене Active Directory, если Kerberos недоступен. 🧩 Через SSPI/Negotiate NTLM может автоматически выбираться клиентом без участия пользователя, что объясняет его устойчивую «живучесть» в корпоративных сетях.

Протокол строится на модели «challenge-response»: сервер выдает клиенту случайную задачу (nonce), клиент формирует ответ, вычисленный из хэша пароля и полученного вызова, не раскрывая сам пароль. ⚙️ Базовая последовательность сообщений состоит из трех типов: NEGOTIATE, CHALLENGE, AUTHENTICATE. Для защиты целостности и конфиденциальности на сеанс может устанавливаться «session security» (подпись и шифрование трафика), применяемая, например, в SMB. Для веб-сценариев NTLM инкапсулируется в HTTP-заголовки Authorization/WWW-Authenticate.

Версии и развитие NTLM 💡

  • LM (LAN Manager): крайне слабый предшественник, использует DES и разделение пароля на 7-символьные блоки; фактически компрометирован. Никогда не включайте и не храните LM-хэши.
  • NTLMv1: применяет NT-хэш (MD4 от UTF-16LE пароля) и DES-операции поверх вызова; уязвим к ряду атак (relay, downgrade, крипто-слабости).
  • NTLM2 Session: улучшение поверх NTLMv1 с дополнительными клиентскими данными, но это не NTLMv2.
  • NTLMv2: HMAC-MD5 на основе NT-хэша, включает таймстемп и «Target Info» (AV-пары), MIC; устойчивее к воспроизведению и некоторым даунгрейдам.
  • NTLM SSP (via SSPI): реализация протокола в рамках Windows SSPI и пакета Negotiate (SPNEGO), который выбирает Kerberos либо NTLM.

Как это работает под капотом 🔬

У клиента уже есть NT-хэш пароля (MD4 от Unicode-пароля); он никогда не отправляется по сети. При аутентификации сервер высылает «challenge» (8 байт). В NTLMv2 клиент собирает «blob» со временем, AV-парами (имя сервера, домен, DNS-имена), вычисляет HMAC-MD5 от этого blob и challenge с ключом, производным от NT-хэша, и отправляет ответ. Сервер, имея доступ к эталонному хэшу (через контроллер домена или локальную SAM/NTDS), воспроизводит вычисления и подтверждает подлинность. 🛡️ При успешной аутентификации стороны могут договориться о подписи/шифровании (RC4 или AES в новых реализациях SMB3) для защиты последующего трафика.

Сравнение NTLM и Kerberos (для ориентира) 📊

Критерий NTLM Kerberos
Модель Challenge-response, без третьей стороны Билеты TGT/TGS через KDC (DC)
Взаимная аутентификация Ограниченная (NTLMv2 с MIC/EPA) Да, по умолчанию
Устойчивость к relay Слабее; возможны NTLM relay-атаки 🚧 Сильнее, особенно с каналами и SPN
Зависимость от времени Меньше, но есть timestamp в v2 Критична (синхронизация часов)
Производительность Выше нагрузка на DC при частых проверках Эффективнее при многократном доступе (кэш билетов)
Поддержка в облаке Ограничена; чаще внутри сети Широкая интеграция с AAD/федерацией ☁️
Совместимость Высокая с устаревшими сервисами Требует SPN, правильно настроенных служб
Рекомендация Оставлять только где иначе никак Использовать по умолчанию
Шифрование трафика Опционально (подпись/шифр. сеанса) Чаще встроено в билетный процесс

Где NTLM встречается на практике 🧭

  • Локальные входы на рабочие станции и серверы вне домена (WORKGROUP) 🖥️.
  • SMB/CIFS доступ к файловым шарам и печати, особенно между старыми устройствами.
  • HTTP-прокси и веб-приложения с «Windows Integrated Authentication» (IWA), если Kerberos не сконфигурирован.
  • WinRM/PowerShell Remoting при падении на Negotiate/NTLM; DCOM/Remote Registry.
  • Смешанные среды с устройствами и ПО без поддержки Kerberos или SPN.

Безопасность: известные риски и защитные меры 🛡️

Классические угрозы включают relay (перепроксирование NTLM на другой сервис), pass-the-hash (использование украденного NT-хэша), даунгрейд от NTLMv2 к NTLMv1/LM, отсутствие подписи трафика SMB, слабую конфигурацию прокси/HTTP. Для снижения рисков применяют SMB Signing, Extended Protection for Authentication (EPA) с Channel Binding Token (CBT), ограничение NTLM по политикам, Kerberos-by-default, защита учетных данных LSASS (Credential Guard), и мониторинг событий аутентификации. Ключевая стратегия — минимизировать поверхности, где NTLM вообще необходим.

Настройка и ограничение NTLM в Windows ⚙️

Групповые политики (локальные или доменные):

  • Конфигурация компьютера → Конфигурации Windows → Параметры безопасности → Локальные политики → Параметры безопасности:
    • Сетевая безопасность: Уровень аутентификации LAN Manager (LmCompatibilityLevel)
    • Сетевая безопасность: Запретить хранение значения хэша LAN Manager (NoLMHash)
    • Сетевая безопасность: Ограничить NTLM: Аудит NTLM-аутентификации в этом домене/на этом компьютере
    • Сетевая безопасность: Ограничить NTLM: Входящие/Исходящие NTLM-трафик
    • Microsoft network server/client: Digitally sign communications (always/when possible)

Ключевые реестра и значения:

reg query HKLMSYSTEMCurrentControlSetControlLsa /v LmCompatibilityLevel
; Рекомендуемые уровни: 5 (NTLMv2 only; refuse LM & NTLMv1) или 3/4 в переходный период

reg add HKLMSYSTEMCurrentControlSetControlLsa /v NoLMHash /t REG_DWORD /d 1 /f
; Запретить хранение LM-хэша

reg add HKLMSYSTEMCurrentControlSetServicesLanmanServerParameters /v RequireSecuritySignature /t REG_DWORD /d 1 /f
reg add HKLMSYSTEMCurrentControlSetServicesLanmanWorkstationParameters /v RequireSecuritySignature /t REG_DWORD /d 1 /f
; Требовать SMB-подпись

reg add HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystemKerberosParameters /v SupportedEncryptionTypes /t REG_DWORD /d 0x7fffffff /f
; Современные шифры Kerberos для приоритета над NTLM

Аудит и журналирование:

  • Журнал Безопасности: события 4624 (Logon), поле Authentication Package = NTLM; 4776 (NTLM-аутентификация).
  • Журналы приложений и служб → Microsoft → Windows → NTLM/Operational — детализированный аудит при включении политики «Audit NTLM».
  • Netlogon/Operational: диагностика подписания и защищенного канала.

Примеры протокольных обменов и кода 🛠️

HTTP-обмен (схематично):

GET /resource HTTP/1.1
Host: app.local

HTTP/1.1 401 Unauthorized
WWW-Authenticate: NTLM

GET /resource HTTP/1.1
Authorization: NTLM TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==

HTTP/1.1 401 Unauthorized
WWW-Authenticate: NTLM TlRMTVNTUAACAAAADAAMADgAAAAFgomi...

GET /resource HTTP/1.1
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEgAAAAYABgAWAAA...

HTTP/1.1 200 OK

PowerShell (встроенные учетные данные доменного пользователя, Negotiate → Kerberos/NTLM):

Invoke-WebRequest https://app.local -UseDefaultCredentials
# Для SMB уже будут задействованы SSPI и возможен NTLM при недоступности Kerberos

cURL с явным указанием NTLM (для теста, не для прод):

curl --ntlm -u "DOMAINUser:Password" http://app.local/protected

Практическая стратегия миграции с NTLM на Kerberos и дальше 🧭

  1. Включить аудит NTLM на контроллерах домена и серверах; собрать инвентарь сервисов и хостов, где NTLM встречается часто.
  2. Отладить SPN для сервисов (HTTP/host, MSSQLSvc, CIFS и т.д.); настроить доверие к делегированию, если нужно.
  3. Обновить клиенты/агенты/принтеры/СУБД-драйверы, которые не поддерживают Kerberos; для неподдерживаемых спланировать сегментацию и исключения.
  4. Включить SMB Signing и Extended Protection (EPA/CBT) на IIS/HTTP-проксах и SMB-серверах.
  5. Последовательно повышать LmCompatibilityLevel, блокировать LM и NTLMv1; переводить приложения на TLS-клиент/серверную аутентификацию, OIDC/SAML, где уместно.
  6. Внедрить Credential Guard/LSA Protection, ограничить доступ к учётным данным, мониторить 4776/4624 по критическим системам.

Частые вопросы (FAQ) ❓

Почему NTLM до сих пор включен в современных версиях Windows? 🧠

Основная причина — совместимость. Во многих организациях есть устройства, приложения и протоколы, которые не поддерживают Kerberos или не умеют работать со SPN, особенно в рабочих группах и смешанных средах. NTLM выступает «страховочной сеткой», чтобы не ломать доступ при сбоях KDC или ошибках конфигурации DNS/SPN. Вторая причина — привычка: многие администраторы полагаются на «просто работает» через SSPI/Negotiate. Однако Microsoft последовательно продвигает отказ от NTLM, добавляя политики «Restrict NTLM», аудит и улучшения Kerberos/SSL. На практике переход требует инвентаризации и планирования, поэтому занимает время. Грамотный путь — постепенная миграция с контролируемым отключением.

Чем опасен NTLM relay и как ему противостоять? 🛡️

NTLM relay перенаправляет законный challenge-response на другой сервис, позволяя атакующему аутентифицироваться без знания пароля. Это возможно, когда целевой сервис не требует подписи/шифрования и не выполняет привязку к каналу (channel binding) или к хосту (SPN). Классический пример — relay из HTTP на SMB или наоборот, что даёт доступ к ресурсам от имени жертвы. Защита включает обязательную SMB-подпись, Extended Protection for Authentication (EPA) в IIS/HTTP, Channel Binding Tokens и отключение NTLM там, где Kerberos доступен. Сегментация сети и ограничение привилегий учетных записей уменьшают масштаб потенциального ущерба. Стоит также отслеживать аномальные 4776/4624 и события в журнале NTLM/Operational. В связке с Defender for Identity можно обнаруживать подозрительные релейные потоки.

Как понять, что конкретный вход или сетевой доступ прошёл по NTLM, а не Kerberos? 🔎

Посмотрите события журнала Безопасности: 4624 (тип входа) содержит «Authentication Package: NTLM» или «Kerberos». Событие 4776 явно указывает на проверку учетных данных через NTLM. В SMB можно увидеть, требует ли сервер подпись и был ли установлен защищенный сеанс. На клиенте инструменты like klist покажут выданные Kerberos-билеты; их отсутствие при успешном доступе намекает на NTLM. В вебе заголовки WWW-Authenticate/Authorization укажут схему NTLM. Наконец, включенный аудит NTLM в домене даст целевые события в канале Microsoft-Windows-NTLM/Operational с деталями запроса. Это помогает локализовать сервисы, которые нужно мигрировать на Kerberos.

Можно ли «сделать NTLM безопасным» вместо отключения? 🛠️

Частично можно снизить риски, но полностью «безопасным» NTLM не станет. Включите NTLMv2 only (LmCompatibilityLevel ≥ 5) и запретите LM/NTLMv1. Требуйте SMB Signing на клиентах и серверах, включите Extended Protection/CBT на веб-сервисах. Примените Credential Guard, LSA Protection и минимизацию локальных администраторов, чтобы усложнить пасс-дэ-хэш. Ограничьте входящие/исходящие NTLM политиками и заведите Allow-листы только для строго нужных хостов. Следите за журналами 4776, 4624, NTLM/Operational и реагируйте на аномалии. Но стратегически лучше заменить NTLM на Kerberos или другие современные механизмы с TLS и взаимной аутентификацией.

Как мигрировать веб-приложение с NTLM на более современную схему аутентификации? 🌐

Если приложение уже использует «Windows Integrated Authentication» через IIS, настройте SPN для HTTP/имени сервиса и включите Negotiate/Kerberos как приоритет; это позволит клиентам автоматически перейти на Kerberos. Для внешних пользователей переходите к протоколам уровня приложения: OpenID Connect/OAuth 2.0 или SAML через федерацию (например, ADFS или облачный провайдер). Обязательно включайте TLS с современными наборами шифров и проверяйте channel binding для снижения риска relay. Проведите инвентаризацию зависимостей (прокси, балансировщики, reverse proxy), чтобы они корректно проксировали контекст Kerberos/headers. Выполните поэтапный rollout: сначала пилотная группа, затем расширение и, наконец, отключение NTLM. Тщательно протестируйте сценарии SSO, SPN, SPNego и проверку PAC/групповых претензий, если приложение на них опирается.

Снипы и документы по теме (названия для поиска) 📚

  • Microsoft Docs: NTLM Authentication Protocol
  • Security Policy Settings: Network security: LAN Manager authentication level
  • IIS: Extended Protection for Authentication (EPA) and Channel Binding
  • SMB Security: SMB Signing and Encryption
  • Detecting Pass-the-Hash and NTLM Relay in Windows Event Logs
  • Kerberos SPNs: SetSPN and Service Principal Names
Оцените статью
Пин ми
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
ТЕПЕРЬ НАПИШИ КОММЕНТАРИЙ !x