Недавно я и Эрик Грубер (Eric Gruber) дискутировали о создании оборудования для подбора паролей. И каждый раз возникал один и тот же вопрос: «Как насчет использования радужных таблиц?»
Автор: Karl Fosaaen
Недавно я и Эрик Грубер (Eric Gruber) дискутировали о создании оборудования для подбора паролей. И каждый раз возникал один и тот же вопрос: «Как насчет использования радужных таблиц?»
В общем и целом мы склонялись к тому, что радужные таблицы нам больше не нужны, поскольку оборудование позволяет взламывать большинство хешей. Однако в процессе дискуссии меня заинтересовал вопрос, в чем достоинства/недостатки подбора LM-хешей при помощи GPU по сравнению с более традиционными радужными таблицами.
Формат хранения Windows-хешей
Ранее все хеши в Windows создавались при помощи алгоритма LM. На смену алгоритму LM пришел алгоритм NTLM, однако LM все еще продолжает использоваться для шифрования как локальный паролей, так и паролей в домене.
При использовании алгоритма LM пароль разделяется на две части. Каждая часть может быть длиной до 7 символов. Если пароль состоит из 7 или менее символов, вторая часть представляет собой пустой LM-хеш. Все буквенные символы конвертируются в верхний регистр, поскольку стандарт LM не чувствителен к регистру. Пароли, чувствительные к регистру, кодируются по алгоритму NTLM.
В примере ниже, хеш для пароля «QBMzftvX» разделен на две части (QBMZFTV и X). Из рисунка ниже видно, что все незашифрованные символы LM-хешей находятся в верхнем регистре.
Рисунок 1: Пароль, преобразованный в LM-хеш
В этой статье будет рассказано о достоинствах/недостатках перебора LM-хешей при помощи радужных таблиц. При переборе NTLM-хешей радужные таблицы также могут использоваться с большим успехом, однако в данной статье перебор NTLM-хешей при помощи радужных таблиц и GPU рассматриваться не будет.
Перебор при помощи радужных таблиц
По сложившейся традиции LM-хеши подбираются при помощи радужных таблиц. Довольно просто создать таблицы с комбинацией пароль/хеш для всех возможных LM-хешей, поскольку количество комбинаций ограничено (от 1 до 7 символов). Как только вы получили таблицы с половинками хешей, можно переключаться на перебор регистрозависимых NTLM-хешей.
Этот метод работает неплохо, однако дисковые операции часто могут проходить на маленькой скорости. Кроме того, в некоторых случаях компьютер занят выполнением других задач, и поиск в LM-таблицах может замедлить работу системы. Хороший прирост производительности дало использование многопоточного чтения радужных таблиц. Однако проблема в том, что у меня под рукой не оказалось корректного многопоточного формата радужных таблиц для использования совместно с rcrack_mt. Меня выручило то, что для хранения радужных таблиц использовался SSD диск. В конце статьи приведено время поиска по таблицам при помощи rcrack_mt.
Есть два больших недостатка при использовании радужных таблиц. Главный недостаток – для хранения таблиц требуется большое дисковое пространство. Я знаю, что сейчас диски относительно дешевы, но лет пять назад это было бы большой проблемой. Второй недостаток – время, необходимое для генерации радужных таблицы. Если вы не скачали таблицы в интернете (что, в общем, тоже затратно по времени), вам потребуются дни (и возможно месяцы) для генерации таблиц с нуля.
Перебор при помощи GPU
Я бесконечно благодарен людям, которые работают над проектами Hashcat. Они проделали огромною работу и создали программное обеспечение, которые мы ежедневно используем. oclHashcat осуществляет прямой перебор LM-хешей при помощи GPU. Как только хеш подобран, половинки пересобираются и запускается Toggle-Case атака (когда на каждое слово в словаре генерируются все возможные варианты в различных регистрах) при помощи hashcat (CPU-версия). GPU позволяет сэкономить дисковое пространство и использовать централизованную систему для подбора пароля. Поскольку весь процесс автоматизирован, мне остается передать в скрипт LM/NTLM хеши и откинуться на спинку стула с чашечкой кофе. Однако остается вопрос об экономии времени.
Сочетание радужных таблиц и GPU
Существуют программы (RainbowCrack), позволяющие осуществлять гибридные атаки, где при просмотре радужных таблиц используется GPU. Я слышал положительные отзывы о работе этих программ, однако RainbowCrack поддерживает GPU только в Windows, и мы не можем использовать эту утилиту в нашем оборудовании.
Заключение
В качестве эксперимента я сгенерировал 100 LM/NTLM хешей для паролей различной длины (от 6 до 14 символов). Подбор при помощи радужных таблиц делался на моем ноутбуке на базе Windows (2.70GHz Intel i7, 16 GB RAM, SSD). Подбор при помощи GPU осуществлялся на нашем оборудовании, состоящем из 5 GPU.
Метод перебора |
Взломано |
Время перебора |
Радужные таблицы (OphCrack*) |
99/100 |
24 минуты 5 секунд |
oclHashcat/CPU Hashcat |
100/100 |
18 минуты 56 секунд |
Rcracki (многопоточный**) |
100/100 |
5 минут 40 секунд |
*OphCrack 3.6.0 работал со специальными XP таблицами
**Rcracki_mt работал в 24 потока
После всех экспериментов я не могу утверждать, что использование oclHashcat/Hashcat – самый быстрый способ, но результаты меня вполне устраивают. Если у вас нет собственного оборудования на базе GPU, возможно, вам будет лучше использовать радужные таблицы, особенно в несколько потоков на твердотельном накопителе.
Разбираем кейсы, делимся опытом, учимся на чужих ошибках