Расчет вероятности взлома парольной защиты при условии соблюдения рекомендаций Microsoft по безопасности Windows XP
Взлом операционных систем (на примере Windows 2000/XP/2003)
База данных учетных записей пользователей
Хранение паролей пользователей
Возможные атаки на базу данных SAM
Введение
Проблему безопасности компьютерных сетей надуманной не назовешь. Практика показывает: чем масштабнее сеть и чем более ценная информация доверяется подключенным к ней компьютерам, тем больше находится желающих нарушить ее нормальное функционирование ради материальной выгоды или просто из праздного любопытства. Идет постоянная виртуальная война, в ходе которой организованности системных администраторов противостоит изобретательность компьютерных взломщиков.
Основным рубежом против злонамеренных атак в компьютерной сети является система парольной защиты, которая имеется во всех современных программных продуктах. В соответствии с установившейся практикой перед началом сеанса работы с операционной системой пользователь обязан зарегистрироваться, сообщив ей свое имя и пароль. Имя требуется для идентификации пользователя, а пароль служит подтверждением правильности произведенной идентификации. Информация, введенная пользователем в диалоговом режиме, сравнивается с той, что имеется в распоряжении операционной системы. Если проверка дает положительный результат, то пользователю становятся доступны все ресурсы операционной системы, связанные с его именем.
Настоящая статья посвящена рассмотрению принципов работы парольных взломщиков различных программных продуктов, обсуждению проведенных авторами проверки уровня защиты операционных систем Windows 2000/XP/2003 и попыток взлома паролей пользователей операционных систем, а также расчету вероятности успешного взлома системы парольной защиты при условии соблюдения требований Microsoft по безопасности Windows XP.
Что такое парольный взломщик
Наиболее эффективным является метод взлома парольной защиты операционной системы (ОС), при котором атаке подвергается системный файл, содержащий информацию о легальных пользователях и их паролях. Однако любая современная ОС надежно защищает пользовательские пароли, которые хранятся в этом файле, при помощи шифрования. Кроме того, доступ к таким файлам, как правило, по умолчанию запрещен даже для системных администраторов, не говоря уже о рядовых пользователях операционной системы. Тем не менее в ряде случаев злоумышленнику удается путем различных ухищрений получить в свое распоряжение файл с именами пользователей и их зашифрованными паролями. И тогда ему на помощь приходят так называемые парольные взломщики — специализированные программы, которые служат для взлома паролей операционных систем.
Криптографические алгоритмы, применяемые для шифрования паролей пользователей в современных ОС, используют необратимое шифрование, что делает невозможным более эффективный алгоритм взлома, чем тривиальный перебор возможных вариантов. Поэтому парольные взломщики иногда просто шифруют все пароли с использованием того же самого криптографического алгоритма, который применяется для их засекречивания в атакуемой ОС. Затем они сравнивают результаты шифрования с тем, что записано в системном файле, где находятся шифрованные пароли пользователей этой системы. При этом в качестве вариантов паролей парольные взломщики используют символьные последовательности, автоматически генерируемые из некоторого набора символов. Данный способ позволяет взломать все пароли, если известно их представление в зашифрованном виде и они содержат только символы из данного набора.
Вследствие очень большого числа перебираемых комбинаций, которое возрастает экспоненциально с увеличением числа символов в исходном наборе, такие атаки парольной защиты ОС отнимают слишком много времени. Однако хорошо известно, что большинство пользователей операционных систем особо не затрудняют себя выбором стойких паролей, то есть таких, которые трудно взломать. Поэтому для более эффективного подбора паролей взломщики обычно используют специальные словари, которые представляют собой заранее сформированный список слов, наиболее часто используемых на практике в качестве паролей (большой набор словарей можно найти на сайте http://www.password.ru).
К каждому слову из словаря парольный взломщик применяет одно или несколько правил, в соответствии с которыми оно видоизменяется и порождает дополнительное множество опробуемых паролей:
- производится попеременное изменение буквенного регистра, в котором набрано слово;
- порядок следования букв в слове меняется на обратный;
- в начало и в конец каждого слова добавляется цифра 1;
- некоторые буквы изменяются на близкие по начертанию цифры.
В результате, например, из слова password получается pa55w0rd).
Это повышает вероятность нахождения пароля, поскольку в современных ОС, как правило, различаются пароли, набранные заглавными и строчными буквами, а пользователям этих систем настоятельно рекомендуется выбирать такие, в которых буквы чередуются с цифрами.
Одни парольные взломщики поочередно проверяют каждое слово из специального словаря, применяя к нему определенный набор правил для генерации дополнительного множества опробуемых паролей. Другие предварительно обрабатывают весь словарь при помощи этих же правил, получая новый словарь большего размера, из которого затем черпают проверяемые пароли. Учитывая, что обычные словари естественных языков состоят всего из нескольких сотен тысяч слов, а скорость шифрования паролей достаточно высока, парольные взломщики, осуществляющие поиск по словарю, работают очень быстро (менее минуты).
Взлом операционных систем (на примере Windows 2000/XP/2003)
База данных учетных записей пользователей
Одним из основных компонентов системы безопасности Windows 2000/XP/2003 является диспетчер учетных записей пользователей. Он обеспечивает взаимодействие других компонентов системы безопасности, приложений и служб Windows 2000/XP/2003 с базой данных учетных записей пользователей (Security Account Management Database, SAM). Эта база обязательно имеется на каждом компьютере с Windows 2000/XP/2003. В ней хранится вся информация, используемая для аутентификации пользователей Windows 2000/XP/2003 при интерактивном входе в систему и при удаленном доступе к ней по компьютерной сети.
База данных SAM представляет собой один из разделов (hive) системного реестра (registry) Windows 2000/XP/2003. Этот раздел принадлежит ветви (subtree) HKEY_LOCAL_MACHINE и называется SAM.
Он располагается в каталоге \winnt_root\System32\Config (winnt_root — условное обозначение каталога с системными файлами Windows 2000/XP/2003) в отдельном файле, который тоже называется SAM. Основная часть информации в базе данных SAM хранится в двоичном виде. Доступ к ней обычно осуществляется с помощью диспетчера учетных записей. Изменять записи, хранящиеся в базе данных SAM, при помощи программ, которые напрямую редактируют реестр Windows 2000/XP/2003 (REGEDT или REGEDT32), не рекомендуется. По умолчанию это и нельзя делать, поскольку доступ к базе данных SAM запрещен для всех без исключения категорий пользователей Windows 2000/XP/2003.
Хранение паролей пользователей
Именно в учетных записях базы данных SAM находится информация о пользовательских именах и паролях, которая необходима для идентификации и аутентификации пользователей при их интерактивном входе в систему. Как и в любой другой современной многопользовательской ОС, эта информация хранится в зашифрованном виде. В базе данных SAM каждый пароль пользователя обычно бывает представлен в виде двух 16-байтовых последовательностей, полученных разными методами (Windows 2000/XP/2003 и LAN).
В методе Windows 2000/XP/2003 строка символов пользовательского пароля хешируется с помощью функции MD4. (В алгоритме хеширования MD4 исходная битовая последовательность дополняется так, чтобы ее длина в битах плюс 64 нацело делилась на 512. Затем к ней приписывается 64-битовое значение ее первоначальной длины. Полученная таким образом новая последовательность обрабатывается блоками по 512 бит с помощью специальной итерационной процедуры. В результате на выходе MD4 получается так называемая выжимка исходной последовательности, имеющая длину 128 бит. Алгоритм MD4 оптимизирован для 32-разрядных аппаратных платформ и работает довольно быстро).
В итоге из введенного пользователем символьного пароля получается 16-байтовая последовательность — хешированный пароль Windows 2000/XP/2003. Эта последовательность затем шифруется по DES-алгоритму, и результат шифрования сохраняется в базе данных SAM. В качестве ключа используется так называемый относительный идентификатор пользователя (Relative Identifier, RID), который представляет собой автоматически увеличивающийся порядковый номер учетной записи данного пользователя в базе данных SAM. Для совместимости с другим программным обеспечением корпорации Microsoft (Windows for Workgroups, Windows 95/98 и Lan Manager) в базе данных SAM хранится также информация о пароле пользователя в стандарте Lan Manager.
Для его формирования все буквенные символы исходной строки пользовательского пароля приводятся к верхнему регистру, и если пароль содержит меньше 14 символов, то он дополняется нулями. Из каждой 7-байтовой половины преобразованного таким образом пароля пользователя (длина пароля в Windows 2000/XP/2003 ограничена 14 символами, ограничение налагается диспетчером учетных записей), отдельно формируется ключ для шифрования некоторой фиксированной 8-байтовой последовательности по DES-алгоритму. DES-алгоритм является одним из самых распространенных алгоритмов шифрования данных. В США он имеет статус федерального стандарта. Это блочный алгоритм шифрования с симметричным ключом длиной 64 бита, из которых только 56 непосредственно используются при шифровании, а остальные восемь предназначены для контроля четности байтов ключа. При этом в качестве ключа используется PID (персональный идентификатор) пользователя.
Полученные в результате две 8-байтовые половины хешированного пароля Lan Manager еще раз шифруются по DES-алгоритму и помещаются в базу данных SAM.
Использование пароля
Информация о паролях, занесенная в базу данных SAM, служит для аутентификации пользователей Windows 2000/XP/2003. При интерактивном или сетевом входе в систему введенный пароль сначала хешируется и шифруется, а затем сравнивается с 16-байтовой последовательностью, записанной в базе данных SAM. Если эти величины совпадают, пользователю разрешается вход в систему. Обычно в базе данных SAM хранятся в зашифрованном виде оба хешированных пароля. Однако в некоторых случаях ОС вычисляет только один из них. Например, если пользователь домена Windows 2000/XP/2003 изменит свой пароль, работая на компьютере с Windows for Workgroups, то в его учетной записи останется только пароль Lan Manager. А если пользовательский пароль содержит более 14 символов или они не входят в так называемый набор поставщика оборудования (Original Equipment Manufacturer, OEM), то в базу данных SAM будет занесен только пароль Windows 2000/XP/2003.
Возможные атаки на базу данных SAM
Обычно основным объектом атаки являются административные полномочия. Их можно получить, узнав в хешированном или символьном виде пароль администратора системы, который хранится в базе данных SAM. Поэтому именно на базу данных SAM бывает направлен главный удар взломщика парольной защиты Windows 2000/XP/2003.
По умолчанию в Windows 2000/XP/2003 доступ к файлу \winnt_root\System32\Config\SAM заблокирован для всех без исключения пользователей. Тем не менее с помощью программы NTBACKUP любой обладатель права на резервное копирование файлов и каталогов Windows 2000/XP/2003 может перенести этот файл с жесткого диска на магнитную ленту. Резервную копию реестра можно также создать утилитой REGBAK из состава Windows NT Resource Kit. Кроме того, несомненный интерес для любого взломщика представляют резервная копия файла SAM (SAM.SAV) в каталоге \winnt_root\System32\Config и сжатая архивная копия SAM (файл SAM._) в каталоге \winnt_root\Repair.
Указанный файл также можно получить, загрузившись с дискеты или CD-ROM и воспользовавшись программой NTFSDOS или аналогичной. При загрузке двух операционных систем (например, Windows 98 и Windows 2000) процесс копирования файла SAM существенно упрощается.
При наличии физической копии файла SAM извлечь хранимую в нем информацию не представляет большого труда. Загрузив файл SAM в реестр любого другого компьютера с Windows 2000/XP/2003 (например, с помощью команды Load Hive программы REGEDT32), можно детально изучить учетные записи пользователей, чтобы определить их значения PID и шифрованные варианты хешированных паролей. Зная PID пользователя и имея зашифрованную версию его хешированного пароля, компьютерный взломщик может попытаться расшифровать этот пароль, чтобы использовать его для получения сетевого доступа к другому компьютеру. Однако для интерактивного входа в систему одного лишь знания хешированного пароля недостаточно — необходимо получить его символьное представление.
Для восстановления пользовательских паролей ОС Windows 2000/XP/2003 в символьном виде существуют специальные парольные взломщики. Они выполняют как прямой подбор паролей, так и поиск по словарю, а также используют комбинированный метод взлома парольной защиты, когда в качестве словаря задействуется файл с заранее вычисленными хешированными паролями, соответствующими символьным последовательностям, которые часто применяются в качестве паролей пользователей операционных систем.
Однако следует понимать, что программой взлома можно воспользоваться также и для проверки надежности ваших паролей.
Для этого необходимо:
- выбрать пункт меню Вычисление PwDump и Sniff в окне Параметры;
- задать имя пользователя (имя пользователя Windows 2000/XP/2003 может содержать до 20 символов верхнего или нижнего регистра, за исключением следующих: « / \ [ ] : ; | = , + * ? < > . и пробелов);
- задать пароль, который может содержать до 14 символов.
После задания имени и пароля следует нажать на кнопку Вычислить. Результат можно сохранить в виде PwDump- или Sniff-файла.
Кроме того, возможно задание параметров атаки по словарю:
- обычное использование словаря;
- записанные дважды слова;
- обратный порядок символов слов;
- усеченные до заданного количества символов слова;
- слова без гласных, за исключением заглавной;
- транслитерация русских букв латинскими по заданной таблице транслитерации;
- замена раскладки локализации латинской раскладкой клавиатуры;
- замена латинской раскладки клавиатуры раскладкой локализации;
- множество других параметров взлома.
Другим примером взломщика паролей является программа SAMInside (http://www.insidepro.com).
Программа SAMInside выполняет следующие функции:
- получение информации о пользователях из SAM-файлов Windows 2000/XP/2003;
- подбор паролей пользователей из SAM-файлов;
- подбор паролей пользователей из SAM-файлов операционных систем Windows 2000/XP/2003, зашифрованных системным ключом Syskey.
Дополнительно программа SAMInside включает следующие возможности:
- подбор паролей не только к LMHash, но и к NTHash;
- работа с SAM-файлом, который используется в данный момент системой;
- импорт хешей из текстовых файлов, полученных в результате работы других программ (L0phtCrack, pwdump и др.);
- генерация LMHash/NTHash по определенному паролю;
- проверка введенного пароля на всех пользователях;
- перебор по словарю;
- отображение найденных паролей с верным регистром букв;
- более удобная работа с хешами пользователей.
Окно программы SAMInside
Расчет вероятности взлома пароля Windows 2000/XP/2003 в течение срока жизни пароля, рекомендованного Microsoft
Согласно рекомендациям по безопасности Windows XP время жизни пароля (параметр политики паролей «Требовать неповторяемость паролей» (Enforce password history)) должен составлять 42 дня.
В соответствии с тем же документом параметр «Минимальная длина пароля» (Minimum password lengths) должен составлять для АС (автоматизированной системы):
- класс 1 (одиночный компьютер без локальной сети) — 7 символов;
- класс 2 (локальная сеть без выхода в Интернет) — 8 символов;
- класс 3 (сеть с выходом в Интернет) — 12 символов.
Следует обратить внимание на то, что длинные пароли, состоящие из восьми и более символов, как правило, более надежны, однако их применение приводит к увеличению числа ошибок при вводе паролей и, как следствие, числа заблокированных учетных записей, а следовательно, затрудняет работу службы поддержки сети. Использование длинных паролей фактически приводит к тому, что пользователи начинают записывать их, а значит, уровень безопасности снижается. Фактическое значение данного параметра должно соответствовать требованиям политики безопасности предприятия.
Рассчитаем вероятность взлома пароля при условии применения данных параметров для АС классов 1 и 2.
Исследование проводилось на компьютере с параметрами, приведенными в табл. 1, с помощью программного обеспечения Saminside 2.5.5.1.
При этом скорость перебора паролей составляла 14 524 829 паролей в секунду (см. табл. 2).
Максимальное время, необходимое для взлома соответствующего пароля (в сутках), если перебор паролей осуществляется с указанной выше средней скоростью (паролей в секунду), приведено в табл. 3.
Вероятность взлома пароля, в соответствии с требованиями параметра «Требовать неповторяемость паролей» (Enforce password history), составляющего 42 дня, приведена в табл. 4 и рассчитана по формуле:
P = (A/B)x100%,
где P — вероятность взлома пароля в заданный срок, В — время взлома пароля в сутках, А = 42 дня.
В случае если B <= A, P = 100%, то есть если время взлома пароля заведомо меньше 42 дней, пароль считается заведомо взламываемым.
Таким образом, можно сделать вывод, что с учетом существующих вычислительных мощностей параметры длины пароля, приведенные в рекомендациях Microsoft, сегодня являются недостаточными.
Для проведения устойчивой парольной защиты нужна большая длина пароля, что, в свою очередь, будет требовать введения систем многофакторной аутентификации типа смарт-карта + pin-код или аналогичных.
Большинство экспертов по безопасности скажут, что вам необходимо увеличить длину пароля минимум до 15 символов, чтобы препятствовать взлому паролей. Это сделает весьма затруднительной даже атаку по словарю. Однако представьте, как отреагируют на это рядовые пользователи.
На самом деле эта, казалось бы, более сильная политика, приведет к существенному ослаблению защиты. Ведь пользователи простаивают, если забывают пароли. А попробуйте запомнить пароль типа 1@Pwr4%$*IhedYN. Вам не кажется, что один его вид способен вызвать оторопь даже у бывалого системного администратора? Что же тогда говорить о рядовом пользователе! Как вы думаете, каких запросов в службу поддержки поступает больше всего? Верно, запросов о забытых паролях — в некоторых организациях на восстановление пароля уходит от 15 минут до часа! Пора осознать, что пользовательские пароли больше не являются оптимальным решением.
Сегодня наиболее безопасное решение — это многофакторная аутентификация, которая требует как минимум двух методов распознавания. Одним из лучших решений является, пожалуй, комбинация одного или более сертификатов на базе стандарта Х.509 и алфавитно-цифрового pin-кода. В таком случае вам не понадобится чересчур сложный для запоминания pin-код, поскольку он является только одной частью процедуры аутентификации, а вторая часть — это сама смарт-карта. Следовательно, злоумышленнику потребуется сначала похитить саму смарт-карту, а уж затем pin-код к ней. Смарт-карта необязательно должна формой напоминать традиционную банковскую карту, она может иметь вид USB-диска (eToken). В таком случае вы еще сэкономите на считывателе для нее. Кроме того, поскольку это пластмассовая деталь, вы можете придать ей индивидуальный облик и использовать для физического доступа к помещениям, добавив к смарт-карте RFID-метку.
Альтернативой данному способу аутентификации являются одноразовые пароли (ОТР) и биометрические системы. Однако не стоит забывать, что подобные системы еще не совершенны: ОТР ограничен сценариями типа идентификации клиента и его нельзя использовать для электронной подписи, а технология биометрии когда-нибудь сможет стать серьезной альтернативой, но случится это нескоро — уж слишком много ложных срабатываний.
Что касается описанного выше способа аутентификации, то, к сожалению, можем констатировать, что сама по себе смарт-карта, без наличия продуманной системы поддержки инфраструктуры открытых ключей, практически бесполезна. А такую инфраструктуру ввиду ее сложности многие организации просто отказываются разворачивать.
Тем не менее пора понять, что пароли — это защита вчерашнего дня. Время не стоит на месте, и рано или поздно придет осознание того, что эпоха паролей уже закончилась.
Литература
- Державна експертиза з технічного захисту інформації операційної системи Windows XP Professional SP2 (шифр — «Експертиза WXP_SP2»). Киев, 2005.
- Безмалый В.Ф., Безмалая Е.В. Чем нас пытаются взломать: Краткий обзор программ — взломщиков паролей — http://bezpeka.com/ru/lib/sec/gen/anot3811ext1l.