Часть 0. Вводная Вечер в хату, чефир в радость! Сегодня я сравню эффективность радужных таблиц и силу ГПУ. Бится будут hashcat vs rcrack. Где то в топиках прочитал сдедующий пост... Собственно захотелось лично убедится\опровергнуть это утверждение, не ужели все так плохо? Часть 1. Генерация Для начала нам нужно сгенерить собсно то что мы будем ломать. Для этого я написал примитивный скриптик на баше. Code: #!/bin/bash for i in 'cat $1' do echo -n "$i" | openssl md5 | sed 's/(stdin)= //g' >> done_md5.txt done echo "done!" exit 0 Далее скормил скрипту заранее приготовленые пасы. Code: ./script passlist.txt И разбил на 1 100 и 10.000 строк. Окей мы получили на основании пассов -> хэшлист. Дальше нам нужно скачать\сгенерить таблицы для брута. Пример генерации буду приводить по программе rtgen. Образец для генерации.... Code: rtgen md5 mixalpha-numeric 1 6 0 3200 40000000 #00 .... rtgen md5 mixalpha-numeric 1 6 5 3200 40000000 #00 rtgen [hash_algorithm] [charset] [plaintext_len_min] [plaintext_len_max] [table_index] [chain_len] [chain_num] [part_index] [hash_algorithm] Радужные таблицы можно содавать след. видов: lm, ntlm, md5, sha1, mysqlsha1, halflmchall, ntlmchall, oracle-SYSTEM and md5-half. Для брута определённого алгоритма нам нужна соотв. таблица. Далее я в качестве примера буду создать таблицы для md5. [charset] Указываем пресет в который входят необходимые символы. "loweralpha-numeric" соотв. сдедующим символам "abcdefghijklmnopqrstuvwxyz0123456789", которые указаны в файле charset.txt. Если мы хотим использовать свой пресет тогда мы должны прописать это в файле charset.txt. [plaintext_len_min] [plaintext_len_max] Сдесь два параметра которые указывают диапазон длины паролей. В данном случаем мы укажем длину паролей от 1 до 6. Туда войдут комбинации от "a" и до "abcdefg". Но пароль вида "abcdefgh" с длинной в 8 символов не будет включён. В поле 'Min length' и 'Max length' задается минимальная и максимальная длина пароля в таблицах поиска.* *LM пароль в Windows состоит из двух 7 символьных половинок, поэтому максимальная длина пароля при генерации LM таблиц не должна превышать 7 символов. [table_index] Параметр [table_index] указывает на кол-во таблиц. Чем больше таблиц тем выше вероятность подбора пароля. [chain_len] Длина цепи влияет на следующие параметры таблицы: вероятность нахождения пароля, время генерации таблицы и время подбора одного пароля во время атаки. [chain_num] Количество цепей в таблице которые нужно создать. Радужные таблицы если грубо это просто матрица из цепей. Размер каждой цепи 16 байт. Длина цепи влияет на вероятность нахождения пароля, время генерации таблицы и ее размер. В настоящее время инструмент генерации таблиц не поддерживает таблицы размером более 2 Гб, однако при создании больших таблиц можно увеличивать их количество. Особенность реализации алгоритма поиска по радужным таблицам состоит в том, что успех нахождения пароля зависит он нескольких параметров, для которых важно найти наилучшее соотношение в зависимости от размера получаемых таблиц, времени их генерации и времени подбора пароля в атаке. [part_index] Этот параметр означает дробление таблиц на мелкие части. [table_size] Размер одной таблицы равен [chain_num] x 16. Пример: 40,000,000 х 16 = 640000000 /1024 = 625.000 Кб [key_space] Обьём таблиц это кол-во из возможных комбинаций символов, расчёт основан на кол-ве символов в пресете и длине пароля. Давайте прикинем какой обьем информации получится для всех комбинаций: 36^1 + 36^2 + 36^3 + 36^4 + 36^5 + 36^6 = 36 + 1296 + 46656 + 1679616 + 60466176 = 2238976116 комбинаций паролей. [Success Rate] Процент успеха подбора пароля. Для начала генерации первой таблицы заустим след строку: Code: rtgen md5 mixalpha-numeric 1 6 0 3200 40000000 0 ЦПУ будет занят созданием табличек. В системах с многоядерным ЦПУ будут задействованы все ядра. Для приостановления процесса просто нажать Ctrl+C и rtgen будет остановлен. При запуске с такими же параметрами, создание будет востановленно. Когда ЦПУ закончит генерацию будет создан файл "md5_mixalpha-numeric#1-6_0_3200x40000000_0.rt" размером 625 MB в текущей директории. Этот файл содержит все параметры которые мы указали при генерации таблицы. Приблизительное время генерации одной таблицы на моей машине* составило - 1h:2m:23s *FX-8350@4500Ghz/16Gb/256GB_SSD Теперь генерируем оставшиеся таблицы: Code: rtgen md5 mixalpha-numeric 1 6 1 3200 40000000 0 rtgen md5 mixalpha-numeric 1 6 2 3200 40000000 0 rtgen md5 mixalpha-numeric 1 6 3 3200 40000000 0 rtgen md5 mixalpha-numeric 1 6 4 3200 40000000 0 rtgen md5 mixalpha-numeric 1 6 5 3200 40000000 0 После завершения, будут готовы 6 таблиц: Code: md5_mixalpha-numeric#1-6_0_3800x33554432_0.rt 625.000 Кб md5_mixalpha-numeric#1-6_1_3800x33554432_0.rt 625.000 Кб md5_mixalpha-numeric#1-6_2_3800x33554432_0.rt 625.000 Кб md5_mixalpha-numeric#1-6_3_3800x33554432_0.rt 625.000 Кб md5_mixalpha-numeric#1-6_4_3800x33554432_0.rt 625.000 Кб md5_mixalpha-numeric#1-6_5_3800x33554432_0.rt 625.000 Кб Итого : 6 x 1:02 = 6h:06m Далее обязательной процедурой идёт, сортировка этих таблиц.* Code: rtsort . НИ В КОЕМ СЛУЧАЕ НЕЛЬЗЯ ПРЕРЫВАТЬ ПРОЦЕСС СОРТИРОВКИ! ИНАЧЕ МОЖНО ИСПОРТИТЬ ТАБЛИЦЫ! Приблизительное время сортировки одной таблицы на моей машине* составило 1m Итого одна таблица под-ключ - 1h:03m Часть 2. Запуск Итак теперь запуск наших табличек... Кратко об поциэнтах. 1.rcrack_PC - брут с помощью ЦПУ по радуге на домашнем пк. (AMD FX-8530@4500Ghz) 2.rcracki_mt_NETBOOK - брут с помощью ЦПУ по радуге на нетбуке. (Intel Atom [email protected]) 3.hashcat_NETBOOK - брут с помощью ЦПУ по коту на нетбуке. (Intel Atom [email protected]) 4.hashcat_PC - брут с помощью ГПУ по коту на домашнем ПК. (ASUS GTX760x2)(hashcat_v2.01) 5.hashcat_RIG - брут с помощью ГПУ по коту на ферме. (Asus RX470x6)(hashcat_v3.60) Запуск с консоли буду осуществлять таким образом.. Code: rcrack path . -l D:\md5.txt > cracked.txt hashcat -m 0 -a 3 hash.txt -1 ?u?l?d --increment ?1?1?1?1?1?1 --status -o cracked.txt time rcracki_mt -l 1.txt -t 2 -o cracked.txt /*.rt ************1 хеш*************************************** Запустим для примера 1 хеш. 1.rcracki_mt_NETBOOK..Результат: 6.2s......1/1 2.hashcat_NETBOOK.....Результат: 4h:37m..1/1 3.rcrack_PC................Результат: 0.89s.....1/1 4.hashcat_PC..............Результат: 2s.........1/1 5.hashcat_RIG.............Результат: 21s.......1/1 Видим что котяра нашел пароль аж через 2 секунды, а через радужные таблицы менее секунды. Для ПК разница по времени не очень ощутимая, в то время как на нетбуке ситуация более тяжелая... через таблицы пароль нашелся за 6.2 секунды а через кота более 4 часов, что недопустимо долго. С помощью фермы удалось найти пароль за 21s ************100 хешей******************************* Теперь увеличим кол-во хешей до 100. 1.rcracki_mt_NETBOOK..Результат: 7m:3s.....100/100 2.hashcat_NETBOOK.....Результат: 4h:37m...100/100 3.rcrack_PC.................Результат: 1m:16s...100/100 4.hashcat_PC..............Результат: 22s.........100/100 5.hashcat_RIG.............Результат: 22s.........100/100 С нетбуком ситуация не поменялась, по радужным таблицам всё равно скорость быстрее, не смотря на увеличившийся хэшлист. Есть один момент.... перебор по радужным таблицам идёт только по одному хэшу за один раз! Из-за этого время поиск пароля увеличивается пропорционально длине хэшлиста т.е. на нетбуке настанет такой момент когда кот найдет пароли быстрее чем по радуге. На ПК видим явное отставание радуги от кота почти в шесть раз. Ферма перебрала все хэши за 22s ************10,000 хешей****************************** Теперь увеличим кол-во хэшей до 10.000 и попробуем еще раз... 1.rcracki_mt_NETBOOK....Результат: 26h:40m...10.000/10.000 2.hashcat_NETBOOK.......Результат: 4h:37m.....10.000/10.000 3.rcrack_PC..................Результат: 32m..........10.000/10.000 4.hashcat_PC................Результат: 26s..........10.000/10.000 5.hashcat_RIG...............Результат: 60s..........10.000/10.000 Ну что ж видим что чем больше хешей тем кислей время ожидания... Для нетбука использование радужных таблиц уже не имеет смысла для такого кол-во хэшей, тут кот уже быстрее найдет пароли. Так для ПК складывается аналогичная ситуация 26секунд по коту и 32минуты по таблицам, разница уже в 73 раза! Ферма перебрала 10.000 за 60s.* Думаю такое большое время связано с версией кота 3.* Часть 3. Скачивание Тут собсна всё понятно, ищём на просторах готовые таблички. Критерии обьём и процент профита. Чем выше процент тем больше обьём. Тут приведу ссылки на готовые таблицы. http://rainbowtables.shmoo.com/ https://thepiratebay.org/search/lm 1 7 tables/0/99/0 Часть 4. Анализ У радужных таблиц процент профита очень существенно влияет на объем хранимых данных либо на время генерации. Чем больше таблиц тем меньше время генерации и выше профит, но приходится платить местом на хдд. Чем больше цепей тем меньше обьем и выше профит, но прийдется дольше ждать пока ПК создаст таблицы. Для сравнения: rtgen.exe md5 mixalpha-numeric 1 6 0 3200 40000000 #00 ..%........chain.....tables....time....space 99,74% - 55000 - 1 table - 18h - 0,61Gb 99,74% - 3200 - 4 table - 50m - 2.4Gb 99,74% - 1000 - 10 table - 25m - 6Gb Время создание указано для моей конфигурации (FX-8350@4500Ghz) Часть 5. Итог Собственно вот и заключительная часть этой статьи. Актуально ли использование радужных таблиц на текущий момент? И да и нет.... Для поиска одиночного хэша таблицы будут быстрее. Для перебора более 100 хэшей таблицы будут существенно медленее чем кот. Для каких ситуаций приемлемо использование радуги? + Брут LM и NTLM паролей учёток с помощью LiveCD + Поиск одиночного хэша (например платного) + При использование слабого ПК с интегрированой графикой, где брут на ГПУ не возможен, а скорость перебора через ЦПУ будеткрайне мала. Какие минусы радуги ? - Обьём хранения данных. - Время генерации таблиц - Невозможность использования таблиц для солёных хэшей. - Падение производительности при увеличении списка хэшей. - к минусам еще можно отнести небольшое кол-во поддерживаемых хэшей. Резюме: Создание радужных таблиц очень кропотливое и очень долгое занятие, поэтому если есть возможность скачать уже готовые,лучше воспользоватся этим случаем. С другой стороны хорошие таблицу на халяву очень трудно найти, поэтому если поиск не увенчался успехом можно попробоватьсгенерить самому. Полностью исключать радужные таблицы пока рано, еще какое то время они продержатся пока время нахождения ОДНОГО ХЭША с помощью ГПУ ирадуги не уравнятся. Если у вас топовые карты GTX 980,980TI,1080,1080TI использование радуги не считаю рациональным. В данную статью не попал один эксперимент а именно rcrack_cuda эта утилита у меня выбила ошибку и отказалась запускатся, такчто статью я не считаю до конца законченой. P.S. На все эксперименты ушло около двух недель с перекурами. Надеюсь мои эксперименты будут полезны сообществу. (c)Kevin Shindel Сурсы: Rainbow Calculator - http://rgho.st/7GVWz2kBx rainbowcrack-1.7-win64 - http://rgho.st/8PkrlDBKC rcracki_mt_0.7.0 - http://rgho.st/6ThKLWw6W
Читал аналогичную статью пару лет назад Spoiler: вот тут http://www.securitylab.ru/analytics/462201.php Но все равно ставлю + за старания и свежие цифры.
Все ссылки и проги скину вечером. По ссылке сложно назвать статьей скорее заметка. Тем более там автор не генерирует лично таблицы и не расказывает как это сделать. По генерации таблиц инфы много но вот как именно это делать очень мало. Постараюсь дополнить статью с брутом по радуге с помощью ГПУ думаю там немного другие цифры будут... Спасибо Ёж! Очень приятно!
Брутить пароль NTLM с радужными таблицами самое то. Дернуть хэш мимикатзом и сбрутить. Это всегда будет актуально. Не менее актуальная тема с пиритом ( purit ). В бруте хэша многие им пользуются, но статей писать не хотят.
а чё про pyrit писать? отживает своё потихоньку... Хотя вот @Buran' а о pyrit' е я бы с удовольствием почитал!)