Взлом Wi-Fi точки защищенной с помощью WPA2.

Wi-Fi сейчас везде. Достаточно включить поиск в любом населенном людьми месте, как вы получите список запароленных или открытых точек. Но несмотря на такую популярность, протоколы безопасности используемые в Wi-Fi имеют критические уязвимости, взлом которых не требует больших знаний. Эти два факта делают Wi-Fi точки очень вкусной целью для “хакеров” разного уровня подготовки.

Все что вы прочитаете ниже написано в образовательных и целях защиты ваших собственных железок от подобных атак.

WiFi logo

Для того, чтобы проследить за действиями, достаточно базовых знаний linux.

Wi-Fi поддерживает несколько разных протоколов безопасности. Мы остановимся на самом популярном, WPA2-PSK. Этот протокол используется на 80% роутеров и обеспечивает аутентификацию по паролю. В процессе, между клиентом и точкой передаются 4 так называемых фрейма рукопожатий, которые устанавливают соединение и генерируют дальнейшие ключи.

Handshake

Т.к. эти пакеты отправляются в незашифрованном виде, любой Wi-Fi адаптер может их принять и посмотреть, что в них передается:

  • MAC-адрес точки доступа (bssid);
  • MAC-адрес клиента;
  • случайные 32-байтные числа, генерируемые точкой доступа и клиентом (snonce и anonce);
  • содержимое фрейма аутентификации;
  • ключ целостности сообщения (mic).

Получив эти данные, у нас есть все, чтобы мы могли спокойно перебирать пароль, на нашей машине, сравнивая с mic.

К счастью нам не придется заниматься этим вручную, т.к. все давно автоматизировано. Мы будем использовать Kali Linux, набор утилит aircrack-ng, cowpatty и wpaclean.

Переводим наш Wi-Fi адаптер в режим монитора.

Это даст возможность нашей карточке перехватывать все фреймы, которые пролетают в радиусе покрытия, не смотря на то, что они не предназначены нам.

Сначала узнаем какой интерфейс у нас отвечает за Wi-Fi.

iwconfig

iwconfig

Нас интересует wlan0. Дальше мы используем airmon-ng для того, чтобы перевести его в режим монитора.

airmon-ng start wlan0

Airmon

Теперь наш адаптер доступен на интерфейсе wlan0mon.

Находим нашу цель

Нам нужно узнать BSSID точки и канал на котором работает атакуемая точка доступа. Для этого используем airodump-ng.

airodump-ng wlan0mon

Targeting

Наша тестовая точка доступа имеет название target и работает на канале 11 c BSSID C0:EE:FB:50:9B:E1.

Перехватываем 4 фрейма handshake

Airodump-ng и это сделает за нас, нужно лишь указать ему какую точку и на каком канале слушать и куда писать собранные фреймы

airodump-ng --bsid C0:EE:FB:50:9B:E1 -c 11 --write handhake wlan0mon

Handshake

В результате получим надпиcь WPA handshake и BSSID точки. Handshake фреймы передаются во время подкюлчения клиента и возможно этого момента придется ждать довольно долго. Мы можем воспользоваться aireplay-ng и попробовать принудительно отключить пользователей от сети

aireplay-ng --deauth 30 -a C0:EE:FB:50:9B:E1 wlan0mon

После того, как handshake получен, мы можем проверить что все необходимые данные имеются в наличии с помощью утилиты cowpatty.

cowpatty handshake.cap

Последний шаг, очищаем полученные данные и брутим пароль.

Вот и дошли до последней части. Сначала нам необходимо убрать из .cap файла всю лишнюю информацию. С этим нам поможет wpaclean. Что необычно, первым аргументом передается файл куда писать, вторым ваш .cap файл из airodump-ng. Можно перепутать и затереть handshake.

wpaclean wpa.cap handshake.cap

Теперь осталось только достать большой словарь паролей и ждать. В нашем случае словарь тестовый и пароль подберется довольно быстро.

aircrack-ng wpa.cap -w dict.txt

Aircrack start

Aircrack 2

При вычислениях на Intel® Core™ i5-4590 CPU @ 3.30GHz получаем примерно 4500 паролей в секунду. Если добавить сюда видеокарту NVidia GeForce 950M 512/2048 Mb allocatable, 5MCU, то можно выжать в 10 раз больше ~45000 паролей в секунду.

P.S.

Итого протокол уязвим и обычному пользователю остается единственный способ сберечь свою точку от взлома - использовать длинные и не словарные пароли и менять их с некоторой частотой.

Written on February 4, 2017