Pull to refresh

Массовый аудит паролей «одной кнопкой»

Reading time 2 min
Views 3.8K
Продолжая мучить хеши, добытые с antichat (да кому они нужны?) не удержался от создания достаточно быстрого средства, автоматически применяющего рассмотренные в статье методы. Теперь уже в ход пошли видеокарты, и на подбор 60% паролей достаточно было перекура. При скорости перебора over 100 mpwd/s, применении гибридной техники и частотного анализа это не кажется удивительным результатом, что в общем-то наконец должно заставить пересмотреть отношение к способам хранения паролей тех, кто все еще не озаботился этим. Ниже небольшое рассуждение о примененном подходе и, конечно, сама программа.

Основная идея все та же: попытка составить хорошие «кусочки» возможных паролей, конкатенация которых даст подходящий пароль с большей вероятностью, чем случайный набор символов. Таким образом можно неявно отдать на откуп алгоритму все что мы понимаем как «человеческий фактор».

Хорошие «кусочки» можно получить, зная часть паролей от общего количества, выбирая наиболее часто используемые комбинации символов. Для того чтобы раскрыть стартовое количество паролей можно использовать перебор, словари и гибридную атаку по словарям.

Исходя из этого пароли вроде «QWEasdf1$» не следует считать безопасными (большие символы, маленькие, цифры, спецзнаки, достаточная длина — вроде бы все замечательно?), ибо они легко декомпозируются в набор вероятных сочетаний символов (QWE, asdf, 1, $ — всего четыре метасимвола).

Собственно автоматизация свелась к следующей схеме:
  • программа загружает список хешей (предполагается достаточно большой набор, это не замедляет скорость и увеличивает шансы на успешность схемы);
  • происходит прямой перебор для вероятных комбинаций (цифровые пароли, символьные ограниченной длины, спецсимволы в небольшом числе);
  • затем проверяются заданные аудитором словари, в том числе конкатенации слов из этих словарей (чтобы можно было быстро подобрать сочетания вроде «ihatethis»);
  • полученные пароли делятся на кусочки, считается вероятность вхождения каждого кусочка, составляется «хороший» словарь;
  • по полученному словарю производится бесконечный перебор возможных сочетаний слов.

То есть, кроме набора заранее подготовленных словарей и списка хешей больше ничего не нужно знать/менять/настраивать — фактически схема «push to hack», по поводу который было немало шуток.

Программку я написал за один день, поэтому идеальной стабильности и универсальности я и сам от нее не жду, whatever it works. Для использования мощностей видеокарт применяется технология CUDA и CUDA Utilities Toolkit.

Скачать исходники можно отсюда: dl.dropbox.com/u/243445/md5h/src.7z
А бинарник под Win32 здесь: dl.dropbox.com/u/243445/md5h/MD5BLAST.exe
(необходима также библиотека cutil32 и CUDA Toolkit с developer.nvidia.com/cuda-toolkit-32-downloads#Windows)

Для начала работы нужно создать файл hash_list.txt со списком хешей.

Запускаем программу, и пароли потихоньку появляются в файле passwords.txt. Никакой привязки хеш-юзер-пароль я не писал, но разве оно так необходимо?

Если вы знакомы с технологией CUDA, то возможно для оптимальной производительности поменять константы GRID и THREADS для вашей видеокарты. Кроме того, при текущих параметрах программа требует до 300 мегабайт свободной видеопамяти (это значение можно уменьшить с помощью константы ITERS).

У меня на GTX460 получается около 100 мегапаролей в секунду (при средней длине пароля 15 символов и количестве хешей около 10000).
Tags:
Hubs:
+34
Comments 27
Comments Comments 27

Articles