Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
whisperpair-poc-tool — 一个安全研究工具,用于识别并演示 CVE-2025-36911:Fast Pair 配对模式绕过漏洞。 | Kitploit
工具/GitHubGitHub/aalex954/whisperpair-poc-tool
侦察蓝牙安全漏洞分析漏洞利用信息收集无线安全渗透测试硬件安全红队
GitHubaalex954/whisperpair-poc-tool

whisperpair-poc-tool

一个安全研究工具,用于识别并演示 CVE-2025-36911:Fast Pair 配对模式绕过漏洞。

7238个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

WhisperPair-PoC-Tool 与研究成果

深入探究 CVE-2025-36911 及 Google Fast Pair 生态系统中的安全漏洞

博客文章

demo

执行摘要

Google Fast Pair 旨在让蓝牙配对变得无缝:轻触通知即可连接。但当这种无缝体验变成安全负担时会发生什么?WhisperPair-PoC-Tool 是一款安全研究工具,它揭示了影响数百万蓝牙配件的两类关键漏洞:未授权配对绕过和 Find My Device 网络追踪利用。

本文详细介绍了 WhisperPair-PoC-Tool 的技术内部原理、它所利用的协议缺陷,以及这对蓝牙配件生态系统意味着什么。


目录

  1. 漏洞
  2. Fast Pair 协议入门
  3. WhisperPair-PoC-Tool 工作原理
  4. 攻击面
  5. 检测方法
  6. 利用能力
  7. 修复建议
  8. 伦理考量

漏洞

CVE-2025-36911:Fast Pair 配对模式绕过

Google Fast Pair 规范明确声明:

“如果可选的公钥字段存在:若设备未处于配对模式,则忽略写入并退出。”

  • Google Fast Pair GATT 过程规范

这是关键的安全关卡。设备应仅在用户明确将设备置于配对模式(通常通过按住按钮)时,才对基于密钥的配对请求做出响应。这确保了用户意图,因此你无法在别人佩戴耳机时与其配对。

问题所在: 许多制造商完全跳过了这一检查。无论配对模式状态如何,它们都会处理配对请求,从而允许:

  • 静默配对,无需用户交互
  • 配件劫持,通过近距离攻击
  • 隐私侵犯,连接到受害者的设备

Find Hub 账户密钥泄露

Google 的 Find My Device 网络 (FMDN) 允许通过众包的 Android 设备网络追踪蓝牙配件。这需要一个账户密钥,一个 16 字节的对称密钥,用于将设备链接到 Google 账户。

问题所在: 账户密钥特征通常接受写入操作而无需身份验证:

  • 攻击者可以覆盖现有的账户密钥
  • 受害者的 Find My Device 集成失效
  • 攻击者可以使用自己的密钥追踪该设备
  • 此状态持续到恢复出厂设置

Fast Pair 协议入门

在深入探讨利用之前,让我们先了解合法的 Fast Pair 流程:

广播阶段

┌─────────────────────────────────────────────────────────────┐
│                    BLE 广播                                  │
├─────────────────────────────────────────────────────────────┤
│  服务 UUID: 0xFE2C (Fast Pair)                              │
│  服务数据:                                                  │
│    [配对模式]   → 3 字节:仅 Model ID                        │
│    [非配对模式] → 4+ 字节:0x00 + Account Key Filter         │
└─────────────────────────────────────────────────────────────┘

广播格式揭示了配对状态:

  • 3 字节 = 仅 Model ID = 设备可发现(配对模式)
  • 4+ 字节 = 版本字节 + 账户密钥数据 = 非配对模式

基于密钥的配对握手

Seeker (手机)                              Provider (配件)
      │                                              │
      │───── GATT 连接 ──────────────────────────────>│
      │                                              │
      │───── 发现服务 ───────────────────────────────>│
      │<──── 服务: 0xFE2C ────────────────────────────│
      │                                              │
      │───── 启用通知 (0xFE2C1234) ──────────────────>│
      │                                              │
      │───── 写入基于密钥的配对请求 ──────────────────>│
      │      [16 字节加密块]                           │
      │      [64 字节 ECDH 公钥] (可选)                │
      │                                              │
      │      ┌────────────────────────────────────┐  │
      │      │ 安全检查:                          │  │
      │      │ 如果存在公钥 且                     │  │
      │      │ 设备未处于配对模式:                │  │
      │      │   → 忽略并退出                      │  │
      │      │ 否则:                              │  │
      │      │   → 处理请求                        │  │
      │      └────────────────────────────────────┘  │
      │                                              │
      │<──── 通知:加密响应 ──────────────────────────│
      │      [Provider 的 BR/EDR 地址]               │
      │                                              │
      │═══════ Bluetooth Classic 配对 ═══════════════>│

当设备完全跳过“安全检查”框时,漏洞就出现了。


WhisperPair-PoC-Tool 工作原理

WhisperPair-PoC-Tool 是一款基于 Bleak BLE 库的 Python 安全研究工具。它分为多个阶段运行:

架构概览

┌────────────────────────────────────────────────────────────────┐
│                        WhisperPair-PoC-Tool                          │
├────────────────────────────────────────────────────────────────┤
│  CLI 层                                                         │
│  ├── 参数解析 (--target-name, --scan-duration)                  │
│  ├── TargetPolicy 构造                                          │
│  └── REPL 初始化                                                │
├────────────────────────────────────────────────────────────────┤
│  发现引擎                                                        │
│  ├── 通过 Bleak 进行 BLE 扫描                                  │
│  ├── 广播解析                                                    │
│  ├── 协议检测 (Fast Pair, FMDN, Swift Pair)                     │
│  └── 设备指纹识别 (Model ID, OUI 查找)                          │
├────────────────────────────────────────────────────────────────┤
│  检测引擎                                                        │
│  ├── FastPairCheckEngine (被动广播分析)                         │
│  ├── FastPairBypass (主动 CVE-2025-36911 测试)                 │
│  ├── FindHubCheckEngine (账户密钥状态检测)                      │
│  └── RiskScorer (复合漏洞评估)                                  │
├────────────────────────────────────────────────────────────────┤
│  连接管理器                                                      │
│  ├── GATT 连接及 MTU 协商                                      │
│  ├── 服务/特征发现                                              │
│  ├── 读/写/通知操作                                              │
│  └── 错误处理与重试逻辑                                        │
├────────────────────────────────────────────────────────────────┤
│  利用模块                                                        │
│  ├── ring_device() - 触发定位声音                               │
│  ├── set_account_key() - 写入账户密钥                           │
│  └── 响应解析 (BR/EDR 地址提取)                                 │
└────────────────────────────────────────────────────────────────┘

核心组件

1. 发现引擎 (discovery.py)

扫描器使用 Bleak 的检测回调来捕获 BLE 广播:

async def _detection_callback(
    self, device: BLEDevice, advertisement_data: AdvertisementData
) -> None:
    """处理每个检测到的 BLE 广播。"""
    discovered = DiscoveredDevice(
        address=device.address,
        name=device.name or advertisement_data.local_name,
        rssi=advertisement_data.rssi,
        advertisement=self._convert_advertisement(advertisement_data),
        first_seen=datetime.now(UTC),
        last_seen=datetime.now(UTC),
    )
    self._devices[device.address] = discovered

对于每个设备,该工具提取:

  • 服务 UUID(检测 Fast Pair 0xFE2C、FMDN 0xFD44 等)
  • 制造商数据(Google 0x00E0、Apple 0x004C)
  • 服务数据(解析 Model ID 和配对状态)

2. 配对模式推断 (fastpair.py)

通过分析设备的广播来确定配对模式:

def _analyze_service_data(self, evidence: FastPairEvidence) -> None:
    """分析 Fast Pair 服务数据以推断配对模式。"""
    data = evidence.service_data_bytes
    
    # 3 字节 = 仅 Model ID = 配对模式(可发现)
    if len(data) == 3:
        evidence.inferred_pairing_mode = PairingModeState.IN_PAIRING_MODE
        return
    
    # 4+ 字节且版本为 0x00 = 非配对模式
    if data[0] == 0x00:
        akd_byte = data[1]
        akd_type = akd_byte & 0x0F  # 低 4 位
        # 类型 0x00 = 显示 UI,类型 0x02 = 隐藏 UI
        # 两者都表示未处于配对模式
        evidence.inferred_pairing_mode = PairingModeState.NOT_IN_PAIRING_MODE

这一点至关重要:如果确定某个设备未处于配对模式,但它仍然响应配对请求,则存在漏洞。

3. 漏洞检测 (fastpair_attack.py)

核心漏洞测试发送基于密钥的配对请求并监视响应:

下载工具