Аутентификация с использованием пароля
Для аутентификации в Windows используется много типов учетных данных (например, кэш Credential Manager, доверительные отношения, секреты Local Security Authority, LSA), но приведенные в этой статье рекомендации предназначены специально для паролей регистрации Windows. Тем не менее полученные уроки применимы и к другим формам аутентификации (например, смарт-картам, биометрическим методам) и другим типам учетных данных.
Чтобы пройти аутентификацию, пользователи должны представить уникальный сетевой идентификатор (т. е. имя регистрации) и пароль. Пользователь при вводе пароля, предположительно известного только ему одному, подтверждает, что имя принадлежит ему, и имеет право запросить доступ к защищенным ресурсам. Пароль, назначаемый в первый раз, хранится в специальной базе данных. В Windows существует только две базы данных аутентификации: SAM и Active Directory (AD). База данных SAM используется для локальной регистрации и регистрации в доменах Windows NT. База данных AD используется для регистрации в доменах Windows 2000 и более поздних.
Когда пользователь вводит свой пароль, процесс регистрации Windows (winlogon.exe, msgina.dll) преобразует чисто текстовый пароль в хешированный эквивалент. Хороший хеш выдает уникальное, стабильное значение для данного пароля. Из одного хеша не должно происходить двух паролей. Кроме того, лицу, не знающему исходного пароля, трудно получить исходное чисто текстовое значение из правильно подготовленного хэша.
Иногда в хеш вводят случайную величину, чтобы два пароля не могли иметь одинаковое хешированное значение (этот метод не применяется в Windows). Благодаря рандомизации хеш становится надежнее, и для разгадывания пароля требуются дополнительные вычисления, поэтому отсутствие дополнительного элемента случайности следует отнести к недостаткам Windows.
Хеширование паролей в Windows
В базах данных SAM и AD пароли хранятся в хешированной форме, в предположении, что в случае взлома базы данных пароли не станут немедленно доступны взломщику. В Windows 98 с полным набором исправлений и в более новых операционных системах возможны хеши паролей двух типов: LAN Manager (LM) и NT. Хеш паролей LM был изобретен в компании IBM и начал применяться в Microsoft более десяти лет назад. Алгоритм хеширования LM оказался очень слабым, и взломать его легко. Любой умелый взломщик паролей (например, описанные здесь) преобразует хеш LM в исходный простой текст за считанные секунды.
Впоследствии Microsoft разработала алгоритм хеширования NT для операционной системы NT. Его можно взломать, но сделать это гораздо труднее, чем в случае с хешем LM. Если пароль достаточно длинный и сложный (более подробно об этом будет рассказано ниже), то потребуются дни и месяцы, чтобы преобразовать хеш NT в оригинальный простой текст. К сожалению, по умолчанию в NT и более поздних версиях Windows хранятся оба хешированных значения каждого пароля. Простой запрет хранения хешей LM существенно повышает защищенность пароля сети.
Протоколы аутентификации
В Windows 2000 и более поздних версиях могут использоваться четыре протокола аутентификации: LAN Manager, NTLM, NTLMv2 и Kerberos. Первоначально применялся протокол LAN Manager, и если взломщик перехватит данные аутентификации LAN Manager, передаваемые по сети, то разгадать пароль не составит труда. Вместе с NT был выпущен протокол NTLM, но впоследствии в нем были обнаружены изъяны. Затем Microsoft разработала NTLMv2 для Windows 2000. Эта версия выдержала испытание временем и была перенесена в NT и Windows 9x. Взломщикам паролей нелегко воспользоваться трафиком NTLMv2. Для регистрации в доменах Windows 2000 и более поздних используется довольно надежный протокол Kerberos с хешем NT.
В LAN Manager, NTLM и NTLMv2 используется аутентификация типа запрос-ответ. Передавая учетные данные для проверки, пользователи или компьютеры не посылают пароль или его хеш в службу аутентификации (т. е. SAM или AD). Вместо этого сервер генерирует случайное значение, называемое «запросом», и посылает его клиенту. Клиент производит математические манипуляции с запросом, используя хеш как константу, и возвращает результаты, именуемые «ответом». Те же вычисления на сервере выполняются над ответом и, если результат вычисления совпадает с ответом клиента, подлинность клиента подтверждается.
В Kerberos используется иная форма аутентификации на основе предварительного обмена пакетами. В ходе этой процедуры процесс регистрации Windows преобразует пароль пользователя в секретный ключ для шифрования временной метки, которая затем пересылается на сервер. Временная метка используется протоколом Kerberos для отражения атаки с записью и последующим «воспроизведением» учетных данных.
Протокол аутентификации определяет математическую процедуру, используемую клиентом и сервером в процессе ответ-запрос. В компьютерах с Windows 2000 и более поздними версиями операционной системы должны использоваться Kerberos и по крайней мере любой другой протокол аутентификации. Как и хеши паролей, все протоколы аутентификации активизируются по умолчанию. Если клиент подключается к серверу, то сервер и клиент могут согласовать протокол аутентификации. Взломщик может настроить Windows на использование слабого протокола LAN Manager или NTLM, если они не отключены. Инструменты и методы взломщиков паролей приведены здесь и в разделе «Типы атак на пароль».
Способы предотвращения взлома пароля
Знание принципов работы протоколов аутентификации и методов разгадывания паролей полезно. Теперь необходимо принять меры для защиты сети. Выполнив следующие рекомендации, приведенных далее, можно надежно защитить компьютеры от атак со взломом пароля. Рекомендации расположены в порядке убывания важности:
-
Отключение хеша пароля LM
Большинство программ взлома паролей работает исключительно с хешем паролей LM. Блокировать хранение хешей пароля LM можно с помощью трех методов:
-
Использовать пароли длиной не менее 15 символов. Если длина пароля более 14 символов, система не может генерировать хеш паролей LM. Это можно проделать с использованием Group Policy или Local Security Policy:
-
Отключить хранение хеша паролей LM в масштабах всей системы с использованием Group Policy или Local Security Policy. Следует перейти в раздел Computer Configuration -> Windows Settings -> Security Settings -> Local Policies, выбрать Security Options и дважды щелкнуть на пункте Network Security: Do not store LAN Manager hash value on next password change. Щелкните на кнопке Enabled, а затем на кнопке OK:
Или же можно отредактировать реестр. Следует открыть редактор реестра (например, Regedt32.exe) и перейти в раздел HKEY_LOCAL_ MACHINE SYTEM\CurrentControlSet\Control\Lsa. В меню Edit нужно выбрать пункт Add Key и ввести с клавиатуры NoLMHash. Затем необходимо нажать клавишу Enter, выйти из редактора реестра и перезапустить компьютер. Для активизации параметра требуется изменить пароль.
-
Вставить в пароль специальный символ Unicode. Определенные символы Unicode блокируют генерацию хеша пароля LM. Список символов Unicode, имеющих такое действие, приведен в табл. 1 главы 3 руководства "Microsoft Windows 2000 Security Hardening Guide":
-
-
Применение длинных, сложных паролей
Пароли должны иметь длину не менее 15 символов и по крайней мере некоторые элементы сложности. По умолчанию в компьютерах с Windows XP и более новыми операционными системами активизированы сложные пароли (вопрос о том, насколько высок уровень сложности паролей Microsoft, остается открытым). При использовании пароля длиной более 14 символов создание кэша паролей LM блокируется, и большинство инструментов разгадывания паролей, в том числе большинство расчетных таблиц, оказываются бесполезными. А для разгадывания сложного пароля неэффективными будут большинство таблиц, которые не позволяют раскрыть сложные хеши паролей NT за приемлемый период времени. Ситуация может измениться по мере совершенствования методов взлома паролей.
Это можно проделать с использованием Group Policy или Local Security Policy:
-
Отключение аутентификации LAN Manager и NTLM
Большинство анализаторов паролей успешно действуют только против процедур аутентификации LAN Manager и NTLM. После исчерпывающего тестирования, позволяющего убедиться, что такая мера не нарушит производственную среду, следует запретить использование протоколов аутентификации LAN Manager и NTLM. Сделать это можно с помощью редактора реестра или объекта Group Policy Object (GPO). Необходимо перейти к Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options -> Network Security: LAN Manager Authentication level и активизировать режим Send NTLMv2 response only/refuse LM & NTLM:
-
Блокировка учетных записей
Блокировка учетных записей остановит или по крайней мере существенно замедлит большинство атак с разгадыванием пароля. Рекомендуется установить блокировки со следующими параметрами:
-
Порог блокировки учетной записи следует установить таким образом, чтобы число неудачных попыток ввода пароля не превышало пяти.
-
Сбрасывать счетчик блокировки (параметр Reset account lockout counter after) через 1 минуту (минимальное возможное значение).
-
Установить длительность блокировки (параметр Account lockout duration) равным 1 минуте.
С использованием Group Policy или Local Security Policy:
Опасения вызывает компьютерный «червь», вызывающий отказы в обслуживании (DoS), но если «червь» разгадывает пароли, используя имена входа всех пользователей, то лучше блокировать даже законных пользователей, пока «червь» не будет остановлен. После того как угроза «червя» будет устранена, все учетные записи пользователей активизируются в течение 60 секунд.
-
-
Принудительная замена паролей с разумной частотой
Из Group Policy или Local Security Policy следует перейти в Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Password Policy и присвоить параметру Maximum password age значение, превышающее 90 дней. Затратив достаточно времени, можно раскрыть любой пароль с помощью любой программы разгадывания, взлома или расчетной таблицы. Но если пароль сложен и имеет длину не менее 15 символов, то для его взлома большинству хакеров потребуется более 90 дней. Подойдет любой интервал смены пароля, но не следует менять пароли слишком часто, чтобы пользователи не начали записывать свои пароли на бумаге.
-
Защита процесса загрузки
Для защиты от физической атаки следует использовать параметры BIOS, запретив загрузку с любого устройства, кроме первичного жесткого диска, а затем защитить BIOS с помощью пароля. Этот прием предотвратит (или, по крайней мере, задержит) локальные, физические атаки с разгадыванием пароля, в том числе сброс паролей и извлечение хешей паролей.
-
Переименование учетных записей с широкими полномочиями
Полезно переименовать учетные записи с широкими полномочиями, такие как Administrator, присвоив им имена, отличные от выбираемых по умолчанию. Смена хорошо известных имен учетных записей с большими полномочиями — эффективная защита от многих программ автоматизированного отгадывания паролей.
С использованием Group Policy или Local Security Policy:
-
Дополнительная защита учетных записей с широкими полномочиями
Пароли учетных записей с наибольшими полномочиями должны быть самыми длинными и сложными на предприятии, с минимальным интервалом изменения.
-
Активизация предупредительных сообщений на экране регистрации
Активизация предупредительных сообщений на экране регистрации предотвращает многие попытки разгадывания паролей методом грубой силы, поскольку такие автоматизированные программы, как TSGrinder, не ожидают предупредительного сообщения. Активизировать экранные предупреждения можно с помощью Group Policy, переместившись по консольному дереву в Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options и дважды щелкнув на Interactive logon: Message text for users attempting to log on (и связанной с ней функции Interactive logon:Message title for users attempting to log on):
-
Регулярный аудит паролей
И наконец, следует регулярно проводить проверки, пытаясь взломать пароли своей организации с использованием некоторых инструментов, перечисленных в разделе «Типы атак на пароль». Сделать это нужно раньше взломщиков. Результаты можно использовать в качестве теста соответствия, чтобы помочь конечным пользователям, не соблюдающим правил, исправить свои ошибки.