Как вы уже возможно слышали Брайан Кребс недавно проводил аудит паролей, полученных после взлома antichat.ru. Честно говоря, не очень понимаю чем занимались его видеокарты 18 дней, победив только 44% паролей. Мне на довольно скромном железе удалось подобрать 77% паролей за 8 часов. Исходя из таких несколько пугающих цифр, особенно для сайта тематически связанного с информационной безопасностью, у меня есть несколько рекомендаций о том какие пароли никогда не следует использовать, дабы они не были подобраны за пару минут.
Я пользовался утилитой The UDC, которую создал сам (кстати в настоящий момент она бесплатно доступна «с потрохами»), она не поддерживает вычисления на видеокартах и на моем E8400 перебирает в среднем 5 миллионов паролей в секунду (просто чтобы не было иллюзии, что успешность перебора определяет только скорость). В результате я нашел 31790 паролей из 41037 MD5 хешей. Как мне это удалось?
Цифры
Шаг первый. Проверить все цифровые комбинации длиной до 11 символов. Люди любят использовать цифры в качестве паролей, возможно из-за того что научились хорошо запоминать телефоны (хотя некоторые уже давно разучились). Может потому что цифры не вносят какого-то оттенка индивидуальности, кому-то они кажутся менее пошлыми, кому-то более случайными.
Итак, запускаю перебор, иду пить кофе.
Итого получаю 15759 найденных паролей! Это почти половина всех найденных. За пять-то минут.
Кому-то кажется, что если понаписать цифр «от души», штук эдак 20, то такой пароль можно считать трудно подбираемым. Отнюдь. Человек не является хорошим генератором случайных чисел, ему свойственно выбирать какие-то более удобные или красивые комбинации подсознательно.
На базе этого замечания была применена техника частотного анализа; я буду применять ее и дальше, и озаглавлю «атакой релевантных сочетаний». Итак, берем уже найденные 15759 цифровых паролей, и считаем количество включений каждой подстроки. Скажем, подстрока 123 является самой частой среди трехсимвольных комбинаций, а строка 1111 среди четырехсимвольных (так вот устроены уже найденные пароли). Сортируем все подстроки по частоте, выбираем N самых частых (например 50000), получается словарь частых сочетаний.
Запускаем перебор пар конкатенаций слов из этого словаря (такой метод часто называют «гибридной атакой»), в результате легко подбираем пароли вида 1111111111123123 за считанные минуты. В результате: еще 358 найденных паролей.
Мораль: все-таки любое количество любых цифр — плохой пароль. Вот просто никогда не используйте чисто цифровые комбинации в качестве пароля. Их подобрать не сложнее чем «qwerty» или «password».
Короткие пароли
Удивительно, что не все сайты запрещают создание паролей короче 7 символов. Однако и таких присутствовало аж 5767 штук.
Я думаю, все верят, что подбираются они за минуты.
Словарные слова
Достаточно простая техника запомнить пароль — вспомнить какое-то слово и как-то его «извратить». Человеческий подход к этому вопросу я попытался закодировать с помощью набора подстановок.
Какие подстановки я использовал:
*убрать все гласные из слова
*случайное изменение регистра для одной-двух букв в любом месте
*эмуляция случайного нажатия CAPS LOCK в любом месте слова
*добавить до трех случайных цифр в конец слова + красивые варианты (2010, 2011, etc.)
*добавить до двух случайных цифр в начало слова + красивые варианты (123, 1111, etc.)
*вставить случайный символ в любое место слова
*добавление знаков пунктуации в начале и/или в конце слова
*«хэккерские» замены («one» -> «1», «s» -> "$", «a» -> "@", etc.)
*ошибки переключения раскладки (русское слово в английской и наоборот)
Далее прогоняем какой-нибудь достаточно большой словарь слов на разных языках, у меня нашелся словарик на 40 мегабайт, на котором подстановки отработали за пол часа.
Кроме уже попавших в вышеописанные категории таких паролей оказалось аж 5213 штук.
Мораль: на любую «фантазию» в придумывании пароля может найтись подстановка, ее реализующая. Возможно моя фантазия не очень богата, но и благодаря ей удалось разобраться с большим количеством, кстати, довольно длинных паролей.
Частотный анализ для длинных паролей
Вы, может быть, еще думаете, что пароль из 20 символов с применением букв разных регистров и цифр достаточно надежен, но увы, если его придумал человек — вряд ли.
После того, как я уже нашел 27097 пароль (это где-то за час), странно было бы этим не воспользоваться в полной мере. Есть предположение, что для любого тематического ресурса люди чаще используют одни комбинации символов, нежели другие. Вопрос требующий изучения, но статистические методы позволяет перенести «изучение» на железную часть, не напрягая мозг.
Итак, извлекаем подстроки из найденных паролей, сортируем их по частоте, и создаем словарь из 10000 самых частых сочетаний. Добавляем туда по необходимости все односимвольные и двухсимвольные комбинации.
Затем начинаем перебор по конкатенации слов из такого словаря в числе до трех штук. Вот именно эта часть и заняла почти 7 часов и нашла 4693 длинных и сложных пароля. В огромном числе из них употреблялись «устойчивые» комбинации вроде 1234 или 951753.
Мораль: человек едва ли может уследить за отсутствием статистически популярных комбинаций в пароле, однако любая система поможет ему подсказать, реализуя поиск таких комбинаций в релевантном словаре. Иначе же no one is safe.
Примеры плохих паролей (из найденных)
123321123321123 — цифр вроде много, но паттерн очевиден.
1qaz2wsx3edc — удобно набирается и так же удобно конструируется.
123456610q — наивно полагать, что один символ изменит качество пароля, однако так думают не только люди, но и большинство автоматических систем, не порядок.
ilovepussy777 — кто ж не любит; но по сути это один символ + три релевантых слова, ломается враз.
[fuckitall] — показываем свое замечательное знание английского, однако комбинация [...] слишком часто встречается, чтобы считать что она влияет на надежность.
Hellsp@wn — ни регистр в начале, ни замена на @ не улучшит качество пароля, собранного из словарного слова.
Jhnjgtl12 — раскладку перепутали? и мы так умеем.
dalex3pro — d + имя + цифра + частое сочетание букв. Для pro как-то не круто.
PANASONIC13 — забытый капслок? и откуда такой фанатизм к известной фирме.
iphone3g — еще фанатики. не стоит использовать что-то, что у всех на слуху.
qCkiYSJ625 — и вот казалось бы рандом, но кто ж знал, что он состоит из достаточно часто употребляемых комбинаций сам по себе.