ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

wifit3 PixieDust攻击原理:Null Secret与Static Secret两种离线恢复模式

2026/9/30 3:04:40 拓冰建站 浏览量
wifit3 PixieDust攻击原理:Null Secret与Static Secret两种离线恢复模式 wifit3 PixieDust攻击原理Null Secret与Static Secret两种离线恢复模式【免费下载链接】wifit3Wifite but USB-only cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3wifit3是一款跨平台的纯 USB Wi-Fi 安全审计工具Linux / Windows / macOS内置的 WPS 攻击套件支持PixieDust 离线 PIN 恢复它利用部分路由器固件的伪随机数生成器PRNG缺陷在拦截到 WPS 握手的一个中间消息后不向路由器发起任何猜测直接在本地离线还原出 8 位 WPS PIN再进一步取出 Wi-Fi 密码PSK。本文将用通俗的语言讲清楚 PixieDust 攻击原理以及 wifit3 实现的Null Secret空密钥与Static Secret静态密钥两种离线恢复模式。一、先搞懂背景WPS PIN 为什么半离线就能被猜WPS PIN 是 8 位数字前 4 位 后 4 位其中最后 1 位是前 7 位的校验码实际自由空间只有 3 位。WPS 协议故意把 PIN 拆成两半分别验证因此暴力破解最坏只需约 10,000 1,000 ≈1.1 万次在线尝试而不是 1 亿次——这是 WPS PIN 设计上的著名弱点。而PixieDust 攻击把这条路彻底离线化在线阶段只做一件事与目标路由器完成一次 WSC 握手截获到M3 消息中的关键材料DH 公钥、E-Hash1/2、AuthKey 等wifit3 中称为pixie bundle离线阶段利用路由器生成秘密随机数E-S1/E-S2时的 PRNG 缺陷用已知的固定值替代真实秘密值直接枚举 PIN 空间并验证哈希匹配。wifit3 中这些 WSC 原语HMAC-SHA256、PIN 校验和、check_pin_half校验函数全部是纯 Python 实现位于 src/wifit3/dot11/wsc/crypto.py可离线测试、不依赖任何外部工具。二、在线一步M3 之后就够了一次 WPS PIN 会话的消息流大致是我们作为外部 Registrar发起 EAPOL 会话路由器Enrollee发来M1包含它的 DH 公钥 PKE 和随机数我们回复M2含 PKR双方派生出 DHKey → AuthKey路由器发来M3包含E-Hash1 / E-Hash2——这两个哈希由PIN 各半 秘密随机数 E-S1/E-S2 双方公钥经 AuthKey 下的 HMAC 算出。关键点在于拿到 M3 后我们已具备离线验证任意 PIN 猜测所需的全部材料。完整的状态机在 src/wifit3/campaigns/wps/registrar.py它会在 M3 之后把 pixie bundlePKE、PKR、E-Hash1/2、E-Nonce、AuthKey暴露出来交给 PixieDust 模块。三、Null Secret 模式把秘密当成全零Null Secret空密钥模式基于一个大胆但屡试不爽的假设某些路由器的 PRNG 根本没被正确初始化生成 E-S1 / E-S2 时输出的就是16 字节全零。如果假设成立攻击者就可以用(全零, 全零)这对假秘密直接代入验证公式枚举前 4 位 PIN0000→9999共10,000次命中后再枚举后 3 位000→999共1,000次每次都用check_pin_half检查能否复现 E-Hash1/E-Hash2。全部命中即得完整 PIN——整个过程路由器毫无察觉零交互、零锁定风险。在 wifit3 中这个固定对就是 pixie.py 里的NULL_SECRET_PAIR。四、Static Secret 模式已知固件的固定秘密字典Null Secret 没命中时Static Secret静态密钥模式接着上部分厂商固件的 PRNG 虽然初始化了但每次会话生成的 E-S1/E-S2 都是同一对固定值例如由固定种子决定。这类一对 (E-S1, E-S2) 静态秘密对可以通过抓包分析特定固件版本预先求出并收录进字典。wifit3 的recover_pin会依次尝试每个静态秘密对对每一对重复上面的 11k 次枚举模式假设尝试次数适用目标Null SecretE-S1/E-S2 16 字节全零10,000 1,000未初始化 PRNG 的旧固件Static SecretE-S1/E-S2 已知固定值每对秘密 11k 次固定种子固件逐厂商收录核心逻辑在 src/wifit3/campaigns/wps/pixie.py 的recover_pin函数先跑 Null Secret命中即返回再逐个 Static Secret 对搜索。整个密钥空间搜索为纯 Python、零外部依赖实测约 12 毫秒即可完成一轮。五、wifit3 中的实际执行流程wifit3 把 PixieDust 无缝集成进了 PIN 攻击编排器src/wifit3/campaigns/pin.py 的_try_pixie在 Focus 目标页对开启 WPS 的路由器启动 PIN 攻击每次尝试走到 M3 时自动捕获 pixie bundle立即在后台跑一次离线 PixieDust每个会话只试一次避免浪费若恢复出 PIN日志会显示PixieDust found: XXXXXXXX (NULL_SECRET / STATIC_SECRET; verifying)随后进入verify 阶段——用这个 PIN 在线完成一次正式握手从 M7 中取出明文 PSK写入密码库。也就是说PixieDust 命中 ≈ 第一次握手就破解未命中则自动退回常规的两半暴力扫描带软/硬锁检测和断点续扫。六、影响范围与防御建议受影响的是哪类设备运行老旧、PRNG 缺陷未修复固件的路由器大量 2010 年代中期的家用与 ISP 送装设备。现代固件基本已修复PixieDust 未命中是常态。作为普通用户/管理员的防御建议✅ 直接在路由器后台关闭 WPS最有效PIN 暴力破解同样失效✅ 升级路由器固件保持安全更新✅ Wi-Fi 密码使用足够复杂的独立 PSK避免与 PIN 或厂商默认值相同。七、延伸阅读模块与文档索引PixieDust 离线恢复核心src/wifit3/campaigns/wps/pixie.pyWSC 密码学原语含check_pin_halfsrc/wifit3/dot11/wsc/crypto.pyWPS 会话状态机M1–M7 与 NACK 判定src/wifit3/campaigns/wps/registrar.pyPIN 两半拆分与校验和src/wifit3/campaigns/wps/pins.pyWPS 套件架构总览含硬件实测行为src/wifit3/campaigns/wps/README.mdWPS 按钮PBC抓取与 PIN 攻击编排src/wifit3/campaigns/pbc.py、src/wifit3/campaigns/pin.py⚠️免责声明PixieDust 属于安全审计技术仅可用于你自己拥有或已获明确授权测试的网络与设备。wifit3 直接操作 USB 硬件寄存器使用风险自负。【免费下载链接】wifit3Wifite but USB-only cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考