Атака на хэши ч.4 (Комбинированная атака в EGB) [intro]Существенным недостатком последних версий EGB является отсутствие такой мощной атаки, как комбинированная атака по минисловарям. Пожелания по поводу реализации онной уже даны автору InsidePro и возможно она будет реализована в последующих версиях программы EGB. В этой статье я расскажу каким образом возможна её реализация (немного сложно, криво, но это будет полноценная комбиатака, на высокой скорости, примерно в 100 раз быстрее чем в PasswordsPro. [Подготовка]Для начала вспомним, что EGB может брутить только пароли длинной до 15 символов, т.е. суммарный предел получаемого слова 15 символов. теперь прикинем варианты раскладки(разбиения) слов на части: 1. 3+3+3+[0-6] 2. 4+4+4+[0-3] 3. 5+5+[0-5] Конечно существуют и другие варианты, те, которые я привёл оптимальны по следующим причинам: Возведение минисловарей в 3-ю степень ещё приемлемо для размера суммарного словаря на диске, чего не скажешь о четвёртой степени. Почему придётся возводить (умножать) минисловари? Да потому, что EGB может скомбинировать только 1 раз в разделе гибридная атака таким образом: @postfix, где @ - слово из словаря postfix - это хвост пароля (последняя его часть, кстати может и быть пустой). Итак алгоритм прост: 1. Анализируем словарь реалпассов и генерим минисловари на его основе. 2. Умножаем их (мультиплексируем однотипные по 3 шт.) получаем 3 больших словаря. 3. Четвёртые в первых двух случаях минисловари и третий в последнем случае будем использовать в качестве postfix (концовки) пароля. Ввиду того, что правил(рулесов) для гибридной атаки в EGB может быть только 256, то нам потребуется сделать несколько ini файлов, чтоб все хвосты уложились в них. Нам так же надо задаться размером минисловарей, а точнее словаря, который в итоге получится на диске, путём их перемножения, кроме того, чтоб EGB корректно смогла с ним работать, как сказал автор программы InsidePro размер словаря должен быть не более 2/3 оперативки. Зададимся размером не более 1Гб. на словарь. Тогда вычислим максимальное колличество слов в минисловарях: 1. набор минисловарей (тройки) 1073741824 байт = 1Гб. На одно слово в словаре уходит 9+2байта(символы перевода строки и возврат каретки) итого 11байт. Получаем в словаре будет не менее 1073741824/11=97.612.893 слов. (почти 100млн. им и зададимся) Теперь чтоб получить колличество слов в минисловарях надо извлечь кубический корень из 100млн. получится примерно 464 слова (464^3=99897344) Четвёртый словарь уйдёт в правила в ini-файлы EGB (их потребуется 2 шт. 256*2>464) итого всего на первом этапе на 4-х словарях из троек мы пройдём 464^4=46.352.367.616 паролей. При скорости 0.5М/с времени на атаку уйдёт 92705 сек ~ 26 часов (приемлемое время атаки чуть более суток) За это время будут пробручены релевантные пароли длинной 9-12 символов. 2. набор минисловарей (четвёрки) 1073741824 байт = 1Гб. На одно слово в словаре уходит 12+2байта(символы перевода строки и возврат каретки) итого 14байт. Получаем в словаре будет не менее 1073741824/14=76695845 слов. (почти 80млн. им и зададимся) Теперь чтоб получить колличество слов в минисловарях надо извлечь кубический корень из 80млн. получится примерно 431 слово (431^3=80062991) Четвёртый словарь уйдёт в правила в ini-файлы EGB (их потребуется 2 шт. 256*2>431) итого всего на втором этапе на 4-х словарях из четвёрок мы пройдём 431^4=34.507.149.121 паролей. При скорости 0.5М/с времени на атаку уйдёт 69014 сек ~ 19 часов (приемлемое время менее суток) Реальное время может быть меньше ибо в четвёртом словаре должны быть слова из 3-х и менее символов, ибо при 4-х уже происходит выход за пределы длинны 15 символов на пароль. 3. набор минисловарей (пятёрки) Будем перемножать только два минисловаря, третий уходит в ini-файлы EGB в качестве правила замены (postfix`a) 1073741824 байт = 1Гб. На одно слово в словаре уходит 10+2байта(символы перевода строки и возврат каретки) итого 12байт. Получаем в словаре будет не менее 1073741824/12=89.478.486 слов. (почти 90 млн. им и зададимся) Теперь чтоб получить колличество слов в минисловарях надо извлечь квадратный корень из 90млн. получится примерно 9487 слов (9487^2=90003169) Третий словарь уйдёт в правила в ini-файлы EGB (их потребуется ~37 шт. 9487/256) итого всего на третьем этапе на 3-х словарях из пятёрок мы пройдём 9487^3=853.860.064.303 паролей. При скорости 0.5М/с времени на атаку уйдёт 1707720 сек ~ 474 часов (не более 20 суток). Реальное время должно быть меньше, ввиду того, что уникальных хвостов в третьем словаре может оказаться значительно меньше чем 9487. Все расчёты сделаны предварительно для оценки размеров словарей и времени атаки на каждом из трёх этапов. [Инструменты]Для того чтоб всё это воплотить в реальность, нам потребуется: 1. Большой словарь реалпассов, без повторов. 2. Программа фильтр (отсекёт из него лишнее: пароли включающие непринтабельные символы, пароли более 15 символов длинной и менее 7 символов). 3. Программа генератор минисловарей. 4. Программа мультиплексор минисловарей (умножитель). 5. Прямые руки и светлая голова. 6. Excel для формирования правил замены (@postfix), либо накодить маленький скриптик можно. [Словарь реалпассов]Вопчем это такой словарь, слова в котором были получены брутом реальных хэшей т.е. по своей сути Ваши наработанные PasswordsPro.dic и другие dic в EGB. Словарь должен быть достаточно большим от 30Мб. Можно взять конечно какой либо другой сборный словарь, при условии что он из реалпассов (например словарь базы сбрученных паролей сервиса insidepro.com) Его можно собрать, если склеить 19 словарей InsidePro (Full), выложенные тут: http://www.insidepro.com/rus/download.shtml. Там где-то на форуме выложен объединённый одним файлом, линк выожу позже. В любом случае чем больше будет содержать словарь реалпассов, тем лучше и достоверней будет статистика по использованию троек, четвёрок, пятёрок (блоков символов в слове) в зависимости от их расположения в слове. К выбору словаря надо отнестись с особой тщательностью ибо он ключевой фактор успешности последующей комбиатаки в EGB. [Фильтрация]Фильтруем, убиваем дубли, упорядочиваем его с помощью например софта ULM. Фильтруем по длине менее 16 символов сохраняем. Потом сохраняем всё более 7 символов. (В проге есть косяк один с фильтрацией, кстати - при опред. словах не верно сортирует) [Генератор минисловарей]Подходящего софта я не нашёл, поэтому написал свой, берите тут: https://hashcracking.ru/forum/viewtopic.php?f=10&t=1001 Генерите отдельно три набора: тройки, четвёрки и 5-ки (в пятёрках нужны только 3 минисловаря, четвёртый должен быть пустой получится) [Умножение минисловарей]Умножитель тоже не нашёл, поэтому написал свой, возьмите тут: http://zalil.ru/30602326 Перемножаем сначала тройки, потом четвёрки и пятёрки между собой последовательно, т.е. out0.txt на out1.txt получаем произведение pass.txt теперь его перемножаем с out2.txt В итоге у вас должно получится 3-и больших словаря размером примерно 1Гб. и остаться по три минисловарика out3.txt для postfix (концовки паролей). Остаётся их запихнуть в ini-файлы (я заюзал EXCEL для приведения к вижу 1=@postfix 2=@postfix и т.д.) Теперь для того чтоб нам не править каждый раз ini-файлы пишем батник или cmd - файл, я думаю Вы напишите его сами. [Заключение]Объединив и немного модернизировав скрипты Анализатора-генератора и умножителя (для тех кто знаком с php - это труда не составит), можно сделать так чтоб перемножались первые три словаря сразу (нужно добавить ещё один вложенный цикл), а четвёртый сразу записывался в виде 1=@postfix (добавить счётчик и префикс для postix`a) Что касательно практики - метод довольно эффективный и мной лично опробован. В возможном продолжении/дополнении статьи - оптимизация алгоритма и универсальный объединённый скрпит.