Windows 2000 - система более защищенная, чем NT. Но обратная совместимость делает ее уязвимой.

Защита паролей - одно из слабых мест системы безопасности Windows NT. Тем администраторам, которым предстоит производить миграцию своих систем с NT на Windows 2000, необходимо иметь ясное представление об изменениях в области политики использования паролей. Несмотря на то что Windows 2000 обеспечивает более высокий уровень защиты паролей, чем NT, защита паролей в новой операционной системе все же далека от совершенства. Программы, с успехом «взламывающие» пароли пользователей NT, в новом операционном окружении не работают, однако и в Windows 2000 проблеме безопасности паролей по-прежнему следует уделять повышенное внимание.

«Взлом» паролей

Несколько лет тому назад группа программистов-хакеров, называющих себя L0pht Heavy Industries, создала программный пакет L0phtCrack, с помощью которого в течение короткого времени можно было взломать парольный хеш NT. Эффективность работы программы L0phtCrack объяснялась уязвимостью алгоритма хеширования, который применялся в операционной системе NT для поддержки протокола сетевой аутентификации NT LAN Manager (NTLM). (Дополнительная информация о системе безопасности, реализованной в LAN Manager, приведена во врезке «Почему пароли NT такие ненадежные».) Когда представители Microsoft заявили, что проверенный временем протокол Kerberos заменит «родной» протокол NTLM, многие администраторы решили, что на уязвимости парольного хеша в базе данных SAM можно будет поставить точку. Да, операционная система Windows 2000 показывает высокую «сопротивляемость» попыткам взлома паролей и «прослушивания» сетевого трафика, нежели NT, но Windows 2000 не решает проблемы безопасности в связи с необходимостью поддержки обратной совместимости с NT. В ряде случаев Windows 2000 продолжает использовать протокол NTLM при соединении с другими компьютерами сети. А, следовательно, Windows 2000 сохраняет пароли в уязвимом NTLM-формате, и злоумышленник может воспользоваться «услугами» программы L0phtCrack, чтобы раскрыть пароли пользователей Windows 2000.

Так же, как в системах NT, компьютеры Windows 2000 Server, которые являются членами домена (но не его контроллерами), как и станции Windows 2000 Professional, поддерживают локальную базу данных SAM. Но, в отличие от NT, при запуске программы L0phtCrack, выборе из меню Tools команды Dump passwords from registry и запуске программы взлома защиты, в случае системы Windows 2000 ничего внятного L0phtCrack не сообщит - ни один пароль «взломан» не будет. L0phtCrack здесь бессильна, поскольку в системе Windows 2000 по умолчанию активизирована поддержка защиты паролей с помощью программы Syskey. Программа Syskey впервые появилась в служебном пакете NT 4.0 Service Pack 3 (SP3). С ее помощью шифрование паролей SAM выполняется по 128-разрядному ключу, в результате чего хеш SAM становится непроницаемым для программы L0phtCrack. Однако злоумышленник с административными полномочиями может воспользоваться утилитой pwdump2 (автор Тод Сейбин) и сделать дамп хеш-паролей Windows 2000 непосредственно из оперативной памяти, где информация не шифруется. После чего результаты работы pwdump2 передаются программе L0phtCrack. Теперь можно запускать программу «взлома» паролей как ни в чем не бывало. Но, повторяю, этот метод в удаленном режиме не работает.

Описанная техника «взлома» паролей применима только к серверам Windows 2000 Server, входящим в состав какого-то домена, и рабочим станциям Windows 2000 Professional. Для обоих случаев поддержка локальной базы данных SAM не характерна. Для того чтобы «взломать» пароли пользователей домена, нужно запустить утилиту pwdump2 непосредственно на контроллере домена Windows 2000, после чего попытаться «взломать» хеш. Наибольшие шансы на успех имеет последняя версия pwdump2 от 28 марта 2000 г. Она позволяет создавать дамп хеша паролей непосредственно из структуры Active Directory (AD), внутри которой Windows 2000 хранит сведения об учетных записях пользователей. Предыдущие версии pwdump2 работали на платформе NT, но могли прочитать хеш из AD. (Об особенностях использования программы pwdump2 на контроллерах домена Windows 2000 можно прочитать в статье «Cracking User Passwords in Windows 2000» по адресу: http://www.WindowsITsecurity.com/articles/ index.cfm?articleid=9186.)

Итак, рабочие станции Windows 2000, серверы - члены домена, и контроллеры домена по-прежнему остаются доступны для злоумышленников, если те обладают полномочиями администратора. Вместе с тем, уязвимость паролей заставляет обзаводиться средствами дополнительной защиты паролей и усиливать политику безопасности. Администраторам домена я рекомендую периодически использовать программу L0phtCrack. Но совсем не для того, чтобы определить, могут ли пароли пользователей противостоять натиску L0phtCrack; комбинация L0phtCrack и pwdump2 в состоянии за несколько часов или дней раскрыть любой пароль. Цель подобного мероприятия в том, чтобы установить круг лиц, чьи пароли легко поддаются расшифровке. Словарь L0phtCrack, который помогает это сделать, насчитывает 29 тыс. английских слов. При использовании программы L0phtCrack для расшифровки паролей домена своей компании нередко оказывается, что доля легко раскрываемых паролей составляет более 40% от их общего числа.

Если угодно, для достижения большего эффекта можно воспользоваться специализированными и иностранными словарями. Для этого нужно обратиться по адресу: ftp://ftp.cso.uiuc.edu/pub/ security/wordlists/. Можно создать и собственный словарь. Чтобы сообщить программе L0phtCrack о подключении нового словаря, следует выбрать команду Wordlist в меню File. Я помогаю поддерживать систему безопасности компании, персонал которой в основном говорит по-немецки, поэтому настроил L0phtCrack на работу с немецким словарем, сохранив английский словарь как основной. Прогон L0phtCrack продемонстрировал, что более 70% сотрудников пользуются в повседневной работе очень простыми паролями, как правило, отражающими различные аспекты их личной жизни. Соответствующие службы выработали новую политику использования паролей, а глава департамента безопасности призвал сотрудников компании с большей ответственностью отнестись к вопросу выбора пароля. Тем временем IT-специалисты продолжали применять L0phtCrack для тестирования политики защиты паролей. На протяжении следующих трех месяцев число явно неудовлетворительных паролей снизилось более чем наполовину.

Перехват паролей по сети

Протокол Kerberos, неуязвимый для атак L0phtCrack, заменил протокол NTLM в качестве основного протокола аутентификации. Но это утверждение справедливо только в следующей ситуации: если в процедуре аутентификации участвуют системы на базе Windows 2000 (или системы Windows 9x с загруженным AD-клиентом), которые находятся в одном и том же домене (или доменах, связанных доверительными отношениями - другими словами, в лесу). Во всех других случаях операционная система Windows 2000 по-прежнему использует протокол NTLM. Например, когда пользователь со станции Windows 2000 выполняет команду подсоединения к сетевому диску серверной системы Windows 2000, не входящей в состав какого-либо домена, для аутентификации используется протокол NTLM. Всякий раз, когда система Windows 2000 устанавливает соединение со станцией NT, или наоборот, протоколом аутентификации также является NTLM, поскольку операционная система NT протокол Kerberos не использует. На Рисунке 1 изображены различные сценарии соединений и показано, когда применяется протокол NTLM, а когда Kerberos. В тех случаях, когда Windows 2000 использует протокол NTLM, он может стать объектом «прослушивания» с последующим «взломом», как если бы это происходило в обычной NT-сети. В состав программы L0phtCrack входит функция перехвата пакетов SMB, которая называется Server Message Block (SMB) Packet Capture. Она позволяет копировать в файл вызовы и ответы по протоколу NTLM, которые возникают при установлении клиентом соединения с какой-либо сетевой системой. Дальше этот файл, содержащий NTLM-«переговоры» между клиентом и сервером, передается программе L0phtCrack, которая расшифровывает вызовы и ответы участников «переговоров» и, пользуясь хешированными паролями последних, создает собственный ответный пакет на основе перехваченной информации. Если подложный ответ соответствует перехваченному, программа L0phtCrack вычисляет пароль.

Рисунок 1. Windows 2000 использует для аутентификации Kerberos и NTLM.

Когда я использую функцию SMB Packet Capture в сети Microsoft (все равно, Windows 2000 или NT), программа L0phtCrack перехватывает сообщения между сервером и клиентом - системами Windows 2000 и NT. Вместе с тем, та же самая программа не может перехватить трафик между двумя системами Windows 2000, находящимися в разных доменах (без доверительных отношений), когда я инициирую подключение к сетевому диску. Этот сбой для меня оказался неожиданным, так как я предполагал, что Windows 2000 использует протокол SMB для работы с разделяемыми файловыми ресурсами и NTLM - для аутентификации. (На Рисунке 1 показано, что в описанной конфигурации система Windows 2000 применяет протокол NTLM.) Чтобы разобраться, почему программа L0phtCrack не в состоянии перехватить сообщения между двумя системами Windows 2000, я загрузил другую программу, также способную контролировать передачу сетевых пакетов, и отслеживал весь сетевой трафик между этими двумя системами. Вторая программа показала, что системы инициировали два соединения: первое - TCP port 139, второе - TCP port 445. Вначале я предполагал, что трафик пойдет по первому соединению - port 139 (NetBIOS поверх TCP/IP - NetBT), поскольку при работе с разделяемыми файловыми ресурсами в NT, как и при выполнении других коммуникационных задач NT, для доступа к разделяемым файлам с использованием протокола SMB применяется именно этот порт. Оказалось, однако, что, после того как самый первый пакет использовал порт 139, весь последующий трафик пошел через порт 445. На основании данных анализатора выходило, что операционная система Windows 2000 использует порт 445 для реальной работы с разделяемыми файловыми ресурсами.

Для того чтобы уменьшить зависимость операционной системы Windows 2000 от NetBIOS, разработчики Microsoft реализовали использование протокола Common Internet File System (CIFS), а не SMB, при работе с разделяемыми файлами, если и клиент, и сервер - станции Windows 2000. Когда бы система Windows 2000 ни инициировала сессию с другой системой по поводу предоставления доступа к разделяемым файловым ресурсам, первая система посылает запрос на соединение через порты 139 и 445, но в дальнейшем в сеансе используется тот порт, на который вторая система откликнется в первую очередь. Таким образом, системы Windows 2000, работая друг с другом, используют порт 445 и порт 139, если соединение устанавливается с какой-либо иной операционной системой. Программа же L0phtCrack отслеживает пакеты, проходящие только через порт 139, поэтому и работает она только при использовании протокола NTLM и SMB, а не NTLM и CIFS. Таким образом, текущая версия L0phtCrack может перехватывать соединения только между станциями Windows 2000 и NT (используется NTLM и SMB), но не между двумя станциями Windows 2000 (используется NTLM и CIFS).

Чтобы защититься от прослушивания паролей, нужно модернизировать станции NT до Windows 2000, на станциях Windows 9x загрузить программное обеспечение клиента AD и перейти от смешанной модели доменов Mixed-mode к модели Native-mode. Это позволит менее интенсивно использовать в сети протокол аутентификации NTLM.

Для тех случаев, когда полностью от протокола NTLM избавиться не удается, например при взаимодействии систем NT и Windows 2000, рекомендую рассмотреть возможность дополнительной настройки параметров LMCompatibilityLevel. Параметр LMCompatibilityLevel - это настройка в реестре, впервые реализованная в пакете исправлений NT 4.0 SP4 и сохраненная также в Windows 2000. Для обеих операционных систем ее можно отыскать в реестре по адресу: HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ControlLSA. Установив значение этого параметра, по крайней мере, в 1, можно решить проблему уязвимости пакетов LAN Manager при передаче данных по сети. Такое действие заставит программу L0phtCrack «взламывать» не пакеты LAN Manager, а пакеты самой NT, что во много раз дольше, чем расшифровка пакетов LAN Manager. С помощью параметра LMCompatibility Level можно потребовать соблюдения соглашений протокола NTLMv2 при установлении всех сетевых соединений, а это уже полностью парализует работу программы L0phtCrack 2.5.

В Windows 2000 можно воспользоваться групповой политикой для управления значением параметра LMCompatibilityLevel. По адресу Computer ConfigurationWindows SettingsSecurity SettingsLocal PoliciesSecurity Options находится политика, которая носит название LAN Manager Authentication Level. На Рисунке 2 приведены реальные настройки для нее. Когда администратор системы описывает какое-либо значение для этой политики в Group Policy Object (GPO), операционная система Windows 2000 параллельно устанавливает некоторое значение для параметра LMCompatibilityLevel в реестре всех систем, к которым применяется объект GPO. Если требуется установить определенное значение параметра LMCompatibilityLevel как некий стандарт для всех компьютеров домена, следует обратиться к Active Directory Users and Computers в Microsoft Management Console (MMC), открыть окно свойств корневого домена и щелкнуть на закладке Group Policy. Далее необходимо последовательно открыть Default Domain Policy GPO и диалоговое окно политики LAN Manager Authentication Level, которое изображено на Рисунке 2. После чего в качестве минимальной меры защиты протокола NTLM нужно выбрать из предлагаемого списка значений опцию Send LM & NTLM - use NTLMv2 session security if negotiated.

Рисунок 2. Задание уровня аутентификации LAN Manager через групповую политику.

Политики учетных записей

Политика управления паролями и политика блокирования учетных записей в Windows 2000 и NT имеют много общего. Так же как и NT, операционная система Windows 2000 имеет ряд настроек, влияющих на минимальную длину пароля, максимальный и минимальный срок его действия, ограничения, связанные с его уникальностью, и условия блокирования учетной записи. Вместе с тем, в Windows 2000 методика формирования политики использования паролей и блокирования учетных записей отличается от принятой в системе NT. Для того чтобы задать политику назначения паролей и блокировки учетных записей в домене Windows 2000, администратору системы необходимо обратиться к объекту Default Domain Policy GPO.

Для этого нужно открыть консоль Active Directory Users and Computers и в контекстном меню домена выбрать команду Properties. Затем перейти к закладке Group Policy и отредактировать Default Domain Policy. Далее следует просмотреть каталоги Password Policy и Account Lockout Policy по адресу Computer ConfigurationWindows Settings Security SettingsAccount Policies, как показано на Рисунке 3. Пользователи Windows 2000 являются объектами управления с точки зрения политики использования паролей и политики блокировки учетных записей только тогда, когда они внесены в объекты GPO, связанные с корневым уровнем домена в AD. Именно службы AD, а не контроллеры домена осуществляют управление учетными записями пользователей в Windows 2000. В свою очередь, AD обращается к содержимому объектов GPO на корневом уровне домена. Такой подход кого-то, вероятно, разочарует, если решено было задействовать групповые политики, назначенные на более низкие уровни иерархии AD (например, Organizational Unit, OU) для формирования специфических правил использования паролей в различных отделах компании. Скажем, планировалось наложить ограничение на минимальную длину пароля для отдела маркетинга в пять символов и в семь символов - для пользователей IT. Но, поскольку службы AD анализируют групповую политику только на уровне домена, все его пользователи вынуждены будут соблюдать одни и те же требования как в политике применения паролей, так и в политике блокирования учетных записей.

Рисунок 3. Настройка параметров пароля и блокировки учетной записи.

Определяя параметры, устанавливающие политику использования паролей в домене, не следует рассматривать эти значения в отрыве одно от другого. Было бы правильно скомбинировать все значения для достижения некоторого обобщенного уровня защиты паролей. Процедура формирования политики использования паролей домена состоит из трех шагов: устанавливаются требования к созданию паролей, трудных для «взлома»; устанавливаются правила изменения паролей на регулярной основе и, наконец, необходимо сделать так, чтобы злоумышленникам требовалось больше времени для «взлома» паролей методом повторяющейся регистрации. Настройка параметров на каждом из перечисленных шагов предоставляет администраторам системы определенную свободу действий в том случае, когда сотрудники компании не выполняют требования парольной политики на каком-то из этапов. Например, пользователи не хотят периодически обновлять свои пароли. В таком случае администратор может ослабить парольную политику на этом уровне, но усилить требования безопасности на двух других.

Шаг 1. В каталоге Computer ConfigurationWindows Settings Security SettingsAccount Policies Password Policy необходимо установить значение параметра Minimum password length. Это поможет создать надежный, трудновычисляемый пароль. Еще лучше использовать параметр Passwords must meet complexity requirements, который означает, что пароль обязан содержать символы как минимум из трех диапазонов: A-Z, a-z, 0-9, а также неарифметические символы (например, !, $, #, % ). Кроме того, можно задействовать программы оповещения (notification packages, специально разработанные DLL), которые помогут пользователям формировать пароли в соответствии со сложными требованиями. С помощью DLL администратор может потребовать добавлять имя DLL в качестве значения параметра NotificationPackages, расположенного в реестре в HKEY_LOCAL_ MACHINESYSTEMCurrentControlSetControlLSA. Этот способ работает как в NT, так и в Windows 2000.

Шаг 2. Администратор может воспользоваться опцией Maximum password age для регулярного изменения паролей, что превращает их в некую подвижную сущность. Для того чтобы пользователи не смогли повторно задать тот же самый пароль, когда система потребует его поменять, следует использовать опцию Enforce password history. С ее помощью в системе Windows 2000 будут запоминаться уже «отработанные» пароли. При этом «глубина» истории задается числом предыдущих паролей, повторно использовать которые операционная система не позволит. Я рекомендую установить значение этого параметра равным 24 (максимально возможное). Однако может отыскаться пользователь, который вычислит это значение и, проведя 24 изменения «за один присест», установит свой единственный и неповторимый пароль (система через 24 попытки «забудет» оригинальный пароль). Чтобы этого не произошло, советую установить значение параметра Minimum password age равным одному или двум дням, и пользователю не удастся применить описанную тактику.

Шаг 3. Чтобы поставить дополнительные преграды «взломщикам», нужно использовать возможность блокировки Computer Configuration Windows SettingsSecuritySettingsAccount Lockout Policy (см. Рисунок 4). Комбинация значений, которая приведена на Рисунке 4 для параметров Account lockout duration и Account lockout threshold, означает, что если в течение 24 часов будет обнаружено пять последовательных неудавшихся попыток регистрации с неправильным паролем, операционная система заблокирует учетную запись пользователя. Поскольку значение параметра Account lockout duration установлено в 0, учетная запись останется заблокированной до тех пор, пока пользователь лично не попросит администратора разблокировать ее. Если же требуется, чтобы блокировка учетной записи снималась автоматически через некоторое время, следует указать временной период в параметре Account lockout duration.

Рисунок 4. Параметры блокировки учетной записи.

Создателям операционной системы Windows 2000 предлагают новую учетную политику - Store password using reversible encryption for all users in the domain. В соответствии с этой политикой, пароли пользователей хранятся в AD в текстовом виде, так что любой желающий может отыскать их и прочесть. В материалах Microsoft Group Policy Reference отмечается, что цель такой политики - обеспечить работу приложений, использующих протоколы, которым требуются пароли пользователей для успешной аутентификации. В качестве примера приводится ситуация с протоколом AppleTalk. Не следует использовать это нововведение, если только нет необходимости в поддержке компьютеров Macintosh. Открывая консоль Active Directory Users and Computers, обратите внимание на параметр Store password using reversible encryption в закладке Account. Его активизация будет иметь те же последствия, что и политика Store password using reversible encryption for all users in the domain, с той лишь разницей, что он оказывает влияние только на учетную запись конкретного пользователя, но не на весь домен в целом.

Осторожность не помешает

Политика использования паролей в Windows 2000 стала более эффективной, но тем не менее уязвимые места еще остаются. Лучше избегать ситуаций, когда Windows 2000 использует старый протокол аутентификации NTLM. Необходимо тщательно продумать правила как формирования паролей, так и регулярного их изменения, усилить политику защиты паролей методикой блокирования учетных записей. Сами политики следует устанавливать в объектах GPO и назначать их на уровне домена. Кроме того, рекомендую регулярно использовать программы L0phtCrack и pwdump2 для «взлома» паролей пользователей домена с целью оценки качества паролей. Важно также постоянно поддерживать обратную связь с пользователями, которые применяют легко угадываемые пароли. Если администраторы станут следовать перечисленным рекомендациям, то безопасность системы будет обеспечиваться паролями, которые злоумышленник не сможет ни «прослушать», ни с легкостью «взломать», ни угадать.

ОБ АВТОРЕ

Рэнди Франклин Смит - президент компании Monterey Technology Group, занимающейся обучением и консалтингом в области защиты Windows NT. Связаться с ним можно по адресу: rsmith@montereytechgroup.com.


В ЧЕМ СЛАБОСТЬ ПАРОЛЕЙ NT

Операционная система Windows NT хеширует пароли, прежде чем сохранить их в базе данных SAM. В процессе хеширования обрабатывается последовательность различной длины (собственно пароль), а также еще несколько полей фиксированной длины. Всякий раз при обработке уникального пароля создается некоторый непредсказуемый набор символов - хеш. Когда пользователь регистрируется и вводит пароль, NT хеширует введенное в качестве пароля значение и сравнивает его с «официальным» хешем, хранящимся в базе данных SAM. Если один хеш совпадает с другим, для NT это означает, что аутентификация пользователя прошла успешно.

Хеширование обеспечивает определенный уровень защиты, поскольку злоумышленник, укравший копию SAM, потратит на расшифровку паролей «лобовым» методом несколько лет. Однако, если копию SAM передать программе L0phtCrack от L0pht Heavy Industries, задача расшифровки большинства паролей иногда решается очень быстро.

Несмотря на то что в NT реализован вполне приемлемый уровень защиты паролей SAM, подключение к процессу хеширование LAN Manager делает пароли NT уязвимыми. Хеш LAN Manager становится уязвимым для современных методик «взлома» паролей по нескольким причинам. Во-первых, пароли LAN Manager нечувствительны к регистру, поэтому, даже если пользователь указал в своем пароле прописные и заглавные символы, перед процедурой хеширования силами LAN Manager система NT преобразует введенную последовательность к заглавному представлению. Во-вторых, хотя пользователь может выбрать максимальную длину пароля - 14 символов, реальная безопасность введенного пароля будет лишь чуть-чуть выше, чем при использовании пароля длиной всего семь символов. Для паролей, длина которых превышает семь символов, LAN Manager создает две хеш-последовательности: в первой используются начальные семь символов, во второй - все остальные.

Для того чтобы раскрыть пароли, программа L0phtCrack сначала «взламывает» хеш LAN Manager. L0phtCrack обрабатывает список английских слов, используя при этом тот же хеш-алгоритм, что и LAN Manager, и сравнивает хеш-кандидат с хеш-оригиналом в SAM. Если устанавливается соответствие, то пароль пользователя считается известным. Если L0phtCrack доходит до конца словаря, а соответствие так и не найдено, программа начинает просмотр словаря заново, добавляя понемногу символов в начало и конец каждого словарного слова (например, password1, password2). Для того чтобы установить все оставшиеся пароли, программа L0phtCrack предпринимает попытки хеширования всех возможных комбинаций паролей.

«Взломав» хеш LAN Manager, программа L0phtCrack получает версии паролей, составленных из заглавных символов. Теперь программа очень быстро хеширует все варианты написания пароля и сравнивает хеш-последовательности с оригинальными хеш-последовательностями, представленными в NT. Syskey, утилита из служебного пакета NT 4.0 Service Pack 3, обеспечивает некоторую дополнительную защиту, зашифровывая хеш-последовательности SAM. Однако, поскольку в SAM хранятся два хеш-набора, от NT и от LAN Manager, клиент NT в процессе регистрации на сервере посылает запросы и в NT, и в LAN Manager. Поэтому программа L0phtCrack может, не обращая никакого внимания на Syskey, перехватить и «взломать» пакеты NT LAN Manager (NTLM) и ответить своими собственными пакетами аутентификации, когда пользователь выполняет регистрацию в сети. Эту проблему можно решить с помощью пакета NT 4.0 SP4, в котором реализована исправленная версия протокола NTLM - NTLMv2. Использование данной версии протокола аутентификации позволяет защитить пересылаемую по сети информацию, что значительно замедляет процедуру взлома паролей средствами программы L0phtCrack.

Вернуться