wifit3 EvilTwin 指南:CSA 与 BTM 两种逐客技巧,三种驱逐模式怎么选
【免费下载链接】wifit3Wifite but USB-only & cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3
wifit3 是一款仅依赖 USB 无线网卡、跨平台(Windows / Linux / macOS)运行的 WiFi 安全扫描与攻防工具。本文聚焦它的EvilTwin(邪恶双子星)战役:面对 WPA3 过渡模式路由器,如何把在线客户端"驱逐"到 WPA2 伪 AP,从而抓包到可破解的握手。重点讲清Deauth、CSA、BTM 三种驱逐模式的工作原理与选择逻辑,帮你一次看懂界面里那三个勾选框。
先搞懂 wifit3 EvilTwin 在做什么
EvilTwin 的完整剧本分两步(详见 campaigns/eviltwin):
- 立分身:克隆真实路由器的 Beacon,在同 SSID 下架一个 WPA2 伪 AP(BSSID 可相同或 +1)。代码见 fake_ap.py,它负责发信标、回应探测/认证/关联,并在关联瞬间发出 M1 握手帧。
- 逐客:把真实 AP 上的客户端赶走,让它们"误入"伪 AP。这一步由 punter.py 里的
Punter完成,就是本文的三种驱逐模式。
客户端一旦落在伪 AP 上完成 WPA2 关联,就会交出可离线破解的 4-way 握手。抓包成功瞬间,战役自动停止并落盘,界面显示"Captured crackable M2"。
三种驱逐模式逐个拆解 🎯
Deauth 广播解关联:最直接的"硬逐客"
发送伪造的 Deauth 帧(广播、reason=7),客户端被强制断开后自动重连。特点:
- 粗暴有效,不需要知道客户端 MAC;
- 帧可被伪造(无 PMF 保护时),但同样可能被路由器"反弹"回来,属于双刃剑;
- 在 EvilTwin 弹窗中对应"De-authenticate"勾选框。
独立 Deauth 战役的完整逻辑(逐客户端轮询 + 广播收尾)可以参考 campaigns/deauth.py。
CSA 信道切换通告:唯一的"软搬家" 📡
CSA(Channel Switch Announcement,IE 元素 37/60)是 AP 合法用来"通知客户端:我要换信道了"的信标扩展。wifit3 的做法很巧妙:
- 拿真实路由器的 Beacon 帧做底稿,剥掉旧的信道切换元素;
- 拼接指向诱饵信道的 CSA + ECSA 元素,重新注入(见 dot11/csa.py 的
build_csa_beacon); - 同频段切换附带传统 CSA,跨频段只带带 operating class 的 ECSA——因为裸信道号在 2.4G/5G 之间是含糊的。
客户端收到后"合规地"跟着 AP 走到诱饵信道,全程无断开重连、无报错,是三种模式里最安静的一种。
BTM 802.11v 引导:点名到户的"精准劝退"
BTM(BSS Transition Management Request)是 802.11v 标准里的单播管理帧:AP 告诉某一个STA"请迁到候选 BSS"。wifit3 的 dot11/btm.py 构造的帧自带细节:
- 候选 BSSID 直接填伪 AP 的 BSSID,信道填伪 AP 信道,偏好值拉满(255);
- 带
Disassociation Imminent位——"再不听话我就踢你",催促效果更强; - 安全性标记位刻意留空,含义是"候选 AP 安全策略不同,需要重新协商",这对伪 AP 来说是诚实的描述。
它是逐客户端发送的(每个关联客户端一帧),比广播 Deauth 更精准,比 CSA 更"指路"。
核心选择逻辑:PMF 决定默认勾选哪几种
这是很多新手最困惑的点:为什么我的界面上 Deauth 和 BTM 是灰的?
答案在 campaign.py 的default_punt_modes:
| 目标 AP 的 PMF 状态 | 默认驱逐模式 | 原因 |
|---|---|---|
| PMF-Required(强制管理帧保护) | 仅 CSA | Deauth 与 BTM 属于"健壮帧",PMF 开启后无法伪造 |
| 其他(PMF 可选/关闭) | Deauth + CSA + BTM 全开 | 三种技巧并用,驱逐成功率最高 |
UI 侧的实现见 eviltwin_modal.py:检测到pmf_required时,两个健壮帧勾选框直接禁用并提示"Can't send deauths: PMF active"。
一句话记忆:CSA 是唯一"过 PMF 安检"的软技巧,所以它是保底选项;Deauth 和 BTM 是加固选项,PMF 关着就全上。
CSA 诱饵信道怎么选:一条内置的防呆规则
csa_target_channel函数处理了一个隐蔽陷阱——CSA 到目标 AP 自己所在信道等于无事发生。选择顺序:
- 你手动指定了诱饵信道,且 ≠ 目标信道 → 直接用;
- 否则按频段挑一个"目标不在上面"的同频诱饵信道:
- 5GHz 目标在 36 → 用 40,反之用 36;
- 2.4GHz 目标在 1 → 用 6,反之用 1。
这样 CSA 永远是"真的换台",客户端才会乖乖跟走。
驱逐节奏:一次 16 连发,按周期循环
Punter.punt每次触发时,把当前启用的全部技巧各喷一个爆发脉冲:
- 每个帧连发16 次(
BURST_SIZE),帧间隔 2 毫秒,保证信道上的信标帧不遗漏; - 循环周期在弹窗里可选(默认 30 秒),也支持Punt once只驱逐一次——配合客户端"被踢后自动重连"的习惯,一次往往就够;
- 抓到可破解握手立即停手,不会为发帧而发帧。
整个流程的实际效果可以看下面这张演示动图:
优雅收尾:CSA 把客人"送回家" 🏠
攻击结束(teardown)时,wifit3 并不直接关灯走人:若伪 AP 与目标不同信道,它会先用伪 AP 的信标发一波反向 CSA,把被引到诱饵信道的客户端迁回目标信道,再停伪 AP、释放接口。顺序刻意设计为"先搬人、后收摊",避免客户端长时间找不到原来的路由器。
延伸阅读与源码索引
- 战役总览:campaigns/README.md
- EvilTwin 主逻辑:campaigns/eviltwin/campaign.py
- 驱逐帧发射器:campaigns/eviltwin/punter.py
- CSA 信标改写:dot11/csa.py
- BTM 帧构造:dot11/btm.py
- 设计调研(对比 wifite2 等六款工具的 EvilTwin 实现):docs/planning/FAKEAP-RESEARCH.md
⚠️ 免责声明:本文仅作安全研究与学习用途,请仅在你拥有合法授权的网络上进行测试。
常见问题 FAQ
Q1:三种模式必须全开吗?不必。全开成功率最高,但面对 PMF 强制的路由器只会生效 CSA;对低警戒目标,单独 BTM 已足够安静。
Q2:为什么我的客户端被 CSA 引走后又跳回来了?确认诱饵信道 ≠ 目标信道(防呆规则会自动处理),并检查客户端是否开启了"仅连接最强信号"类策略——把 BTM 一起打开可补上点名引导。
Q3:EvilTwin 只打 WPA3 吗?弹窗对带 AKM 套件的路由器可见,设计初衷是打 WPA3/SAE 过渡模式(把客户端降级到 WPA2 抓 PSK 握手),对 WPA2 目标同样能立分身。
【免费下载链接】wifit3Wifite but USB-only & cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考