返回更新列表
新发布Sep 21, 2026

KTO v3.0.1

自动Wi-Fi去认证工具,持续扫描目标SSID上的客户端并踢出非白名单设备。功能包括白名单支持、网状/多AP处理、PMF检测,以及通过EAPOL提取的实验性WPA2 PMF绕过。

分享

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) 是问题所在。它保护去认证、解除关联和单播动作帧,因此 PMF 或 WPA3 客户端会忽略每一个伪造的针对单个客户端的帧,包括单播信道切换通告。没有白名单安全的办法绕过这一点;这正是 PMF 旨在防止的。唯一仍能到达 PMF 客户端的帧是无法针对单个设备的帧:

  • CSA 信标:一个伪造的 AP 信标,携带信道切换通告,将客户端引导到一个死信道上。信标从不受到保护,所以这能通过,但每个听到它的客户端都会切换。
  • 匿名重新关联:向 AP 发送一个源地址为广播的重新关联请求,这会使许多 AP 自己去认证广播地址。AP 执行踢除,所以 PMF 从不介入,但这会断开每一个客户端。

两者都会影响整个 BSS,且无法遵守白名单,因此它们通过 --broadcast 选择启用(这还会添加一个广播去认证)。当你需要断开 PMF/WPA3 客户端并且能接受白名单设备也一并掉线时使用它。--all-vectors 是开启广播向量的同义词。

底线:在 WPA2 上,白名单有效,针对单个客户端的去认证就足够了。在 WPA3/PMF 上,默认情况下什么都打不中,针对单个客户端的帧(去认证,以及定向 CSA)都受到保护并被忽略,所以你必须传入 --broadcast 来断开那些客户端,而这会断开整个 BSS,因此白名单不再适用。

一个诚实的提醒:带有 PMF 的 WPA3 就是为了抵御伪造的管理帧而构建的。没有任何未认证的攻击者能保证对它进行踢除。这些向量是尽力而为的,在许多真实部署上有效,但“适用于所有网络”不是任何人能对 WPA3 做出的承诺。

构建

需要目标机器上有 Rust 工具链和 iw(来自 iproute2 / 无线工具)。

cargo build --release

二进制文件位于 target/release/kto。以 root 身份运行它。

用法

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

不使用 --auto-monitor 时,接口必须已经处于监听模式。使用它时,KTO 在启动时将接口切换到监听模式,并在退出时切回管理模式。如果你不传入 -c,它会扫描常见的 2.4 和 5 GHz 信道以找到目标,然后锁定到其信道。

许多家用路由器从两个射频(2.4 GHz WPA2 和 5 GHz WPA3,不同的 BSSID)广播同一个 SSID 以实现频段引导。KTO 会调查承载该 SSID 的每一个 BSSID,当出现多个时,会列出它们及其频段和安全性,并询问要攻击哪一个。选择你的目标设备实际所在的那个,或者用 -b/--bssid 预先指定它。这很重要:如果你攻击 2.4 GHz WPA2 克隆,5 GHz WPA3 BSSID 上的客户端不会掉线。

KTO 只对观察到正在发送数据的客户端进行去认证,因此空闲设备可能永远不会自己出现。如果某个特定设备不掉线而其他设备掉线,用 --client <MAC> 指定它;KTO 随后会每轮都攻击它。检查三件事:它在你攻击的 BSSID/频段上,它的 MAC 是你预期的那个,并且,对于罕见的忽略去认证的网卡,尝试 --all-vectors(即使在普通 WPA2 上也会添加信道切换和重新关联向量)。

更多示例:

# already in monitor mode, lock to a known channel
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -c 6

# band-steered SSID: target the exact AP the device is on
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24

# WPA3 / PMF: per-client is blocked, so broadcast to kick (whole BSS, no whitelist)
sudo ./target/release/kto -i wlan0mon -t "CorpNet" -b 62:a6:dd:6d:0a:24 --broadcast

# spare your own devices
sudo ./target/release/kto -i wlan0 -t "CorpNet" --auto-monitor -w AA:BB:CC:DD:EE:FF

# passive: list clients, send nothing
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --scan-only

# throw every vector at it regardless of security
sudo ./target/release/kto -i wlan0mon -t "CorpNet" --all-vectors

选项

标志默认值描述
-i, --interface必需无线接口
-t, --target必需目标 SSID
-b, --bssid自动按 BSSID 定位一个 AP(频段引导 / 多 AP SSID)
-f, --first关闭攻击找到的第一个匹配 AP(跳过选择器)
-c, --channel自动锁定到一个信道,跳过发现扫描
--client始终以这些 MAC 为目标,即使空闲/未见过
-w, --whitelist逗号分隔的要放过的 MAC
--whitelist-file要放过的 MAC 文件,每行一个(# 注释)
-n, --count8每个向量每突发的帧数
-s, --sleep0.05攻击轮次之间的秒数(小 = 连续;调高以节流)
--reason7去认证原因码(1 未指定,4 不活动,7 类别 3)
--broadcast关闭也使用广播 / 全 AP 向量(忽略白名单)
--scan-only关闭发现客户端,不发送任何内容
--auto-monitor关闭启动时启用监听模式,退出时恢复
--csa-channel14CSA 向量将客户端引导到的信道
--all-vectors关闭--broadcast 的同义词(开启广播向量)
--no-deauth关闭禁用去认证/解除关联
--no-csa关闭禁用信道切换向量
--no-anon关闭禁用匿名重新关联
--no-tui关闭使用普通滚动输出而非实时仪表板
--no-color关闭普通输出

接口 MAC 会自动加入白名单,因此 KTO 永远不会以自己为目标。

仪表板

在真实终端上,KTO 会运行一个全屏仪表板:目标详情、实时客户端表、事件日志和 TX 速率迷你图,在短暂的启动动画之后。STATE 列是有用的部分:UP 表示设备仍在发送数据(对攻击无动于衷),quiet 表示它已静默,DOWN 表示它已静默足够长时间,可算作已断开。客户端一旦被看到就会保持列出,KTO 会从关联和认证帧以及数据帧中捕获它们,因此该表在广播攻击期间也能继续工作,你可以观察每个设备在掉线时翻转为 DOWN。当多个 AP 共享该 SSID 时,你会得到一个列表,可用方向键从中选择。

q(或 Esc,或 Ctrl-C)退出。将输出管道到某处,或传入 --no-tui,它会回退到普通滚动日志,这正是脚本或记录到文件时想要的。

停止

退出会干净地停止,打印每个客户端的突发摘要,并且如果 KTO 将接口置于监听模式,则将其恢复为管理模式。

许可证

MIT,见 LICENSE

分类