Меню

Работа с радужными таблицами

Радужные таблицы в домашних условиях

Прошедшая неделя с точки зрения информационной безопасности выдалась исключительно «удачной»: то база хэшей LinkedIn утекла в сеть, то хэши last.fm. И во всех обсуждениях, так или иначе, упоминают о радужных таблицах.
Слышали о них почти все, но делали их своими руками очень немногие.

Думаю, не разумно рассказывать заново о том, что такое хеш и зачем в принципе нужны радужные таблицы или какие-то другие предвычисления. Для ликвидации белых пятен предлагается прочесть этот топик.

Интеллектуального прорыва в области радужных таблиц сегодня не планируется, а есть желание рассказать, что радужные таблицы – это не сложно, поэтому и писать будем на чем-то простом, а именно: PHP. Хранить таблицу в MySQL.

Весь код доступен на GoogleCode, я же опишу основные моменты, над которыми пришлось подумать и которые необходимо реализовать.

Для начала необходимо поговорить о входном алфавите. В наборе паролей участвует не все символы ASCII таблицы, а только те, которые можно без лишних хитростей набрать на клавиатуре ПК или мобильного устройства. Чем меньше входной алфавит, тем быстрее будет сгенерирована радужная таблица, но и паролей по заданным хэшам найдется меньше. В нашем случае будем использовать входной алфавит из цифр и букв латинского алфавита верхнего и нижнего регистров.

Для создания радужной таблицы используются цепочки, начало которых – это некоторый случайный пароль фиксированной длины. Очевидно, необходима функция генерация случайных паролей из символов входного алфавита:

Внутри цепочек попеременно применяется то хэш-функция, то функция редукции. С хэш-функцией все ясно – это MD5, SHA1 или любая другая (в нашем случае будем использовать MD5). С функцией редукции ясности меньше. Во-первых, функция редукции, получив на входе хэш, должна выдать некоторый пароль из символов входного алфавита. Во-вторых, функция редукции необходима не одна единственная, а упорядоченное множество функций редукции, причем мощность этого множества равна длине цепочки.

Конечно, можно было бы написать две-три функции редукции самостоятельно, но не в случае, когда длина цепочки равна 100 или 1000. Тем более, хотелось бы, чтобы длина цепочки хранилось в константе, которую можно заменить легким движением руки.

В голову приходить достаточно очевидное решение: нужно использовать Генератор псевдослучайных чисел (ГПСЧ). Для каждой конкретно взятой функции редукции инициализировать ГПСЧ определенным набором бит из хэша, поступающего на вход, а затем получать пароль с помощью вызова getWord().

В принципе действовать на уровне отдельных бит и не требуется. Инициализировать ГПСЧ нужно числом типа int, для моей платформы – это 32 бита или 4 байта. MD5 состоит из 16 байт (посмотрите на второй параметры у функции md5 в PHP), тогда количество возможных размещений равно 16! / (16 — 4)! = 43680 – даже для длины цепочки в 1000 хватит с запасом.

Тогда собственно функция редукции, принимающая на вход хэш и номер текущего шага в цепочке, будет иметь вид:

С учетом всего вышеописанного функция расчета конца цепочки по ее началу тривиальна:

Поздравляю, мы проделали большую работу, и остался только один аспект нахождения пароля по заданному хэшу, о котором необходимо рассказать.

В классическом варианте берется последняя n-ая функция редукции от хэша и получившийся пароль ищется в радужной таблице, если ничего не нашлось, берется n-1 редукция, потом вычисляется хэш, потом n-ая редукция и ищется в таблице и так далее, пока не найдется пароль. При использовании MySQL это могло бы вылиться в n однотипных SELECT-ов (в худшем случае) – даже начинающий веб-программист знает, что за это можно и по рукам получить! Конечно же, достаточно одного SELECT-а для поиска одного пароля, но для этого необходимо генерировать все пароли для поиска разом:

Все остальные манипуляции с MySQL прямого отношения к радужным таблицам не имеют, а другие части исходного кода, по моему мнению, понятны и без объяснений.

И напоследок ложка дегтя. PHP и MySQL прекрасно справляются с созданием прототипов на скорую руку, но PHP действительно не самый быстрый язык и хранение радужной таблицы в реляционной СУБД общего назначения не самое эффективное решение. Радужную таблицу для MD5 для 6-символьных паролей с длиной цепочки 1000 из 2 миллионов записей ноутбук на базе i3-330UM генерировал более 8 часов. В идеале полученная таблица может обратить 2*10^9 хэшей, но это число не соизмеримо с общим количеством 6-символьных паролей, которых 56,8*10^9 на выбранном входном алфавите.

Это в очередной раз показывает, насколько важен выбор подходящего инструмента для решения конкретной задачи.
Думаю, что задачу наглядно продемонстрировать принцип реализации радужных таблиц мне на пару с PHP всё-таки удалось решить.

Источник



Радужная таблица

Радужная таблица ( англ. rainbow table ) — специальный вариант таблиц поиска (lookup table) использующий механизм уменьшения времени поиска за счет увеличения занимаемой памяти или time-memory tradeoff . Радужные таблицы используется для вскрытия паролей, преобразованных при помощи необратимой хеш-функции .

Содержание

  • 1 Теория
  • 2 Применение
  • 3 Защита от радужных таблиц
  • 4 Использование
  • 5 Примечания
  • 6 Внешние ссылки

Теория [ ]

Радужная таблица создается построением цепочек возможных паролей. Каждая цепочка начинается со случайного возможного пароля, затем подвергается действию хеш-функции и функции редукции. Данная функция преобразует результат хеш-функции в некоторый возможный пароль. Промежуточные пароли в цепочке отбрасываются и в таблицу записывается только первый и последний элементы цепочек. Создание таблиц требует времени и памяти (вплоть до сотен гигабайт), но они позволяют очень быстро (по сравнению с обычными методами) восстановить исходный пароль.

Для восстановления пароля данное значение хеш-функции подвергается функции редукции и ищется в таблице. Если не было найдено совпадения, то снова применяется хеш-функция и функция редукции. Данная операция продолжается, пока не будет найдено совпадение. После нахождения совпадения, цепочка содержащая его, восстанавливается для нахождения отброшенного значения, которое и будет искомым паролем.

В итоге получается таблица, которая может с высокой вероятностью восстановить пароль за небольшое время.

Таблицы могут взламывать только ту хеш-функцию, для которой они создавались, то есть таблицы для MD5 могут взломать только хеш MD5. Теория данной технологии была разработана Philippe Oechslin [1] как быстрый вариант time-memory tradeoff [2] . Впервые технология использована в программе Ophcrack для взлома хешей LanMan , используемых в Microsoft Windows . Позже была разработана более совершенная программа RainbowCrack которая может работать с большим количеством хешей, например LanMan , MD5, SHA1 и др. Следующим шагом было создание программы The UDC, которая позволяет строить Hybrid Rainbow таблицы не по набору символов, а по набору словарей, что позволяет восстанавливать более длинные пароли (фактически неограниченной длины).

Применение [ ]

При генерации таблиц важно найти наилучшее соотношения взаимосвязанных параметров:

  • вероятность нахождения пароля по полученным таблицам
  • времени генерации таблиц
  • время подбора пароля по таблицам
  • занимаемое место

Вышеназванные параметры зависят от настроек заданных при генерации таблиц:

  • допустимый набор символов
  • длина пароля
  • длина цепочки
  • количество таблиц

При этом время генерации зависит почти исключительно от желаемой вероятности подбора, используемого набора символов и длины пароля. Занимаемое таблицами место зависит от желаемой скорости подбора 1 пароля по готовым таблицам.

Хотя применение радужных таблиц облегчает использование метода грубой силы ( bruteforce ) для подбора паролей, в некоторых случаях необходимые для их генерации/использования вычислительные мощности не позволяют одиночному пользователю достичь желаемых результатов за приемлемое время. К примеру для паролей длиной не более 8 символов, состоящих из букв, цифр и специальных символов !@#$%^&*()-_+= захешированных алгоритмом MD5 могут быть сгенерированы таблицы со следующими параметрами:

  • длина цепочки 1400
  • количество цепочек 50000000
  • количество таблиц 800

При этом вероятность нахождения пароля с помощью данных таблиц составит 0.7542 (75.42 %), сами таблицы займут 596 Гб, генерация их на компьютере уровня Пентиум-3 1ГГц займёт 3 года а поиск 1 пароля по готовым таблицам не более 22 минут.

Однако процесс генерации таблиц возможно распараллелить, например расчёт одной таблицы с вышеприведёнными параметрами занимает примерно 33 часа. В таком случае если в нашем распоряжении есть 100 компьютеров, все таблицы можно сгенерировать через 11 суток.

Защита от радужных таблиц [ ]

Данные таблицы невозможно использовать против необратимых хеш-функций, которые включают salt (соль). Например, рассмотрим следующую функцию для создания хеша от пароля:

где + обозначает конкатенацию.

Для восстановления такого пароля взломщику необходимы таблицы для всех возможных значений затравки.

По сути, затравка увеличивает длину и возможно сложность пароля. Если таблица рассчитана на некоторую длину или на некоторый ограниченный набор символов, то затравка может предотвратить восстановление пароля.

Использование [ ]

Практически все дистрибутивы ОС Unix , GNU/Linux и BSD используют хеши с солью для хранения системных паролей, хотя многие приложения, например, интернет-скрипты на PHP используют простой хеш (обычно MD5) без соли. ОС Microsoft Windows и Windows NT используют хеши LAN Manager и NT LAN Manager , которые также не используют соль, что делает их одними из самых популярных для создания радужных таблиц.

Примечания [ ]

Внешние ссылки [ ]

  • Страница Ophcrack Оригинальная исследовательская работа с демонстрацией
  • Проект RainbowCrack
  • oxid.it Содержит winrtgen — графическую оболочку для rtgen (утилиты создания таблиц)
  • взлом MD5 с помощью радужных таблиц
  • rainbowcrack.com Распределенное создание таблиц
  • Большие радужные таблицы от группы Shmoo Group, создателей AirSnort
  • download Rainbow Tables
  • Ultimate Distributed Cracker Взлом паролей с использование Гибридных Радужных Таблиц

de:Rainbow Table en:Rainbow table fr:Table arc-en-ciel ja:レインボーテーブル nl:Rainbow table pl:Tęczowe tablice pt:Rainbow table

Источник

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Как использовать радужные таблицы для взлома паролей Wi-Fi в Hashcat и John the Ripper

Радужные таблицы для брут-форса Wi-Fi паролей

Радужные таблицы — это предварительно рассчитанные хеши, которые используются для очень быстрого восстановления паролей из добытого хеша. Они представляют собой базы данных, в которых паролю соответствует вычисленный хеш.

Читайте также:  Таблица веса профтрубы распечатать

То есть по радужной таблице ищется хеш, если он найден, то смотрим, какой пароль ему соответствует. Поиск по базе данных выполняется очень быстро. Благодаря ему становится возможной на первый взгляд невозможная операция: восстановление данных из контрольной суммы, например, из хеша MD5 мы можем получить исходную строку, для которой была вычислена контрольная сумма MD5.

В результате появления концепции радужных таблиц, теперь повсеместно распространено хеширование с солью и многократное (итерированное) хеширование.

Соль — это дополнительные уникальные данные, которые добавляются к паролю. В результате радужные таблицы становятся непригодными. Соль не является секретной, может храниться в открытом виде. Это не мешает ей делать непригодными радужные таблицы.

Итерация — это многократное хеширование, то есть когда полученные в результате хеширования данные хэшируются ещё раз и так много раз (сотни или десятки тысяч итераций не редкость).

Итак, что по поводу радужных таблиц для взлома Wi-Fi паролей? Дело в том, что это изначально алгоритм с солью — роль соли выполняет название точки доступа. То есть можно рассчитать радужную таблицу, но она будет пригодна только для точки доступа с определённым названием.

Какие преимущества использования радужных таблиц для брут-форса Wi-Fi?

Вычисление радужных таблиц занимает ровно столько же времени сколько и брут-форс. Но поиск по созданной радужной таблице занимает доли секунды. Отсюда следствие: если вы хотите проверить одно рукопожатие для Точки Доступа, то разницы между брут-форсом и использованием радужных таблиц нет.

Но всё меняется, если вы хотите проверить два и более рукопожатия для одной точки доступа. В этом случае вы можете проверить любое количество рукопожатий, затратив время как на одно. А это (проверка нескольких рукопожатий для одной ТД) не лишено смысла, ведь рукопожатия могут быть бракованными (составленными из нескольких), в результате не получится взломать пароль, даже если правильный пароль был проверен для такого бракованного рукопожатия.

Как уже было сказано, поиск по радужной таблице выполняется очень быстро и не требует серьёзных вычислительных ресурсов. То есть если вам нужно взломать Точку Доступа с известным именем, то вы можете предварительно рассчитать радужную таблицу для неё на мощном компьютере. А захватить и проверить по радужной таблице рукопожатие вы можете на маломощном (миниатюрном) оборудовании.

Из недостатков радужных таблиц — они занимают много места, намного больше чем просто файл паролей, на основе которой была вычислена радужная таблица, или маска, которая вообще не занимает места.

Виды радужных таблиц Wi-Fi. Состав радужных таблиц для взлома Wi-Fi

Главным элементом радужных таблиц для взлома Wi-Fi являются plainmasterkeys. Для их вычисления нужно название ТД (ESSID) и кандидат в пароли. Но: из plainmasterkeys невозможно извлечь пароль, с помощью которого он был вычислен (только если брут-форсом). Поэтому кроме plainmasterkeys в базе данных должны быть также исходные пароли.

Как именно это «оформить» программы решают по-своему. Среди знаменитых программ, которые уже давно используют радужные таблицы для взлома Wi-Fi, это Pyrit и coWPAtty. Причём Pyrit может использовать мощность видеокарты для выполнения вычислений, поэтому раньше справедливо назывался самым быстрым взломщиком Wi-Fi паролей. У Pyrit и coWPAtty разные форматы баз данных. Поскольку в настоящее время эти программы не очень актуальны, не будем на них останавливаться.

В настоящее время актуальными программами, которые могут использовать радужные таблицы для взлома Wi-Fi, являются Hashcat и John the Ripper. Обе эти программы могут использовать видеокарты. Но суть в том, что это неважно — эти программы только проверяют хеш перехваченного рукопожатия по радужной таблице. А саму радужную таблицу нужно создавать с помощью сторонней программы.

Hashcat и John the Ripper в качестве радужной таблицы принимают простой список plainmasterkeys, не содержащий соответствующих каждому PMK паролей! Запомним это…

Программа для генерации радужной таблицы Wi-Fi

Радужные таблицы Wi-Fi может создавать программа wlangenpmkocl из пакета hcxkeys.

Пакет hcxkeys включает две утилиты:

  • wlangenpmk — генерирует plainmasterkeys (используя CPU) из essid и пароля для использования в hashcat (с режимом хеша 2501) или в John the Ripper (тип хеша wpapsk-pmk)
  • wlangenpmkocl — генерирует plainmasterkeys (используя GPU) из essid и пароля для использования в hashcat (с режимом хеша 2501) или в John the Ripper (тип хеша wpapsk-pmk)

То есть разница между ними только в том, что wlangenpmkocl использует видеокарту, а wlangenpmk использует центральный процессор. Конечно же, предпочтительнее использовать версию для видеокарты (то есть wlangenpmkocl). Версия wlangenpmk только для крайних ситуаций — у вас нет дискретной видеокарты или вы не можете установить её драйвер для полноценной поддержки OpenCL

Как установить hcxkeys

Чтобы использовать wlangenpmkocl, установите драйверы для видеокарты, информацию об этом и о OpenCL вы найдёте в статьях:

Установка в Kali Linux

Если при выполнении команды make выведены следующие сообщения:

то это не ошибки — это информация. Компиляция всё равно должна завершиться успешно и можно продолжать.

Установка в BlackArch

Как создать радужную таблицу для взлома в Hashcat или John the Ripper

На этапе создания радужной таблицы рукопожатие или хеш не нужны. Нужно только название ТД, но название обязательно должно быть правильным.

К примеру, у меня есть захваченное рукопожатие, название ТД в нём можно посмотреть множеством способов, я воспользуюсь командой aircrack-ng:

Название показано в столбце ESSID, в моём случае это RT-WiFi_96.

Теперь нам нужно посмотреть номер устройства (видеокарты), которые мы укажем для использования в wlangenpmkocl. Если вы будете использовать wlangenpmk, то пропустите этот шаг.

Для вывода список OpenCL устройств используйте опцию -l:

Как мило — программа не только показала список устройств, но и написала, какие опции нужно указать, чтобы использовать то или иное железо:

Конечно же, я буду использовать GeForce GTX 1050 Ti, из представленного списка она самая мощная.

Теперь нужно запустить команду вида:

Итак, имя ТД (ESSID) в моём случае RT-WiFi_96, имя словаря rockyou_cleaned.txt, опции выбора устройства OpenCL -P 1 -D 0 и вычисленные plainmasterkeys я хочу сохранить в файл pmk.txt, тогда команда следующая:

Для wlangenpmk всё точно также, но не нужно использовать опции -P и -D.

Скорость генерации около 100 тысяч хешей в секунду.

ВНИМАНИЕ: если в файле «ФАЙЛ-ВЫВОДА-PMK» уже есть строки, то файл будет дополнен, а не перезаписан!

Как в Hashcat использовать радужные таблицы для взлома Wi-Fi

Чтобы не запутаться, где какой файл указывать, разберёмся, как работают Hashcat и John с радужными таблицами. Эти программы работают по принципу «получен пароль → для него рассчитан хеш → хеш сравнивается с предоставленным». При работе с радужными таблицами в качестве «пароля» выступает хеш из радужной таблицы.

То есть мы будем работать с хешами двух типов: PMK и хеш рукопожатия. Значения PMK должны указываться в качестве кандидатов в пароли.

Теперь с помощью программы cap2hccapx из пакета hashcat-utils, нам нужно конвертировать захваченное рукопожатие в хеш, который может взламывать hashcat.

Установка hashcat-utils в Kali Linux:

Установка hashcat-utils в BlackArch:

Для конвертации используется команда вида:

То есть хеш сохранён в файл RT-WiFi_96.hash.

Теперь нужно запустить hashcat. В качестве режима взлома нужно указать -m 2501 (WPA-EAPOL-PMK).

Общий вид команды:

В моём случае это следующая команда:

Проверка по почти 10 миллионам plainmasterkeys заняла меньше секунды.

Но радоваться пока рано, обычно взломанный пароль содержится после названия ТД через двоеточие, но посмотрим повнимательнее на нашу строку:

Там после двоеточия f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0 — это plainmasterkey, мы можем даже найти его в файле pmk.txt, но толку от этого мало.

Как восстановить пароль из plainmasterkey

Есть два способа получить пароль — я покажу вариант от автора программы и второй, который я придумал сам. Вы сами можете выбрать, который вам нравится больше.

Нам нужен инструмент wlanpmk2hcx из пакета hcxtools.

Установка в Kali Linux

Установка в BlackArch

Теперь нужно выполнить команду вида

В моём случае это команда:

А вы думали вам покажут пароль? Неа. Нам дали новый хеш и мы его будет опять брут-форсить (не забывайте, дальше будет мой собственный способ, в котором можно обойтись без этого).

Итак, нам нужно использовать hashcat с режимом хеша 12000 (PBKDF2-HMAC-SHA1). Новый хеш:

Запускаем команду вида:

ХЕШ обязательно поместите в кавычки или сохраните в файл и в строке команды укажите файл.

Скорость перебора 247.5 kH/s и через 6 секунд хеш взломан.

Посмотрим на строку:

В ней подобранным паролем является 22011995 — это и есть пароль от ТД Wi-Fi.

Последняя стадия явно лишняя — мы сделали ненужную работу, которую можно было бы не делать. Давайте разберёмся с этим.

Как пропустить этап взлома plainmasterkey

Мы использовали программу wlangenpmkocl с опцией -a, что означает вывод plainmasterkeys в файл. У программы есть также опция -A, которая позволяет генерировать файл со строками вида plainmasterkey:ПАРОЛЬ. Создадим такой файл:

«Небольшой» минус этого формата в том, что с таким файлом не может работать hashcat. Поэтому мы будем использовать такую конструкцию (считывается ФАЙЛ-PMK, из него берётся только PMK без пароля и отправляется по стандартному вводу в hashcat в качестве кандидата) :

У меня файл с plainmasterkeys формата plainmasterkey:ПАРОЛЬ имеет имя pmk.txt, хеш, извлечённый из хендшейка, помещён в файл RT-WiFi_96.hash, тогда команда следующая:

Читайте также:  Таблица соответствия для дешифратора

Опять всё взломано за 0 секунд.

И опять вместо пароля нам дан хеш:

В чём тогда разница? А разница в нашем файле pmk.txt, в котором каждому хешу соответствует его пароль!

То есть теперь мы выполним команду вида:

  • ФАЙЛ-PMK — это файл с plainmasterkeys, у меня этот файл называется pmk.txt
  • ПОДОБРАННЫЙ-PMK — это тот самый plainmasterkey, который мы взломали с помощью hashcat и который находится за названием ТД после двоеточия, в моём случае это f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0

Тогда команда следующая:

То есть найден хеш и соответствующий ему пароль (22011995), который идёт после двоеточия.

Как в John the Ripper использовать радужные таблицы для взлома Wi-Fi

В John the Ripper всё очень похоже, рассмотрим два варианта — последовательный взлом PMK и хеша и взлом только одного PMK.

1-й вариант

Создаём радужную таблицу командой вида:

Предыдущая команда по вычислению PMK одинаковая с той, которую мы использовали для Hashcat. Но для конвертации рукопожатия в хеш для John the Ripper команда отличается. Причём программа wpapcap2john (которая конвертирует рукопожатия для взлома по маске или по словарю) не подойдёт для взлома по радужным таблицам. Подробнее о wpapcap2john смотрите в «Полном руководстве по John the Ripper. Ч.2: утилиты для извлечения хешей».

Нам нужно использовать программу hcxpcapngtool из пакета hcxtools.

Установка в Kali Linux

Установка в BlackArch

Для конвертации рукопожатия в хеш для взлома по радужным таблицам в John используйте команду вида:

Теперь, когда вычислена радужная таблица и сгенерирован хеш рукопожатия, в john запустим по ней проверку хеша рукопожатия. В качестве словаря нам нужно указать файл с вычисленными PMK, общий вид команды:

Будет выбран формат хеша wpapsk-pmk. Существует также формат хеша wpapsk-pmk-opencl, который отличается тем, что используются вычисления на видеокарте. На самом деле, OpenCL форматы запускаются значительно дольше (несколько секунд), а вычисление даже на wpapsk-pmk выполняется за доли секунды. Поэтому особого смысла указывать опцию —format=wpapsk-pmk-opencl нет. Но просто помните о такой возможности на случай очень больших радужных таблиц.

Итак, мои plainmasterkeys сохранены в файл pmk.txt, а хеш рукопожатия сохранён в файл RT-WiFi_96.john, тогда команда для поиска по радужной таблице следующая:

Совпадение найдено, об этом говорит строка:

Если вы что-то пропустили, то взломанный пароль/хеш можно посмотреть командой вида:

В моём случае это:

Теперь нужно запустить команду вида:

В моём случае это команда:

Применительно к john, нам дано имя алгоритма: pbkdf2-hmac-sha1 для взлома, а также хеш:

Предыдущая команда и её вывод нам уже знакомы по разделу с Hashcat. В справке сказано, что можно добавить к ней опцию -j, которая означает, сохранить вывод для john в файл:

Но у меня это не сработало — поэтому просто сохраним приведённый выше хеш в файл forjohn.hash.

Теперь нужно запустить команду вида:

Вместо формата PBKDF2-HMAC-SHA1-opencl (взлом на видеокарте) можно указать PBKDF2-HMAC-SHA1 (взлом на центральном процессоре).

У меня словарь имеет имя rockyou_cleaned.txt, а хеш помещён в файл forjohn.hash, поэтому команда следующая:

Наконец-то взломан пароль от ТД, это: 22011995

2-й вариант (пропуск брут-форса plainmasterkey)

Запускаем wlangenpmkocl с опцией -A:

Теперь нужно запустить команду вида:

Обратите внимание, что опция —wordlist заменена на опцию —stdin, которая означает считывать кандидаты в пароли из стандартного ввода.

Хеш вновь взломан:

В нашем файле pmk.txt каждому хешу соответствует его пароль — это благодаря опции -A, которую мы использовали с программой wlangenpmkocl.

То есть теперь мы выполним команду вида:

  • ФАЙЛ-PMK — это файл с plainmasterkeys, у меня этот файл называется pmk.txt
  • ПОДОБРАННЫЙ-PMK — это тот самый plainmasterkey, который мы взломали с помощью hashcat и который находится перед названием ТД, помещённой в круглые скобки, в моём случае это f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0

Тогда команда следующая:

Найден хеш и соответствующий ему пароль (22011995), который идёт после двоеточия.

Как по маскам создавать радужные таблицы для взлома Wi-Fi

Программа wlangenpmkocl вместо опции -i СЛОВАРЬ может получать список кандидатов в пароли из стандартного ввода. То есть следующая команда

полностью эквивалентна этой

ВНИМАНИЕ: помните о разнице опций -A и -a и выберите ту из них, которая вам подходит.

По этой причине можно генерировать кандидаты паролей в программах, поддерживающих маски и передавать их на вход wlangenpmkocl.

Для вывода кандидатов в пароли с помощью Hashcat используйте опцию —stdout в команде вида:

В этой команде hashcat генерирует пароли по маске ?d?d?d?d?d?d?d?d (пароли из восьми цифр) и из них рассчитываются PMK.

В качестве альтернативы Hashcat можно использовать Maskprocessor в команде вида:

В John the Ripper помощью опции —stdout вы можете вместо запуска взлома показать создаваемые кандидаты в пароли.

Команда, аналогичная предыдущим:

Будущее

ZerBea — автор большинства утилит, которые мы использовали в этой инструкции, — планирует написать ещё одну утилиту, которая будет вычислять potfile для hashcat -m 22000. Благодаря этому можно использовать опцию hashcat —show на предварительно вычисленных результатах. Это будет ещё один вариант радужной таблицы. Но в настоящее время у него в приоритетах EAP, SAE (WPA3).

Источник

Радужный стол

Радуга Стол ( Engl. Для радужной таблицы ) является одним из Philippe Oechslin разработал структуру данных , быстрый, память эффективный поиск исходной строки ( как правило, пароль) для данного значения хэш — функции позволяет. Поиск по радужной таблице выполняется значительно быстрее, чем при использовании метода грубой силы , но требования к памяти выше. Такой компромисс называется компромиссом между временем и памятью .

Предполагается хэш-функция без соли , например, Так обстоит дело, например, с паролями для более ранних версий Windows и со многими маршрутизаторами . Сравнительно обширные таблицы были рассчитаны для хэшей LM и MD5 и доступны из различных источников.

Радужные таблицы используются для восстановления паролей, в ИТ-криминалистике , для тестов на проникновение и для взлома паролей.

Содержание

  • 1 обзор
  • 2 Как это работает
    • 2.1 редукционная функция
    • 2.2 Применение
    • 2.3 Разумная золотая середина: радужный стол
    • 2.4 Идеальные и несовершенные радужные таблицы
  • 3 контрмеры
    • 3.1 Длина пароля
    • 3.2 Соли
    • 3.3 итерации
    • 3.4 Процесс «Перец»
  • 4 веб-ссылки

обзор

Радужная таблица — это компактное представление связанных последовательностей паролей, так называемых цепочек. Каждая из этих цепочек начинается с начального пароля, который передается через хеш-функцию . Результирующий хеш, в свою очередь, передается через функцию сокращения, в результате чего появляется другой потенциальный пароль в виде открытого текста. Этот процесс повторяется указанное количество раз, и, наконец, первый пароль в цепочке сохраняется вместе с паролем из последнего значения хеш-функции.

При создании таблицы убедитесь, что, с одной стороны, ни один пароль, который появляется в цепочке, не используется в качестве стартового пароля (коллизия), но, с другой стороны, все возможные пароли появляются в таблице. Таблицы создаются только один раз и затем служат в качестве справочной таблицы.

Чтобы узнать пароль, нужно пройти два этапа. Сначала хеш-код найденного пароля проходит через последовательность сокращения хеш-кода, описанную выше, до тех пор, пока результат сокращения не появится в таблице последних звеньев цепочки («правая часть» таблицы). Это дает вам стартовый пароль цепочки, и на втором шаге вы можете использовать основанную на этом последовательность сокращения хеширования, чтобы получить пароль, который вы ищете.

Длина цепочки, то есть количество итераций для создания таблиц, влияет на размер таблицы: чем дольше выбираются итерации, тем меньше результирующая таблица. В простейшем случае количество итераций равно 1, так что таблица содержит все пары хешей паролей.

функциональность

Хеш-функция назначает двоичную последовательность фиксированной длины двоичной последовательности любой длины. С хэш-функцией MD5 эта длина вывода составляет 128 бит или 32 4-битных символа. Хеш-значение рассчитывается для случайной строки длины . Этот результат хэш-функции (длиной 32) преобразуется функцией сокращения R в новую строку символов, которая снова имеет длину . Поскольку последовательное выполнение хэш-функции и функции сокращения не изменяет длину строки символов, эти два шага можно повторять попеременно так часто, как это необходимо. Последовательность промежуточных результатов в конечном итоге образует цепочку. Начальное и конечное значения этой цепочки сохраняются. Эта последовательность шагов также повторяется раз и образует универсальную радужную таблицу . п <\ displaystyle n> пп <\ displaystyle n> пИкс <\ displaystyle x> Икс

Функция редукции

п

Функция сокращения сокращает хеш-значение до символов. Каждое из этих сокращений дает, например, B. MD5 создает новую «уникальную» 128-битную строку или коллизию. Хэш-значение, которое может быть сгенерировано различными строками выходных символов, называется коллизией. Чтобы избежать коллизий, используются различные функции сокращения, которые при периодическом применении позволяют четко назначать строку входных символов и выходной хэш. Этот метод является более эффективным методом для n-значных строк, чем, например, атака грубой силы с поиском по ключу [a — //////], поскольку с последним многие строки преобразуются в хэши, которые с большой вероятностью никогда не появятся. или быть выбранным. п <\ displaystyle n>

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

применение

В этом примере мы ищем символьную строку, хеш-значение которой MD5 в шестнадцатеричном представлении соответствует 97fae39bfd56c35b6c860aa468c258e0 ( Domino ). Обычный способ вычисления всех хэшей MD5 для всех возможных вариантов и их сравнения требует значительных вычислительных ресурсов и должен повторяться для новых поисков.

Имеет смысл сохранить все хэши, которые уже были рассчитаны в базе данных, и только при повторном поиске нужно будет сравнивать, известен ли хеш, который вы ищете, уже. При поиске более 64 возможных символов [A-Za-z0-9./], которые может иметь каждая позиция вводимого текста, есть варианты с 6 символами . Если текст и хэш теперь хранятся в базе данных, для хеша требуется 16 байтов на пару, а для обычного текста — 6 байтов, и, таким образом, около 1,4 терабайта для полных данных . 64 Шестой <\ displaystyle 64 ^ <6>> 64 ^ <6 data-lazy-src=

Эти объемы данных обычно не могут быть обработаны и должны быть уменьшены.

Разумная золотая середина: стол Rainbow

Вместо сохранения всех значений, включая их ключи, сохраняется только начальная строка символов и последняя строка символов строки -элемента. Таким образом, хеши могут быть представлены начальным и конечным значением и пересчитаны за сравнительно короткое время, так что вводимый текст можно будет снова найти. Если конечное значение формируется из сокращенного хеш-кода (= обычный текст), эта цепочка пересчитывается от начального значения до тех пор, пока не будет получен данный хеш-код; предыдущий текст является искомым исходным текстом. При длине цепочки всего 9999 вычислений хеша необходимо найти исходный текст для хеша. п <\ displaystyle n> пп — 1 <\ displaystyle n-1> п-1п знак равно 10 000 <\ displaystyle n = 10 000> n = 10 000

Вероятность получить именно тот входной текст, который вы ищете, из сокращенных хэшей зависит от качества функции (ов) сокращения и параметров при создании радужной таблицы, поскольку позже можно будет найти только сокращенные хэши (= простой текст). Например, если функция (и) сокращения сводится только к числам, простой текст «Домино» не может быть найден. Если функция (-ы) редукции сокращается до семи цифр (с 32), то 6-значные открытые тексты не вычисляются, и «Domino» здесь также не может быть найден.

Идеальные и несовершенные радужные таблицы

В идеальной радужной таблице нет паролей, которые встречаются дважды в цепочках. Таким образом, в идеальной радужной таблице наименьшее количество цепочек для отображения всех паролей. Однако для создания идеальной радужной таблицы требуется больше усилий. В несовершенных радужных таблицах в цепочках появляются избыточные пароли. Их производить быстрее, но они занимают больше места, чем идеальный радужный стол.

Контрмеры

Пароли перед сохранением хешируются с помощью криптографической хеш-функции, поэтому пароль не может быть выведен из списка сохраненных хеш-значений, если файл с паролями будет украден. Радужные столы делают это возможным. Для защиты паролей существуют различные контрмеры, которые должны сделать использование радужных таблиц менее эффективным.

Длина пароля

Размер радужной таблицы увеличивается с увеличением длины паролей, для которых она должна быть сгенерирована. В зависимости от типа хэша расчет радужной таблицы больше не является экономичным при определенной длине пароля, как с точки зрения продолжительности генерации (затраты на электроэнергию), так и с точки зрения требований к пространству таблиц. Возникают длинные пароли, например Б. при использовании предложений вместо слова (см. Кодовую фразу ).

Еще один способ сделать создание радужных таблиц неэкономичным — это использование соли . Значение — в идеале — случайно сгенерированное значение, соль, добавляется к паролю перед хешированием. Соль сохраняется вместе с хеш-значением, чтобы пароль можно было проверить позже, поэтому это не секрет.

  • Пароль, ровно 6 цифр, разрешены только цифры: 123456
  • Соль, любая комбинация трех заглавных букв: ABC

Так что теперь хешируется не 123456 , а 123456ABC . Создание радужной таблицы именно для этой соли занимает не намного больше времени, чем без соли, поскольку последняя часть пароля (соль) уже известна. Таблица должна быть создана для всех возможных комбинаций с ABC в конце, которые, конечно же, содержат столько же записей, сколько и без соли в конце:

пароль Хеш
111111ABC хэш (111111ABC)
111112ABC хэш (111112ABC)
. .
999999ABC хеш (999999ABC)

Настоящая особенность заключается в том, что соль не всегда остается неизменной, а генерируется случайным образом с каждым паролем. Радужная таблица для Salt ABC нам бесполезна с Salt от XYZ . Для этого придется заново создать радужную таблицу. Это умножит усилия на количество возможных солей, потому что для каждой возможной соли нужно будет создать радужную таблицу.

Поскольку радужную таблицу больше нельзя использовать для поиска всех паролей, этот метод становится неэкономичным и технически невозможным. Однако соли не могут защитить короткие пароли — они только увеличивают усилия, необходимые для перебора паролей, если их несколько, но они никоим образом не предотвращают его.

Итерации

Усилия могут быть дополнительно увеличены, если пароль хешируется не один, а несколько раз — обычно несколько тысяч итераций . Только сочетание солей и итераций дает метод хеширования, который имеет определенную устойчивость к типичным методам атаки. Соль делает создание таблиц неэкономичным или даже невозможным; вместе с итерациями атаки грубой силы значительно замедляются. Успешная реализация, например, Б. MD5 (крипта). Метод основан на MD5 , но использует соли длиной от 12 до 48 бит и 1000 итераций. Создание радужных таблиц для этого метода неэкономично из-за длины соли в реальных условиях, так как это чистый брутфорс .

«Перечный» метод

Pepper означает объединение пароля с секретной строкой перед вычислением хеш-значения. Перец является секретным и не хранится в базе данных. Вместо этого он хранится в максимально безопасном месте, и один и тот же Pepper применяется ко всем паролям. Если злоумышленник знает этот код (например, если он получает контроль над сервером), перец не приносит никаких преимуществ. Однако, если злоумышленник имеет доступ только к базе данных (например, через SQL-инъекцию), он распознает хеш-значения, но они больше не исходят из слабых паролей. Это хеш-значения длинных комбинаций пароля и сильного перца. Ни один словарь никогда не содержит таких паролей, поэтому словарная атака бессмысленна. Часто рекомендуется использовать HMAC для объединения пароля и перца. Если, с другой стороны, они просто прикреплены друг к другу, перец следует добавлять после, а не перед паролем, поскольку некоторые хэш-функции игнорируют символы из определенной позиции.

Источник

Хэш-функции. Радужные таблицы. Назначение. Принцип построения и использования. Защита паролей от взлома с использованием радужных таблиц. (1 семестр 9 лекция)

Хэш-функции – это функции, предназначенные для «сжатия» произвольного сообщения или набора данных, записанного, как правило, в двоичном алфавите, в некоторую битовую комбинацию фиксированной длины, называемую сверткой или хэшем. (необходимо знать)

Применение хэш-функций в криптографии:

· Построение систем контроля целостности данных при их передаче или хранении;

· Аутентификация источника данных.

Одношаговые сжимающие функции

Y=f(x 1,x 2), где x и y – двоичные векторы длины m и n соответственно, причем n – длина свертки.

Для получения значения h(M) сообщение M сначала разбивается на блоки длины m (при этом если длина сообщения не кратна m, то последний блок неким специальным образом дополняется до полного), а затем к полученным блокам M 1,M 2,…,M N применяют следующую последовательную процедуру вычисления свертки:

v-некоторый фиксированный начальный вектор

1)Ключевыми: свертка зависит от сообщения и тайного ключа

2)Бесключевыми: свертка зависит только от сообщения

Основной проблемой при переборе паролей является необходимость их повторного перебора при каждой следующей атаке, при этом хранение комбинаций «пароль-хэш» требуют очень большого объема дискового пространства. Радужные таблицы являются компромиссом.

Формирование радужной таблицы:

6) В первый столбец строки радужной таблицы записывается ещё неиспользованная парольная комбинация: AAA

7) Вычисляется свертка от этого пароля: AAA->h(AAA)=123

8) Важным компонентом радужной таблицы является функция рекурсии, которая преобразует свертку в перебираемое множество символов:

9) Шаги 2-3 выполняются число раз, соответствующее глубине радужной таблицы.

10) Последняя свертка заносится во второй столбец строки радужной таблицы:

Использование радужной таблицы

3) Хэш искомого пароля ищется во втором столбце радужной таблицы. Если хэши не совпали ни в одной строке, то вычисляется пара «рекурсия-свертка» и ищется уже вновь полученный хэш. Шаг завершается, если мы нашли строчку, в которой совпали хэши (переходим к шагу 2) или количество рекурсий сверток превысило глубину радужной таблицы (конец алгоритма, в таблице искомого пароля нет).

4) Исходный пароль строки радужной таблицы (первый столбец) обрабатываются функциями свертки рекурсии до тех пор, пока вычисленный хэш не совпадет с искомым первоначально хэшем. Пароль, породивший этот хэш, является искомым паролем или коллизией.

Метод борьбы с радужными таблицами называется «просаливанием хэша». Соль – это какое-то значение, меняющееся от системы к системе и в общем случае открытое, которое используется при формировании хэша любого пароля в этой конкретной системе. Таким образом, один и тот же пароль в системах с разной солью будет давать разные хэши.

Для взлома такой системы злоумышленнику необходимо либо создавать радужные таблицы под каждую систему (компьютер) или создавать гигантскую таблицу, учитывающую кроме возможных вариантов пароля, возможные варианты соли.

Обеспечение аутентификации. Протоколы идентификации. Классификация протоколов. Основные виды атак на протоколы идентификации и методы защиты. (2 семестр лекция 1)

Обеспечение аутентификации – разработка методов подтверждения подлинности сторон (идентификация) и самой информации в процессе информационного взаимодействия.

Формально различают идентификацию и аутентификацию.

Идентификация – это представление, предъявление идентификатора, а аутентификация – подтверждение подлинности идентификатора. Однако в большинстве случаев эти процедуры выполняются совместно и любой из этих терминов может применяться для обозначения связки идентификация + аутентификация.

Средства обеспечения аутентификации – это протокол аутентификации.

Протокол – это распределенный алгоритм, определяющий последовательность действий каждой из сторон. В процессе выполнения протокола аутентификации участники передают свою идентификационную информацию и информацию для проверки ее подлинности; затем происходит проверка подлинности идентификатора на основе вновь принятой и ранее имевшейся информации.

Протоколы идентификации бывают:

В каждом протоколе идентификации есть 2 участника:

3) А – доказывающий, участник проходящий идентификацию

4) В – проверяющий, участник проверяющий аутентичность доказывающего.

Источник

Adblock
detector