Comments 57
Так это же Debian/Ubuntu, почему yum?

Я использовал AMI и ещё какую-то сборку из репозитория AWS, где yum шёл в комплекте, для меня он привычней. Что касается make install — это был чисто тестовый запуск, вопрос о поддержке не стоял. Хотя за ссылку спасибо, кое-что для себя прояснил.
Не думаю. Это более «промышленная» система, много отличий, да и слегка выходит за рамки «общеобразовательного взлома».
Статья мне показала главное — моя система паролей — пока не очень вскрываема… Но подумать еще немного стоит… Спасибо! Было интересно!
Огромное спасибо за статью! Дело конечно не новое, но результаты впечатляют. За ссылки отдельное спасибо. Для себя отметил «7870 XT 485 3.09 1.8726 157 » — из всех карточек наивысший индекс Mhash/J.
Отлично, значит тактика придумывания пароля для wifi вида «голивудский хакер за клавиатурой» будет жить вечно.
тогда уж «галивуцкий хацкэр топчит кнопкэ» =)) чтобы избегать соединения слов из словарей.

P.S. Вспоминается Лукьяненко с 'сорок тысяч обезьян...'' =)
Имелось ввиду то, как в кинце про хацкеров енти самые хацкеры стучат по клавиатуре =) Какраз с такой скоростю 40 символьные пароли за секунду будут генериться.
Вот кстати разве пароли по рекомендации xkcd не гораздо легче вскрываются составным словарным перебором? Все слова вполне словарные, берём обычный словарь, загоняем его в переборщик, который может составлять из слов комбинации, и на выходе получаем результат. Или вариантов (даже как в примере xkcd — 4 слова) — будет СЛИШКОМ много?
Это легко подсчитать. Допустим, у нас 100 000 возможных слов. В пароле используется 4. Тогда это (10^5)^4 = 10 в 20 степени — аналогичен 20-значному цифровому паролю (см. статистику в статье). Конечно, люди могут использовать только какие-то 10 000 из этого точно так же, как сейчас выбирают qwerty и princess вместо других слов, но всё же пространства для фантазии с многословными словами больше — ведь большинство людей знают не только английский, плюс эти слова можно коверкать. В итоге «moy super sekret» можно будет очень долго и безуспешно пытаться подобрать по словарям.

Естественно, в любом деле есть возможность накосячить и даже 64-значный пароль, состоящий из единиц вас не сильно спасёт (вероятно). Основная идея, которую выразили на xkcd — более сложные для запоминания пароли совсем не обязательно более сложные для подбора. Проявите фантазию, выберете себе какую-нибудь секретную фразу-девиз на 2-3 языках — и такой пароль можно будет ломать вечно.

Проблема не в том, какой пароль назначает IT специалист, проблема в том, какой пароль назначает обычный человек.
Я с детства помню соотношение «словарный запас Шекспира 20000 слов, а словарный запас любого номера газеты Times — 200 слов», может мои данные и устарели, но обычный человек использует от силы тысячу слов, а легко-запоминаемыми считает, думаю, как раз 200. Ну пусть 500.
И вот наша оценка сокращается до 500^4=6.25E10, аналогично 10-значному числовому паролю, который в посте признан моветоном.

Еще раз повторяю, речь о пароле, который назначит обычный человек.

Насчет разных языков — не забывайте, что у атакующего зачастую более выгодная позиция, и он может знать весьма точно язык (языки, включая и профессиональные жаргоны) жертвы, и отбрасывать словари ненужных языков.

И вообще — против алгоритмов перебора нужно бороться алгоритмами создания паролей. Давно уже нужно сформулировать алгоритм создания по настоящему стойких паролей. И доверить это нужно профессионалам, а то обычные админы как ни пытаются, толку пока нет.
Ведь не составит труда добавить «соль» и в пароль — значок "#" «где-то» в середине одного из слов пароля заставит обломаться атаку по словарю, но это же алгоритм, это же нужно описать. А пока у нас только чудесная картинка «correct horse battery stapple», без намека на невысокую сложность такого пароля при атаке по словарю, без намека на добавление каких-нибудь символов.

Уфф. Наболело.
словарный запас любого номера газеты Times — 200 слов

На самом деле 600, исследовали New York Times. Это число теперь считают достаточным, чтобы выучить язык до уровня бытового. Не то что это сильно меняет ваш расчёт, конечно.

Но, как я уже сказал, можно с любой системой напортачить, если иметь на это установку. «Алгоритмы создания паролей» есть и сейчас (один даже по xkcd), есть и менеджеры паролей — да только ими пользуются малый процент от всех людей.

Давно уже нужно сформулировать алгоритм создания по настоящему стойких паролей.

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

Ведь не составит труда добавить «соль» и в пароль — значок "#" «где-то» в середине одного из слов пароля

А потом как в комиксе — «где же я её поставил и не была ли это собака?» :) На самом деле всё, чего достигли рекомендации/требования наличия спецсимволов, цифр и заглавных букв — того, что люди ставят в конце точку, первую букву делают заглавной, а цифры добавляют в конец как год своего рождения или просто единицы. Особо пространство ключей это не расширяет. hashcat вообще умеет все эти пермутации проводить на лету. А вот народ уже путается и подбирает собственные пароли, когда забыл, сколько единиц добавил.

А пока у нас только чудесная картинка «correct horse battery stapple»

Это всё равно лучше, чем просто набор букв и цифр. Сейчас, когда в паролях используют только латиницу и спецсимволы в случайном порядке — их можно перебрать брутфорсом, гарантированно. А вот со словами не понятно: здесь и словари нужны особые, и слова могут быть исковерканы очень разными способами, и языки разные — это как минимум требует информации о том человеке/ресурсе, от которого пришёл хэш. А если это массовая дыра, как на Adobe? Как вы определите, кто из пользователей кем работает и где?
и языки разные — это как минимум требует информации о том человеке/ресурсе, от которого пришёл хэш. А если это массовая дыра, как на Adobe? Как вы определите, кто из пользователей кем работает и где?

Это да. Я имел в виду подбор пароля к роутеру. Или подбор пароля при известной жертве — взлом под заказ, так сказать.

Это всё равно лучше, чем просто набор букв и цифр. Сейчас, когда в паролях используют только латиницу и спецсимволы в случайном порядке — их можно перебрать брутфорсом, гарантированно
В перспективе двух ближайших лет это (без дополнительного усложнения) ничем не лучше, т.к. по мере увеличения распространенности таких паролей появятся и словари и алгоритмы под них.

В новостях я уже читал про то, что какой-то эксперт продемонстрировал нестойкость паролей из нескольких слов. (на русском найти не могу, вот ссылка на английском). Там, кстати, в последнем абзаце резюмируется, что при большой аудитории даже при использовании 5 слов, у 50% людей стойкость пароля оказывается эквивалентной 30-битному паролю (2^30 чуть больше миллиарда). Это статья 2012 года. Что я там говорил про перспективу? — Забудьте, словари уже должны быть.
Я имел в виду подбор пароля к роутеру. Или подбор пароля при известной жертве — взлом под заказ, так сказать.

Ну, «жертва на заказ» наверняка будет использовать что-то серьёзное и не словарное, хоть 8-символьное, хоть 20-ти.

у 50% людей стойкость пароля оказывается эквивалентной 30-битному паролю (2^30 чуть больше миллиарда).

Тут уже ничего не сделаешь, статья действительно доказывает, что какие люди — такие пароли, в смысле что в любой системе человек — самое слабое место. На мой взгляд пока люди сами не поймут, что такое слабый пароль и как он влияет на их жизнь — так и будут выбирать «harry potter». Видимо мало сайтов взломали…
А, да, забыл!
Отличный цикл статей! Спасибо, всё это отличная, хорошо изложенная и ценная для всех нас — читателей информация.
Очень приятно это слышать. Надеюсь, четвертая часть подведет под этим материалом такую же хорошую черту.
Ну так пассфраза и случайно сгенерированный по словарю пароль — две разные вещи. Да, человек — плохой генератор случайных фраз.
А пока у нас только чудесная картинка «correct horse battery stapple», без намека на невысокую сложность такого пароля при атаке по словарю


Насчёт невысокой сложности: этот самый correct horse battery staple при атаке по точно тому же словарю, что и при генерации пароля (да, такие пароли можно генерировать автоматически) с теми же 200 000 попытками перебора в секунду на топовой видеокарте даже при сравнительно бедном словаре в 2000 слов перебирается более чем 2 года. И это без многократного хэширования. При этом сгенерированный по словарю пароль запоминается лучше, чем сгенерированный как мешанина букв/цифр/спецзнаков. Об этом и xkcd.

//юзер keepass с 110+битными паролями
пожалуйста покажите, как вы это посчитали (2 года на перебор), или киньте ссылку.
correct horse battery staple по условиям задачи — случайно сгенерированная (ни в коем случае не человеком! её всё равно будет просто запомнить) фраза по словарю в ~2000 слов. Это 11 бит на слово, 44 бит на фразу при словарном же переборе. Общее число комбинаций — 2⁴⁴ ≈ 17.6・10¹². Полный перебор этих комбинаций на, скажем, AMD 6990 (в статье приведена цифра в 181 kh/s на WPA) займёт ≈ 97・10⁶ секунд, что есть 3 года с небольшим.

Я ошибся: посчитал, что в статье приведены цифры перебора RSA1, а не WPA. Перебор, например, двукратного sha265 займёт всего неделю если я правильно оценил производительность этой видеокарты (более половины гигахэша). От этого спасаться разве что увеличением словаря (словарь в 4000 слов отодвигают проблему до 111 дней) либо добавлением пятого слова (~39 лет). Варианты с добавлением модификаций в пароль — имхо, хуже запоминаются, чем пароль из расширенного словаря.
ну дык, я беру 500 слов, а не 2000, это 2^9 вместо 2^11 комбинаций на слово, 4 слова в фразе дают тогда 2^36 вместо 2^44, и перебирать — на видеокарте.
ProgerXP привел данные, что словарь современной газеты содержит 600 слов, я с ним согласен, но оценку времени перебора это сильно не изменит.
Ну так никто не просит брать словарь одной газеты. xkcd-подобные берутся как слова, наиболее часто встречающиеся в разных газетах же. Только не надо говорить, что русскоязычные газеты не наберут 4000 слов в словаре.

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

Опять же альтернатив случайной парольной фразе нет: прочие пароли гораздо легче забыть.

Кстати, выдержка из русского частотного словаря:
бесчувствие 32440, приобщать 32442, окрас 32444, распить 32445, безотрадный 32446
согласен, реальный словарь может быть в несколько тысяч слов, время перебора достаточно большое.
всё же почитайте результаты исследований, ссылку я давал выше, это может оказаться интересным.
Прочитайте это исследование. Там говорится о слабости сравнительно популярных фраз. Я раза 3 подчеркнул, что говорю о случайно сгенерированных по словарю фразах. Исследование абсолютно нерелевантно, там о случайных паролях говорят лишь что
For now we can only be comfortable that randomly-generated passphrases (using tools like Diceware) will resist offline brute force.
откуда переборщик узнает сколько слов в пароле, на каком они языке, не набраны ли в другой раскладке?
Мой «стандарный» пароль состоит из 6 русских слов с профессиональным жаргоном в латинской раскладке, с заменой отсутствующих знаков (Б Ю Э Ж… до сих пор не понимаю почему в паролях не принимают символы пунктуации...) на одному мне известные символы.
Хоть уподбирайся.
С клавиатуры мобильного устройства фиг наберешь, единственный минус )
У меня такие же в целом.
Как раз нет, я свои специально подбираю как комбинация пробелов и латинских букв в обоих регистрах так, чтобы можно было легко набирать даже на iOS, где на цифры и спецсимволы надо переключаться. Таким образом 8-мизначный пароль со звёздочками набирается дольше, чем 16-20-значиный.
Можно транслитом, если не помнить раскладку наизусть. Я уже года два сижу на американском ноутбуке без русских символов — ничего, привык :)
Не сомневался, что такое есть на Android, но я счастливый обладатель ios. Жду обещанных в 8.0 альтернативных клавиатур.
О, вот это отличный совет. Мне что-то долго не приходил в голову надежный мастер-пароль к ластпассу, такой, чтобы быстро набирать на телефоне, но ваш комментарий навел на хорошую идею. Спасибо )))
Яндекс клавиатура имеет режим ввода пароля, с ней можно.
А хакеры у нас ведь глупее, чем обычные люди, правда?
И про Яндекс-клавиатуру они не узнают никогда-никогда?

Ребята, через годик у всех хакеров будут словари для русских раскладок. Яндекс — не виноват, они просто сделали удобный ввод. Плохо, что Яндекс рекламирует надежность таких паролей.
Понимаете, я лично этот метод использую не столько ради усложнения пароля (что неправда), сколько для 100% ввода пароля. А то знаете ли, с русскими символами бывают разные чудеса — то их не принимают, то они с разных устройств по-разному воспринимаются и в итоге верный пароль не принимается системой, то ещё что. В английской раскладке набрать просто надёжнее.
Пароли лучше всего составлять такие, которые имеют легко запоминающуюся структуру чередования гласных/согласных.
К примеру, «хараводкер_Истангера».
Составление правил для такого словаря, конечно же, уменьшает стойкость пароля. Но так как длина пароля при этом растет, а сложность запоминания нет, то в общем случае, криптостойкость тоже растет.

Моя практика назначения таких паролей показывает, что пароль не запоминают только те, кто вводит его раз в неделю и реже. Как вы понимаете, таких сотрудников на производстве исчезающе малый процент.
Моя практика назначения таких паролей показывает, что пароль не запоминают только те, кто вводит его раз в неделю и реже.

Кстати да — давно заметил, что даже если меняешь пароли на что-то новое в одночасье, то первый день путаешься и пытаешься набрать старый (или комбинацию из обоих, если это несколько слов), а на второй и далее уже автоматом печатаешь и не задумываешься.
Нигде нету сервиса который позволяет быстренько прогнать короткие и простые пароли за минуту на таком кластере (для уже пойманного рукопожатия)? За какую нибудь адекватную цену?
За адекватную — вряд ли. Облачные сервисы есть, но стоят они $5-20 в час, что на мой взгляд может быть хорошо для пентеста (если у вас нет своего кластера), но для частого применения слишком накладно.

Мне известны такие: cloudcracker.com, pwaudit.com (ещё не запущен), gpuhash.me (есть бесплатный прогон, но мои пароли он ни разу не подобрал — видимо словарь маленький). Основная проблема сервисов, если не считать стоимость — нет гибкой настройки атаки, то есть если я могу запустить hashcat тысячей и одним способом с разными словарями и масками, то здесь фиксированный набор каких-то непонятных словарей, которые они даже не показывают.
2 года назад писал сервис для распределенного подбора паролей через hashcat под заказ, самое интересное, что заказчик деньги заплатил и исчез, мистика
Очень умная и поучительная статья. Спасибо за такие статьи. Прочитал с удовольствием.
Интересно и полезно, но так много зачеркнуто — что желание дочитывать теорию успело пропасть. Только погрузишься чуть более чуть полностью — как на тебе, оказывается это была шутка.
Было интересно освежить знания по «матчасти», спасибо :)

Из мелочей, что заметил:
1. На картинке-иллюстрации алгоритма шифрования используется «S/A-none» вместо положенного «S/A-nonce». Всё таки none и nonce — совершенно разная терминология.
2. Время вычисления 14-значного пароля на CPU сначала:
(10^14) / (4700 * 3600 * 24 * 365) = 674,6 лет для 14-значного цифрового пароля

Потом при сравнении с GPU откуда-то появляется ещё один десяток:
(10^14) / (1500000 * 3600 * 24 * 365) = 2,1 года для 14-значного цифрового пароля (было 684 года)

3. Некорректное сравнение продолжительности перебора MD5 на CPU/GPU:
(10^12) / (94000000000) = 10,6 секунд для 12-значного цифрового пароля (было 7 лет)
(10^14) / (94000000000 * 60) = 17,7 минут для 14-значного цифрового пароля (было 684 года)

«7 лет» и «684 года» — это, по вашим словам, время перебора WPA со скоростью 4700 паролей в секунду. Скорость брута MD5 на CPU легко достигает нескольких миллионов, соответственно затраченное время будет в сотни раз меньше.
На картинке-иллюстрации алгоритма шифрования используется «S/A-none» вместо положенного «S/A-nonce».

Опечатка, «none» приходится печатать чаще, чем «nonce». +1 за внимательность.

Потом при сравнении с GPU откуда-то появляется ещё один десяток:

Верно, исправил.

Некорректное сравнение продолжительности перебора MD5 на CPU/GPU:

Тоже верно подмечено, при копировании стоило удалить эту часть.

Спасибо.
Спасибо за ещё одно обьяснение того простого факта что лучше использовать длинный пароль из слов чем короткий пароль из цифр и букв. А то когда я в прошлый раз пытался защитить этот комикс, то народ решил что он умнее математики.
отличний цикл, по хорошему дотошный подход, спасибо)

но пара наблюдений дабы проапгрейдить статью
1. при использовании команды отключения клиента не обязательно использовать имя оригинального интерфейса, енжи сам понимает что от него надо. (это к предыдущей статье)
2. пароли в одном месте лежали в бт, в кали недавно сделали алиасы для списков паролей в /usr/share/wordlists
3. пирит при любом раскладе съедает одно ядро, наверное для контроля над остальным процессом
4. мне пришлось поменять пару куллеров после таких экспериментов, имейте ввиду

и пример подстановке через кранч, не обязательно хешкєт, простой баш в помощь.
подбор на лету мобильного телефона с конкретным префиксом (063). всего 10млн комбинаций. со средним гпу — 10 минут
crunch 10 10 -t 063%%%%%%% | pyrit -r handshake.cap -o found.pass.txt -i — attack_passthrough
Спасибо, обновил. Пути в командах писал по памяти, совсем забыл про share.
а самое печальное, что пароли из русских букв (т.е. слов) практически нигде не разрешаются. А если вводить русские буквы по английской раскладке — то «б» и «ю» попадают на "<" и ">", которые обычно запрещены.
… что подразумевает, что таким методом именно Вы пользовались. :-)
Дешифровать данные обратно можно передав этому же алгоритму шифрованную строку и ключ, который использовался для зашифровки.

Здесь неточность термина — если известен ключ то мы говорим о расшифровывании:

«Расшифровывание — процесс нормального применения криптографического преобразования шифрованного текста в открытый.
Дешифрование (дешифровка) — процесс извлечения открытого текста без знания криптографического ключа на основе известного шифрованного. Термин дешифрование обычно применяют по отношению к процессу криптоанализа шифротекста» википедия

Но цикл статей просто отличный! Спасибо
Only those users with full accounts are able to leave comments. Log in, please.