NTLM
NTLM (New Technology LAN Manager) — это протокол аутентификации, разработанный корпорацией Microsoft и используемый в операционных системах семейства Windows для проверки подлинности пользователей и компьютеров в локальных сетях. NTLM относится к категории протоколов запрос-ответ (challenge-response) и обеспечивает единый вход (Single Sign-On) в доменной среде, а также аутентификацию в рабочих группах. Протокол является преемником более раннего LM (LAN Manager) и, несмотря на свою устаревшую архитектуру, продолжает поддерживаться в современных версиях Windows для обратной совместимости.
История
Разработка NTLM началась в конце 1980-х годов как часть операционной системы OS/2 LAN Manager, а затем была интегрирована в Windows NT 3.1, выпущенную в 1993 году. Основной целью было создание более безопасной замены для протокола LM, который использовал слабые алгоритмы хеширования и не поддерживал современные криптографические стандарты.
С выходом Windows 2000 корпорация Microsoft представила протокол Kerberos в качестве основного механизма аутентификации в доменах Active Directory. Однако NTLM остался в системе как резервный протокол для случаев, когда Kerberos недоступен — например, при аутентификации на локальных компьютерах, в рабочих группах, через устаревшие приложения или при подключении к ресурсам по IP-адресу. В последующих версиях Windows (XP, 7, 10, 11) NTLM сохраняется, но его использование постепенно вытесняется более современными решениями.
Архитектура и принцип работы
NTLM основан на механизме «запрос-ответ» (challenge-response), который позволяет доказать знание пароля без его передачи по сети в открытом виде. Процесс аутентификации включает три стороны: клиент, сервер и контроллер домена (в доменной среде).
Этапы аутентификации
- Запрос соединения: Клиент отправляет серверу запрос на доступ к ресурсу (например, файловому серверу).
- Вызов (challenge): Сервер генерирует случайное число (nonce) и отправляет его клиенту.
- Ответ (response): Клиент вычисляет хеш пароля пользователя, комбинирует его с вызовом и некоторыми дополнительными данными (например, именем пользователя и доменом), и отправляет результат обратно серверу.
- Проверка: Сервер передаёт полученный ответ и вызов контроллеру домена (или проверяет локально, если аутентификация локальная). Контроллер домена, зная хеш пароля пользователя, повторяет вычисления и сравнивает результат. При совпадении доступ предоставляется.
Версии протокола
- NTLMv1: Первая версия, использующая 56-битный ключ шифрования на основе LM-хеша и 128-битный на основе NT-хеша. Уязвима к атакам перебора и радужным таблицам.
- NTLMv2: Представлена в Windows NT 4.0 SP4 (1998 год). Использует более сложный механизм вычисления ответа, включающий временную метку и имя сервера. Длина ключа — 128 бит. NTLMv2 считается более безопасным, но всё же подвержен атакам типа «человек посередине» и офлайн-перебору.
Классификация и виды
NTLM применяется в нескольких сценариях:
- Доменная аутентификация: Используется в среде Active Directory как резервный протокол, когда Kerberos недоступен. Включает взаимодействие с контроллером домена.
- Локальная аутентификация: Выполняется на отдельном компьютере без участия домена. Хеши паролей хранятся в локальной базе SAM (Security Accounts Manager).
- Аутентификация в рабочих группах: Применяется в одноранговых сетях, где нет центрального контроллера домена.
- Аутентификация через прокси и шлюзы: NTLM может использоваться для доступа к веб-ресурсам через прокси-серверы, поддерживающие этот протокол (например, Microsoft ISA Server).
Устройство и характеристики
Хеширование паролей
NTLM использует два типа хешей:
- LM-хеш: Устаревший, основанный на DES. Пароль преобразуется в 14-байтовую строку, разбивается на две 7-байтовые части, каждая из которых шифруется отдельно. LM-хеш нечувствителен к регистру и легко взламывается.
- NT-хеш: Получается путём хеширования пароля в кодировке UTF-16LE с помощью алгоритма MD4. Длина хеша — 16 байт. NT-хеш чувствителен к регистру и используется в NTLMv1 и NTLMv2.
Сессионные ключи
После успешной аутентификации NTLM генерирует сессионный ключ, который используется для шифрования последующего трафика (например, в протоколах SMB и RPC). В NTLMv1 сессионный ключ вычисляется на основе LM-хеша, в NTLMv2 — на основе NT-хеша и случайных данных.
Ограничения
- Отсутствие взаимной аутентификации: NTLM не проверяет подлинность сервера, что делает его уязвимым для атак «человек посередине».
- Нет поддержки делегирования: В отличие от Kerberos, NTLM не позволяет передавать учётные данные от одного сервера другому.
- Уязвимость к офлайн-атакам: Перехваченный вызов и ответ могут быть использованы для подбора пароля вне сети.
Применение и значение
NTLM широко применяется в корпоративных средах, особенно в устаревших системах и приложениях, которые не поддерживают Kerberos. К числу таких сценариев относятся:
- Доступ к файловым ресурсам (SMB/CIFS) на старых версиях Windows Server.
- Аутентификация в почтовых серверах Microsoft Exchange (до версии 2013).
- Подключение к базам данных Microsoft SQL Server.
- Использование в протоколах RPC, DCOM и IIS.
- Аутентификация в приложениях, работающих в изолированных сетях без контроллера домена.
Несмотря на свою устаревшую архитектуру, NTLM остаётся важным элементом безопасности в гибридных средах, где часть систем работает на старых ОС, а часть — на современных. Многие организации отключают NTLM в пользу Kerberos или современных методов аутентификации, таких как OAuth 2.0 или SAML.
Критика и уязвимости
NTLM подвергается критике за низкий уровень безопасности по сравнению с современными протоколами. Основные недостатки:
- Атака Pass-the-Hash: Злоумышленник, получивший доступ к NT-хешу (например, из памяти процесса), может использовать его для аутентификации без знания исходного пароля. Эта атака особенно опасна в средах, где NTLM включён.
- Атака Pass-the-Ticket: Аналог Pass-the-Hash, но для Kerberos; NTLM также уязвим к перехвату сессионных ключей.
- Отсутствие защиты от повторов: NTLMv1 не использует временные метки, что позволяет атакующему повторно использовать перехваченный ответ.
- Слабые алгоритмы хеширования: MD4 и DES считаются устаревшими и легко взламываются современными вычислительными мощностями.
В 2017 году Microsoft выпустила обновление, блокирующее использование NTLMv1 по умолчанию в Windows 10 и Windows Server 2016. В 2022 году компания объявила о планах полностью отказаться от NTLM в будущих версиях Windows, заменив его на протокол Negotiate (Kerberos с резервным NTLM) и новые механизмы аутентификации, такие как Windows Hello for Business и FIDO2.
Интересные факты
- NTLM-хеши хранятся в реестре Windows в разделе SAM, доступ к которому защищён системными механизмами, но при локальном доступе администратора может быть извлечён.
- Протокол NTLM используется не только в Windows, но и в некоторых сторонних решениях, например, в Samba (реализация протокола SMB для Linux) и в продуктах VMware.
- В 2021 году исследователи безопасности обнаружили уязвимость CVE-2021-1678, позволяющую повысить привилегии через NTLM Relay Attack (атака ретрансляции).
- Название протокола происходит от «New Technology LAN Manager», что отражает его происхождение из эпохи Windows NT.
Источники
- Microsoft Docs: «NTLM Overview» (архивная документация Windows Server)
- «Windows Security: NTLM Authentication Protocol» — техническая документация Microsoft
- «Understanding NTLM Authentication» — статья на TechNet
- «NTLM: A Deprecated Protocol» — анализ безопасности на портале SANS Institute
- «CVE-2021-1678: NTLM Relay Attack» — бюллетень безопасности Microsoft
- «The NTLM Authentication Protocol» — исследование на сайте Openwall
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →