Назад к обновлениям
New releaseSep 21, 2026

KTO v3.0.1

Автоматизированный инструмент для деаутентификации Wi-Fi, который непрерывно сканирует клиентов на целевом SSID и отключает неавторизованные устройства. Поддерживает белый список, обработку mesh/множественных точек доступа, обнаружение PMF и экспериментальный обход WPA2 PMF через извлечение EAPOL.

Поделиться

KTO - Kick Them Out

https://github.com/user-attachments/assets/0ebf61af-c306-4825-b836-95df59052c27

Укажите ему SSID, и он отключит устройства в этой сети, включая те, что переподключаются. Вы задаёте имя сети; он находит точку доступа, находит клиентов и выбирает метод отключения, подходящий для безопасности сети.

Старые версии реально работали только против WPA/WPA2 с открытым управлением. В этой версии также есть векторы для PMF (802.11w) и WPA3, пароль не нужен, хотя они только широковещательные и работают по мере возможности (см. ниже).

Только для авторизованного использования. Запускайте это против сетей, которыми владеете или на тестирование которых у вас есть письменное разрешение. Неавторизованная деаутентификация незаконна в большинстве мест.

Как он выбирает атаку, и белый список

По умолчанию KTO остаётся безопасным для белого списка: он отправляет одноадресную деаутентификацию и дисассоциацию, в обоих направлениях, каждому не входящему в белый список клиенту, от которого он видел передачу. MAC-адреса из белого списка никогда не атакуются. Это отключает любого клиента, который не согласовал PMF, что покрывает весь WPA/WPA2 и любого клиента без PMF в смешанной сети.

PMF (802.11w) — вот загвоздка. Он защищает deauth, disassoc и одноадресные action-кадры, поэтому клиент с PMF или WPA3 игнорирует каждый поддельный кадр для конкретного клиента, включая одноадресное объявление о смене канала (Channel Switch Announcement). Безопасного для белого списка способа обойти это нет; именно для этого PMF и предназначен. Единственные кадры, которые всё ещё доходят до клиента с PMF, — это те, которые нельзя нацелить на одно устройство:

  • CSA beacon: поддельный beacon точки доступа, несущий объявление о смене канала, которое уводит клиентов на мёртвый канал. Beacon-кадры никогда не защищаются, поэтому это проходит, но переключается каждый клиент, который его слышит.
  • Анонимная реассоциация: запрос реассоциации к точке доступа с широковещательным источником, из-за чего многие точки доступа сами деаутентифицируют широковещательный адрес. Отключение выполняет точка доступа, поэтому PMF тут ни при чём, но это отключает каждого клиента.

Оба варианта бьют по всему BSS и не могут учитывать белый список, поэтому они включаются опционально через --broadcast (который также добавляет широковещательный deauth). Используйте его, когда нужно отключить клиентов PMF/WPA3 и вы можете принять, что устройства из белого списка тоже отключатся. --all-vectors — синоним включения широковещательных векторов.

Итог: на WPA2 белый список работает, и деаутентификации для конкретного клиента достаточно. На WPA3/PMF по умолчанию ничего не проходит, кадры для конкретного клиента (deauth, а также нацеленный CSA) защищены и игнорируются, поэтому нужно передать --broadcast, чтобы отключить этих клиентов, а это отключает весь BSS, так что белый список больше не применяется.

Одна честная оговорка: WPA3 с PMF создан для сопротивления поддельным управляющим кадрам. Ни один неаутентифицированный атакующий не может гарантировать отключение против него. Эти векторы работают по мере возможности и срабатывают на многих реальных развёртываниях, но «работает в любой сети» — это обещание, которое никто не может дать насчёт WPA3.

Сборка

Требуется инструментальная цепочка Rust и iw (из iproute2 / wireless tools) на целевой машине.

cargo build --release

Бинарник появляется в target/release/kto. Запускайте его от имени root.

Использование

sudo ./target/release/kto -i wlan0 -t "CorpNet" --auto-monitor

Без --auto-monitor интерфейс уже должен быть в режиме монитора. С ним KTO переключает интерфейс в режим монитора при запуске и обратно в managed при выходе. Если не передать -c, он прочёсывает обычные каналы 2.4 и 5 ГГц для поиска цели, затем фиксируется на её канале.

Многие домашние роутеры рекламируют один SSID с двух радио (2.4 ГГц WPA2 и 5 ГГц WPA3, разные BSSID) для band steering. KTO обследует каждый BSSID, несущий этот SSID, и, когда обнаруживается больше одного, выводит их список с диапазоном и безопасностью и спрашивает, какой атаковать. Выберите тот, на котором реально находится ваше целевое устройство, или задайте его заранее через -b/--bssid. Это важно: клиент на BSSID 5 ГГц WPA3 не отключится, если вы атакуете клон 2.4 ГГц WPA2.

KTO деаутентифицирует только клиентов, от которых видел передачу, поэтому простаивающее устройство может никогда не появиться само по себе. Если конкретное устройство не отключается, пока другие отключаются, задайте его через --client <MAC>; тогда KTO будет бить по нему каждый раунд независимо ни от чего. Проверьте три вещи: оно на том BSSID/диапазоне, который вы атакуете, его MAC — тот, что вы ожидаете, и, для редких NIC, игнорирующих deauth, попробуйте --all-vectors (который добавляет векторы смены канала и реассоциации даже на обычном WPA2).

Больше примеров:

# уже в режиме монитора, фиксация на известном канале
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -c 6

# SSID с band steering: нацельтесь на точный AP, на котором находится устройство
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24

# WPA3 / PMF: для конкретного клиента заблокировано, поэтому широковещательно для отключения (весь BSS, без белого списка)
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24 --broadcast

# пощадите свои собственные устройства
sudo ./target/release/kto -i wlan0 -t "CorpNet" --auto-monitor -w AA:BB:CC:DD:EE:FF

# пассивно: перечислить клиентов, ничего не отправлять
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --scan-only

# бросить на него все векторы независимо от безопасности
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --all-vectors

Опции

ФлагПо умолчаниюОписание
-i, --interfaceобязательноБеспроводной интерфейс
-t, --targetобязательноЦелевой SSID
-b, --bssidавтоНацелиться на одну точку доступа по BSSID (band-steered / мульти-AP SSID)
-f, --firstвыклАтаковать первую найденную подходящую точку доступа (пропустить выбор)
-c, --channelавтоЗафиксироваться на канале, пропустить прочёсывание для обнаружения
--clientнетВсегда нацеливаться на эти MAC-адреса, даже если простаивают/не видны
-w, --whitelistнетMAC-адреса через запятую, которые нужно пощадить
--whitelist-fileнетФайл с MAC-адресами для пощады, по одному в строке (комментарии #)
-n, --count8Кадров на пакет, на вектор
-s, --sleep0.05Секунд между раундами атаки (мало = непрерывно; увеличьте для ограничения)
--reason7Код причины deauth (1 unspecified, 4 inactivity, 7 class-3)
--broadcastвыклТакже использовать широковещательные / общеAP-векторы (игнорирует белый список)
--scan-onlyвыклОбнаружить клиентов, ничего не отправлять
--auto-monitorвыклВключить режим монитора при запуске, восстановить при выходе
--csa-channel14Канал, на который векторы CSA сгоняют клиентов
--all-vectorsвыклСиноним --broadcast (включить широковещательные векторы)
--no-deauthвыклОтключить deauth/disassoc
--no-csaвыклОтключить векторы смены канала
--no-anonвыклОтключить анонимную реассоциацию
--no-tuiвыклПростой прокручиваемый вывод вместо живой панели
--no-colorвыклПростой вывод

MAC-адрес интерфейса автоматически добавляется в белый список, чтобы KTO никогда не атаковал сам себя.

Панель

На настоящем терминале KTO запускает полноэкранную панель: сведения о цели, живая таблица клиентов, журнал событий и спарклайн скорости TX, после короткой анимации загрузки. Столбец STATE — полезная часть: UP означает, что устройство всё ещё передаёт (отмахивается от атаки), quiet означает, что оно замолчало, а DOWN означает, что оно молчало достаточно долго, чтобы считаться отключённым. Клиенты остаются в списке после того, как их увидели, и KTO подхватывает их из кадров ассоциации и аутентификации, а также из данных, поэтому таблица продолжает работать во время широковещательной атаки, вы можете наблюдать, как каждое устройство переключается в DOWN по мере отключения. Когда несколько точек доступа используют один SSID, вы получаете список для выбора стрелками.

Нажмите q (или Esc, или Ctrl-C), чтобы выйти. Перенаправьте вывод куда-нибудь или передайте --no-tui, и он вернётся к простым прокручиваемым логам, что вам и нужно для скриптов или записи в файл.

Остановка

Выход останавливается чисто, выводит сводку пакетов по каждому клиенту и восстанавливает интерфейс в режим managed, если KTO переводил его в режим монитора.

Лицензия

MIT, см. LICENSE.

Категории