Сварщик Ненастоящий (llivejo) wrote,
Сварщик Ненастоящий
llivejo

Category:

храните пароли в сберегательных файлах

(уныло):
— Меня зовут Версус, и у меня проблема.
(нестройный хор):
— Здравствуй, Версуc...

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

Ближе к делу. Когда-то давным-давно я сконфигурил некоторые корпоративные железки, выставил пароль на них, записал в менеджер паролей, которым в то время у меня был Keyring for PalmOS. Палм-то тогда интенсивно использовался, сначала Palm Pilot, купленный на Молотке в 1999-м, потом Palm m100. Это сейчас в любом телефоне календарь есть, а тогда незаменимая вещь была: напоминалки, контакты, тексты, пароли.

Потом году в 2005-м от Палма я отказался, пароли все экспортировал утилиткой, часть записал куда-то, но уже ничего удобного для постоянного использования найти не удалось. N800 тогда еще не было, в телефоне пародия какая-то, а не хранилище паролей, на десять паролей всего. В тот период много паролей в открытом виде хранилось, часть потерялась, ужас-ужас-ужас.

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

И всё. Мастер-пароль давно забыт, в файле-базе Keys-Gtkr.pdb хранится только 20-байтный hash в виде [4 байта salt и 16 байт md5($salt.$passwd)], для проверки правильности введенного мастер-пароля. Сами записи шифруются по алгоритму 3DES ключом, полученным из мастер-пароля.

Вроде и MD5, и 3DES уже считаются небезопасными, однако в данном случае это не помогает: для MD5 найдены только способы быстрее искать коллизии, пароль из MD5-хеша восстановить нельзя, можно только найти готовый, в заранее вычисленных таблицах MD5, в чьих-нибудь «радужных таблицах». А если хеш «соленый», как в данном случае (salt перед паролем), то готового хеша точно не существует, найти пароль можно только брутфорсом, полным перебором всех комбинаций всех возможных в пароле символов.

3DES тоже еще крепок, нет атак, которые позволяют сократить пространство перебора его 112-битного ключа, а это ~1034, даже несмотря на known plaintext. Не получается. Самый быстрый способ — «в лоб», причем 3DES медленнее, перебирать надо MD5, им целостность больших файлов проверяют, значит быстрый. Попутно выяснилось, что не так прост md5crypt, которым пароли нынче шифруют, FreeBSD-совместимые, те самые, что в /etc/shadow лежат, да-да, и в любом линуксе тоже. Так вот, этот md5crypt - это тысяча раз MD5, c подстановками пароля и соли по ходу дела.

Значит, брутфорс. Про тот старый мастер-пароль ничего не помню. Помню только что геморройно было его росчерками-граффити вводить. Маловероятно, что он был больше 12 символов, но уж 8 никак не меньше, я ж параноик. Символы пунктуации вряд ли в нем были, но заглавные буквы и цифры - наверняка. Итого по меньшей мере 628, около 4.5 * 1014 вариантов.

Стал искать переборщики паролей, вспомнил о John The Ripper. Нашел свежие патчи к нему, умеющие перебирать именно нужный мне вариант md5($salt.$passwd), там это называется "md5_gen(4)". Скорость перебора близка к обычному raw MD5 — делов-то, перед пробуемым паролем несколько байт неизменяемой соли вставить. Жаль только вот, что даже на двухядерном современном процессоре быстрее чем 2.4 миллиона паролей в секунду перебрать не получится, значит для полного перебора даже восьмибуквенного пароля нужно больше тысячи дней. FAIL.

Поискал, как можно распараллелить перебор. Посмотрел на MPI-патчи, решил что больше десятка машин не смогу на это дело подрядить, все равно не меньше ста дней получается. Где-то в обсуждении наткнулся на упоминание использования проца видеокарты в брутфорсе. Поискал, нашел MD5-переборщик, на видеокарте Nvidia перебирающий 350 миллионов паролей в секунду. Это совсем другое дело, неделя на полный перебор!

Однако моего варианта md5($salt.$passwd) он не умеет, исходников нет, автор не отвечает. Посмотрел на аналоги с открытым кодом, Vernoux GPU md5_crack, olcrack, ни у кого такого нет. У платного Extreme GPU Bruteforcer есть, 155 миллионов паролей в секунду.

Вот, думаю что делать. Купить GeForce GTX 250 за сто евро и Extreme GPU Bruteforcer за €40. Настроить всё и надеяться, что за неделю пароль найдется. Или заплатить кому, у кого железо помощнее?
Tags: админское
Subscribe

  • админом, не программистом

    Супруга как-то жаловалась, что не может пользоваться своей старой почтой с телефона, потому что спама много и всё тормозит. Почтовый ящик очень…

  • эксгибиционизма-на-работе пост

    Решил показать вам мое рабочее место (сорри, снимал телефоном): Кто помнит, какой был срач, — порадуйтесь за нас :-) Теперь чисто и светло. А…

  • воскресенье, пятнадцатое

    В пятницу вечером сдох Персональный Сервер™, блок питания навернулся. Легли почта, джаббер, вики. Хорошо что хостится он в хорошем месте, тут же всё…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments