5. Работа с Hybrid Rainbow из UDC
Теперь перейдем к практике.
На сегодняшний день, единственной программой, которая поддерживает Hybrid Rainbow, является The UDC, поэтому мы рассмотрим методы, которые The UDC предоставляет для работы с Гибридными Таблицами.
Все параметры, связанные с Hybrid Rainbow собраны на одной вкладке под названием "HRainbow атака". Вкладка делится на две части, левая посвящена атаке по готовым табличным файлам, а правая - генерации новых таблиц.
Целевая хеш-функция определяется на вкладке "Прогресс", там же и хеш-значения, для которых нужно выполнить перебор.
Для начала посмотрим на часть, связанную с атакой, то есть с криптоанализом.
В списке слева, отражены уже установленные таблицы. Каждую из них можно либо разрешить (стоит флажок) либо запретить (убрать флажок). Таблицы без флажка будут попросту пропущенны в момент криптоанализа. Нужно это для того, чтобы сэкономить врмя, убирая однозначно неподходящие таблицы (если таковые имеются). Текущий номер указывает на таблицу, с которой начнется криптоанализ. Нумерация идет только по отмеченным таблицам, первая таблица имеет номер ноль.
После отметки нужных таблиц, остается только запустить атаку, воспользовавшись соответствующим пунктом главного меню "Восстановление -> Локальное -> HRainbow атака". Вот, собственно, и все.
После запуска, можно наблюдать за процессом криптоанализа на вкладке "Консоль", туда будет выводиться детальный отчет о совершаемых действиях.
Теперь рассмотрим метод генерации новых таблиц.
Для начала, необходимо указать имя файла для сохранения новой таблицы без префиксов и расширений, например, "TestTable01".
Чуть ниже - самое главное - список словарей, для произведения. Кнопка сверху слева позволяет добавить словарь вниз списка. Центральная слева кнопка убирает выделенный словарь из списка. Нижняя - очищает спсок полностью. Правая верхняя кнопка позволяет переместить выделенный словарь на одну строчку выше, правая нижняя - на строчку ниже. Порядок словарей в списке отражает порядок следования слов в целевой фразе.
Если бы верхний словарь был всего из одного слова "test", а нижний из двух "pass" и "word", то в таком порядке мы бы получили две комбинации: "testpass" и "testword". Поменяв словари местами, получим: "passtest" и "wordtest".
Старайтесь не выбирать огромные словари, для большинства целей нужны маленькие (до 50кб) словари релевантных слов. Всего можно указать до восьми словарей.
Далее идут параметры предвычислителя, в том же порядке, что они были описаны выше. Затем идет индикатор вероятности успеха обновляемый автоматически, при изменении других параметров.
Еще ниже находится полезная ссылка "Оценить объем, время и другое", которая предоставляет информацию о таблице, которую мы хотим сгенерировать: из какого рода строк она будет состоять, какой размер будет иметь файл, за какое время таблица будет создана, сколько времени будет длиться криптоанализ по этой таблице.
Установив необходимые параметры, просто запускаем генератор из главного меню: "Дополнительно -> Генератор HRainbow".
Генерация, разумеется, поддерживает продолжение после остановки, и пишет таблицу на диск сразу же, по мере вычисления.
6. Примеры и статистика
Пример #1."Числа".
Наверное, ни для кого не будет секретом, что довольно большая часть паролей являются исключительно числовыми. Попробуем предвычислить их, для ускорения процесса восстановления.
На первый взгляд, все цифры в пароле имеют примерно одинаковую вероятность появления. Но если мы рассмотрим группы цифр, то для каждой такой группы, вероятности появления уже не будут равными. В частности, строка "123" входит в средний пароль куда чаще, чем "294".
Не воспользоваться этим обстоятельством было бы довольно глупо.
Поэтому, для начала, необходимо выявить самые частые комбинации чисел.
Для этого, возьмем реальную выборку паролей и посчитаем на ней для каждой комбинации ее частоту. Чем больше выборка - тем точнее статистика. В нашем примере, рассматривается исходная выборка из 50 тысяч цифровых паролей.
Обсчет вероятностей проводился очень несложной программой, которая для всех чисел от 100 до 9999 проверяла, сколько раз каждое число встретилось в исходной выборке паролей, как подстрока. Например, пароль "123123321" содержит по три раза подстроки "1", "2", "3"; по два раза подстроки "12", "23", "123"; а остальные подстроки - по одному разу.
Затем, N самых частых подстрок были записаны в словарь. Кроме того, к ним добавили все недостающие строки из набора от 0 до 9 (т.е. по одной цифре) и 00 до 99 (т.е. по две цифры).
Мы взяли N равным 500. Возможны и другие варианты, которые могут давать лучшие результаты.
Полученный словарь из 610 (500 + 110) строк сохраним и возведем в четвертую степень.
Такой словарь, с одной стороны, будет содержать все числа от 0000 до 99999999 (четыре двухзначных числа). С другой стороны, и самые релевантные комбинации длиной до 16 знаков (четыре четырехзначных числа), например - 1234123412341234 или 0000111122223333.
610^4 = 138 458 410 000. Для того, чтобы уменьшить занимаемый объем, и повысить скорость поиска, прибегаем к технике предвычислений.
Ставим длину цепочки = 5000, фактор выполнения = 300%, четыре раза добавляем наш словарь в список словарей. А значения остальных параметров, в данном случае, не важны.
Такая таблица будет занимать 610^4/(5000/16) = 443066912 байт. То есть, чуть меньше чем 450 мегабайт.
Время генерации (однократный процесс) этой таблицы для MD5 на компьютере Athlon 3000+ составит около суток.
Время криптоанализа, то есть время восстановления пароля для каждого хеш-значения будет составлять 30 секунд в худшем случае.
Важно заметить, что Hybrid Rainbow таблицы имеют вероятностный характер, и в данном случае, могут быть восстановлены примерно 87% паролей из тех, которые можно получить гибридной атакой по тому же словарю.
Ниже - сравнение Hybrid Rainbow и Гибридной Атаки. Сравнивать Hybrid Rainbow с классическими rainbow таблицами, или прямым перебором бессмысленно, т.к. последние вообще не могут восстанавливать пароли из 16 символов за разумное (меньше года) время.
-----Название метода--------------------|-Время подготовки-|--Время восстановления--|--Вероятность успеха-
|---Гибридная атака по нашему словарю-|-----0 секунд-------|-------5 часов-----------|-------100%----------|
|---Предвычисления Hybrid Rainbow-------|-----24 часа--------|-------30 секунд---------|-------87%-----------|
------------------------------------------------------------------------------------------------------------------
Из таблицы становится ясно, что использовать Hybrid Rainbow для однократного восстановления пароля бессмысленно. Для реализации схемы "восстановил и забыл", куда быстрее использовать Гибридную Атаку.
Однако, при наличии соответствующих гибридных таблиц, использование других техник восстановления теряет смысл. Более того, если часто нужно восстанавливать пароли, по известному диапазону - генерация Hybrid Rainbow таблиц является целесообразной.
Пример #2."Частые пароли".
Аналогично, можно предвычислять не только цифровые пароли, но и составленные из любых символов.
Здесь мы выбирали 14 000 самых частоиспользуемых комбинаций до четырех символов на исходной коллекции из 150 тысяч реальных паролей.
Этот словарик мы возводим в третью степень. 14000^3 = 2 744 000 000 000.
Для сохранения таблиц потребуется около 16Гб места на диске, процесс генерации (для MD5) требует чуть меньше месяца процессорного времени. А вот так выглядят параметеры генератора:
Table_0_0: длина цепочки = 5000, фактор выполнения = 10%, номер таблицы = 0
Table_0_1: длина цепочки = 5000, фактор выполнения = 10%, номер таблицы = 0
Table_1_0: длина цепочки = 5000, фактор выполнения = 10%, номер таблицы = 1
Table_1_1: длина цепочки = 5000, фактор выполнения = 10%, номер таблицы = 1
...
Table_9_0: длина цепочки = 5000, фактор выполнения = 10%, номер таблицы = 9
Table_9_1: длина цепочки = 5000, фактор выполнения = 10%, номер таблицы = 9
Криптоанализ по полученным 20 таблицам (каждая на 830мб) длится до 10 минут на одно хеш-значение (без учета времени загрузки таблиц с диска).
Однако, по проведенным исследованиям, выяснилось, что таких таблиц достаточно для восстановления примерно 85% паролей с любого реального форума (в среднем).
Максимальная длина восстанавливаемого пароля по таким таблицам составляет 12 символов (3 четырехсимвольные комбинации), что куда выше, чем 8 символов, на которых остановились классические rainbow таблицы.