Создаём "правильные" словари для брута хэшей. Предисловие.Многие из Вас пользовались программой PasswordsPro для брута хэшей, скачивали словари часто употребляеммых в качестве паролей слов, использовали их и в который раз убеждались что эффективность использования их достаточно мала - множество хэшей остаются не расшифрованными. Тогда многие переходили к бруту полным перебором и так же убеждались в том, что полный перебор эффективен только в случае короткого пароля и использования ограниченного набора символов, в остальных случаях на обычном компьютере, при скорости перебора 5млн. паролей в сек брут достаточно сложного и длинного пароля может длиться столетиями. У многих наверно возникала мысль, а не сгенирировать ли нам свои словарики? типа lamerwords ? Ну тут сразу встаёт вопрос по каким правилам их генерить? Если полный перебор - это опять же - не хватит места на диске чтоб всё добро это хранить. В этой статье я расскажу как правильно генерировать свои словарики, чтоб процент попадания в них реальных паролей был достаточно высок. Начнём с устоявшихся правил и человеческой психологии: 1.Всё знают и все админы говорят используйте одновременно в пароле буквы и цифры, а ещё лучше и спец символы. 2.Не делайте слишком короткий пароль! Обычный не далёко продвинутый юзер сделает пароль вида lamer_2007 - и что? он не нарушил устоявшихся правил - есть буквы и цифры и длинна 9 символов - что уже не мало (с точки зрения PasswordsPro полный перебор паролей этого диапазона займёт более 10 тыс. дней) Другой возьмёт и использует в пароле номер своей (чужой мобилы) например 9XX-XXXXXXX, что тоже для PasswordsPro является длительной задачей. Многие поняли к чему я клоню. Вроде как определённые правила соблюдаются (длинный пасс, буквы и символы) но пароль для юзера остаётся простым для запоминания и использования и в тоже время недостижимым для PasswordsPro в плане подбора полным перебором. 1. Оцениваем психологию юзверей (или правила продвинутых ламеров в выборе пароля) а) Кому-то лень придумывать пароль и он использует в качестве пароля ник, не забудем про это. б) Более продвинутый ламер использует пароль никxxxx (ник_xxxx, ник-xxxx) - где xxxx - цифры (обычно от 4 до 6 знаков) в) Ещё более продвинутый ламер использует пароль wordxxxx (word_xxxx, word_xxxx) - где word - легко запоминающееся слово, xxxx цифры (обычно от 4 до 6 знаков). г) Многим юзверям просто лень переключать регистр клавиатуры несколько раз и максимум на что они способны - сделать это в начале, т. е. первая буква в пассе (как и у ника) может быть заглавной (но редко). (Word_xxxx) д) Отдельный интерес представляют юзвери, набирающие пароль в латинице но в русской раскладке т. е например kfvth_2007 (т.е. ламер_2007) не будем забывать и про таких. Вывод, как мы видим типичный пароль продвинутого ламера представляет следующую конструкцию xyz, где: x - слово, ник и т.п. от 4 до 8 символов у - спецсимвол, чаше всего "-", "_" а может и совсем отсутствовать. z - число от 4 до 6 знаков (в качестве 4-х цифр чаще может быть использован год рождения или год регистрации), в качестве 6 например дата рождения (в формате ДДММГГ или ГГММДД) Всё изложенное в п.1 о тех, кто придумывал пароли сам для лёгкого запоминания, не пользовался менеджерами и генераторами паролей (или в тот момент у них небыло их под рукой). 2. Подготовка.Ставим задачу сгенерировать словари, удовлетворяющие этим условиям, которые могут содержать потенциальные пароли продвинутых ламеров. а) Начнём пожалуй с третей части пасса, т. е. с цифр. Если ламер использовал год то, имхо есть смысл ограничится годами его возможного рождения или регистрации. Выбираем возростной порог юзверя 40 лет к примеру. В этом случае диапазон годов рождения будет 1967-2007 и составит всего 41 возможное значение. Далее если дата рождения в формате ДДММГГ диапазон дат составит 010167 - 020307 и возможных значений тут будет больше - 14671. Отдельно тут надо упомянуть о незначащем нуле в начале. Вряд ли кто будет его кто-то использовать в наборе своей даты рождения, так что есть смысл его опустить (в этом случае получим пятизначную цифренную часть пасса). Вообщем путём несложных манипуляций с Exel и обычным блокнотом, я за 5 мин. получаю все возможные мне значения (кто неумеет пользоваться может написать прогу генерирующую нужные даты): А именно: четырёхзначные в формате ГГГГГ (41 значение) Пятизначные в формате ДММГГ (4340 значений) Шестизначные в формате ДДММГГ (10331 значений) Шестизначные в формате ГГММДД (14671 значений) по поводу нуля перед годом, имхо отбрасывать не стоит - редко кто пишет год одной цифрой. Предложенные мной варианты числовой части пасса - сугубо моё личное представление, наиболее, как мне кажется лучше отвечающее реальности (вы можете генерировать любые, всё зависит от вашей фантазии, главное чтоб в цифрах была хоть какая-то логика) Итого получаем 41+4340+10331+14671=29383 значение возможной третей части пасса. Записываем их построчно (копи-пастим конечно ;-)) в блокнот, сохраняем в файл и получаем файл z.txt размером всего 226 Кб. - он содержит даты рождения или даты регистрации юзверя возрастом до 40 лет в предложенных мной форматах. Ах, да, не забудем про дубли (вполне возможно они присутствуют так как инвертировали формат даты). Для очистки дублей (да и не только) я воспользуюсь утилитой V-ListmakeR (вообще-то она для генерации листов для брута асек вида UIN;PASS, но там есть модуль работы со словарями и джоинер). Итого после убиения дублей остается 19052 значения, а размер сокращается до 144КБ. б) Ну а с первой частью всё понятно - берём все имеющиеся у вас пассы или ники и режем их до 8 символов (при необходимости, или отфильтровываем то что больше восьми). Хочу заметить что вам нужно будет собрать их в один файл, так как потом нам потребуется склейка с третьей частью. И хочу обратить внимание не переборщите с количеством значений в этом файле, так как при склейке размер у нас будет расти в геометрической прогрессии. Я для примера беру ники Ачатовцев, кто в онлайн в данный момент, убираю запятые, загоняю в файл, получается всего 59 значений , обзываю x.txt. Всё готово для генерации словарей. 3. Сборка словарей. Генерим (склеиваем) с помощью того же V-ListmakeR (оказывается от клеит не только номер;пасс, а всё что угодно). Выбираем вкладку JoineR Load Unins File грузим Ваш x.txt, Load Pass File грузим z.txt. В качестве сепаратора (разделитель) выбираем любой спецсимвол, я взял "_". Клацаем Save To xyz.txt, нажимаем Start и ждём. Итого у меня получился словарь состоящий из потенциально возможных паролей ачатовцев ;-) (включающий ник и дату рождения). Всего 1124068 слов (значений). Размер файла 17,1 МБ Используя разные сепараторы вы можете наделать себе сколь угодно много таких словарей. Заключение Многие скажут, зачем такой гимор ведь всё есть в PasswordsPro (они имеют ввиду комбинированную атаку по словарям). Им отвечу: во-первых посмотрите на скорость работы при такой атаке. Во вторых там идёт много перестановок слов из словарей, что нам не требуется! Также нам не всегда подойдёт то, что может сгенирировать генератор словарей, а также генератор паролей, даже если использовать генерацию по маске "символы(8):спецсимвол(1):число(6)" (то есть маска ?l?l?l?l?l?l?l?l?s?d?d?d?d?d?d) Вы получите кучу отличных паролей и ИМХО врядли туда попадёт хоть один наш продвинутого ламера! (Собственно для этого генератор и сделан ;-), чтоб генерировать хорошие пароли, а вот словари из него я не уверен что хорошие будут). Кстати таким же образом делаем словарик, включающий все возможные номера известных операторов сотовой связи (большой наверно будет). Кстать пример получившегося словаря ;-) Скачать V-ListmakeR P.S. Кстать, Дрэгги, среди куска паролей нет твоих?
хм, вопросы 1) есть ли у тебя статистика по паролям, по которой ты делаешь выводы в пункте 1? 2) сколько паролей из 1000 ты расшифровал юзая "свой" алгоритм?
Я думаю тебе может помочь Брюс Шнайбер "Прикладная криптография" там о ключах немало написанно о бруте, длине, какие пароли незя ставить, статистика Обедненный выбор ключей - глава называется так что правь, пополняй и тд и тп
1) нет (пока). Ну вот на одном сайте говорят так: 2) ещё не пользовалься сам, так как надо сгенерировать словарики, для какого-нибудь конкретного ресурса (сайта) + иметь от туда хэши паролей, тогда можно будет ответить на твой второй вопрос.
Шнайбер перечисляет в следующем порядке: 1. Инициалы, ники 2. Слова из различных баз данных 3. Вариации слов из пункта 2 4. Различные вариации с регистром 5. Иностранные слова
статистика неверная, сам анализировал те пароли что у меня есть, и могу сказать что это не верно. Просто думал написать статью по этому поводу и постоянно собираю инфу по этой теме
Кстати насчет правильного словаря в некоторых словарях слова записаны через запятую, насколько я понял PasswordsPro их не понимает, у кого есть скрипт или программа для приведение словаря в нормальный вид, я помню на античате вылаживали перл скрипт, но что-то он у меня не работал.
Цифры часто встречаются? И какие? ИМХО даты (два знака: ГГ, четыре: ГГГГ, MMГГ, ГГММ) должны присутствовать... Точнее сказать так, если есть цифры, то они вполне возможно из того подмножества. Не обращал внимания?
если я понял твою идею, ты предлагаешь к каждой атаке на какую-то базу хешей генерить свой словарь по правилам что ты предложил, имхо лишняя работа для поиска пасов дял ламаков, хотя по скорость может и быстрее будет чем гибрид и комби
Кстать, никто не пробовал подставлять словари, из тех пассов, что генерирует PasswordsPro? ИМХО % попадания будет очень низкий...
на баше+сед: cat твой_словарь |sed 's/,/\n/g' >кайо_то_файл Вроде так, не помню точно-ли сед понимает \n в качестве перевода строки(ман глянуть можно) или с помощью tr (думаю эти утилиты не только под юниксы есть). Да, и ещё до кучи хотел спросить. А где-нить есть какой-либо семантический детектор для этих целей? Просто можно антисемантику в обратную связь при генерации словаря пускать(тоесть те символы, которые люди - кстати у русских /англичан и других немного разная семантика, такчто это ещё одно "колено" на котором можно сыграть, да, так вот, символы которые люди семантически не могут связать.) Мне кажется эта метода при переборе может много нервов сэкономить. Я сам занимаюсь нейронынми сетями, тут в последнее время подбором паролей заинтересовался. Так вот, по этой теме скажу - усилие на запоминание несемантического(или выходящего за пределы семантики человека), так вот - усилие на запоминание возрастает в арифметической прогрессии с каждым новым несемантическим элементом! Можно это учитывать. Из опыта - ещё некоторые виды алгоритмов приближения паролей - можно отлаживать "на слух", вот только что и как должно звучать(как формировать вес и тон звука) - для этого нужна отдельная статья.(по факту могу сказать, что есть некая корреляция(ну может правильнее сказать "свёртка" в тех самых знаменитых wpa2!!!, по крайней мере кое-какие закономерности есть, сейчас этим вопросом как-раз и занимаюсь. Если будет кому интересно - попробую подробнее и доходчивее обьяснить. Причина? - голова , сей продукт вычисляет крайне эффективно безразмерные аналоговые величины, посему часто годится для подбора подобных штук, главное "правильно туда загнать". Да и линейное пространство визуально хуже распознаётся глазом(и последующим интерпретатором в голове), зато лучше его "видт" ухо(оно приспособлено к длинным цепочкам несвязанных/слабосвязанных данных). Ещё чего-то хотел на эту тему сказать, но забыл пока писал. Ну ничего, всёравно сейчас в этом контексте я подвис на некоторое время, такчто если вспомню - сюда отпишу(одно приятно, тут хоть этим вопросом занимаются, а не флуд разводят).
Чтобы сделать словарь надо: 1)в гугле вбить словари для брута! 2)Найти нужный вам словарь! 3)Пользоваца им!