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, были лучшими, потому что там имелись очень большие списки паролей в открытом доступе.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

25:15 мин

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

Конференция DEFCON 17. Взлом 400 000 паролей, или как объяснить соседу по комнате, почему счёт за электричество увеличился. Часть 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 до декабря бесплатно при оплате на срок от полугода, заказать можно тут.

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

FavoriteLoadingДобавить в избранное
Posted in Без рубрики

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

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