Вы находитесь здесь: distributed.ru » Проекты распределённых вычислений » RainbowCrack
RainbowCrack
Цели
Тогда как некоторые хорошо известные нам проекты тратят миллионы компьютерных лет на взлом одного пароля, проект RainbowCrack предлагает за такое же время (полный перебор) создать таблицы, в которые записать все возможные пароли и соответствующие им хэши по всем распространённым в мире алгоритмам хэширования. Обычно, хэшированный вариант пароля хранится в открытом доступе и известно, по какому алгоритму получен этот хэш (например MD5), но обратное преобразование считается слишком сложной операцией, требующей в общем случае перебор всех возможных комбинаций - это ставится в основу безопасности многих современных систем. Если же иметь сортированные таблицы хэшей и соответствующие им пароли - получим систему, которая с помощью быстрого бинарного поиска по таблице может получать обратное преобразование хэша в пароль для любого существующего алгоритма хэширования.
Основная проблема: таблицы всех возможных паролей занимают слишком большой объём на дисках. Поэтому используется оригинальный формат таблиц: хэши собираются в цепочки по несколько тысяч комбинаций - каждая следующая комбинация получается из предыдущей очередным применением той же функции хэширования. В таблицы записывается только начало и конец каждой такой цепочки. Для того, чтобы найти пароль по такой таблице, нужно применить к заданному хэшу точно так же функцию хэширования несколько тысяч раз (в зависимости от используемой длины цепочек) и на очередной итерации получим хэш, который является концом одной из цепочек в наших таблицах. После чего прогоняем эту цепочку заново от начального хэша до нужного нам и находим комбинацию, предшествующую нашему хэшу - это и есть искомый пароль.
Такие таблицы называются Rainbow Tables (отсюда и название проекта). Их ценность в том, что они с одной стороны имеют объём в тысячи раз меньше обычных таблиц, содержащих все возможные пароли, с другой - позволяют найти за несколько минут обратное преобразование любого алгоритма хэширования, если искомый пароль был просчитан заранее в этих таблицах.
Результаты
Сейчас в проекте уже создано 900 ГБ таблиц, которые позволяют с вероятностью порядка 99% найти за несколько минут обратное преобразование из хэша в любой пароль длиной до 7 символов (не только из букв, но также цифр и многих спец-символов), зашифрованных по алгоритмам LanMan (авторизация в Windows), NT LanMan (авторизация в Windows NT, в том числе сетевых доменах), MD2, MD4, MD5, SHA1, RIPEMD-160, Cisco PIX (большинство маршрутизаторов), MySQL 3.23, MySQL SHA1 (базы данных).
Всем участникам проекта предоставляется возможность уже сейчас пользоваться полученной системой расшифровки паролей в виде онлайн-сервиса - частота использования сервиса одним участником неограничена, но ограничено время действия каждого аккаунта. Для продления времени доступа участникам предлагается рассчитывать новые таблицы, увеличивающие количество поддерживаемых алгоритмов и комбинаций паролей. Обычно на расчёт таблицы уходит от нескольких дней до недели процессорного времени (2 ГГц) - за каждую таблицу время доступа продляется на 2 недели. Естественно, можно использовать любое количество компьютеров под одним аккаунтом - я обеспечил себе доступ на 3 года вперёд за 3 месяца - впрочем, мой вклад составляет около 10% всего проекта.
Особенности
Pro
- Доступ к мощной системе расшифровки паролей, которую можно использовать в своих целях.
- Консольный клиент с открытыми исходниками, которые компилируются под большинством О/С. На сайте выложены готовые бинарники под Windows, MacOS и OpenBSD. Можно считать и под FreeBSD, собрав клиент из исходников самостоятельно.
- Может продолжать расчёт таблицы после зависания машины или некорректного прерывания процесса.
- Почти не требует памяти при расчётах (2 МБ).
- Почти не требует входящего трафика (задание для 1 таблицы занимает несколько байт).
- В комплект клиента кроме генератора таблиц включена программа, которая может расшифровывать конкретные пароли по полученным таблицам. Кроме того, в них легко добавляются новые алгоритмы хэширования и наборы перебираемых символов. Таким образом, есть всё что нужно для создания собственного распределённого проекта, аналогичного RainbowCrack. ;)
Con
- Рассчитанные таблицы занимают 640 МБ или около 300 МБ в архивированном виде (лучше всего жмёт 7-Zip). В результате сжатый трафик с одной машины, считающей таблицы круглосуточно, может быть до 3 ГБ в месяц. Хотя это лишь исходящий трафик, который для многих пользователей бесплатен.
- В готовых нынче таблицах нет паролей из символов кириллицы, и пока нет из букв смешанного регистра - только прописные, либо только строчные. В будущем вероятно доберутся и до смешанных. С другой стороны, самый интересный вид паролей - LanMan (Windows) - вообще не различает строчные/прописные символы. Более того, из-за Microsoft'овской специфики, по таблицам до 7 символов оказалось возможно расшифровывать Windows-пароли длиной до 14 символов!
- Система получения и отправки заданий не автоматизирована. Таблицы для обсчёта резервируются на сайте самостоятельно и скармливаются клиенту (можно набрать любой объём заданий). Результаты заливаются на сервер по FTP (поддерживается докачка :) или HTTP.
- Нет ни командной, ни личной статистики участников - каждый видит только суммарные результаты проекта и собственный объём посчитанных таблиц, пропорциональный своему времени доступа к сервису по расшифровке паролей. Таким образом участвуют те, кто лично заинтересован в использовании результатов проекта.
Ссылки
Русский аналог проекта
Не так давно у этого проекта был и русский аналог - http://passcracking.ru, предоставлявший всем желающим свободный доступ к системе расшифровки паролей по принципу всё тех же Rainbow Tables, но у него меньше готовых таблиц - только по алгоритму MD5. Все таблицы рассчитываются создателем проекта самостоятельно, работает он на базе Московского Авиационного Института.
После переписки с ним выяснил (AlexeyPetrov), что он тоже заинтересован в распределённых вычислениях таблиц, но лень было организовать их хотя бы на уровне проекта RainbowCrack. :)
Сейчас русский проект почему-то недоступен. Возможно откроется снова чуть позже, т.к. планы у создателя были просто наполеоновские! :)