Подбор LM-хеша – радужные таблицы против прямого перебора при помощи GPU

Подбор LM-хеша – радужные таблицы против прямого перебора при помощи GPU

Недавно я и Эрик Грубер (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, возможно, вам будет лучше использовать радужные таблицы, особенно в несколько потоков на твердотельном накопителе. 

310K
долларов
до 18 лет
Антипов жжет
Ребёнок как убыточный
актив. Считаем честно.
Почему рожают меньше те, кто умеет считать на десять лет вперёд.

FREE
100%
Кибербезопасность · Обучение
УЧИСЬ!
ИЛИ
ВЗЛОМАЮТ
Лучшие ИБ-мероприятия
и вебинары — в одном месте
ПОДПИШИСЬ
T.ME/SECWEBINARS