尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

基于BW16开源固件的WPA3双攻击评估平台构建指南

基于BW16开源固件的WPA3双攻击评估平台构建指南 简介基于Realtek RTL8720DNBW16芯片的开源固件面向Wi-Fi安全测试、无线渗透验证与嵌入式开发者集成了两种针对WPA3网络的攻击模式可用于评测家用或企业无线的抗攻击能力。压缩包共62个文件大小约22.43MB核心是38个bin格式固件镜像同时提供exe烧录与擦除工具、C/C及汇编源码、axf和map链接文件以及txt使用说明和jpg硬件接线图覆盖从底层固件到上位机操作的全链路。包内除了一键烧录脚本还标定了BTN_DOWN、BTN_UP、BTN_OK、BTN_BACK分别对应PA14、PA30、PA12、PA13可直接操作图形化菜单Wi-Fi凭证区域预留了SSID和密码配置项便于部署到实际环境开展双攻击实验。目前已有390人学习下载适合需要快速上手BW16开发板、进行无线安全攻防或固件二次开发的读者。1. 开源固件BW16双攻击WPA3一块开发板上的接入安全评估台WPA3 已经是新出厂路由器的标配协议但真正能在低成本硬件上把 WPA3 网络“拆开”做评估的工具并不多。原因在于 WPA3 的 SAE 握手自带前向保密抓一次握手包离线破解的思路基本失效评估动作必须转向降级诱导和旁路采集两条路径同时进行。BW16 这颗基于瑞昱 RTL8720DN 的双频段模组配合开源固件可以把两条攻击路径装进同一个二进制省去外置网卡加笔记本电脑的组合。做无线安全测试、IoT 固件分析、攻防演练的工程师看完这篇文章能自己编译出一块可复用的评估板也能在真实 WPA3 网络中调整参数提高命中率。需要先说明的是所有操作都应在自己拥有或已获授权的网络环境中进行。2. 为什么选BW16做WPA3双攻击双频段射频和攻击路径的配合2.1 WPA3的SAE握手给评估工具出了什么题WPA3-Personal 用 SAESimultaneous Authentication of Equals替代了 WPA2 的四次握手。SAE 的核心特性是前向保密每一轮会话独立生成临时私钥监听者即使抓到了完整的认证流量也无法从这条会话推断出长期密码。另一个重要特性是密码不直接参与线缆传输它在一个不可逆的点函数中迭代多轮不会因为抓到了握手数据而反推出原值。这两个特性直接改变了评估工具的设计思路。WPA2 时代抓握手包离线破解是主流路径而 WPA3 时代这条路径被堵得很死评估工具必须同时具备两种能力一是能发送管理帧干扰客户端诱导对方降级到 WPA2二是在 WPA3 会话建立之前采集与密码相关的旁路数据。这两条路径恰好对应标题里的“双攻击”。如果固件只支持其中一个模块遇到过渡模式 AP 或纯 WPA3 AP 时就会有一半场景无法覆盖这也是做一体化固件而非单一工具的现实原因。2.2 双攻击的两个组成模块降级诱导和PMKID旁路降级诱导的前提是目标 AP 工作在过渡模式。绝大多数家用路由器虽然包装盒上写着“WPA3”实际上出厂默认是 WPA2/WPA3 混合模式也就是同一个 SSID 同时广播两种安全能力。评估固件在扫描阶段识别到过渡模式后会对连接到该 AP 的客户端发送解除认证帧客户端掉线后开始重连。重连时固件再伪造一个同 SSID 的开放网络或 WPA2 网络客户端的安全策略往往优先选择可用网络而不是最高安全等级这样就可能被拉进 WPA2 的握手流程。拿到四次握手后离线字典攻击就恢复了在 WPA2 时代的效率。PMKID 旁路则完全不依赖客户端在线。PMKID 是 AP 在四次握手第一个消息里携带的一个哈希值由 PMK、AP MAC 和客户端 MAC 共同计算。过渡模式下 AP 保留 WPA2 的 PMK 派生逻辑评估固件只需要向 AP 发起一次握手不等认证完成就能从第一个管理帧中提取 PMKID。降级诱导适合客户端流量活跃的场景PMKID 旁路适合凌晨无人上网但 AP 仍然在工作时的长时间采集。两个模块在固件里共享同一个射频前端按目标 AP 的响应自动切换。在固件侧过渡模式 AP 可以通过扫描报告中的安全标志组合来识别# 提取同时带 WPA2 和 WPA3-SAE 标志的 AP 列表 awk /WPA3/ /WPA2/ {print $1, $2, $3} scan_report.txt这行命令的作用是把同时匹配 WPA3 和 WPA2 安全标志的行筛选出来打印 BSSID、SSID 和信道号方便直接对着这份清单决定优先评估谁。如果目标 AP 只出现 WPA3 标志而没有 WPA2说明它是纯 WPA3 模式降级诱导路径的优先级要调低固件会主要依赖旁路采集和后续的协议层手法。2.3 一体化固件相比外置网卡方案的取舍如果你在桌面上跑过外置 USB 网卡一定对它的脾气有体会驱动时不时掉、信道切换慢、工作一段时间后芯片升温就开始丢包。USB 网卡还需要一台完整的笔记本跟随目标位置整个功耗和体积都压不下来。BW16 这类双频段模组属于真正的嵌入式方案固件直接管理射频信道切换从 2.4GHz 跳到 5GHz 只需要毫秒级整板功耗在几百毫瓦量级一节电池可以撑几个小时。代价是灵活性外置网卡换一张就是换一套驱动和框架固件则需要重新编译才能更新协议栈。两种方案的差异可以从几个维度直接对比维度外置网卡方案BW16 一体化固件信道切换秒级驱动层限制毫秒级固件直接控制整机功耗笔记本全功耗几百毫瓦协议栈升级换驱动或换工具重新编译固件多目标协同依赖 USB HUB固件内多任务调度离线破解同一台机器完成数据导出后另行破解实际评估项目里我一般把 BW16 当作长期监控节点放在目标 AP 附近笔记本只在需要处理抓到的数据或者做复杂重放时才接入。这样既能拉长现场驻留时间也不需要为每次评估准备专用网络环境。3. 编译和烧录BW16双攻击WPA3固件工具链选择与最小流程3.1 准备 Arm 交叉编译环境和 SDKBW16 的主控是瑞昱 RTL8720DN官方把开发环境叫做 AmebaD。开源固件通常以 AmebaD SDK 为基础在它的 WiFi 协议栈上层挂载攻击模块。SDK 以 git 仓库方式分发内部通过子模块引用多个库克隆之后第一件事是同步子模块否则编译到一半会报缺少头文件。在 Ubuntu 22.04 上准备环境的步骤比较固定sudo apt-get install -y gcc-arm-none-eabi git make python3 git clone --recursive sdk_repo_url ambd_sdk cd ambd_sdk git submodule update --init --recursive第一行安装了 ARM 交叉编译工具链、git、make 和 python3其中 python3 是 SDK 生成配置头文件和打包固件时用的。第二行用 --recursive 一次性拉取子模块但实际仓库往往还有嵌套子模块所以第三行的 submodule update 不能省。如果编译时遇到类似arm-none-eabi-gcc: command not found先确认 PATH 里能不能找到可执行文件再把工具链的 bin 目录加进去。工具链直接选 apt 默认版本即可不需要特意升级到最新版兼容性问题反而更少。3.2 固件配置项和编译参数双攻击固件的核心配置在主配置头文件里不同分支名字略有差异一般叫 wifi_conf.h或者通过 project 目录下的 Makefile 传参。需要关注的核心配置项集中在四个方面SAE 协议栈开关、PMKID 采集、管理帧注入和信道轮询。下面这一段配置片段可以作为参考模板// 固件配置头文件路径随分支版本而异 #define CONFIG_WPA3_SAE_SUPPORT 1 // 启用 SAE 协议栈识别 WPA3 网络 #define CONFIG_PMKID_CAPTURE 1 // 启用 PMKID 旁路采集 #define CONFIG_DEAUTH_INJECT 1 // 启用解除认证帧注入 #define CONFIG_FAKE_AP_MIXED 1 // 启用伪造 AP 降级诱导 #define CONFIG_CHANNEL_HOP_MS 250 // 信道驻留时间单位毫秒CONFIG_WPA3_SAE_SUPPORT 决定协议栈是否包含 SAE 的 ECC 运算不打开的话固件根本没法识别 WPA3 网络。CONFIG_PMKID_CAPTURE 是旁路采集的总开关关闭后就算收到握手帧也不会提取 PMKID。CONFIG_DEAUTH_INJECT 和 CONFIG_FAKE_AP_MIXED 是降级诱导的两个子项前者负责发送解除认证帧后者负责伪造成同 SSID 的 WPA2 AP。CONFIG_CHANNEL_HOP_MS 控制信道轮询速度设太慢会漏掉偶发客户端设太快会收不到管理帧推荐先保持 250 毫秒到现场再根据目标活跃程度调整。配置确认后执行编译make setup make all ls project/realtek_amebaD_va0_example/GCC-ARM/applicationmake setup 会生成平台的链接脚本和启动文件make all 会编译所有中间产物并链接出双攻击固件的 bin 镜像。如果只修改了头文件里的宏直接重新 make 即可不需要重新 setup。编译产物通常在 application 子目录下烧录时选择对应后缀的 bin 文件。3.3 烧录方式和首次启动验证BW16 模组通常引出 UART0 引脚用 USB-TTL 转接板就能烧录。接线表是固定的接错引脚不会烧板子但电压接错会。需要注意的只有一处就是 VDD 必须接 3.3V模组引脚信号方向USB-TTL 转接TX模组输出RXRX模组输入TXGND地GNDVDD电源输入3.3VBW16 不能接 5V烧录前把转接板跳线跳到 3.3V接反了芯片直接报废。上电后按住板载烧录键进入烧录模式用官方烧录工具选择编译产物里的 bin 文件下载。首次验证在串口终端完成screen /dev/ttyUSB0 115200打开串口后如果看到版本号打印和类似Init WPA3 module OK的提示说明固件已经正常启动。这时可以输入 help 或 scan 命令验证射频链路观察串口有没有返回 AP 列表。这一步的意义是把问题挡在射频之外——如果扫描都出不来结果后边的双攻击流程无从谈起。4. 在真实WPA3网络中跑通双攻击捕获4.1 固件控制台的最小命令集一体化固件在串口上提供一套简化的命令行接口不同分支命令字不一样但操作顺序一致先扫描再选中目标最后启动攻击。下面这组命令序列是我常用的一个分支的示例scan_start scan_report attack_select AA:BB:CC:DD:EE:FF attack_mode both attack_go capture_statusscan_start 触发一轮全信道扫描scan_report 打印扫描结果attack_select 指定目标 BSSIDattack_mode both 表示同时启用降级诱导和 PMKID 旁路attack_go 启动攻击流程capture_status 查看当前已捕获握手和 PMKID 的数量。这里最关键的是 attack_mode 参数如果目标 AP 只广播 WPA3 而没有过渡模式降级诱导大概率不起作用这时把模式切成 pmkid_only 反而能拿到数据。纯 WPA3 的 AP 在某些固件版本里仍然会响应 PMKID 请求这个行为取决于 AP 对 SAE 缓存的实现现场要实际试一次才能确认。4.2 四个直接影响WPA3捕获结果的参数参数调优是现场耗时最多的环节。下面表格里的四个参数覆盖了我遇到过的绝大多数现场状况推荐初值适用性比较广可以以此为起点再做调整参数名推荐初值调整方向影响deauth_interval50 ms客户端掉线快但容易被反制决定降级诱导速度channel_hop_ms250 ms按信道密度增减决定是否漏掉目标capture_retry3 次重传多则功耗更高决定管理帧不丢pmkid_timeout5000 ms对慢 AP 适当加大决定旁路采集超时对应的设置命令在一体化固件控制台里通常是 config 开头config deauth_interval 50 config channel_hop_ms 250 config capture_retry 3 config pmkid_timeout 5000deauth_interval 太短会让客户端持续重连AP 的防攻击机制会介入太长则客户端已经稳定在 WPA3 上降级窗口错过。channel_hop_ms 在信道多的 5GHz 频段建议放到 500 以上2.4GHz 可以保持在 200 附近。capture_retry 指管理帧没收到确认时的重发次数固件默认 3 次足够现场如果发现丢包严重可以加到 5 次。pmkid_timeout 是等待 AP 响应握手首帧的最长时间AP 负载高时需要加大到 8000 甚至 10000否则慢 AP 的响应还没回来固件已经切到下一个信道了。4.3 捕获数据的落盘和离线分析固件默认把捕获结果通过串口打印格式类似一行一个事件。现场跑完把串口日志保存下来回到电脑上用文本处理工具过滤出有用的行# 过滤串口日志中所有 PMKID 事件 grep PMKID_CAPTURED serial.log | awk {print $2, $3, $4} pmkid_list.txtgrep 先把带 PMKID_CAPTURED 标记的行挑出来awk 再按空格切出三个字段分别是 BSSID、客户端 MAC 和 PMKID 值写进 pmkid_list.txt 作为后续离线分析的输入。如果固件支持 SD 卡或者 UDP 上传也可以把 PCAP 格式的原始数据保存下来再转成通用工具可处理的格式hcxpcapngtool -o eval.22000 capture.pcap hashcat -m 22000 eval.22000 wordlist.txthcxpcapngtool 会把 pcap 里的握手和 PMKID 全部提取并归一化输出到 eval.22000hashcat 的 -m 22000 模式直接对 WPA/WPA2 PMKID 做 GPU 加速破解。注意这里的破解对象是预共享密钥拿到 PMKID 之后破解逻辑和 WPA2 完全相同这也是双攻击方案里旁路采集的价值所在。5. 提高WPA3双攻击捕获成功率的三个操作细节5.1 用信道驻留时间对齐目标行为现场最容易犯的错是把 channel_hop_ms 设得太小结果固件刚在一个信道上发出 deauth客户端还没来得及重连就跳到下一个信道了整个过程颗粒无收。推荐的做法是先观察目标网络最活跃的信道只把评估固件锁到单信道再配合低 deauth_interval 快速迫使客户端重连。等抓到第一组握手确认降级路径有效后再放开到全频段做多目标扫描。5.2 让降级诱导和PMKID采集交替运行多目标环境里不要两个模块同时打同一个 AP会互相干扰。PMKID 采集不需要客户端在线适合在凌晨或目标 AP 空闲时段先跑白天客户端活跃时切到降级诱导抓握手。如果固件支持定时任务可以设置两个时间窗口分别执行把整天的采集时间都用起来。实际操作中我会在控制台里先跑一轮 pmkid_only再切 both观察两种模式下 capture_status 的数字增长曲线调整切换节奏。5.3 通过串口时间戳定位失败环节固件打印的事件行都带毫秒级时间戳复盘时先看 PMKID 事件和 deauth 事件的时间差。如果 deauth 发出后几百毫秒内没有新的连接事件说明客户端没有重连或者被重连策略挡住了如果重连了但始终没有握手出现很可能是伪造 AP 的加密参数和原 AP 不一致需要回头检查 CONFIG_FAKE_AP_MIXED 的配置。时间戳对照是定位这类问题最快的方式比反复重启固件有效得多。这三个细节不需要改动代码纯操作层面就能把成功率拉高一截。下一次部署时先锁信道再排时间窗口最后用时间戳复盘按照这个顺序排查大多数情况下不会空手而归。本文还有配套的精品资源点击获取
返回列表