Взлом Wi-Fi точки защищенной с помощью WPA2.
Wi-Fi сейчас везде. Достаточно включить поиск в любом населенном людьми месте, как вы получите список запароленных или открытых точек. Но несмотря на такую популярность, протоколы безопасности используемые в Wi-Fi имеют критические уязвимости, взлом которых не требует больших знаний. Эти два факта делают Wi-Fi точки очень вкусной целью для “хакеров” разного уровня подготовки.
Все что вы прочитаете ниже написано в образовательных и целях защиты ваших собственных железок от подобных атак.
Для того, чтобы проследить за действиями, достаточно базовых знаний linux.
Wi-Fi поддерживает несколько разных протоколов безопасности. Мы остановимся на самом популярном, WPA2-PSK. Этот протокол используется на 80% роутеров и обеспечивает аутентификацию по паролю. В процессе, между клиентом и точкой передаются 4 так называемых фрейма рукопожатий, которые устанавливают соединение и генерируют дальнейшие ключи.
Т.к. эти пакеты отправляются в незашифрованном виде, любой Wi-Fi адаптер может их принять и посмотреть, что в них передается:
- MAC-адрес точки доступа (bssid);
- MAC-адрес клиента;
- случайные 32-байтные числа, генерируемые точкой доступа и клиентом (snonce и anonce);
- содержимое фрейма аутентификации;
- ключ целостности сообщения (mic).
Получив эти данные, у нас есть все, чтобы мы могли спокойно перебирать пароль, на нашей машине, сравнивая с mic.
К счастью нам не придется заниматься этим вручную, т.к. все давно автоматизировано. Мы будем использовать Kali Linux, набор утилит aircrack-ng, cowpatty и wpaclean.
Переводим наш Wi-Fi адаптер в режим монитора.
Это даст возможность нашей карточке перехватывать все фреймы, которые пролетают в радиусе покрытия, не смотря на то, что они не предназначены нам.
Сначала узнаем какой интерфейс у нас отвечает за Wi-Fi.
iwconfig
Нас интересует wlan0. Дальше мы используем airmon-ng для того, чтобы перевести его в режим монитора.
airmon-ng start wlan0
Теперь наш адаптер доступен на интерфейсе wlan0mon.
Находим нашу цель
Нам нужно узнать BSSID точки и канал на котором работает атакуемая точка доступа. Для этого используем airodump-ng.
airodump-ng wlan0mon
Наша тестовая точка доступа имеет название 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
В результате получим надпи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
При вычислениях на Intel® Core™ i5-4590 CPU @ 3.30GHz получаем примерно 4500 паролей в секунду. Если добавить сюда видеокарту NVidia GeForce 950M 512/2048 Mb allocatable, 5MCU, то можно выжать в 10 раз больше ~45000 паролей в секунду.
P.S.
Итого протокол уязвим и обычному пользователю остается единственный способ сберечь свою точку от взлома - использовать длинные и не словарные пароли и менять их с некоторой частотой.