Вновь я взялся за перо написания. Вынул его из далекого ящика, стряхнул "пыль веков", макнул в чернильницу и началось.
---===Описательная часть===---
Собственно, вопрос повестки дня - рассмотрение нового на нашем форуме сервиса http://www.cmd5.ru/
Итак приступим.
Заходим на http://www.cmd5.ru, оцениваем. Интерфейс не фонтан, но нам с вами рюшечки и не нужны.
В первую очередь я по старой привычке лезу в раздел Тарифы http://www.cmd5.ru/password.aspx
Что мы с вами видим - видим два варианта развития событий.
1. Online Service - чек по существующим базам паролей.
Поддерживаются следующие виды хэш кодов: md5, md5(md5($pass)), sha1, md4, mysql, mysql5, qq hash, serv-u,
md5($pass.$salt), md5($salt.$pass), md5(md5($pass).$salt), md5(md5($salt).$pass), md5($salt.$pass.$salt),
md5($salt.md5($pass)), md5(md5($pass).md5($salt)), md5(md5($salt).md5($pass)), sha1($username.$pass)
2. Background Service - брут заданного вами хэша на заявленном кластере. Громко сказано насчет кластера. Мы позже попробуем уточнить так ли это?
Поддерживаются различные варианты md5 mysql sha1.
Рис.3
Смотрим цены:
Online Service для некоторых видов хэшей бесплатен. Оплата не взимается для следующих комбинаций:
1. Длина 1-5 бит. Символы: [0-9a-zA-Z]
2. Длина 6 бит. Символы: [a-z]
3. Длина 7 бит. Символы: [0-9]
4. Длина 8 бит. Символы: [0-9]
Это конечно же приятно. Но всего 5 символов на пароли в базах
Далее:
Online Service
4 hash 1000 hash 50000 hash 1000000 hash
4$ 20$ 200$ 1000$
Background Service
2 hash 50 hash 1000 hash
2$ 20$ 100$
Ну, тут все ясно. Цены вполне приятные. Самый хилый расклад - 1 пасс = 1$ для любого типа услуг, но с поправкой на то, что при использовании брута нет гарантий на успех.
Разница в скидках тоже ясна и политика сервиса тоже. Чек по базе - это одно, а нагрузка на серваки для брута - это совсем другое. Вообщем вполне приемлемо. т.к. при бруте локальной машиной больше бабла заплатишь за электричество. Да и комп постоянно занят будет.
Но политика сервиса неоднозначна в плане платежей. Ну, нужно мне, допустим, 5 паролей подобрать (допустим все с первого раза), получается я должен за них 20$ заплатить? При таком раскладе цена пароля не один бакс, а четыре!!! Неправильно на мой взгляд. "Скок хочу - сток ложу" - это правильнее было бы, на мой взгляд + система бонусов.
Далее мы регистрируемся. Регистрация занимает ровно 20 секунд. Никаких подтверждений и сложных паролей. Я зарегился с пассом 123123.
Ну да и пофиг. Я же надеюсь, что никто не будет брутить мой акк? Ну или будут? Вот интересный вопрос, а как скрипт авторизации относится к бруту?
Лезу проверять все что заявлено и тут же нахожу парадокс:
на главной странице можно чекать хэши поштучно, и есть групповой чек.
А типы хэшей разнятся. Рис.1 и Рис.2
Ну почему руками я могу пробить хэш практически любого формата, а копипастом листа нет?
Ладно, на все эти мелочи можно закрыть глаза, если сервис покажет себя с лучшей стороны в работе.
Приступим ка мы лучше к тестам.
---===Тесты===---
Для анализа мы возьмем пароли различного уровня сложности и разных форматов:
root - самый простой (4 символа в нижнем регистре)
12227000 - цифровой (8 цифр)
t00r mega - смешанный букво-циферный + пробел, 9 символов. (1 пробел, 2 цифры, 6 символов нижнего регистра)
AdM1ncH3gg1247 - смешанный букво-циферный 14 символов в разном регистре (5 цифр, 3 буквы в верхнем регистре, 5 букв в нижнем регистре)
$aL0 BbIl0 TUT* - смешанный букво-циферный, со спецсимволами. 15 символов (2 спецсимвола, 2 пробела, 2 цифры, 2 символа в нижнем регистре, 6 символов в верхнем регистре)
адидас - простой пароль, но на русском языке.
Итак конвертить будем при помощи passwords pro. Тестить будем на md5, double md5, sha1, mysql5 массовым чеком.
md5
63a9f0ea7bb98050796b649e85481845 - найден
bfac3193e9e16cbe8605350433999c1a - найден
6cf1cc8d94add3f076f069643b48dc73 - не найден
882ee12fe082589a9441ffef69fa34db - не найден
dba976f5c4c5bd66fca0b8e5531c086a - не найден
df64dc2eb4a0b85091dd31eb4923eaac - найден*
Рис.4
* Пароль на кириллице был найден, но вместо ответа были выданы вопросики. Решил протестить через главную страницу. Ввел пароль, мне сказали что пароль в базе найден и предложили купить его. Нажал кнопку купить и вновь увидел вопросики... Это что за приколы?
double md5
b9be11166d72e9e3ae7fd407165e4bd2 - найден*
1f3b36e025b5c356463f586def7ed403 - не найден
606bc8d3451b40a4d6c5adcbccf1119e - не найден
ba3d71b14d4d63ab745721f3c1a97247 - не найден
781dbd0e6f8bbc0d8e68c4d316012a84 - не найден
0a24a3c37af9b1abe5b157d7082c0af0 - не найден
Рис.5
* вместо пароля мне показало его хэш первого уровня... Взял хэш, перекинул его в первое поле и изменил условие поиска, только после этого получил результат... Рис.6
sha1
dc76e9f0c0006e8f919e0c515c66dbba3982f785 - не найден
28a7df57d0cd745decfefe396b8884256ecc03a6 - не найден
5c35190c23dc2fafac8a9d551e45c95b4e881361 - не найден
aece4055e2ac9a9a61b52c0f2f8009eb1794667b - не найден
7cb891cc0ad556a88685970290d4e475a1bf885b - не найден
00026b85ea15a4c308623a853ece6a5211a2f731 - не найден
Рис.7
mysql5
81f5e21e35407d884a6cd4a731aebfb6af209e1b - найден
fac48d7e572c78d4aaf44711832af1b482e67968 - найден
a1b5dfe04a6fc76d669ff63bfc5cfcc6932fad5b - не найден
25e5903bd16fd4db6ff69fe939276440dbe5b0e8 - не найден
d135a257f91faad97092bd94b255f3d0abc07f81 - не найден
ce6b71f2c47b3051c478398503905cb6be7da47e - найден
Рис.8
Походу теста возник вопрос, если я брутил пароль, и сбрутил его, в их базы добавляются все возможные хэши пароля или только искомый? Спросим позднее об этом представителя сервиса...
Ладно. Осталась надежда на "кластер". Попробуем сбрутить.
Берем не найденные пароли из каждого захода:
md5 - принято к бруту 3 пароля. Рис.9
double md5 - к бруту принято лишь три пароля. Рис.10 Предложили два проверить на главной. И о чудо!!! С главной я получил результат за $. Почему тогда при массовом чеке результата не было???
sha1 - -//- Рис.11
mysql5 - -//- Рис.12
Я тут в одном тесте промазал и вместо mysql оставил sha1. Сервис не говоря ни слова принял их к бруту и скушал деньги с баланса. И тут я начал считать длину хэшей. В обоих случаях по 40 символов. Но в описании есть строки о том, что SHA1 пишется только в нижнем регистре, а mysql5 только в верхнем. Поиск по хэш-генераторам в сети четкого ответа не принес т.к. при генерации оба хэша показывались в нижнем регистре. И как различить два вида хэша я в данном случае не знаю.
Ждем итогов брута...
Результаты плачевны. Пароли не подобрало. Рис.13
И тут вылез еще один косяк. Мой любимый passwords pro оказался муда**м. Он оказывается с великим и могучим не дружит ни разу.
Слово адидас по онлайн сервисам http://xss.pro/index.php?act=toolz и http://fredomkb.free.fr/testdirlist/text2md5.php имеет совершенно другой хэш.
69a11ac70caf7427c78ec34d21c5d313. А хэш использованный ранее реально принадлежит "?????" (пяти вопросам подряд), таким образом придется начинать этот тест сначала.
Пришлось перечекать это слово заново. Итог изменился не в лучшую сторону. Такого слова в базах нет. Рис.14
Поставил на брут новый хэш. А вдруг сбрутит...
Результаты брута ничего не изменили. Искомые пароли не найдены. Ни в латинских, ни в кириллической раскладке. Рис.13
---===Тест2===---
Ну бог с ним. Допустим во мне где-то живет злой админ и генерит страшные и сложные пароли. Лезем в сеть и находит самые часто используемые пароли:
letmein - top100
ncc1701 - top200
jasper - top300
redskins - top400
mistress - top500
(по статистике сайта http://qtxt.ru/500passwords)
md5 - Найдены все. Рис.15
double md5 - 1 и 3 пароли типа были в базе, но вместо пароля мне показало хэш первого уровня.
sha1 - совпадений при групповом чеке найдено не было.
mysql5 - совпадений при групповом чеке найдено не было.
Проверяем с учетом найденной баги через главную эти же пароли:
letmein - md5 - найдено
ncc1701 - sha1 - найдено
jasper - MySQL5 - найдено
redskins - double md5 - найдено
mistress - md4 - не найдено. Отправляем на перебор - успешно! Рис.16
---===Тест3===---
Я достаточно требователен был к этому сервису. Мне все хотелось магического исполнения моих желаний и никоим образом не облома.
Перечитав более внимательно параметры брута я сократил сгенеренные мной пароли до 8 циферно-буквенных, но они не массовые, я их сгенерил слепым двухпальцевым методом.
А то из всех возможностей системы я использовал только эту:
"1-15 бит другие данные Частично включено >28000 миллиардов и 1-20 бит Уникальный словарь 900G > 910 миллиардов"
Покурил условия еще раз. Поматерился. Потребовал у представителя выделить их красным и жирным...
Для 32-бит MD5 перебор осуществляется по комбинациям случайных символов длиной 1-7 бит, символов нижнего и верхнего регистра из 1-8 бит, символов нижнего регистра и цифр из 1-9 бит, а также комбинаций цифр длиной 12 бит.
Для всех остальных типов хэшей перебор осуществляется по комбинациям символов нижнего регистра и цифр длиной 1-9 бит с использованием уникального словаря объемом 200Gb.
т.к. я юзал double md5 и SHA1 - пришлось еще и верхний регистр убрать.
Проверяем повторно брутилку.
ставим 2 пароля в md5, два в double md5 и два в sha1.
md5
h8g6fg0h7 - 2db4e3a3bdf3b3b7e81fe5df04034941 - подобрало
Wq64aU08 - fefd5b8c678ac57558635087c50ef1f0 - подобрало
247500854976 - 2bbe31ca8697161ca2eab34a9d6ee9c8 - подобрало (я ради эксперимента поставил этот же пасс брутиться на своей локальной машине. Использовал passwords pro. Заведомо зная что там только цифры - поставил в условиях брутить только цифры. Длина пароля 1 -12 бит. В иттоге на рабочем семпроне-8450 время брута чуть больше двух суток показало. Сервис же справился минут за 5. Очень даже неплохо.)
SHA1
4i50sq06h (генерированный) - dd79d461fecc01d363964fee3100dbcf85cec18f - не подобрало
lalarab6 (человекоподобный) - 47e69b5552142bd7bebe6446c4b1da19cac9f087 - не подобрало
MySQL5
mn8s7258 (генерированный) - a24987b7e87de0e3ff77e959619a2dabd1f9343a - не подобрало
jafopox1 (человекоподобный) - 88cb5e70e92b3c1aed988647c0fe63de7048d57f - не подобрало
---===Часть моей переписки с автором:===----
Вопрос: Сколько вы уже "на рынке"?
Ответ: На Российском нисколько. На Европейском и Китайском с 2006.
Вопрос: Сколько человек трудится над проектом?
Ответ: Над проектом работает 4 человека.
Вопрос: Вы писали про кластер. Что имеется ввиду? Несколько компов у вас дома, несколько серверов в одном дата-центре или несколько серверов по всему миру разбросанных? Раскройте секрет ПО используемого на ваших серверах, это самописный софт или хитрым образом объединенные наработки opensource? Брутится за счет CPU/GPU?
Ответ: Проект русско-немецко-китайский. Вычислительный центр расположен в Китае. Кластер построен на 10 серверах с использованием open-source технологий apache hadoop. Расположен в одном ДЦ. В Online service ключевую роль играет HBase, позволяющая быстро работать с такими объемами данных. В Background service используется самописное ПО использующее возможности GPU.
Вопрос: Почему в групповой отбаботке типов хэшей меньше чем в одиночной?
Ответ: В групповую обработку были добавлены часто используемые типы хэшей. Но в вашем вопросе вижу смысл, можно и добавить. Правда мне кажется мало кто группой обрабатывает md5(md5($salt).md5($pass)).
Вопрос: Почему политика именно на определенное количество проверок и оплат? Если мне хочется закинуть 27$ - я не могу этого ессно сделать.
Ответ: Чисто маркетинговый ход.
Вопрос: Как только сбрутили пасс, его хэши сразу попадают в вашу базу? Во всех различных вариантах или только в том, в котором был сбручен?
Ответ: Да сразу.
Вопрос: Меня больше интересует вторая часть вопроса. Все возможные хэши попадают в ваши базы или только тот, который брутился.
Ответ: Нет. В данный момент только одного типа, который искали.
Вопрос: Используются ли кирилические символы при бруте?
Ответ: Нет. Мы не поддерживаем кириллицу ввиду различных видов кодировок. Также как и все крупные проекты, использующие хэширование.
Вопрос: Зачем было писать отдельный софт под net framework? Это можно было на php все оформить.
Ответ: Ну если я правильно вас понял, то на серверной стороне групповой взлом хэшей и так реальзован в виде групповой обработки. А framework сделан для того, чтобы предоставить пользователю, при необходимости, возможность удаленной работы. Я согласен с тем что софт вызывает подозрение, но система без него самодостаточна и не обязывает им пользоваться. Я считаю что со временем постоянным пользователям будет удобно им пользоваться.
---===Вместо эпилога===---
Сервис очень хорош в поиске md5. База довольно обширна, 200GB лист - это впечатляет. Цены приятные. Брут очень шустрый и подбирает правильно.
Что же касается НЕ md5 - тут все несколько хуже. Брут крайне ограничен длиной и сложностью пароля. Базы не особо помогают в этом деле.
Что касается ошибок в работе интерфейса - о них было сообщено представителю сервиса. В настоящее время все они были оперативно исправлены и сервис работает как нужно. Что можно посчитать плюсом в отношении оперативности персонала.
p.s. А вообще - остался в принципе доволен работой сервиса. Основную функцию он тянет на ура. А вот уже всякие мои закидоны не удастся уместить ни в одной базе данных. Пользователям сервиса и читателям этой статьи хочу напомнить, что брут вашего замысловатого пароля штатным компом затянется очень надолго, а зайдя на сервис вы можете бесплатно узнать есть ли такой пароль в их базе и только после этого оплатить покупку. Разве не удобно? (А сам сижу и вспоминаю как ночами брутил пароли, а комп мешал спать... Киловатты потраченного электричества...)
Хочется так же отметить высокую реакцию саппорта и хорошее самообладание. Я в процессе тестов часто провоцировал нестандартные ситуации. Результат реакции всегда был доброжелательным и подробным.