Хабрахабр

[Перевод] DEFCON 17. Взлом 400 000 паролей, или как объяснить соседу по комнате, почему счёт за электричество увеличился. Часть 2

DEFCON 17. Взлом 400 000 паролей, или как объяснить соседу по комнате, почему счёт за электричество увеличился. Часть 1

Люди ненавидят правила, ненавидят словосочетания и не хотят их использовать. Если вы не придерживаетесь никаких правил создания паролей, то пароль может выглядеть как простой список PHP. В этом случае безопаснее, если они не будут использовать простые базовые слова, поэтому лучше использовать большие входные словари. Если дать им волю, они напечатают любой пустяковый пароль и будут считать, что дело сделано.

Если вы знаете какое-то слово, то вы создаёте для него статью в Википедии. Наибольший вклад в создание входных словарей внёс Себастьян Раво – он создал огромные списки слов из каждой статьи, содержащейся в Википедии, а также из аналогичных проектов. Вы можете ознакомиться со списком слов из Википедии в его блоге http://blog.sebastien.raveau.name/. Но то, что хорошо для Википедии, не всегда хорошо для создания безопасных паролей, поэтому если словарь действительно огромный, к нему невозможно применить множество различных правил.

Если имеется политика создания паролей, то следует руководствоваться такими правилами:
лучше использовать в словарях небольшие тематические, специализированные списки слов,
лучшие словари основаны на ранее взломанных паролях.

Из соображений конфиденциальности я не могу предоставить вам список взломанных паролей, но поверьте, так же, как богатый становится ещё богаче, так и взломанный пароль становится сильнее, если вы видите, где была допущена ошибка при его создании и исправляете её.

Существуют списки таких паролей, и мы можем видеть, что в этих списках повторяются одни и те же пользователи, потому что они всюду использовали один и тот же пароль.

Например, пароль «TigerWoods1982» не должен быть слишком распространённым, зато люди постоянно используют пароль «TigerWoods». Будет полезно, если вы сможете извлечь основу из таких паролей. На моём компакт-диске размещены некоторые инструменты, которые помогут вам сделать это намного легче. Поэтому вы можете извлечь это основное словосочетание «TigerWoods», чтобы создать на его основе надёжный пароль.

Правила создания слов для паролей очень просты:

  • научитесь создавать новые слова на основе взломанных ранее паролей;
  • JtR хорошо взламывает только слабые пароли, именно для этого он разработан, но со сложными паролями он справляется хуже. Я сделал доступными для загрузки несколько моих правил создания паролей на основе JtR;
  • Minga также размещает ряд удобных онлайн инструментов для создания паролей: http://marc.info/?l=john-users&m=123820850908275&w=2, http://marc.info/?l=john-users&m=124053430313891&w=2

Однако вы должны будете разработать свои собственные правила, если хотите взламывать действительно сильные пароли. На моём CD имеется ещё один инструмент, который позволяет разбирать пароли на 2 разных набора.

Это очень хорошо, потому что вам не нужно перебирать 200 тысяч паролей типа password123 и потом пытаться придумать новые правила для их использования. Первый – это пароли, про которые мы знаем, как они были созданы, например, password123, и второй – это пароли, принцип создания которых нам не известен. Вы узнаете новые комбинации клавиш, и это поможет вам создавать надёжные пароли намного легче. Вы получите небольшой список, из которого увидите, например, что люди используют эмодзи для создания паролей, вставляя в слова смайлики.

Хорошие результаты приносит метод «вероятностного взламывания паролей», probabilistic cracking. Как я уже говорил, я решил отойти от встроенных правил JtR и разработал свой собственный способ генерации «отгадок». Но я хочу сказать, что мы действительно хотели научиться создавать наиболее стойкие к взлому пароли, поэтому старались сделать всё наилучшим образом. Я уже говорил, что наши реакции универсальны: мы пробегаем нечто глазами, киваем, говорим, что оно выглядит отлично, а про себя думаем: «что за академическая фигня»!

Известно также, что люди предпочитают определённые правила «коверкания» паролей, добавляя 123, 007, $$$ или заглавные первые буквы слов. Известно, что некоторые слова нравятся людям больше других, например, password, monkey, football. Это достаточно трудоёмкий процесс. Чтобы усилить стойкость, мы должны оптимизировать правила образования паролей нетипичным способом. Из электронной рассылки John the Ripper я узнал о человеке, который создал 10 или 12 тысяч файлов конфигурации правил JtR, стараясь извлечь из этого максимальные преимущества.

Я просто постарался сделать более простую оптимизацию процесса создания паролей и автоматизировать процесс. Я намного ленивее его, поэтому не стал этим заниматься. А затем мы используем для создания пароля наименее вероятную комбинацию слов и «коверканий». Мы обрабатываем всю информацию и определяем вероятность использования определённых слов и комбинаций, то есть ранжируем пароли по вероятности угадывания. Итак, вот что мы должны попробовать, чтобы сделать наши пароли сильнее:

  • использовать распространённое слово с нераспространённым способом искажения пароля, например 13!password13!;
  • использовать редкое слово с распространённым «коверканием», например, zibra123.

С этим способом мы достигли успеха. Если вы не можете разбить пароли на два набора по оговоренным выше признакам, у нас имеется программа-трейнер, которая автоматически анализирует список известных паролей и генерирует то, что мы называем «грамматика». В этой «грамматике» содержится вся необходимая информация, так что мы используем две таких «грамматики» для исследования возможностей взлома паролей.

Благодаря этому мы определяем вероятность использования всего, что у нас есть: слов в словарях, правил «коверкания» слов в паролях, алгоритмов расположения символов типа «две цифры в конце пароля 12», в противовес которому можно использовать правило «две цифры в конце пароля 21», и тому подобное.

Я не жду, что вы прочитаете всё изображенное на слайде, поэтому расскажу, что собираюсь сделать. Я могу продолжать говорить об этом, но лучше покажу наглядный пример того, как это работает. Фактически он поддерживает до 10 словарей, но лучше не сходить с ума. Я собираюсь запустить наш вероятностный взломщик паролей и «скормить» ему два разных входных словаря.

Второй словарь содержит наименее распространённые слова, и взломщик паролей будет переключаться между этими двумя словарями. Один входной словарь содержит самые распространённые пароли, поэтому обладает высокой вероятностью угадывания. После этого я «солью» результат прямо в John the Ripper, потому что, как я уже сказал, хочу создать свой собственный алгоритм хеширования паролей.

Поэтому я продемонстрирую работу взломщика на примере списка MySpace, который был раскрыт 2 года назад. К сожалению, мы не можем использовать здесь список PHP, опять-таки по причине конфиденциальности, потому что нельзя демонстрировать взлом паролей перед всеми, наш институт не признает это законным. Все пароли в нём были представлены в виде обычного текста, так что вы сможете их прочесть, и эта операция не представляет дополнительной опасности.

Сюда загружено около 17000 хешей паролей без «изюминок», и мы фактически разделили их списки на несколько разных частей для типичного машинного обучения. Мы использовали хеширование MD5, это точно такой же алгоритм хеширования, что используется для списка phpbb, так что здесь в значительной мере имитируется атака на phpbb.

Здесь ещё и происходит переключение между разными правилами, так что это не просто попытки типа «попробуйте 1 цифру, попробуйте 2 цифры» и так далее. Прямо сейчас на экране вы видите, с какой скоростью происходит взлом паролей, поэтому, вероятно, следует использовать алгоритм более медленного хеширования.

Вы видите, что пароли имеют разный размер, обычно люди используют длину от 6 до 8 символов и иногда встречаются восклицательные знаки в конце пароля.

Одна из таких вещей – это включение в процесс целевых атак, когда вместо взлома какого-то большого старого пароля программа пытается взломать пароль конкретного пользователя. Есть ещё несколько видов оптимизации, которые мы пытаемся встроить в этот алгоритм, потому что наша работа ещё продолжается.

Всё, что вам требуется для целевой атаки, это использовать другой входной словарь, например, имена детей, дни рождения, почтовые индексы и так далее.

Но так как он основан на вероятностной модели, то быстрее угадываются пароли с наибольшей вероятностью, а пароли с наименьшей вероятностью взламываются немного медленнее, так здесь используется большее число «отгадок». Вы видите, что процесс взлома на экране немного замедлился, это особенности дизайна, если взлом происходит достаточно просто, то процесс ускоряется.

Это объясняется тем, что мы как раз начинаем сессию взлома паролей и не хотим использовать слишком сложные или расширенные пароли. Вы также заметили, что в данном списке в основном довольно слабые пароли.

Если у вас имеется стратегия взлома, в которой вы собираете атаковать только надежные пароли, вам нужно создать соответствующий список на основе таких паролей и начинать сессию со взлома только сильных паролей.

Процесс взлома занял 2 минуты 30 секунд, за это время было взломано, или угадано 5586 паролей, что составляет немногим более 30% всего имеющегося количества. Итак, наша программа закончила свою работу.

Просто я на самом деле считаю, что они наносят нашей безопасности больше вреда, чем пользы. Существует сотня причин, почему я считаю, что политику создания паролей необходимо изменить, не потому, что само использование паролей является чем-то отсталым и глупым. Особенно если мы говорим об оффлайн атаках, которым нельзя противостоять, если не изменять свой пароль каждые 2 минуты.

Эти атаки действительно могут нанести большой ущерб, если вы не позаботитесь о защите. А сейчас я хочу поговорить о технике атак Brute Force.

Для этого нужно сделать анализ частоты применения букв и символов, чтобы узнать, какие буквы или символы используются в паролях относительно редко. Они довольно мощные, но противостоять им можно, нужно просто использовать свои мозги.

Ваш алгоритм взлома не должен стремиться взломать все пароли, нужно сосредоточиться на наиболее вероятных. Наверняка вы все слышали об этом, поэтому попробуйте, например, чаще использовать букву Q, которая встречается в паролях довольно редко.

Она основана на условной вероятности букв, например, если у вас имеются подряд две буквы Q, вы более защищены, чем когда в вашем наборе букв имеется U, потому что U обычно следует в словах за буквой Q. Более «продвинутым» вариантом является модель Маркова. Модель Маркова используется алгоритмом взлома JtR, который учитывает, что за буквой Q в «человеческих словах» обычно следует U или W, но не S или Z. Она также предполагает, что пароль создан в «человеческой» манере, то есть если некая буква расположена в этом месте слова, то за ней следует другая буква, которая чаще всего используется именно в таком буквенном сочетании. Не подумайте, что я изо всех сил пытаюсь сосватать тут вам «Джона Потрошителя», но это действительно хорошая программа.

Они основаны на использовании таких принципов создания паролей: Мы можем ещё более углубить логику Brute Force, применив целевые атаки.

  • люди склонны начинать пароль с большой буквы;
  • обычно они добавляют цифры в конце пароля;
  • по этой же причине они любят использовать в паролях сочетания php или phpbb.

Есть очень хороший инструмент для проверки эффективности атак под названием «Crunch», его можно найти на форуме программистов remote-exploit.com. Эти же принципы можно использовать для «словарных атак».

Для этого я сначала запускаю JtR и он начинает генерировать «догадки», основанные на строчных буквах, используя модель Маркова. Хочу привести вам пример взлома «сильного» пароля с помощью атаки Brute Force.

Но благодаря модели Маркова он также генерирует слова, которые там отсутствуют, например, stech. Вы видите, что в этом списке много реальных слов, таких как dog, starless, marine, которые имеются во входном словаре. Поэтому я использую скрипты, которые предусматривают заглавную букву в начале слова, а также добавляют специальные символы и цифры в конце слова. Но так как мы разгадываем сильный пароль, необходимо применить некоторую дополнительную логику.

Теперь, когда вы знаете о политике создания паролей, вам следует нажать на кнопку «выключить лень» и потратить 5 минут, чтобы придать этим словам определённый размер, так как они выглядят слишком короткими. Как вы видите, эти «отгадки» выглядят как настоящий надёжный пароль.

Мы также можем попробовать «закачать» всё обратно в JtR и попробовать взломать хеши.

В начале презентации я подробно рассказал о взломе списка паролей пользователей сайта phpbb.com, а теперь хочу поговорить немного о взломе списка Web Hosting Talk.

Он украл хеши, а затем удалил сам сайт и все резервные копии. Его взломали 21 марта 2009 года, по крайней мере, в это время в сети был опубликован список, и нападавший оказался реальным подлецом, потому что разместил в открытом доступе около 200 тысяч логинов и паролей и другую конфиденциальную информацию пользователей. Это было огромным ударом для системного администратора.

При этом они высказали одну мысль, которая в действительности была обманчива и опасна, цитирую слова координатора iNET сообщества: «Пароли имеют «изюминки», и будет беспрецедентным событием, если кто-то сможет их перепроектировать. После этого владельцы сайта сообщили, что их взломали, но пользователям не стоит волноваться, потому что теперь они в безопасности. Я периодически меняю свой пароль, так что, возможно, сегодня удачный день для этого».

Но иногда мне нравится выходить на улицу в обеденный перерыв, так что вы тоже можете пока погулять снаружи, если захотите». Это выглядит так, как будто я говорю: «привет, ребята, вы знаете, копировальная комната горит, но не волнуйтесь, там ведь есть система пожаротушения, поэтому совершенно невозможно, чтобы это здание сгорело дотла. Это одна из причин, почему я решил взломать здесь этот список.

Вероятно, только потому, что хакеру этого не понадобилось. Далее координатор опубликовал такое высказывание: «Ни одна кредитная карта пользователей или аккаунт PayPay не были взломаны». А дальше случился новый провал – этот же самый сайт был повторно взломан этим же хакером 7 апреля, и на этот раз он опубликовал в сети примерно 202 тысячи хешей паролей и номера 2218 кредитных карт.

Я никогда не зайду на сайт, администрация которого заявляет: «да, у нас украли номера двух тысяч кредитных карт, но остальные-то номера в безопасности»!

Людей взламывают, это факт, и я не хочу винить в этом Web Hosting Talk. Хочу немного прояснить ситуацию. Поэтому я считаю главной проблемой Web Hosting Talk то, что они преуменьшали риски, с которыми столкнулись их пользователи. Попытаться спасти и вытащить что-то из вашей системы сразу после того, как она была взломана — сложная проблема, особенно если пользователи неоднократно взывали к вам по поводу необходимости делать резервные копии системы. И вести себя так с их стороны было очень опасно.

Это очень важно, потому что вскоре я что обнаружил интересный факт по поводу этого сайта: после первой атаки свои пароли изменили 1348 пользователей, что составило всего 0,6% от общего числа зарегистрированных на сайте! Потому что вы, по крайней мере, должны предоставить пользователям что-то вроде тикающих часов, которые указывали бы на необходимость зайти и изменить свой пароль, и не только для данного сайта, но и для всех остальных сайтов, так быстро, как только возможно.

Вот почему хакер имел прекрасную возможность вернуться и повторно взломать сайт, используя те же самые неизменённые учётные данные пользователей, или даже использовать их для взлома других сайтов, где они тоже были зарегистрированы.

Оказалось, что это форумный движок vBulletin, написанный на языке PHP и использующий для ведения своей базы данных сервер MySQL. Я хотел выяснить, был ли хеш этого сайта действительно настолько слабым, и обратился к Google, чтобы узнать, какой ПО использует данный сайт. То есть вы берёте пароль пользователя, хешируете его с помощью MD5 и ещё раз хешируете полученный хеш пароля с помощью того же MD5. «Гугл» также ответил на вопрос, какой алгоритм хеширования использует данный сайт – это двойное хеширование типа MD5 (MD5(Password).salt). Но я не пытался взломать настоящие пароли этого сайта, так как это заняло бы не несколько недель, а просто решил протестировать в списке наличие пароля «password» и тут же взломал 1109 человек, которые использовали в качестве пароля слово «пароль». Я не знал, как «Джон Потрошитель» справится с таким хешированием, поэтому написал свой собственный «взломщик».

Я продолжаю «рекламировать» пароли с разными «изюминками» потому, что для взломщика это означало бы необходимость проверять «догадками» хеш каждого пароля для каждого отдельного пользователя. Я хочу сказать, что «изюминка» в пароле действительно становится проблемой для атакующего и потому важна для пользователя. Для подобной атаки на список паролей Web Hosting Talk, если бы они были защищены «изюминками», понадобилось бы 200 тысяч часов. Если взять для примера сайт phpbb, где использовалось одностадийное хеширование MD5, то хакер потратил на его взлом списка паролей около 1 часа.

Как вы знаете, я потратил со своим компьютером «Dell» почти неделю на взлом 34% хешей 200 тысяч пользователей phpbb. Что ещё нужно сказать? Скажите, вам известны люди, которые используют один и тот же пароль более чем на одном сайте? Причём большая часть этих паролей содержалась в списке уже взломанных паролей с других сайтов, и для них не использовалось «коверкание». Думаю, что да.

Потому что хакер, получив эту информацию, не станет пытаться взламывать каждый из 200 паролей, а возьмётся за взлом одного этого хеша. Нужно объяснить людям, что «изюминки» не защитят индивидуальных пользователей, если какой-то идиот из их коллег опубликует в интернете хеш своего пароля, заявляя, что его невозможно взломать, потому что в нём есть «изюминка». При этом станет возможно организовать целевую атаку на конкретных пользователей, у которых в адресе электронной почты содержатся слова «admin» или «webmaster».

Так что помните, что, даже создав пароль с «изюминкой», не стоит считать, что вы полностью обезопасили себя от взлома. Хакер попробует атаковать этих пользователей, потому что есть хороший шанс, что эти люди используют такой пароль для своего сайта.

Благодарю за внимание, свои вопросы вы можете присылать мне на почту weir@cs.fsu.edu

Далее следуют несколько слайдов с компакт-диска докладчика, которые не были включены в видеопрезентацию по причине нехватки времени.

Поэтому рекомендуется использовать входной словарь проходных фраз такого вида: «!! Взлом проходных фраз: проблема состоит в том, что обычно у нас нет достаточно примеров проходных фраз типа «It’s fun to try the impossible»! It’s fun to try the impossible!» или «!!ifttti!».

При создании проходных фраз используйте подход, который предлагает игра Mad Libs, то есть формируйте неожиданные словосочетания.

Взлом графических паролей: пользователи иногда используют в качестве паролей кодировку ASCII, например:

Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps до декабря бесплатно при оплате на срок от полугода, заказать можно тут.

класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки? Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть