Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В сети Windows NT (новая технология) LAN Manager ( NTLM ) - это набор протоколов безопасности Microsoft , предназначенный для обеспечения аутентификации, целостности и конфиденциальности пользователей. [1] [2] [3] NTLM является преемником протокола аутентификации в Microsoft LAN Manager (LANMAN), более раннем продукте Microsoft. Набор протоколов NTLM реализован в поставщике поддержки безопасности , который объединяет протокол проверки подлинности LAN Manager, протоколы сеансов NTLMv1, NTLMv2 и NTLM2 в одном пакете. Использование этих протоколов в системе регулируется групповой политикой.настройки, для которых разные версии Windows имеют разные настройки по умолчанию. Пароли NTLM считаются ненадежными, потому что их можно очень легко подобрать с помощью современного оборудования.

Протокол [ править ]

NTLM - это протокол аутентификации типа " вызов – ответ", который использует три сообщения для аутентификации клиента в среде, ориентированной на соединение (аналогично без установления соединения), и четвертое дополнительное сообщение, если требуется целостность. [4] [5] [6] [7]

  1. Сначала клиент устанавливает сетевой путь к серверу и отправляет NEGOTIATE_MESSAGE, объявляя о своих возможностях. [8]
  2. Затем сервер отвечает CHALLENGE_MESSAGE, который используется для установления личности клиента. [9]
  3. Наконец, клиент отвечает на вызов AUTHENTICATE_MESSAGE. [10]

Протокол NTLM использует одно или оба из двух хешированных значений пароля, оба из которых также хранятся на сервере (или контроллере домена), и которые из-за отсутствия соли являются эквивалентными паролю , что означает, что если вы получите хеш-значение с сервера , вы можете пройти аутентификацию, не зная фактического пароля. Два являются Л.М. Хэш (а DES основанное функция применяется к первым 14 символов пароля преобразуется в традиционной 8 - битового ПК кодировки для языка), и NT Хэш ( MD4 из Little Endian UTF-16 Unicode пароль) . Оба значения хеш-функции составляют 16 байтов (128 бит) каждое. [11]

Протокол NTLM также использует одну из двух односторонних функций в зависимости от версии NTLM. NT LanMan и NTLM версии 1 используют одностороннюю функцию LanMan на основе DES (LMOWF), тогда как NTLMv2 использует одностороннюю функцию на основе NT MD4 (NTOWF). [11] [12]

[2]

NTLMv1 [ править ]

Сервер аутентифицирует клиента, отправляя 8-байтовое случайное число, запрос. Клиент выполняет операцию, включающую вызов и секрет, совместно используемый клиентом и сервером, в частности, один из двух хэшей паролей, описанных выше. Клиент возвращает 24-байтовый результат вычисления. Фактически, в NTLMv1 вычисления обычно производятся с использованием обоих хэшей, и отправляются оба 24-байтовых результата. Сервер проверяет, что клиент вычислил правильный результат, и на основании этого делает вывод о владении секретом и, следовательно, подлинности клиента.

Оба хэша производят 16-байтовые величины. Добавляются пять байтов нулей, чтобы получить 21 байт. 21 байт разделены на три 7-байтовых (56-битных) количества. Каждая из этих 56-битных величин используется в качестве ключа для шифрования 64-битного запроса DES . Три шифрования запроса объединяются для формирования 24-байтового ответа. Как ответ, использующий хэш LM, так и хеш NT, возвращаются в качестве ответа, но это можно настроить.

C = 8-байтовый запрос сервера, случайныйK1 | K2 | K3 = NTLM-Hash | 5-байтов-0ответ = DES (K1, C) | DES (K2, C) | DES (K3, C)

NTLMv2 [ править ]

NTLMv2, представленный в Windows NT 4.0 SP4 [13], представляет собой протокол аутентификации типа запрос-ответ. Он задуман как криптографически усиленная замена NTLMv1.

NTLM версии 2 (NTLMv2), которая была представлена ​​в Windows NT 4.0 SP4 (и изначально поддерживается в Windows 2000), усиливает безопасность NTLM за счет усиления защиты протокола от многих атак с подменой и добавления возможности для сервера аутентифицироваться для клиента. [1] [14] [15]

NTLMv2 отправляет два ответа на 8-байтовый запрос сервера . Каждый ответ содержит 16-байтовый хэш HMAC - MD5 запроса сервера, полностью / частично сгенерированный случайным образом клиентский запрос., а также хэш HMAC-MD5 пароля пользователя и другой идентифицирующей информации. Два ответа различаются форматом запроса клиента. В более коротком ответе для этого запроса используется 8-байтовое случайное значение. Чтобы проверить ответ, сервер должен получить как часть ответа запрос клиента. Для этого более короткого ответа 8-байтовый запрос клиента, добавленный к 16-байтовому ответу, создает 24-байтовый пакет, который соответствует 24-байтовому формату ответа предыдущего протокола NTLMv1. В некоторых неофициальных документах (например, DCE / RPC Over SMB, Leighton) этот ответ называется LMv2.

Второй ответ, отправленный NTLMv2, использует клиентский запрос переменной длины, который включает (1) текущее время в формате NT Time , (2) 8-байтовое случайное значение (CC2 в поле ниже), (3) имя домена и ( 4) некоторые вещи стандартного формата. Ответ должен включать копию этого клиентского запроса и, следовательно, иметь переменную длину. В неофициальной документации этот ответ называется NTv2.

И LMv2, и NTv2 хэшируют запрос клиента и сервера с помощью NT-хэша пароля пользователя и другой идентифицирующей информации. Точная формула - начать с NT Hash, который хранится в SAM или AD, и продолжить хеширование, используя HMAC - MD5 , имя пользователя и имя домена. В поле ниже X обозначает фиксированное содержимое поля форматирования.

SC = 8-байтовый запрос сервера, случайныйCC = 8-байтовый запрос клиента, случайныйCC * = (X, время, CC2, доменное имя)v2-Hash = HMAC-MD5 (NT-Hash, имя пользователя, имя домена)LMv2 = HMAC-MD5 (v2-хеш, SC, CC)NTv2 = HMAC-MD5 (v2-хэш, SC, CC *)response = LMv2 | CC | NTv2 | CC *

NTLM2 сессия [ править ]

Протокол сеанса NTLM2 аналогичен протоколу MS-CHAPv2. [16] Он состоит из аутентификации из NTLMv1 в сочетании с безопасностью сеанса из NTLMv2.

Вкратце, применяется алгоритм NTLMv1, за исключением того, что 8-байтовый запрос клиента добавляется к 8-байтовому запросу сервера и хешируется MD5. Наименьшая 8-байтовая половина результата хеширования - это проблема, используемая в протоколе NTLMv1. Запрос клиента возвращается в одном 24-байтовом слоте ответного сообщения, 24-байтовый вычисленный ответ возвращается в другом слоте.

Это усиленная форма NTLMv1, которая поддерживает возможность использования существующей инфраструктуры контроллера домена, но позволяет избежать атаки по словарю со стороны мошеннического сервера. Для фиксированного X сервер вычисляет таблицу, в которой местоположение Y имеет значение K такое, что Y = DES_K (X) . Без клиента , участвующего в выборе вызов, сервер может отправить X , искать ответ Y в таблице и получить K . Эта атака может быть осуществлена ​​с помощью радужных таблиц . [17]

Однако существующая инфраструктура NTLMv1 позволяет, чтобы пара запрос / ответ не проверялась сервером, а отправлялась контроллеру домена для проверки. Используя сеанс NTLM2, эта инфраструктура продолжает работать, если сервер заменяет вызов хешем сервера и вызовами клиента.

NTLMv1 Клиент <-Сервер: SC Клиент-> Сервер: H (P, SC) Сервер-> DomCntl: H (P, SC), SC Сервер <-DomCntl: да или нетNTLM2 сеанс Клиент <-Сервер: SC Клиент-> Сервер: H (P, H '(SC, CC)), CC Сервер-> DomCntl: H (P, H '(SC, CC)), H' (SC, CC) Сервер <-DomCntl: да или нет

Доступность и использование NTLM [ править ]

NTLM широко применяется даже в новых системах. Основная причина - поддерживать совместимость со старыми системами. Однако во многих ситуациях его нельзя использовать.

Microsoft больше не рекомендует NTLM в приложениях: [18]

«Разработчики должны знать, что NTLM не поддерживает какие-либо недавние криптографические методы, такие как AES или SHA-256. Он использует циклическую проверку избыточности (CRC) или алгоритмы дайджеста сообщений (RFC1321) для обеспечения целостности и использует RC4 для шифрования.

Получение ключа из пароля описано в RFC1320 и FIPS46-2. Поэтому приложениям обычно не рекомендуется использовать NTLM ".

Microsoft добавила хэш NTLM в свою реализацию протокола Kerberos для улучшения взаимодействия (в частности, тип шифрования RC4-HMAC). По словам независимого исследователя, это конструктивное решение позволяет обманом заставить контроллеры домена выдать злоумышленнику билет Kerberos, если известен хэш NTLM. [19]

Microsoft приняла Kerberos в качестве предпочтительного протокола аутентификации для Windows 2000 и последующих доменов Active Directory. [15] Kerberos обычно используется, когда сервер принадлежит домену Windows Server . Microsoft не рекомендует разработчикам напрямую использовать протокол Kerberos или поставщика поддержки безопасности NTLM (SSP). [20]

Ваше приложение не должно напрямую обращаться к пакету безопасности NTLM; вместо этого следует использовать пакет безопасности Negotiate. Negotiate позволяет вашему приложению использовать преимущества более продвинутых протоколов безопасности, если они поддерживаются системами, участвующими в аутентификации. В настоящее время пакет безопасности Negotiate выбирает между Kerberos и NTLM. Negotiate выбирает Kerberos, если он не может использоваться одной из систем, участвующих в проверке подлинности.

Использование поставщика поддержки безопасности NTLM [ править ]

NTLM SSP используется в следующих ситуациях:

  • Клиент аутентифицируется на сервере, который не принадлежит домену или домен Active Directory не существует (обычно называемый «рабочая группа» или «одноранговая сеть»).
    • На сервере должна быть включена функция «Совместное использование, защищенное паролем», которая не включена по умолчанию и является взаимоисключающей с HomeGroup в некоторых версиях Windows.
    • Когда сервер и клиент принадлежат к одной и той же домашней группе , вместо NTLM будет использоваться протокол, аналогичный Kerberos, аутентификация пользователя на основе криптографии с открытым ключом . [21] Домашняя группа, вероятно, самый простой способ совместного использования ресурсов в небольшой сети, требующий минимальной настройки, даже по сравнению с настройкой нескольких дополнительных пользователей, чтобы иметь возможность использовать совместное использование, защищенное паролем, что может означать, что оно используется гораздо чаще, чем совместное использование, защищенное паролем. в небольших сетях и домашних сетях.
  • Если сервер - это устройство, поддерживающее SMB , например устройства NAS и сетевые принтеры, NTLM SSP может предложить единственный поддерживаемый метод аутентификации. Некоторые реализации SMB или более старых дистрибутивов, например Samba, могут заставить Windows согласовывать NTLMv1 или даже LM для исходящей аутентификации с сервером SMB, что позволяет устройству работать, хотя оно может быть загружено с устаревшим, небезопасным программным обеспечением, независимо от того, было ли это новое устройство. .
  • Если сервер является членом домена, но Kerberos использовать нельзя.
    • Клиент аутентифицируется на сервере, используя IP-адрес (и обратное разрешение имени недоступно)
    • Клиент аутентифицируется на сервере, который принадлежит другому лесу Active Directory, который имеет устаревшее доверие NTLM вместо транзитивного доверия между лесами.
    • Если брандмауэр в противном случае ограничивал бы порты, требуемые Kerberos (обычно TCP 88)

Использование версий протокола [ править ]

После того, как разработчик приложения или поставщик услуг согласования решит, что NTLM SSP будет использоваться для аутентификации, групповая политика определяет возможность использования каждого из протоколов, которые реализует NTLM SSP. Есть пять уровней аутентификации. [22]

  • Отправлять ответы LM и NTLM : клиенты используют аутентификацию LM и NTLM и никогда не используют сеансовую безопасность NTLMv2; Контроллеры домена принимают аутентификацию LM, NTLM и NTLMv2.
  • Отправить LM & NTLM - использовать сеансовую безопасность NTLMv2, если согласовано : клиенты используют LM и NTLM-аутентификацию и используют сеансовую безопасность NTLMv2, если сервер поддерживает ее; Контроллеры домена принимают аутентификацию LM, NTLM и NTLMv2.
  • Отправлять только ответ NTLM : клиенты используют только проверку подлинности NTLM и используют сеансовую безопасность NTLMv2, если сервер поддерживает ее; Контроллеры домена принимают аутентификацию LM, NTLM и NTLMv2.
  • Отправлять только ответ NTLMv2 : клиенты используют только проверку подлинности NTLMv2 и используют сеансовую безопасность NTLMv2, если сервер поддерживает ее; Контроллеры домена принимают аутентификацию LM, NTLM и NTLMv2.
  • Отправлять только ответ NTLMv2 \ отказаться LM : клиенты используют только проверку подлинности NTLMv2 и используют сеансовую безопасность NTLMv2, если сервер поддерживает ее; Контроллеры домена отказываются от LM (принимают только аутентификацию NTLM и NTLMv2).
  • Отправлять только ответ NTLMv2 \ отказываться от LM & NTLM : клиенты используют только проверку подлинности NTLMv2 и используют сеансовую безопасность NTLMv2, если сервер поддерживает ее; Контроллеры домена отказываются от LM и NTLM (принимают только аутентификацию NTLMv2).

DC будет означать контроллер домена, но использование этого термина сбивает с толку. Любой компьютер, действующий как сервер и аутентифицирующий пользователя, выполняет роль контроллера домена в этом контексте, например компьютер Windows с локальной учетной записью, такой как администратор, когда эта учетная запись используется во время входа в сеть.

До Windows NT 4.0 Service Pack 4 поставщик общих служб согласовывал NTLMv1 и возвращался к LM, если другая машина его не поддерживала.

Начиная с Windows NT 4.0 с пакетом обновления 4 (SP4), поставщик общих служб будет согласовывать сеанс NTLMv2 всякий раз, когда его поддерживают и клиент, и сервер. [23] До Windows XP включительно на компьютерах за пределами США использовалось 40- или 56-битное шифрование, поскольку в то время в США были жесткие ограничения на экспорт технологий шифрования. Начиная с Windows XP SP3, 128-битное шифрование может быть добавлено путем установки обновления, а в Windows 7 128-битное шифрование будет по умолчанию.

В Windows Vista и более поздних версиях LM отключен для входящей аутентификации. Операционные системы на базе Windows NT, вплоть до Windows Server ™ 2003, хранят два хэша паролей, хэш LAN Manager (LM) и хэш Windows NT. Начиная с Windows Vista ™, есть возможность сохранять и то, и другое, но по умолчанию один из них отключен. Это означает, что проверка подлинности LM больше не работает, если компьютер под управлением Windows Vista выступает в роли сервера. Предыдущие версии Windows (начиная с Windows NT 4.0 с пакетом обновления 4) можно было настроить таким образом, но это не было по умолчанию. [24]

Слабости и уязвимости [ править ]

NTLM остается уязвимым для атаки с использованием хэша , которая является вариантом атаки отражения, которая была устранена в обновлении безопасности Microsoft MS08-068. Например, Metasploit можно использовать во многих случаях для получения учетных данных с одной машины, которые можно использовать для получения контроля над другой машиной. [3] [25] Набор инструментов Squirtle может использоваться для усиления атак межсайтового скриптинга веб -сайтов для атак на близлежащие объекты через NTLM. [26]

В феврале 2010 года Amplia Security обнаружила несколько недостатков в реализации механизма проверки подлинности NTLM в Windows, которые нарушили безопасность протокола, что позволило злоумышленникам получить доступ для чтения / записи к файлам и удаленное выполнение кода. Одна из представленных атак включала способность предсказывать псевдослучайные числа и запросы / ответы, генерируемые протоколом. Эти недостатки присутствовали во всех версиях Windows 17 лет. Рекомендации по безопасности, объясняющие эти проблемы, включали полностью работающие экспериментальные эксплойты. Все эти недочеты исправлены в MS10-012. [27] [28]

В 2012 году было продемонстрировано, что каждая возможная перестановка хэша пароля NTLM из 8 символов может быть взломана менее чем за 6 часов. [29]

В 2019 году это время было сокращено примерно до 2,5 часов за счет использования более современного оборудования. [30] [31] Также доступны таблицы Rainbow для паролей NTLM из восьми и девяти символов. Более короткие пароли могут быть восстановлены методами перебора контактов. [32]

Обратите внимание, что эквивалентные паролю хэши, используемые в атаках с передачей хэша и взломе паролей, должны быть сначала «украдены» (например, путем компрометации системы с разрешениями, достаточными для доступа к хешам). Кроме того, эти хэши не совпадают с «хешем» NTLMSSP_AUTH, передаваемым по сети во время обычной аутентификации NTLM.

Совместимость с Linux [ править ]

Реализации NTLM для Linux включают Cntlm [33] и winbind (часть Samba ). [34] Они позволяют приложениям Linux использовать прокси NTLM.

FreeBSD также поддерживает хранение паролей через Crypt (C) в незащищенной форме NT-Hash. [35]

См. Также [ править ]

  • LAN менеджер
  • NTLMSSP
  • Встроенная проверка подлинности Windows
  • Kerberos

Ссылки [ править ]

  1. ^ a b «Введение» , Спецификация протокола аутентификации NT LAN Manager (NTLM) , Microsoft , получено 15 августа 2010 г.
  2. ^ a b «Детали безопасности сеанса» , Спецификация протокола аутентификации NT LAN Manager (NTLM) , Microsoft , получено 15 августа 2010 г.
  3. ^ a b Takahashi, T ( 17 декабря 2009 г.), «Размышляя о отражении NTLM» , блог FrequencyX , IBM Internet System Security (ISS), заархивировано из оригинала 31 декабря 2009 г. , извлечено 14 августа 2010 г.
  4. ^ "Microsoft NTLM" , MSDN , Microsoft , получено 15 августа 2010 г.
  5. ^ «Синтаксис сообщения | раздел 2.2» , Спецификация протокола аутентификации NT LAN Manager (NTLM) , Microsoft , получено 15 августа 2010 г.
  6. ^ "Connection-Oriented" , NT LAN Manager (NTLM) Authentication Protocol Specification (3.1.5.1 ed.), Microsoft , получено 15 августа 2010 г.
  7. ^ "Connectionless" , NT LAN Manager (NTLM) Authentication Protocol Specification (3.1.5.2 ed.), Microsoft , получено 15 августа 2010 г.
  8. ^ "NEGOTIATE_MESSAGE" , NT LAN Manager (NTLM) Authentication Protocol Specification (2.2.1.1 ed.), Microsoft , получено 15 августа 2010 г.
  9. ^ "CHALLENGE_MESSAGE" , NT LAN Manager (NTLM) Authentication Protocol Specification (2.2.1.2 ed.), Microsoft , получено 15 августа 2010 г.
  10. ^ "AUTHENTICATE_MESSAGE" , NT LAN Manager (NTLM) Authentication Protocol Specification (2.2.1.3 ed.), Microsoft , получено 15 августа 2010 г.
  11. ^ a b "NTLM v1 Authentication" , NT LAN Manager (NTLM) Authentication Protocol Specification (3.3.1 ed.), Microsoft , получено 15 августа 2010 г.
  12. ^ "NTLM v2 Authentication" , NT LAN Manager (NTLM) Authentication Protocol Specification (3.3.1 ed.), Microsoft , получено 15 августа 2010 г.
  13. ^ Что нового в Windows NT 4.0 с пакетом обновления 4?
  14. ^ Как включить проверку подлинности NTLM 2 , Поддержка, Microsoft, 25 января 2007 г. , получено 14 августа 2010 г.
  15. ^ a b «Конфигурация безопасности» , Руководство по усилению безопасности Microsoft Windows 2000 , TechNet, Microsoft , получено 14 августа 2010 г.
  16. ^ Гласс, Эрик, "NTLM", Давенпорт , Source forge
  17. ^ Варугезе, Сэм (февраль 2006 г.). «Радужный взлом и защита паролей» . Палисад. Архивировано из оригинала на 2010-06-01 . Проверено 14 августа 2010 .
  18. ^ «Вопросы безопасности для разработчиков» , Спецификация протокола аутентификации NT LAN Manager (NTLM) , Microsoft , получено 16 августа 2010 г.
  19. ^ "Архивная копия" . Архивировано из оригинала на 2014-10-06 . Проверено 5 октября 2014 .CS1 maint: archived copy as title (link)
  20. ^ «Microsoft NTLM» . Библиотека TechNet . Microsoft . Проверено 2 ноября 2015 года .
  21. ^ «Обзор аутентификации пользователя на основе криптографии с открытым ключом» . Библиотека TechNet . Microsoft . Проверено 2 ноября 2015 года .
  22. ^ "Уровень аутентификации LAN Manager" . Библиотека MSDN . Microsoft . Проверено 2 ноября 2015 года .
  23. ^ «Аутентификация Windows» . Библиотека TechNet . Microsoft. 29 июня 2011 . Проверено 2 ноября 2015 года .
  24. ^ Джеспер Йоханссон. «Самый непонятый параметр безопасности Windows за все время» . Журнал TechNet . Microsoft . Проверено 2 ноября 2015 года .
  25. ^ HD Мур. «MS08-068: Metasploit и реле SMB» .
  26. ^ Курт Грюцмахер (2008-08-08). Закрой гроб, NTLM мертв . Дефкон 16.
  27. ^ Эрнана Очоа и Агустин Azubel (2010-07-28). Об уязвимости Windows SMB NTLM Weak Nonce (PDF) . Blackhat USA 2010.
  28. ^ Эрнан Очоа и Агустин Азубель. «Рекомендации по безопасности уязвимости Windows SMB NTLM Weak Nonce» .
  29. ^ Гудин, Дэн (2012-12-10). «Кластер на 25 GPU взламывает каждый стандартный пароль Windows менее чем за 6 часов» . Ars Technica . Проверено 23 ноября 2020 .
  30. ^ Claburn, Томас (14 февраля 2019). «Использовать 8-значный пароль Windows NTLM? Не надо. Каждый из них может быть взломан менее чем за 2,5 часа» . www.theregister.co.uk . Проверено 26 ноября 2020 .
  31. ^ hashcat (13.02.2019). «настроенный вручную hashcat 6.0.0 beta и 2080Ti (стандартные тактовые частоты) преодолевает отметку скорости взлома NTLM в 100 ГГц / с на одном вычислительном устройстве» . @hashcat . Проверено 26 февраля 2019 .
  32. ^ Случай для современного использования радужной таблицы
  33. ^ http://cntlm.sourceforge.net/
  34. ^ https://docs.moodle.org/32/en/NTLM_authentication#Using_the_NTLM_part_of_Samba_for_Apache_on_Linux
  35. ^ "Хеш пароля NT MD4 как новый метод шифрования пароля для FreeBSD" . Mail-archive.com . Проверено 2 декабря 2018 .

Внешние ссылки [ править ]

  • Онлайн-взлом NTLM-хеша с использованием радужных таблиц
  • Спецификация протокола аутентификации NT LAN Manager (NTLM)
  • Cntlm - NTLM, NTLMSR, NTLMv2 Authentication Proxy и Accelerator Personal HTTP (S) и SOCKS5 прокси для приложений, не поддерживающих NTLM (Windows / Linux / UNIX)
  • Протокол проверки подлинности NTLM и поставщик поддержки безопасности Подробный анализ протокола NTLM.
  • Статья MSDN, объясняющая протокол и то, что он был переименован
  • Страница MSDN об аутентификации NTLM
  • Libntlm - бесплатная реализация.
  • Программное обеспечение прокси-сервера авторизации NTLM, которое позволяет пользователям аутентифицироваться через прокси-сервер MS.
  • Установка NTLM-аутентификации - инструкции по настройке NTLM для Samba и Midgard в Linux
  • NTLM версии 2 (NTLMv2) и параметр LMCompatibilityLevel, который им управляет.
  • Jespa - интеграция с Java Active Directory, поставщик услуг полной безопасности NTLM с проверкой NETLOGON на стороне сервера (коммерческая, но бесплатная для 25 пользователей)
  • EasySSO - NTML Authenticator для JIRA NTLM Authenticator, использующий библиотеку Jespa для предоставления IWA для продуктов Atlassian .
  • ntlmv2-auth API NTLMv2 и фильтр сервлетов для Java
  • Инструмент генератора сообщений NTLM
  • WAFFLE - Java / C # Windows Authentication Framework
  • objectif-securite (Радужные таблицы для ophcrack)
  • Px для Windows - прокси-сервер HTTP для автоматической аутентификации через прокси NTLM.