У меня есть веб-приложение, для которого я бы хотел пройти аутентификацию с использованием сквозного NTLM для SSO. Однако существует проблема, заключающаяся в том, что NTLMv2 явно не будет работать в этом сценарии (если приложение не хранит идентичный хэш пароля).
Я включил NTLMv1 на одном клиентском компьютере (Vista), используя его локальную групповую политику: Компьютер-> Настройки Windows-> Настройки безопасности-> Сетевая безопасность: уровень аутентификации LAN Manager. Я изменил его на Send LM & NTLM - использовать сеансовую безопасность NTLMv2, если это согласовано.
Это сработало, и я могу войти в веб-приложение с помощью NTLM. Теперь это приложение будет использоваться всеми моими клиентскими машинами ... так что мне интересно, каковы будут риски безопасности, если я продвину эту политику всем им (но не самому контроллеру домена)?
NTLM был заменен на NTLMv2 в NT4.0 SP4. Это было больше десяти лет назад. NTLM сложнее, чем LM для взлома паролей, а NTLMv2 намного сложнее. Есть причина, по которой Vista по умолчанию использует только NTLMv2. Радужные таблицы были скомпилированы для всего пространства паролей LM, и последнее, что я слышал, идет полным ходом, чтобы сделать то же самое для пространства NTLM. NTLMv2 еще не готов.
Да, это увеличивает риски безопасности. Независимо от того, имеют ли они значение для вас, вы решаете сами.
Это действительно плохая практика, вроде того, как включить WEP для защиты вашего WiFi, потому что ваш компьютер с Windows 98 не работает с WPA2. На дворе 2009 год, Kerberos работает, если вам действительно нужен SSO.
Я также считаю, что встроенная аутентификация для веб-сайтов в целом является плохой практикой, поскольку она часто приводит к странным проблемам, когда у пользователей есть несколько учетных записей (мы используем отдельные учетные записи пользователей / администраторов), требует, чтобы вы возились с зонами доверия IE и требовали, чтобы вы используйте IE или поиграйте с настройками Firefox.
Учитывая крушение поезда, которым IE был и продолжает быть с 2002 года или когда выходил IE6, (т.е. Патч внеполосного ActiveX) вы действительно хотите использовать платформу?
Как заявили Адам и системный администратор, это очень плохая идея с точки зрения безопасности (не говоря уже о устаревшей перспективе, поскольку она была заменена в NT 4 days, и NTLMv1 потенциально может быть удален из будущих версий Windows). А как насчет использования Kerberos для аутентификации / единого входа? Это более безопасно, чем даже NTLM v2, работает в двойной прыжок сценарии и будут поддерживаться (как внутри, так и вне Microsoft) в обозримом будущем.
Да, одна проблема с NTLMv1 заключается в том, что он использует DES, который в настоящее время считается слабым и имеет всего 56 бит. Однако взлом DES пока еще затруднен. Однако есть еще одна слабость. В NTLMv1 хэши LM / NT превращаются в три разных ключа DES, а затем они используются для шифрования запроса. Поскольку хэши 128-битные, а DES - только 56-битные, третий ключ только 16-битный, а остальные заполнены нулями, что упрощает взлом, открывая два байта хэшей NT и LM. NTLMv2 исправил это, используя вместо этого HMAC-MD5. У MS-CHAPv1 тоже был такой же недостаток, и, несмотря на то, что он появился одновременно с NTLMv2, MS-CHAPv2 не исправил его. Интересно, почему.
Изменить: теперь у CloudCracker есть облачный сервис перебора DES, который использует эту проблему в MS-CHAPv2.
Если у вас есть что-нибудь чувствительное, я бы этого не делал.
Если хакер прослушал ваш SMB-трафик NTLMv1, он мог бы использовать что-то вроде Каин и Авель с участием Радужные столы (HalfLMChall может быть самым быстрым) или РадугаТрещина взломать пароль. Если пароль состоит из семи символов или меньше, это можно сделать за день.
NTLMv2 создает хеш с использованием других переменных реального времени, а также использует 128-битное пространство для пароля с MD5 (не 64-битное шифрование DES), поэтому для взлома требуется НАМНОГО больше времени (подробнее о взломе NTLMv2 Вот).
NTLMv1 также хранит пароли локально в хэшах, которые можно использовать для аутентификации. без необходимости знать исходный пароль. Таким образом, если кто-то может владеть локальной машиной в качестве локального администратора, он может извлекать хэши администратора домена или пользователя домена и получать информацию, которую они могут получить с сервера, даже не зная своего пароля (подробнее об этом Вот).
Если вы действительно хотите пойти по маршруту NTLMv1, я бы удостоверился, что все пароли состоят из более чем 14 символов и включают специальные символы.