Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Взлом паролей с помощью GPU. Часть I - подготовка

Оригинал: Hack and / - Password Cracking with GPUs, Part I: the Setup
Автор: Кайл Рэнкин (Kyle Rankin)
Дата публикации: 15 мая 2012 г.
Перевод: Алексей Жбанов
Дата перевода: 18 ноября 2012 г.

Добыча биткоинов осталась в прошлом. Используйте дорогие и мощные GPU для взлома паролей.

Когда всеобщее увлечение добычей биткоинов достигло своего пика, я захотел присоединиться к новому сообществу и заработать немного "легких" денег. Меня привлекали не только деньги, концепции, лежащие в основе добычи биткоинов заинтриговали меня - в частности, новый способ использования графических процессоров (GPU). С помощью не слишком дорогих видеокарт вы могли бы заработать достаточно денег, чтобы в относительно короткие сроки компенсировать ваши первоначальные инвестиции и счета за электричество.

Затем Bitcoin "накрылся медным тазом". И это, в общем-то, меня не особо огорчило, поскольку я не успел заморочиться созданием собственной "буровой". Кроме того, я нашел более интересное применение "железу" для добычи биткоинов: взлом паролей. Добыча биткоинов и взлом паролей - весьма схожие операции, а GPU может взламывать пароли намного быстрее, чем процессор или даже небольшой кластер процессоров.  В этой статье, состоящей из двух частей, я объясню, как настроить и использовать компьютер для взлома паролей. В первой части я остановлюсь на принципах, лежащих в основе взлома паролей и общей настройке оборудования. А о конкретных методах атак с примерами команд я расскажу в следующей статье.

Законные основания для взлома паролей

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

Тем не менее есть вполне легальные причины взламывать пароли, в особенности для системного администратора или веб-мастера:

  • Проверка надежности паролей локальных пользователей;
  • Возможность удостовериться, что пользователи соблюдают политику, принятую в отношении паролей;
  • Способ понять, какова должна быть эта политика;
  • Криптография сама по себе - интересное занятие;
  • Добыча биткоинов больше не приносит прибыли.

Многие системы на базе Linux запускают простую атаку по словарю при смене пароля, чтобы проверить, не слишком ли он прост. И хотя в наши дни большинство систем управления паролями не позволят пользователям установить себе пароли, не отвечающие требованиям парольной политики, некоторые системы просто сообщают пользователям, что их пароли "слабы" и все же позволяют их использовать. В любом случае имеет смысл проводить аудит паролей в компании, хотя бы для того, чтобы убедиться, что случайный хакер с видеокартой за 300 $ не сможет взломать ваши пароли за день-другой. Когда вы пробуете себя в роли взломщика паролей, вы начинаете понимать, какие пароли легко "вскрыть", а какие - почти невозможно и накопленный опыт поможет вам понять, что пришла пора обновлять требования парольной политики.

Введение в хеши паролей

Хеши паролей были придуманы для решения одной хитрой задачи. Если пользователи должны вводить пароли для того, чтобы войти в систему, то вы должны где-то в системе эти пароли хранить. Каким же образом сделать это так, чтобы они не хранились в виде открытого текста, но при этом можно было бы проверить, правильно ли пользователи их набирают при входе в систему? Решением является однонаправленное шифрование паролей с помощью хеша. Идея однонаправленного хеширования состоит в том, что пароль достаточно легко зашифровать, но почти невозможно восстановить его по хешу. Если вы когда-либо скачивали ISO-образ дистрибутива Linux и запускали md5sum, чтобы проверить, не "битый" ли он, то знайте, что вы использовали очень популярный однонаправленный алгоритм хеширования MD5. Другие распространенные однонаправленные алгоритмы хеширования включают в себя семейство SHA (SHA1, SHA256 и SHA512), а также phpass, ставший де-факто современным стандартом для сайтов, написанных на PHP, например, WordPress.

Когда вы входите в систему на базе Linux, введенный вами пароль конвертируется в хеш с помощью алгоритма, который использовался при создании этого пароля. Система сравнивает полученный хеш с уже имеющимся и если они совпадают, введенный пароль считается правильным и вы допускаетесь в систему. Кстати, для примера, если вы зарегистрированы на каком-либо современном сайте, написанном на PHP и ваш пароль - "123456", то он вполне может храниться в таком виде - "$P$BPlIiO5xdHmThnjjSyJ1jBICfPkpay1".

Как происходит взлом паролей

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

Файлы /etc/passwd и /etc/shadow

Самая важная вещь, которая вам будет нужна перед началом взлома паролей - это их хеши. Поскольку мы говорим о совершенно законном использовании взлома, получить хеши будет просто. В конце концов, у вас просто обязан быть доступ с правами root к вашим собственным системам и базам данных, в том числе и к хешам паролей. В Linux эти хеши когда-то хранились в файле /etc/passwd. Вроде бы логичное место для хранения паролей, но проблема оказалась в том, что в этом файле хранятся также имена и идентификаторы пользователей, а из-за этого он должен быть доступен на чтение всем. Опять же, когда в этом файле находились данные паролей, любой локальный пользователь мог получить полный список хешей и начать их взламывать. В наши дни Linux держит хеши паролей в файле /etc/shadow, доступном для чтения только пользователю root. Что касается паролей для веб-сайтов, то их хеши обычно хранятся либо где-нибудь в файловой системе сервера, либо (и это бывает чаще) в специальной таблице базы данных.

Вторая важная вещь, которую вам необходимо знать - это алгоритм, с помощью которого были хешированы пароли, ведь для атаки нужно будет пользоваться именно им. Если вы имеете дело с хешами паролей от учетных записей ОС, то знайте, что тип хеша вы можете узнать из самого хеша. Если вы посмотрите на записи в файле /etc/shadow, то вы заметите множество странных символов с несколькими символами доллара ("$"), разбросанными среди них. Символы "$" разделяют запись хеша на следующие секции:

$id $salt $encrypted

В секции "id" содержится информация о типе алгоритма:

  • 1 = MD5;
  • 5 = SHA-256;
  • 6 = SHA-512.

В настоящее время вы скорее всего столкнетесь с паролями, захешированными с помощью алгоритмов SHA-256 и SHA-512. Поскольку тип алгоритма и соль хранятся вместе с хешем, хеши паролей Linux являются очень хорошо переносимыми. Имея хеш, вы можете скопировать его на другой компьютер и использовать для входа тот же самый пароль.

Зачем использовать GPU?

Причина использования GPU вместо CPU для взлома паролей проста - GPU работает намного быстрее. Так как взлом паролей во многом схож с добычей биткоинов, те же причины, по которым GPU быстрее ведет добычу, применимы и в отношении взлома паролей. Если быть кратким, то GPU содержит в себе гораздо больше специализированных чипов, по-настоящему быстро выполняющих 32-битные операции. В то время как CPU может выполнять множество вычислений общего назначения, чипы графического процессора могут гораздо быстрее выполнять отдельные виды операций и при этом гораздо сильнее в параллельной обработке. Если вы хотите изучить этот вопрос более подробно, то обратитесь к этому ресурсу, объясняющему его применительно к добыче биткоинов: https://en.bitcoin.it/wiki/Why_a_GPU_mines_faster_than_a_CPU.

Оборудование

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

На странице https://en.bitcoin.it/wiki/Mining_hardware_comparison приведен неплохой список видеокарт с описанием их производительности. Заглянув на этот сайт, вы наверняка заметите, что графические процессоры AMD работают намного быстрее, чем их собратья от NVIDIA, несмотря на то, что в играх наблюдается совершенно обратная картина. Причины этого явления объясняются весьма подробно, я же вкратце скажу, что видеокарты AMD решают проблемы производительности за счет использования большого количества простых маленьких чипов, быстро выполняющих 32-битные операции. Видеокарты же NVIDIA оснащены меньшим количеством более сложных чипов, приближающихся по своей сложности к CPU. Для задач добычи биткоинов или взлома паролей, где очень важны параллельные вычисления, видеокарты с большим количеством простых чипов подходят лучше. Также стоит отметить, что ПО, используемое для взлома паролей, может поддерживать работу на нескольких GPU, поэтому обладая таким ПО и поддерживающей несколько видеокарт материнской платой, вы можете обнаружить, что добились на двух дешевых видеокартах той же производительности, что и на одиночной дорогой карте.

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

  • Видеокарта: SAPPHIRE FleX 100312FLEX Radeon HD 6950 2GB: 280 $;
  • Блок питания: RAIDMAX HYBRID 2 RX-730SS 730W: 60 $;
  • Материнская плата: ASUS M4A88T-V: $95;
  • CPU: AMD Phenom II X6 1090T Black Edition Thuban 3.2GHz: 170 $;
  • ОЗУ: Corsair CMX4GX3M2B2000C9 4Gb 240-pin DDR3: 55 $;
  • Диск: Seagate ST95005620AS 500GB 7200 RPM Hybrid Drive: 100 $;
  • Корпус: уже был;
  • Итого: 760 $, с монитором - 930 $, только видеокарта и блок питания - 340 $.

Если у вас уже есть компьютер, поддерживающий современные видеокарты, вам может понадобиться купить только новую карту и блок питания. Учтите, что современные высокопроизводительные видеокарты потребляют много энергии, так что вам понадобится блок питания мощностью как минимум 700 Вт и еще выше, если вы собираетесь использовать две карты. Я пришел к выводу, что AMD 6950 обладает хорошей производительностью для своей цены, кроме того, именно эту модель теоретически можно было превратить в 6970, поменяв прошивку. Если ваш бюджет вам позволяет, вы можете купить две или больше карт 6950 и объединить их.

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

Ссылки на использованные ресурсы


Кайл Рэнкин - системный архитектор, в настоящее время - президент "North Bay Linux Users' Group". Автор книг "The Official Ubuntu Server Book", "Knoppix Hacks", "Knoppix Pocket Reference", "Linux Multimedia Hacks", и "Ubuntu Hacks".