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

    Продолжая мучить хеши, добытые с 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).
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 27

      0
      Интересно было бы посмотреть результаты вашего алгоритма для других сайтов, например Mtgox, там люди должны были ставить пароли посерьезнее. Или для базы индийского группона.
        +1
        да, мне тоже было бы интересно. где можно взять базу?
          +2
            0
            ой, а там соленые хеши. придется-таки это реализовать…
              0
              а соль откуда берется?
                0
                обычно так: $1$E1xAsgR1(соль)$vPt0d/L3f81Ys3SxJ7rIh(хеш)/
                хеш — md5(password + salt) или в другом порядке.
                  0
                  Чего-то на shadow похож. $1$ в начале означает что хеш — md5.

                  А сколько паролей выдаст на современных $5$, $6$ (sha-256, sha-512) хешах?
        +1
        >Скачать исходники (да, мне их не жалко)

        github.com/signup/free
          +2
          > Скачать исходники (да, мне их не жалко)

          1. Лицензия? Без лицензии никто не имеет права даже смотреть на ваши исходники.

          2. Положите, пожалуйста, файлы в каталог. (опять ~/src чистить)
            +6
            еще мейкфайл попросите.
              +1
              А я бы не отказался, сейчас сижу, смотрю как это собрать, линуксоидам тоже охота поиграться.
                0
                если у Вас получится раньше чем у меня — расскажите, я пока не пробовал сам собирать под линукс.
            0
            Судя по тому, что на GTX460 всего 80 миллионов, а BarsWF на 9600GT даёт 350, есть поле для оптимизации. Я так думаю, скорость должна быть порядка 800 миллионов.

            Исходники BarsWF: 3.14.by/forum/viewtopic.php?f=8&t=1333&p=8907
              0
              оптимизировать несомненно можно, и по грубым прикидкам раза в 2-3, больше — вряд ли.
              я бегло взглянул на исходники, если я верно понял, то оно подбирает один хеш по фиксированному набору символов.
              а у меня — множество хешей по фиксированному набору метасимволов (на каждой позиции может стоять слово из словаря из нескольких символов), отсюда существенное замедление (но вовсе не линейно зависящее от количества хешей / длины словарных слов).
              +1
              На счет паролей для всяких таких сайтов — откуда там взяться хорошим и стойким паролям?
              У меня например система примерно такая. Для всяких не важных сайтов — один общий пароль, короткий и простой. Мне абсолютно безразлично, если его кто-то взломает.
              Для всяких соц. сетей/форумов/IM — три разных пароля. Тут уже случайный набор букв и цифр, но без спец-символов и в одном регистре и не очень длинный.
              Отдельный пароль для основной почты — длинный, сложный со спец. символами.
              Еще один отдельный пароль, примерно такой же, как для почты — мастер пароль для всего остального.
              Эти пароли я просто помню на память.

              И для действительно важных сервисов — хостинг, банк-клиент, etc. — очень длинные(30+) случайные пароли, хранящиеся в keepass.

              Собственно я это к чему. Этот antichat — просто какой то форум, у меня бы там был пароль в духе «слегка искаженное словарное слово из 6 букв и цифра». Какой смысл беспокоится о безопасности аккаунта на форуме?
                0
                >>И для действительно важных сервисов — хостинг, банк-клиент, etc. — очень длинные(30+) случайные пароли, хранящиеся в keepass.

                Я сегодня плакал, увидев, что PayPal не умеет пароли более 20 символов. :(
                  0
                  Полностью поддерживаю. Исследователи слишком категоричны в заявлениях о том, что с паролями все плохо, так как они исходят из идеи, что пользователь не хочет взлома своего аккаунта, забывая о тех, чьи пароли попросту никому не нужны, а если и нужны, то владелец сильно переживать не будет.
                  0
                  Долго смотрел на картинку чтобы понять, что это сломанный замок. Мысли были самые разные, вплоть до какашки (сзади). Простите
                    0
                    А словарик 05_relevant.txt выложите, пожалуйста :)
                      0
                      на работу приеду — выложу. так он же генерится в зависимости от уже найденных, хотя согласен с тем что готовый хороший может пригодиться.
                        0
                        вот что у меня с ачата получилось,
                        dl.dropbox.com/u/243445/md5h/_relevant.txt

                        но в целом он не очень хорош — слишком много изначально было цифровых комбинаций.
                      +1
                      Нашел для себя один плюс во всех этих взломах + циклу статей от sic:
                      1) Буду себе генерить пароли позаковыристей
                      2) Буду у себя строить хитромудрые схемы для защиты чужих паролей.
                        +1
                        Проверить адрес электронной почты на наличие в доступных базах паролей можно здесь: https://shouldichangemypassword.com/
                          0
                          эм… эта штука собирает пароли для спам-рассылок? :)
                            0
                            Вы хотели сказать — e-mail адреса? По моему скромному мнению, миф о том, что онлайн-формы собирают адреса для спама не выдерживает никакой критики. Простейший парсер за минуту найдет больше адресов, чем форма соберет за день. Особенно с учетом того, насколько халатно владельцы всевозможных движков социальных сетей относятся к защите пользовательских данных.

                            Ссылку нашел на Hacker News, этому источнику я доверяю.
                              0
                              да, опечатался.
                              почему нет, за то введенные адреса более валидны, чем собраные откуда попало.
                          0
                          А без разницы от чего хэши? Просто есть линуховый хэш, надо бы его поломать, да есть доступ к железке, но пароль надо не менять, а именно узнать :)

                          Only users with full accounts can post comments. Log in, please.