Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
krackattacks-scripts — Скрипты для проверки клиентов и точек доступа WPA2 на уязвимости повторной установки ключей KRACK с использованием модифицированного hostapd и повторной передачи кадров в режиме монитора. | Kitploit
Инструменты/GitHubGitHub/vanhoefm/krackattacks-scripts
Аудит Wi-FiАнализ уязвимостейБезопасность беспроводных сетейТестирование на ПроникновениеТоп в Аудит Wi-Fi №10Топ в Безопасность беспроводных сетей №10

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
vanhoefm/krackattacks-scripts

krackattacks-scripts

Скрипты для проверки клиентов и точек доступа WPA2 на уязвимости повторной установки ключей KRACK с использованием модифицированного hostapd и повторной передачи кадров в режиме монитора.

Репозиторий
3.5k767381 год назадПроверено Kitploit

This project contains scripts to test if clients or access points (APs) are affected by the KRACK attack against WPA2. For details behind this attack see our website and the research paper.

Помните, что наши скрипты — это не скрипты для атаки! Вам понадобятся соответствующие сетевые учётные данные, чтобы проверить, подвержена ли точка доступа или клиент атаке KRACK.

Декабрь 2024: исправлена ошибка в 7-м тесте ./krack-test-client.py --gtkinit. До этого исправления упоминалось, что (результат) этого теста был ненадёжным, но теперь результату можно доверять при соблюдении новых инструкций. То есть, если теперь этот тест указывает, что устройство уязвимо, оно, скорее всего, действительно уязвимо.

Январь 2021: скрипты были адаптированы для Python3 и обновлены для лучшей поддержки новых дистрибутивов Linux. Если вы хотите вернуться к старой версии, выполните git fetch --tags && git checkout v1 после клонирования репозитория (а вернуться к последней версии можно с помощью git checkout research).

Предварительные требования

Наши скрипты тестировались на Kali Linux. Чтобы установить необходимые зависимости на Kali, выполните:

root@kitploit:~
sudo apt update
sudo apt install libnl-3-dev libnl-genl-3-dev pkg-config libssl-dev net-tools git sysfsutils python3-venv iw

Теперь скомпилируйте наш модифицированный экземпляр hostapd и создайте виртуальное окружение python. Это гарантирует использование совместимых библиотек python (перечисленных в krackattack/requirements.txt):

root@kitploit:~
git clone https://github.com/vanhoefm/krackattacks-scripts.git
cd krackattacks-scripts/krackattack
./build.sh
./pysetup.sh

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

root@kitploit:~
cd krackattack
sudo ./disable-hwcrypto.sh

Обратите внимание: при необходимости вы можете позже снова включить аппаратное шифрование с помощью скрипта sudo ./reenable-hwcrypto.sh. Рекомендуется перезагрузить систему после отключения аппаратного шифрования. Мы тестировали наши скрипты с Intel Dual Band Wireless-AC 7260 и TP-Link TL-WN722N v1 на Kali Linux.

Перед каждым использованием

Перед каждым использованием скриптов необходимо отключить Wi-Fi в вашем сетевом менеджере. Затем выполните:

root@kitploit:~
sudo rfkill unblock wifi
cd krackattack
sudo su
source venv/bin/activate

После этого вы можете выполнять скрипты несколько раз, пока не закрываете терминал.

Если вы хотите отменить действие disable-hwcrypto.sh, удалите файл /etc/modprobe.d/nohwcrypt.conf.

Тестирование клиентов

Сначала измените hostapd/hostapd.conf и отредактируйте строку interface=, чтобы указать Wi-Fi интерфейс, который будет использоваться для выполнения тестов. Обратите внимание, что во всех тестах, после запуска скрипта, вы должны позволить тестируемому устройству подключиться к SSID testnetwork с паролем abcdefgh. Вы можете изменить настройки точки доступа, изменив hostapd/hostapd.conf. Во всех тестах клиент должен использовать DHCP для получения IP после подключения к Wi-Fi сети. Это связано с тем, что некоторые тесты запускаются только после того, как клиент запросил IP-адрес по DHCP!

Выполните следующие тесты, расположенные в каталоге krackattacks/:

  1. ./krack-test-client.py --replay-broadcast. Этот тест проверяет, принимает ли клиент повторно переданные широковещательные кадры. Если клиент принимает повторно переданные широковещательные кадры, это сначала должно быть исправлено. Если вы не исправите клиент, наш скрипт не сможет определить, выполняется ли повторная установка группового ключа (поскольку тогда скрипт всегда будет сообщать, что групповой ключ переустанавливается).

  2. ./krack-test-client.py --group --gtkinit. Этот тест проверяет, устанавливает ли клиент групповой ключ в групповом квитировании с заданным счётчиком принимаемой последовательности (RSC). Подробности об этой уязвимости см. в разделе 6.4 нашей последующей исследовательской работы.

  3. ./krack-test-client.py --group. Этот тест проверяет, переустанавливает ли клиент групповой ключ в групповом квитировании. Другими словами, он проверяет, уязвим ли клиент к CVE-2017-13080. Скрипт проверяет повторную установку группового ключа, отправляя клиенту широковещательные ARP-запросы с уже использованным (повторно переданным) номером пакета (здесь номер пакета = nonce = IV). Обратите внимание: если клиент всегда принимает повторно переданные широковещательные кадры (см. --replay-broadcast), этот тест может ошибочно заключить, что групповой ключ переустанавливается.

  4. ./krack-test-client.py. Этот тест проверяет повторную установку ключей в 4-стороннем квитировании, многократно отправляя клиенту зашифрованные сообщения 3. Другими словами, он проверяет CVE-2017-13077 (уязвимость с наибольшим воздействием) и CVE-2017-13078. Скрипт отслеживает трафик, отправляемый клиентом, чтобы увидеть, переустанавливается ли парный ключ. Обратите внимание, что фактически выполняются два теста: переустанавливается ли парный ключ и переустанавливается ли групповой ключ. Убедитесь, что клиент запрашивает IP-адрес по DHCP, чтобы начался тест на повторную установку группового ключа. Чтобы гарантировать, что клиент отправляет достаточно одноадресных кадров, вы можете дополнительно выполнить ping точки доступа: .

Мы также рекомендуем выполнять этот тест в среде с небольшим фоновым шумом и повторять его несколько раз.

Некоторые дополнительные замечания:

  • Самый важный тест — ./krack-test-client, который проверяет обычную повторную установку ключей в 4-стороннем квитировании.

  • Выполняйте эти тесты в помещении с небольшими помехами. Большой процент потери пакетов сделает этот скрипт менее надёжным!

  • При желании вы можете вручную проверить сетевой трафик, чтобы подтвердить результат работы скрипта (некоторые Wi-Fi адаптеры могут мешать работе наших скриптов):

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

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

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

  • Если клиент может использовать несколько Wi-Fi устройств/адаптеров, выполните тест с несколькими Wi-Fi адаптерами.

  • Вы можете добавить параметр --debug для получения более подробного вывода отладки.

  • Все нераспознанные параметры передаются в hostapd, поэтому вы можете указать, например, -dd -K, чтобы hostapd выводил всю отладочную информацию.

Соответствие тестам Wi-Fi Alliance

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

  • 4.1.1 (Повторная передача EAPOL Message 3 в открытом виде). В настоящее время мы не поддерживаем этот тест. Этот тест в любом случае не обязателен. Убедитесь, что тестируемое устройство проходит тест 4.1.3, и тогда оно также пройдёт этот тест.

  • 4.1.2 (Немедленная повторная передача EAPOL M3 в открытом виде). В настоящее время мы не поддерживаем этот тест. Опять же, убедитесь, что тестируемое устройство проходит тест 4.1.3, и тогда оно также пройдёт этот тест.

  • 4.1.3 (Немедленная повторная передача зашифрованного EAPOL M3 во время квитирования повторной смены парного ключа). Это соответствует ./krack-test-client.py, за исключением того, что зашифрованные EAPOL M3 отправляются периодически, а не немедленно.

  • 4.1.5 (Повторная установка PTK в 4-стороннем квитировании, когда STA использует временную конструкцию PTK, тот же ANonce). Выполните этот тест с помощью ./krack-test-client.py --tptk.

  • 4.1.6 (Повторная установка PTK в 4-стороннем квитировании, когда STA использует временную конструкцию PTK, случайный ANonce). Выполните этот тест с помощью ./krack-test-client.py --tptk-rand.

  • 4.2.1 (Тест на уязвимость группового квитирования на STA). Выполните этот тест с помощью ./krack-test-client.py --group.

  • 4.3.1 (Повторная установка GTK и IGTK на STA, поддерживающей режим сна WNM). В настоящее время мы не поддерживаем этот тест (и, собственно, Wi-Fi Alliance тоже!).

Тестирование точек доступа: обнаружение уязвимого FT-квитирования (802.11r)

  1. Создайте файл конфигурации wpa_supplicant, который можно использовать для подключения к сети. Базовый пример:

    root@kitploit:~
     ctrl_interface=/var/run/wpa_supplicant
     network={
       ssid="testnet"
       key_mgmt=FT-PSK
       psk="password"
     }
    

    Обратите внимание на использование "FT-PSK". Сохраните его как network.conf или подобное имя. Дополнительную информацию см. в wpa_supplicant.conf.

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

    root@kitploit:~
     sudo wpa_supplicant -D nl80211 -i wlan0 -c network.conf
    

    Если это не удалось, либо AP не поддерживает FT, либо вы указали неверные параметры конфигурации сети на шаге 1. Обратите внимание: если AP не поддерживает FT, она не подвержена этой уязвимости.

  3. Используйте этот скрипт как обёртку над предыдущей командой wpa_supplicant:

    root@kitploit:~
     sudo su
     source venv/bin/activate
     ./krack-ft-test.py wpa_supplicant -D nl80211 -i wlan0 -c network.conf
    

    Это выполнит команду wpa_supplicant с указанными параметрами и добавит виртуальный интерфейс монитора, который будет выполнять тесты атаки. Важно сначала стать root, а затем загрузить виртуальное окружение python (см. выше, как создать это виртуальное окружение).

  4. Используйте wpa_cli для перехода к другой точке доступа той же сети. Например:

    root@kitploit:~
     wpa_cli -i wlan0
     > status
     bssid=c4:e9:84:db:fb:7b
     ssid=testnet
     ...
     > scan_results 
     bssid / frequency / signal level / flags / ssid
     c4:e9:84:db:fb:7b	2412  -21  [WPA2-PSK+FT/PSK-CCMP][ESS] testnet
     c4:e9:84:1d:a5:bc	2412  -31  [WPA2-PSK+FT/PSK-CCMP][ESS] testnet
     ...
     > roam c4:e9:84:1d:a5:bc
     ...
    

Дополнительно: аппаратное дешифрование

Чтобы подтвердить, что аппаратное дешифрование отключено, выполните systool -vm ath9k_htc или аналогичную команду после подключения вашего Wi-Fi адаптера, чтобы убедиться, что параметр nohwcript/swcrypto/hwcrypto установлен. Обратите внимание, что вы должны заменить ath9k_htc на модуль ядра для вашей беспроводной сетевой карты.

Дополнительно: 5 ГГц не поддерживается

Официальной поддержки тестирования устройств в диапазоне 5 ГГц нет.

Если вы всё же хотите использовать инструмент на каналах 5 ГГц, используемая сетевая карта должна разрешать инъекцию кадров в канале 5 ГГц. К сожалению, это не всегда возможно из-за нормативных ограничений. Чтобы увидеть, на каких каналах можно передавать кадры, выполните iw list и посмотрите в разделе Frequencies каналы, не помеченные как disabled, no IR или radar detection. Обратите внимание, что эти условия могут зависеть от вашей сетевой карты, текущей настроенной страны и точки доступа, к которой вы подключены. Дополнительную информацию см., например, в документации Arch Linux.

Обратите внимание, что ядро Linux может не разрешать инъекцию кадров, даже если отправка обычных кадров разрешена. Это связано с тем, что в функции ieee80211_monitor_start_xmit ядро отказывается передавать кадры, когда cfg80211_reg_can_beacon возвращает false. В результате Linux может отказываться передавать кадры, хотя на самом деле это разрешено. Если сделать так, чтобы cfg80211_reg_can_beacon возвращал true при правильных (или всех) условиях, это предотвращает данную ошибку. Поэтому вам придётся пропатчить драйверы Linux так, чтобы cfg80211_reg_can_beacon всегда возвращал true, например, вручную пропатчив код драйвера packport.

Дополнительно: ручные тесты

Также можно вручную выполнять (более детальные) тесты, клонировав git-репозиторий hostap:

root@kitploit:~
git clone git://w1.fi/srv/git/hostap.git

И следуя инструкциям в tests/cipher-and-key-mgmt-testing.txt.

Скачать инструмент
ping 192.168.100.254
  • ./krack-test-client.py --tptk. Идентичен тесту 4, за исключением того, что перед отправкой зашифрованного сообщения 3 внедряется поддельное сообщение 1. Этот вариант теста важен, потому что некоторые клиенты (например, wpa_supplicant v2.6) уязвимы к повторной установке парного ключа в 4-стороннем квитировании только при внедрении поддельного сообщения 1 перед отправкой повторно переданного сообщения 3.

  • ./krack-test-client.py --tptk-rand. То же, что и предыдущий тест, за исключением того, что поддельное сообщение 1 содержит случайный ANonce.

  • ./krack-test-client.py --gtkinit. Этот тест проверяет, устанавливает ли клиент групповой ключ в 4-стороннем квитировании с заданным счётчиком принимаемой последовательности (RSC). Это делается путём повторной передачи Msg3/4 4-стороннего квитирования, каждый раз с новым групповым ключом и очень высоким счётчиком повтора. Мы знаем, что клиент уязвим, если после этого он принимает широковещательные кадры с более низким счётчиком повтора. К сожалению, некоторые клиенты вообще не принимают повторно переданные Msg3/4, и таких клиентов нельзя протестировать этой командой. Клиенты, которые принимают повторно переданные Msg3/4 и, следовательно, могут быть протестированы этой командой, ответят Msg4/4, который можно обнаружить по следующему выводу:

    root@kitploit:~
    [09:24:11] 02:20:2a:22:a8:30: received a new message 4
    
  • В этом примере мы были подключены к точке доступа c4:e9:84:db:fb:7b сети testnet (см. команду status). Команда scan_results показывает, что у этой сети также есть вторая точка доступа с MAC-адресом c4:e9:84:1d:a5:bc. Затем мы переходим к этой второй точке доступа.

  • Сгенерируйте трафик между точкой доступа и клиентом. Например:

    root@kitploit:~
     arping -I wlan0 192.168.1.10
    
  • Теперь посмотрите на вывод ./krack-ft-test.py, чтобы определить, уязвима ли точка доступа.

    1. Сначала он должен вывести "Detected FT reassociation frame". Затем он начнёт повторно передавать этот кадр, чтобы попытаться выполнить атаку.
    2. Скрипт показывает, какие IV (= номера пакетов) использует точка доступа при отправке кадров данных.
    3. Сообщение IV reuse detected (IV=X, seq=Y). AP is vulnerable! означает, что мы подтвердили уязвимость.

    Обязательно также вручную проверьте сетевые следы (traces), чтобы убедиться, что скрипт правильно повторно передаёт запрос повторной ассоциации, и вручную подтвердите, есть ли повторное использование IV (= номера пакета) или нет.

    Пример вывода уязвимой точки доступа:

    root@kitploit:~
     [15:59:24] Replaying Reassociation Request
     [15:59:25] AP transmitted data using IV=1 (seq=0)
     [15:59:25] Replaying Reassociation Request
     [15:59:26] AP transmitted data using IV=1 (seq=0)
     [15:59:26] IV reuse detected (IV=1, seq=0). AP is vulnerable!
    

    Пример вывода исправленной точки доступа (обратите внимание, что IV никогда не повторяются):

    root@kitploit:~
     [16:00:49] Replaying Reassociation Request
     [16:00:49] AP transmitted data using IV=1 (seq=0)
     [16:00:50] AP transmitted data using IV=2 (seq=1)
     [16:00:50] Replaying Reassociation Request
     [16:00:51] AP transmitted data using IV=3 (seq=2)
     [16:00:51] Replaying Reassociation Request
     [16:00:52] AP transmitted data using IV=4 (seq=3)