В этой статье я покажу как каждый из вас может провести тестирование Wi-Fi с шифрованием WPA2 для любых имеющихся в вашем пользовании устройств. Тестирование производится с помощью порядком нашумевшего питон-скрипта на наличие известных уязвимостей против беспроводных точек доступа с “непробиваемой” и самой распространённой формой шифрования WPA2.
Данный проект разработан для того, чтобы продемонстрировать вероятную уязвимость не столько самой точки доступа Wi-Fi с шифрованием WPA2, сколько подключаемых к ней устройств. С помощью некоторых тестов (а их в арсенале несколько), можно испробовать подключаемые к ТД устройства на предмет ряда уязвимостей, как то:
- CVE-2017-13077: переустановка PTK-TK ключа в момент обмена 4-х сторонними рукопожатиями.
- CVE-2017-13078: переустановка группового ключа в момент обмена 4-х сторонними рукопожатиями.
- CVE-2017-13079: переустановка встроенного группового ключа (IGTK) в момент обмена 4-х сторонними рукопожатиями.
- CVE-2017-13080: переустановка группового ключа (GTK) в групповой рукопожатии.
- CVE-2017-13081: переустановка встроенного группового ключа (IGTK) в момент группового рукопожатия.
Также с помощью теста можно выявить проблемы, которые обозначены в уязвимостях CVE-2017-13082, CVE-2017-13084, CVE-2017-13086, CVE-2017-13087, CVE-2017-13088. и т.д. Сами разрабы признались, что на основе проводимых экспериментов и у них и у сторонних компаний есть готовые и эффективные варианты взлома сигнала WPA2 в зависимости от устройства, к нему подключённого.
СРАЗУ
Тем, кто ищет очередной способ взлома Wi-Fi WPA2 – вам не сюда. Ни один из способов атакующим не является и к прямому взлому не имеет никакого отношения. Для того, чтобы провести успешные тесты, вам понадобится целый набор прав для работы с собственными сетями, в том числе сам пароль Wi-Fi к беспроводной сети и физический доступ к устройствам. Забегая вперёд скажу, что в эксперименте, помимо прочего, участвовала целая куча смартфонов и планшетов. Популярных и уже не очень. От iPhone до Андроид, числом до десятка. Тестирование Wi-Fi в итоге принесло несколько удручающие результаты.
Далее. Скрипты подразумевают прохождение нескольких тестов на проверку уязвимостей, обозначенных выше. Это:
./krack-test-client.py
./krack-test-client.py --tptk
./krack-test-client.py --tptk-rand
./krack-test-client.py --group
В одной статье описать всё невозможно, потому за основу взят самый доступный.
В тестировании участвуют:
-
- Кали Линукс Rolling 2018.1 (не виртуальная)
- модем TP-Link TL-W722N из числа модемов для взлома Wi-Fi (далее – альфа-модем)
- целлофановый пакет со смартфонами и планшетами (Digma, Lenovo, iPhone, Sumsung и т.д. с различными версиями прошивок). Результаты по устройствам я покажу в конце статьи.
- Кали Линукс Rolling 2018.1 (не виртуальная)
Подготовка к тестированию
Модем заряжен в USB разъём, работает в обычном режиме, специальных манипуляций с ним не проводится. Для соединения с интернетом я использую кабель на сетевую карту, а альфа-модем будет работать как трансляционная тест-точка. Но тестирование Wi-Fi проводится без трафика во внешнюю сеть через тест-точку не будет, сниферы в тестировании не участвуют.
Тестирование Wi-Fi: качаем и настраиваем файлы скрипта
- Чтобы всё заработало, сначала скачаем дополнительные библиотеки. Для установки зависимостей набираем в терминале:
apt-get install libnl-3-dev libnl-genl-3-dev pkg-config libssl-dev net-tools git sysfsutils python-scapy python-pycryptodome
- Качаем скрипты krack-attack:
git clone https://github.com/vanhoefm/krackattacks-scripts.git
- Компилируем пакет hostapd, залезая в директорию krackattacks-scripts/krackattack:
cd krackattacks-scripts/krackattack
- Нам нужен раздел hostapd:
cd ../hostapd
компилируем файл defconfig:
cp defconfig .config make -j 2
- На этом этапе настройки альфа-модема отчасти готовы. Однако на этапе работы меня подстерегли некоторые нюансы на этапе настройки модема, о которых вам лучше знать. Сейчас нам нужно убрать шифрование (предварительно получив права к файлу .sh) для того, чтобы не было проблем с антенной. С TP-Link-ами это бывает нередко, а раз в России он самый популярный, примите команды за обязательные:
cd ../krackattack/ chmod 777 disable-hwcrypto.sh ./disable-hwcrypto.sh
Консоль заявила о необходимости перезагрузиться. Так и сделайте:
Теперь рекомендую сразу посмотреть на список сетевых адаптеров с помощью igconfig: вам понадобится имя модема, как его видит Кали.
Чтобы не было проблем с соединением:
rfkill unblock all
Выключим модем-транслятор, чтобы не мешал скрипту (следите за именем модема, у меня Кали традиционно определяет его как wlan0):
ifconfig wlan0 down
Я сразу проверю состояние актуальных сетевых устройств: модем пропал из виду (однако само устройство, как видите по следующей команде, на месте):
Убиваем сетевые соединения (они всегда мешают скрипту):
nmcli networking off
Запомните эту команду: она похоронит сетевой менеджер. И даже после перезагрузки сетевых соединений вы не увидите. После окончания знакомства с нашими устройствами и результатами тестирования вернёте интернет обратно командой:
nmcli networking on
Но это потом.
Настройки тест-точки
В файле настройки будущей точки доступа будут некоторые места, которые лучше сразу отредактировать. Откройте его:
cd krackattacks-scripts/krackattack ls leafpad hostapd.conf
и вместо значения …. после знака “=” я ввожу имя беспроводного интерфейса моего альфа-модема. Это, как вы помните, wlan0 (у вас своё может быть):
Далее. Вы можете ничего не менять, но я придал логичные очертания фальшивой тест-точке. В том же файле опускаюсь пониже, меняю SSID тест-точки на Модем.
Сменим пароль в части wpa_passphrase=12345678 (где 12345678 – пароль для нашей будущей ТД):
Тестирование Wi-Fi WPA2: запускаем тест
python krack-test-client.py
Терминал ответил, что точка готова, можно приступать к тестировани. Теперь подключаем имеющиеся устройства. В настройках подключения к беспроводным сетям ищем нашу тест-точку и подключаемся выбранным паролем:
В Кали видим следующее:
Ждём результаты. И оп!:
Скрипт сообщает, что первый же смартфон на Андроид переустановил групповой ключ в процессе 4-х стороннего рукопожатия (что не есть хорошо – см. уязвимости в начале статьи). Вторую часть теста, однако, все смартфоны прошли успешно:
Результаты тестирования или как отработал модем
Привожу по тем устройствам, которые мне попали в руки. Собирал у родственников и друзей, так что не увидите в списке близкий вам по сердцу девайс (результаты по очень уж древним или похожим устройствам исключены), я не виноват. Получилась вот такая табличка уязвимостей:
Устройство/Версия ПО | Переустановка парного ключа | Переустановка группового ключа |
LG G3/Android 6 | Уязвим | Уязвим |
Lenovo A5000/Android 5 | Не уязвим | Уязвим |
Apple iPhone 5s/iOS 7 | Неуязвим | Неуязвим |
Digma Optima/Android 6 | Не уязвим | Уязвим |
Qumo Quest/Android 4 | Не уязвим | Уязвим |
Собственно, сами разработчики не раз заявляли о том, что атакующие скрипты (типа KrackPlus) нацелены именно на Андроид и Линукс-системы.
Однако. Прежде, чем бить тревогу и делать неутешительные выводы, можно было бы заострить внимание на качестве драйвера и версии модема, который вы используете в качестве альфа-карты. Меня указываемый модем ни разу не подводил. К чему я? Дело в том, что результаты тестирования после применения патчей от указанных уязвимостей у некоторых не изменяются: устройства продолжают “оставаться” уязвимыми к переустановке ключа. Один момент: если ситуация не исправляется, перед повторным тестом на уязвимость устройств лучше проверить, как обрабатывает ваше устройство повторяющийся поток данных. Тем более, что терминал с обнаруженной уязвимостью так об этом и говорит:
...Or client replays broadcast frames...
Так что смотрим:
python krack-test-client.py --replay-broadcast
В любом случае всю вину на повторяющиеся ошибки в тестах я пока склонен возлагать на “неправильный” модем. который используется в качестве беспроводной ТД. Советую использовать устройства из списка по ссылке Модемы для взлома WI-Fi.
Успехов нам всем.