Хабрахабр

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

Приветствую всех и благодарю за то, что вы сделали мою презентацию завершающей конференцию DEFCON в этом году. Я очень ценю это и постараюсь вас не разочаровать. Меня зовут Мэтт Уийр, я аспирант Университета штата Флорида. Прежде чем мы начнём говорить непосредственно о взломе паролей, я хочу сказать о том, что работаю с очень хорошей командой, и назвать её членов прямо сейчас. Это мой руководитель, профессор, доктор Сидир Эггрвол, который приложил свою руку к моей презентации и профессор Брено де Медейрос. Также мне хотелось бы поблагодарить Национальный институт юстиции и Национальный центр криминальных исследований «Белые воротнички» за финансирование моих исследований.

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

Таким образом, основная цель моего исследования – это помочь юриспруденции.

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

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

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

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

В этой презентации я постараюсь избежать подробного описания использованных мною инструментов и мелочей. Я думаю, что гораздо легче взломать что-то, вместо того, чтобы его исправить. Я не хочу бесполезно тратить ваше время. Я не собираюсь провести следующие 50 минут за разбором каждой командной строки программы John the Ripper, которая служит для восстановления паролей по их хешам, или анализировать страницу за страницей, как часто люди используют в качестве паролей названия спортивных команд.

Пожалуйста, оставляйте свои комментарии и не стесняйтесь сказать, если вам кажется, что мы делаем какие-то глупости. Если вам интересны подробности, вы можете посетить поддерживаемый мною блог взлома паролей www.reusablesec.blogspot.com или сайт с моими инструментами и документацией, которые свободно размещены в интернете по ссылке www.reusablesec.sites.google.com. Я действительно ценю такие комментарии, потому что это лучший способ оценить эффективность нашего труда.

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

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

Пользователи идиоты, потому что создают дурацкие пароли, и вообще, мы все обречены»! Вы можете сказать: «О, мой Бог, пароли — это отстой! Я имею в виду, что мы знаем в течение многих лет, что огонь горячий, вода мокрая, что пользователь просто выберет пароль 1-2-3. Да, я мог бы провести время, высмеивая пользователей, потому что это весело, но совершенно не продуктивно. Но мы, как сообщество безопасности, должны выяснить, что с этим делать. Это не ново.

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

Взлом паролей становится сложным занятием, потому что люди начинают использовать надёжное шифрование, более сильные хеши паролей и относится к паролям с большей ответственностью. Есть много различных факторов, которые позволяют избавиться от любой «воды», оставив только безопасность. Я надеюсь, что Windows 7, наконец, воткнёт осиновый кол в сердце XP, и мы начинаем видеть всё меньше и меньше случаев использования алгоритма безопасности WEP для сетей Wi-Fi, несмотря на то, что он всё ещё достаточно широко распространён вокруг. Я думаю, что именно поэтому наблюдается такой интерес к взлому паролей. Я имею в виду, что нам стоит работать над проблемой защиты паролей от взлома вместо того, чтобы разрушить существующую систему.

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

В первую очередь мы создали базу паролей для взлома с использованием данных CISSP — независимой сертификации по информационной безопасности. Я хочу сосредоточиться на двух различных тематических исследованиях. Мы собирали множество паролей везде, но эти два источника, phpbb.com и webhostingtalk.com, были лучшими, потому что там имелись очень большие списки паролей в открытом доступе.

Я не буду устраивать вводный курс в CISSP, потому что вы знаете язык и терминологию. Поэтому сначала поговорим о взломе паролей из списка phpbb.com, а затем о результатах взлома webhostingtalk.com. Итак, поговорим об основах взлома паролей. После этого я устрою небольшой перерыв, и вы сможете задать вопросы, связанные с исследованиями при помощи программы TrueCrypt, а также поговорить о некоторых парольных фразах и о нестандартных паролях.

Первый – это пароли онлайн. Существует два различных типа паролей и, соответственно, два способа их взлома, и они сильно отличаются друг от друга. Поэтому вы пытаетесь туда проникнуть, подбирая различные имена пользователей и пароли. Из фильмов вы знаете, что у вас вообще может не быть доступа к сайту, если вы не знаете пароль. Главное в этом то, что создатели сайтов стараются защитить себя от хакеров при помощи дополнительных функций, например, ограничения количества попыток ввода данных авторизации.

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

В действительности, после того, как злоумышленник взломал сайт и скачал все пароли и имена пользователей, он ограничен только временем, по истечении которого его могут поймать.

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

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

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

Компьютерная криминалистика предполагает, что у вас уже имеется хеш пароля, в нашем случае этими данными был заполнен весь жёсткий диск компьютера. Первый этап касается автономного взлома паролей. Для этого вы используете первую попытку, предположим, password123. Итак, первый шаг, который вы должны сделать, это попытаться угадать, что за пароль придумал пользователь. В большинстве случаев используется простой и быстрый алгоритм хеширования MD5. Затем вы хешируете его и получаете набор букв и цифр 52F8A73082B1290. Если он совпал, вы взломали пароль. После этого вы сравниваете этот набор с имеющимся у вас хешем реального пароля пользователя, например, 82503CA693453D1. Вы повторяете это снова и снова, пока вам не надоест и вы не бросите это дело. Но так как 52F8A73082B1290 ≠ 82503CA693453D1, вы повторяете попытку и используете догадку monkey123.

Слева: как это представляют себе знатоки шифрования.

Давай создадим дешифровщик стоимостью миллион долларов и взломаем его»!
— «Не пойдёт, это 4096-битный шифр»!
— «Чёрт! — «Его ноутбук зашифрован. Наш преступный план провалился»!

Справа: как это обычно случается.

Напоим его и будем бить этим пятидолларовым гаечным ключом, пока он не скажет нам пароль"!
— «Согласен»! — «Его ноутбук зашифрован.

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

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

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

Поэтому при создании «изюминок» нужно учитывать такие важные вещи:

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

Однако данный способ не защищает пользователя от атак другого рода, и вам всё равно придётся подумать над тем, как сделать взлом хеша паролей относительно «дорогим» для преступника.

А теперь давайте перейдём непосредственно к вопросам взлома паролей.

У меня есть стационарный компьютер с двухъядерным процессором частотой 2,4 ГГц, 3 ГБ оперативной памяти и видеокартой NVidia GeForce 8800GTS, которому уже 2 года. Меня обычно спрашивают, какое оборудование я использую при взломе паролей. Я также немного пользуюсь этим MacBook. Это не какая-то особая машина для взлома паролей. Так что всего у меня 2 компьютера.

К сожалению, через пару недель исследований счёт за электроэнергию увеличился на 75%.

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

Раньше я использовал генерацию словаря RainbowCrack Table. Сейчас почти все операции по взлому паролей я провожу на компьютере в институтской лаборатории. Поэтому когда вы рассматриваете моделирование угроз, следует учитывать, что атакующий определенно может бросить на это намного больше ресурсов. Когда вы слышите что люди говорят о вас, будто у вас целые стеллажи чего-то вроде Play Station 3 и целый ботнет для взлома паролей, хочется ответить: «знаешь, чувак, у меня есть всего лишь лабораторный Dell». Это сайт разработчиков программного обеспечения phpbb. Например, на взлом такого сайта, как phpbb.com. Злоумышленник разместил много информации о хешах паролей, именах пользователей сайта, e-mail аккаунтах, а также очень подробное описание самой атаки. Он был взломан ещё 14 января 2009 года, а этот список был опубликован в интернете в начале февраля.

Однако это новый и довольно редкий алгоритм, поэтому в своих исследованиях мы взламывали только пароли с традиционными хешами MD5. Это было довольно хорошее «чтиво», а сам список содержал примерно 259 тысяч MD5 хешей паролей без «изюминок» и 83 тысячи захешированных паролей с «изюминками», при создании которых использовался алгоритм хеширования phpbb3. Поэтому мы сосредоточились на списке паролей MD5. Мы исключили из рассмотрения пароли с «изюминками», потому что их взлом слишком трудоёмкое занятие, и мы не особо в этом разобрались. Так что пароли с «изюминками» защищены намного лучше, и любой хакер предпочтёт иметь дело с чем-то более лёгким.

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

В течение одного или двухнедельного периода хакер использовал онлайн-взлом паролей, пытаясь взломать около 117 тысяч аккаунтов. Далее мы рассмотрели список паролей взломанного сайта webhostingtalk. Так что проанализировав результат, можно сказать, что даже в результате мощной онлайн-атаки хакеру удаётся взломать не более четверти всех имеющихся паролей. В результате ему удалось добыть 28635 паролей, что составило 24% от общего количества.

Результаты взяты с сайта http://www.hashkiller.com/, большинство из них касается Германии. Далее я приведу сравнение эффективности онлайн взломов паролей. Согласно статистике, успех онлайн взлома составляет от 20 до 40% от всех имеющихся у хакеров паролей. Но Babel Fish делает намного лучше – они не только имеют собственные форумы взломщиков онлайн-паролей, но и отслеживают эффективность большинства других сообществ взломщиков. Их можно скачать по этой ссылке: http://sourceforge.net/projects/md5-utils/. Существуют хакерские утилиты MD5, которые собирают хеши онлайн паролей с множества сайтов. В настоящее время насчитывается 33 сайта, где могут использоваться эти утилиты.

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

На сегодня имеется несколько популярных инструментов для взлома паролей.

Но главной причиной его популярности, по которой он опережает даже платные программы, является доступность открытого исходного кода. Наиболее популярным является John the Ripper (Джон-Потрошитель), это бесплатное ПО, и я его рекомендую в первую очередь. Моей любимой опцией в JtR является STDIN. Если вы захотите взламывать пароли, эта программа справится со всем, с чем захотите. И он расшифрует хеши и попробует взломать пароли. Если вы помните вступительные слайды, то в данном случае мне не нужно выполнять стадию 1 и 2, я могу написать свою собственную программу «отгадок», а затем передать результаты JtR. Так что если вы задумались о способе генерации «отгадок», то есть вариантов паролей пользователей, вы можете составить код и использовать данную программу, она чрезвычайно мощная.

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

Потому что JtR постоянно обновляется, и вы можете подписаться на рассылку обновлений, и если бы не моя глупость, то всё было бы просто идеально. Поэтому я попытался перейти с JtR на программу Cain & Able (Каин и Авель), за что мне до сих пор немного стыдно.

Вот сколько времени я затратил на взлом паролей, несмотря на проблемы с JtR:

  • 4 часа – 38% паролей взломано;
  • 1 неделя – 62% паролей взломано;
  • 1 месяц и 1 неделя – 89%;
  • всего на сегодняшний день взломано 98% паролей, из них 95% с уникальным хешем MD5.

Цифры отличаются, потому что множество людей используют одинаковые пароли. В действительности это очень плохо. Но я не единственный, кто достиг в этом успеха. Я использовал контакты DefCon, чтобы пообщаться на эту тему с разными людьми. Например, Брендон Энрайт взломал 95% паролей с хешем MD5, причём он взломал 2525 паролей, с которыми я потерпел неудачу, а я взломал 2677 паролей, которые не смог взломать он. Из соображений конфиденциальности мы обменялись с ним не списками паролей в виде простого текста, а цифровой формой данных.

Потому что мы всё ещё учимся взламывать пароли, и я не самый крутой хакер, а просто студент, который учится этому делу. Я получил письмо от другого человека, который сообщает, что его результат достиг 97%, и я ему верю. Вероятно, существуют и лучшие способы взлома.

Только 6% этих паролей содержали заглавные буквы и всего 1 % — специальные символы, а 51% содержал только строчные буквы. Нам удалось взломать достаточно паролей с «изюминкой» не потому, что у меня было много денег или я являюсь элитным хакером, а потому, что они действительно были слабыми, причём средняя длина этих паролей составляла всего 7,2 символа. Это без учёта 5% паролей, которые мы не смогли взломать.

Мы не могли использовать повсюду атаку типа brute-force, потому что были ограничены во времени. Хочу заметить, что мы были ограничены в ресурсах. Мы должны были предварительно сформировать у себя в голове идею относительно того, как пользователь создал свой пароль, и в зависимости от этого выбирать способ атаки. Поэтому мы должны были выбирать между разными стратегиями атак, потому что просто не могли испробовать их все. Поэтому мы старались взломать не все пароли, а только наиболее типичные.

Сделайте так, как не делают другие, и тогда хакеру будет трудно взломать ваш пароль. Я хочу сказать, что человеку достаточно просто создать действительно надёжный пароль, нужно всего лишь придать ему немного уникальности. Но трудно заставить всех быть уникальными, это черта не «встроена» в человека по умолчанию. Обычно всё, что вы должны для этого сделать – это создать пароль такой длины, чтобы его было трудно взломать с помощью brute-force. Именно благодаря этому и удаётся взламывать пароли.

Когда я говорю о «словарной атаке», я не только имею в виду ввод слов, имеющихся в словаре, но и использование правил словообразования, таких, как добавление 2 чисел в конце слов или написание слова с большой буквы. Я хочу рассказать вам о таком виде атаки на пароли пользователей, как Dictionary Attack, или атака с использованием словаря.

Первое – это «неграмотность», когда вы просто не пишите слово так, как оно приводится в словаре. Есть две основные причины, по которым Dictionary Attack может потерпеть неудачу. Второе – это когда вы не используете правила словообразования при написании сложных слов, то есть не просто добавляете в конец пароля цифры 123. Например, вы пишите zibra123, при этом такого слова, как zibra, в словаре нет. Так что если вы хотите создать действительно надёжный пароль, вам не следует использовать слова, имеющиеся в словаре.

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

Это приводит к тому, что они становятся уязвимы к атакам brute-force. Люди имеют склонность к тому, чтобы создавать избыточную коллекцию input-словарей. Поэтому, используя словари ввода при создании паролей, задумайтесь, насколько объёмными они должны быть, и не «раздувайте» чрезмерно словарный запас. Я называю это синдромом «чокнутой кошатницы», которая заводит в доме 50-60 кошек, и они загаживают всё вокруг. Подумайте, что лучше использовать для безопасности — 1 словарь или 40.

25:15 мин

Продолжение:

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

Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 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 не будет опубликован. Обязательные поля помечены *

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