Авторские статьи Rainbow VS GPU

Discussion in 'Статьи' started by Kevin Shindel, 19 Sep 2017.

  1. Kevin Shindel

    Kevin Shindel Elder - Старейшина

    Joined:
    24 May 2015
    Messages:
    1,011
    Likes Received:
    1,192
    Reputations:
    62
    Часть 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
     
    #1 Kevin Shindel, 19 Sep 2017
    Last edited: 21 Sep 2017
    guezd, EricZ, Evan and 5 others like this.
  2. afonn

    afonn Member

    Joined:
    10 Aug 2015
    Messages:
    117
    Likes Received:
    42
    Reputations:
    0
    а как и где этим добром пользоваться то? :eek:
     
  3. user100

    user100 Moderator

    Joined:
    24 Dec 2011
    Messages:
    4,811
    Likes Received:
    18,426
    Reputations:
    377
    Читал аналогичную статью пару лет назад Но все равно ставлю + за старания и свежие цифры.
     
    _________________________
  4. Veil

    Veil Banned

    Joined:
    21 May 2015
    Messages:
    2,025
    Likes Received:
    3,355
    Reputations:
    72
    Зачетная статья. Она всегда будет актуальной.
     
  5. Kevin Shindel

    Kevin Shindel Elder - Старейшина

    Joined:
    24 May 2015
    Messages:
    1,011
    Likes Received:
    1,192
    Reputations:
    62
    Все ссылки и проги скину вечером.

    По ссылке сложно назвать статьей скорее заметка.
    Тем более там автор не генерирует лично таблицы и не расказывает как это сделать. По генерации таблиц инфы много но вот как именно это делать очень мало.
    Постараюсь дополнить статью с брутом по радуге с помощью ГПУ думаю там немного другие цифры будут...

    Спасибо Ёж! Очень приятно!
     
    Veil likes this.
  6. Veil

    Veil Banned

    Joined:
    21 May 2015
    Messages:
    2,025
    Likes Received:
    3,355
    Reputations:
    72
    Брутить пароль NTLM с радужными таблицами самое то. Дернуть хэш мимикатзом и сбрутить. Это всегда будет актуально.
    Не менее актуальная тема с пиритом ( purit ).
    В бруте хэша многие им пользуются, но статей писать не хотят.
     
  7. Kevin Shindel

    Kevin Shindel Elder - Старейшина

    Joined:
    24 May 2015
    Messages:
    1,011
    Likes Received:
    1,192
    Reputations:
    62
    С пиритом всё немного сложнее ... если я тебя правильно понял там нужно брутить хэш с солью...
     
    Veil likes this.
  8. erwerr2321

    erwerr2321 Elder - Старейшина

    Joined:
    19 Jun 2015
    Messages:
    4,236
    Likes Received:
    26,249
    Reputations:
    148
    а чё про pyrit писать? отживает своё потихоньку...
    Хотя вот @Buran' а о pyrit' е я бы с удовольствием почитал!)
     
    Veil and user100 like this.