Тестирование Wi-Fi WPA2: устойчивость к Krack-atack.

03.11.2018 0 Автор GodKnowses

В этой статье я покажу как каждый из вас может провести тестирование 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-13082CVE-2017-13084CVE-2017-13086CVE-2017-13087CVE-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 и т.д. с различными версиями прошивок). Результаты по устройствам я покажу в конце статьи.

Подготовка к тестированию

Модем заряжен в 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

krack-attack скрипт

  • На этом этапе настройки альфа-модема отчасти готовы. Однако на этапе работы меня подстерегли некоторые нюансы на этапе настройки модема, о которых вам лучше знать. Сейчас нам нужно убрать шифрование (предварительно получив права к файлу .sh) для того, чтобы не было проблем с антенной. С TP-Link-ами это бывает нередко, а раз в России он самый популярный, примите команды за обязательные:
cd ../krackattack/
chmod 777 disable-hwcrypto.sh
./disable-hwcrypto.sh

Консоль заявила о необходимости перезагрузиться. Так и сделайте:

настройка krack-attack скрипта

перезагрузка из терминала

Теперь рекомендую сразу посмотреть на список сетевых адаптеров с помощью igconfig: вам понадобится имя модема, как его видит Кали.

список сетевых интерфейсов кали линукс

мой модем wlan0 — запомним это

Чтобы не было проблем с соединением:

rfkill unblock all

Выключим модем-транслятор, чтобы не мешал скрипту (следите за именем модема, у меня Кали традиционно определяет его как wlan0):

ifconfig wlan0 down

Я сразу проверю состояние актуальных сетевых устройств: модем пропал из виду (однако само устройство, как видите по следующей команде, на месте):

отключить wi-fi из терминала

показать отключённые сетевые устройства

Убиваем сетевые соединения (они всегда мешают скрипту):

nmcli networking off

Запомните эту команду: она похоронит сетевой менеджер. И даже после перезагрузки сетевых соединений вы не увидите. После окончания знакомства с нашими устройствами и результатами тестирования вернёте интернет обратно командой:

nmcli networking on

Но это потом.

Настройки тест-точки

В файле настройки будущей точки доступа будут некоторые места, которые лучше сразу отредактировать. Откройте его:

cd krackattacks-scripts/krackattack
ls
leafpad hostapd.conf

и вместо значения …. после знака «=» я ввожу имя беспроводного интерфейса моего альфа-модема. Это, как вы помните, wlan0 (у вас своё может быть):

изменить имя интерфейса

Далее. Вы можете ничего не менять, но я придал логичные очертания фальшивой тест-точке. В том же файле опускаюсь пониже, меняю SSID тест-точки на Модем.

переименуем wi-fi тд в модем

Сменим пароль в части wpa_passphrase=12345678 (где 12345678 — пароль для нашей будущей ТД):

зададим свой пароль 1234567

Тестирование Wi-Fi WPA2: запускаем тест

python krack-test-client.py

запуск krack-attack

Терминал ответил, что точка готова, можно приступать к тестировани. Теперь подключаем имеющиеся устройства. В настройках подключения к беспроводным сетям ищем нашу тест-точку и подключаемся выбранным паролем:

пароль к wi-fi точке доступа

В Кали видим следующее:

krack-attack

Ждём результаты. И оп!:

переустановка группового ключа

Скрипт сообщает, что первый же смартфон на Андроид переустановил групповой ключ в процессе 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.

Успехов нам всем.