Wi-Fi

Взлом WIFI 2020. Новые технники и инструменты.

Осенью 2017 года мир узнал о новой угрозе безопасности сетей Wi-Fi. Она затрагивает абсолютно все устройства и программные платформы. Каким бы сложным и длинным ни был пароль, это не поможет, потому что KRACK — уязвимость самого протокола обмена ключами шифрования WPA2. В этой статье мы разберемся в теории бага и попробуем испытать его на практике.

История уязвимости

16 октября 2017 года была раскрыта информация о критических проблемах WPA2, которые позволяют обойти защиту и в результате прослушивать трафик Wi-Fi, передаваемый между точкой доступа и компьютером.

Комплекс уязвимостей в WPA2, получивший название KRACK (аббревиатура от Key Reinstallation Attacks), был обнаружен сводной группой исследователей из разных университетов и компаний.

Руководитель группы Мэти Ванхоф рассказал, что ему удалось найти проблемы, из которых формируется KRACK, еще в 2016 году, но он более года совершенствовал свою атаку. Исследователь сообщил об уязвимостях некоторым производителям и представителям организации US-CERT в июле 2017 года, а в августе поделился информацией о проблемах с широким кругом вендоров.

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

Принцип действия

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

Злоумышленник может устроить атаку типа man in the middle и принудить участников сети реинсталлировать ключи шифрования, которые защищают трафик WPA2. К тому же, если сеть настроена на использование WPA-TKIP или GCMP, злоумышленник сможет не только прослушивать трафик WPA2, но и инжектить пакеты в данные жертвы.

Эксплуатируя эту критическую ошибку, можно добиться расшифровки трафика, сделать HTTP-инжекты, перехватить TCP-соединения и многое другое.

От KRACK может защитить использование HTTPS, однако далеко не всегда. Дело в том, что сам HTTPS нельзя назвать абсолютно безопасным (к примеру, существуют методики даунгрейда соединения), хотя он и станет дополнительным слоем шифрования.

Метод универсален и работает против любых незапатченных устройств, подключенных к Wi-Fi. Главное условие заключается в том, что атакующему придется находиться в зоне действия атакуемой сети Wi-Fi, то есть атаку нельзя провести удаленно.

Мэти Ванхоф демонстрирует уязвимость

Уязвимости, вошедшие в состав KRACK

  • CVE-2017-13077: reinstallation of the pairwise encryption key (PTK-TK) in the 4-way handshake.
  • CVE-2017-13078: reinstallation of the group key (GTK) in the 4-way handshake.
  • CVE-2017-13079: reinstallation of the integrity group key (IGTK) in the 4-way handshake.
  • CVE-2017-13080: reinstallation of the group key (GTK) in the group key handshake.
  • CVE-2017-13081: reinstallation of the integrity group key (IGTK) in the group key handshake.
  • CVE-2017-13082: accepting a retransmitted Fast BSS Transition (FT) Reassociation Request and reinstalling the pairwise encryption key (PTK-TK) while processing it.
  • CVE-2017-13084: reinstallation of the STK key in the PeerKey handshake.
  • CVE-2017-13086: reinstallation of the Tunneled Direct-Link Setup (TDLS) PeerKey (TPK) key in the TDLS handshake.
  • CVE-2017-13087: reinstallation of the group key (GTK) when processing a Wireless Network Management (WNM) Sleep Mode Response frame.
  • CVE-2017-13088: reinstallation of the integrity group key (IGTK) when processing a Wireless Network Management (WNM) Sleep Mode Response frame.

Эксплуатация

Для демонстрации уязвимости нам понадобится оборудование — как минимум один, а лучше несколько USB Wi-Fi-адаптеров, совместимых с Kali Linux. Мой выбор пал на TP-Link N150 Wireless High Gain USB Adapter (TL-WN722N), он уже протестирован и хорошо совместим с моим дистрибутивом. Но ты можешь использовать и любой другой на свой вкус.

Зачем нам вообще этот «свисток», если у ноутбука есть адаптер Wi-Fi? Отдельное устройство для вардрайвинга рекомендуется не только потому, что на него меньше наводок и у него более сильная антенна, но еще и из соображений удобства. Со встроенного адаптера Wi-Fi можно параллельно выходить в интернет, а это довольно важная возможность.

В общем, с TP-Link мы и поднимем свою фейковую (или, если угодно, тестовую) сеть и будем проворачивать в ней наш эксперимент.

Поднимем Wi-Fi на Kali Linux

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

Ключ шифрования у нас WPA2-Personal, и сразу договоримся использовать длинный и надежный пароль. Сеть, к которой мы будем подключаться, у меня называется SKG2.

Коннектимся к сети с именем SKG2
Свойства беспроводной сети SKG2

Инсталлируем инструментарий Krack Attack

Сначала нам нужно убедиться, что все необходимые зависимости для инструментария Krack Attack у нас в системе есть. Выполним такую команду:

$ sudo apt-get install libnl-3-dev libnl-genl-3-dev pkg-config libssl-dev net-tools git sysfsutils python-scapy python-pycryptodome

 

Инсталляция пакетов для Krack Attack

Поскольку в самом Kali Linux по умолчанию нет инструментов для воспроизведения нужной нам атаки, мы идем на GitHub и скачиваем там набор скриптов.

$ git clone https://github.com/vanhoefm/krackattacks-scripts.git

 

Инсталляция инструментария Krack Attack

Дальше нам для чистоты эксперимента нужно отключить аппаратное шифрование (hardware encryption). То есть шифровать ключи будем только программными средствами, вшитыми в протоколы Wi-Fi. Для этого переходим в директорию с Krack Attack:

$ cd krackattacks-script

И там запускаем конфигурационный скрипт:

$ sudo ./krackattack/disable-hwcrypto.sh.root
Запускаем конфигурационный скрипт, чтобы отключить аппаратное шифрование

Дальше нам нужно отключить Wi-Fi в сетевом менеджере Kali, то есть отключиться от сети SKG2. Это позволит начать собственную трансляцию в новой сетке WLAN0, где мы и проведем атаку.

Следующим шагом создаем тестовую сеть Wi-Fi с помощью TP-Link N150. Однако для начала нам нужно убедиться, что наше железо не заблокировано. А выясним мы это с помощью утилиты rfkill, набрав следующую команду:

$ sudo rfkill unblock wifi

 

После того как создана тестовая сеть, мы используем сценарий krack-test-client.py. Этот скрипт на Python будет проверять все устройства, подключающиеся к нашей сети Wi-Fi, на уязвимость «атаки переустановки ключей» (именно так официально называется этот метод).

Итак, создаем сетку. Скомпилируем наш модифицированный экземпляр hostapd. Если ты не в курсе, hostapd — это демон (служба) беспроводной точки доступа в Linux.

$ cd ../hostapd 
$ cp defconfig .config 
$ make -j 2

Отключим аппаратное шифрование для нашей фейковой сети следующей командой (запускаем все тот же конфигурационный скрипт):

$ cd ../krackattack/ 
$ sudo ./disable-hwcrypto.sh

 

Вообще-то после того, как скрипт отработает, нужно перезагрузиться (так советуют разработчики инструмента). Но у меня все работало и без ребута. Но если что-то пойдет не так, перезагружай тачку.

После перезагрузки (или без) выполняем команду

$ sudo ./krack-test-client.py

 

Это тот самый скрипт на Python, который позволит переустановить ключи в четырехстороннем рукопожатии и автоматически создаст сеть. Используется метод шифрования WPA2-Personal, а SSID будет testnetwork.

Результат работы скрипта — тестовая сеть создана!

Атака

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

После того как ноут с Windows 10 оказался в тестовой сети, в терминале Kali мы получаем оповещения от скрипта krack-test-client.py, который пытается просканировать подключенный клиент (наш ноутбук) на уязвимость и, если найдет ее, проэксплуатировать.

Но результат пока грустный. У Windows 10, конечно же, есть патч, о чем гласит строчка Client DOESN’T seem vulnerable to pairwise key reinstallation in the 4-way handshake.

Скрипт сообщает, что наш клиент неуязвим перед KRACK

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

$ sudo ./krack-test-client.py --group 
$ sudo ./krack-test-client.py --tptk 
$ sudo ./krack-test-client.py --tptk-rand

Но конечно же, ничего не срабатывает. Неужели мы зря столько старались?

Не зря! Я без труда нашел у себя уязвимое устройство — им оказался телефон с Android 7.0, который последний раз обновлялся в июле 2018 года. Такие наверняка еще можно встретить.

Информация о пакетах обновления для смартфона на Android 7

Коннектим смартфон к testnetwork и смотрим, что нам скажет наш скрипт. Несколько секунд ожидания, и он сообщает, что Android уязвим для групповой переустановки ключей в четырехстороннем рукопожатии.

Android 7 оказался уязвим

Мы достигли результата! Дальше можно открывать, к примеру, Wireshark и снифить пакеты. В целом эксперимент показал, что KRACK — это пока что вполне реальная проблема и атака работает.

Как защититься?

Получается, что почти каждое устройство почти в любой сети Wi-Fi можно взломать при помощи KRACK. Звучит страшновато, но — как и в случае с любой другой атакой — это еще не конец света. Вот пара советов, как защититься от KRACK:

  • во-первых, всегда проверяй, чтобы в адресной строке браузера была зеленая иконка замка. Если используется HTTPS, значит, KRACK не позволит расшифровать трафик;
  • во-вторых, обязательно ставь последние обновления безопасности.

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

Поможет ли WPA3 от KRACK?

27 июня 2018 года альянс Wi-Fi объявил об окончании разработки нового стандарта безопасности — WPA3. Это одновременно и новый протокол безопасности, и название соответствующей программы сертификации.

Создатели WPA3 попытались устранить концептуальные недоработки, которые всплыли с появлением KRACK. Поскольку ключевая уязвимость скрывалась в четырехстороннем рукопожатии, в WPA3 добавилась обязательная поддержка более надежного метода соединения — SEA, также известного как Dragonfly.

Технология SEA (Simultaneous Authentication of Equals) уже применялась в mesh-сетях и описана в стандарте IEEE 802.11s. Она основана на протоколе обмена ключами Диффи — Хеллмана с использованием конечных циклических групп.

SEA относится к протоколам типа PAKE и предоставляет интерактивный метод, в соответствии с которым две и более стороны устанавливают криптографические ключи, основанные на знании пароля одной или несколькими сторонами. Результирующий ключ сессии, который получает каждая из сторон для аутентификации соединения, выбирается на основе информации из пароля, ключей и MAC-адресов обеих сторон. Если ключ одной из сторон окажется скомпрометирован, это не повлечет компрометации ключа сессии. И даже узнав пароль, атакующий не сможет расшифровать пакеты.

Еще одним новшеством WPA3 будет поддержка PMF (Protected Management Frames) для контроля целостности трафика. Но в будущем поддержка PMF станет обязательной и для WPA2.

Однако то, что WPA3 обратно совместим с WPA2, уже вызвало критику Мэти Ванхофа, автора атаки KRACK. Он уверен, что найдется способ обхода PMF для принудительного отсоединения клиента от сети.

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

К тому же WPA3 должен быть реализован в устройстве аппаратно, и простым обновлением его поддержку добавить нельзя. Соответственно, на внедрение уйдут долгие годы, а исследователи ИБ не сидят сложа руки.

Click to rate this post!
[Total: 2 Average: 3]
cryptoworld

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

View Comments

Recent Posts

Лучший адаптер беспроводной сети для взлома Wi-Fi

Чтобы взломать сеть Wi-Fi с помощью Kali Linux, вам нужна беспроводная карта, поддерживающая режим мониторинга…

12 месяцев ago

Как пользоваться инструментом FFmpeg

Работа с консолью считается более эффективной, чем работа с графическим интерфейсом по нескольким причинам.Во-первых, ввод…

1 год ago

Как создать собственный VPN-сервис

Конечно, вы также можете приобрести подписку на соответствующую услугу, но наличие SSH-доступа к компьютеру с…

1 год ago

ChatGPT против HIX Chat: какой чат-бот с искусственным интеллектом лучше?

С тех пор как ChatGPT вышел на арену, возросла потребность в поддержке чата на базе…

1 год ago

Разведка по Wi-Fi и GPS с помощью Sparrow-wifi

Если вы когда-нибудь окажетесь в ситуации, когда вам нужно взглянуть на спектр беспроводной связи, будь…

1 год ago

Как обнаружить угрозы в памяти

Elastic Security стремится превзойти противников в инновациях и обеспечить защиту от новейших технологий злоумышленников. В…

1 год ago