2. IoT无线协议全景与攻击面建模

IoT无线协议安全测试的第一步不是抓包,而是建立“协议全景图”。同一栋楼里可能同时存在BLE门锁、Zigbee传感器、Wi-Fi摄像头、LoRaWAN水表和Thread照明,它们工作在相同或相近的2.4GHz/Sub-GHz频段,却拥有完全不同的协议栈、拓扑结构和攻击面。如果测试者只熟悉Wi-Fi渗透,面对Zigbee的NWK层帧计数器或LoRaWAN的Join-Accept重放就会无从下手。本节的目标是建立一张可复用的攻击面建模地图:先按协议栈分层理解每层“谁在说话、说什么、怎么保护”,再按拓扑判断攻击者能站在哪里,最后把攻击面落到具体测试项上。

一、协议栈分层:从PHY到APP的信任边界

所有无线协议都可以抽象为“物理层—链路/媒体访问层—网络/路由层—传输/会话层—应用层”的纵向结构,但各协议的层名、职责和加密位置差异很大。理解分层的关键是找到加密起点和认证终点:加密从哪一层开始,意味着该层以下的字段是明文可读的;认证在哪一层结束,意味着该层以上的伪造可能被接受。

  • BLE:PHY(1M/2M/Coded) → Link Layer(广播/连接、跳频) → L2CAP → ATT/GATT → 应用Profile。配对与加密在SMP完成,但广播包(ADV)始终明文,包含MAC、设备名、UUID、厂商数据,是信息收集的第一入口。
  • Zigbee:PHY(802.15.4) → MAC → NWK(路由、帧计数器) → APS → ZCL/应用。NWK层可做逐跳加密,APS层可做端到端加密,但许多设备为兼容性关闭APS加密,导致ZCL命令可被伪造。
  • Z-Wave:PHY(Sub-GHz) → MAC → Transport → Network(路由) → Application。S0使用固定密钥派生,S2引入ECDH和临时密钥,S0设备是重点攻击对象。
  • Wi-Fi:PHY → MAC(802.11) → 安全层(WPA2/WPA3) → IP/TCP/UDP → 应用。管理帧在WPA3前多为明文,Deauth、Beacon伪造、PMKID捕获都发生在链路层。
  • LoRaWAN:PHY(LoRa调制) → MAC → 网络会话(DevAddr、FCnt) → 应用会话(AppSKey)。NwkSKey保护MAC命令,AppSKey保护载荷,Join流程中的DevNonce和AppNonce是重放防护核心。
  • NB-IoT:基于蜂窝LTE的窄带物理层 → RLC/MAC → PDCP(加密) → NAS/RRC → CoAP/MQTT。安全主要依赖运营商USIM和蜂窝加密,攻击面更多在应用层和模组固件。
  • Thread:PHY(802.15.4) → MAC → 6LoWPAN → IPv6/ICMPv6 → UDP → CoAP/DTLS。基于MeshCoP和DTLS的Commissioner认证是入网信任根,网络密钥泄露即全网沦陷。

分层建模的实用价值在于:当你在某层捕获到数据后,能立刻判断“这段数据是否已被保护、能否直接篡改、篡改后哪一层会校验”。例如抓到Zigbee的APS载荷,若APS加密开启,则只能做重放或流量分析;若关闭,则可直接构造ZCL On/Off命令。

IoT无线协议栈分层与攻击面映射 左侧为协议栈层级,右侧为对应典型攻击面;颜色区分协议族 应用层 APP / Profile 传输/会话 UDP / CoAP / ATT 网络/路由 NWK / IPv6 / 6LoWPAN 链路/MAC 802.15.4 / 802.11 / BLE LL 物理层 PHY / 调制 / 频段 BLE GATT/ATT L2CAP Link Layer SMP配对 2.4G跳频 Zigbee ZCL APS NWK MAC 802.15.4 Z-Wave Command Class Transport Network路由 MAC Sub-GHz Wi-Fi HTTP/MQTT TCP/UDP IP WPA2/WPA3 802.11 LoRaWAN App载荷 MAC命令 Join/会话 LoRa MAC LoRa调制 Thread CoAP/DTLS UDP IPv6/6LoWPAN MAC 802.15.4 NB-IoT CoAP/MQTT NAS/RRC PDCP加密 RLC/MAC LTE窄带 典型攻击面(按层定位): PHY/MAC:信号重放、Deauth、Beacon伪造、频段干扰、MAC地址伪造 网络/会话:路由欺骗、帧计数器绕过、Join重放、密钥派生弱点、会话密钥泄露 应用/传输:明文载荷篡改、命令注入、固件升级劫持、云API越权、弱配对

二、典型拓扑:攻击者站在哪里

协议栈决定“能改什么”,拓扑决定“能听到什么、能插到哪里”。IoT无线网络常见拓扑有五类,每类对应不同的攻击位置。

星型(Wi-Fi AP、NB-IoT基站):所有终端直连中心节点。攻击者若在覆盖范围内,可做中间人、伪造AP或干扰上行。Wi-Fi的Evil Twin、NB-IoT的伪基站都属于此类。测试重点是中心节点的认证强度和终端对异常AP的容忍度。

Mesh(Zigbee、Thread、Z-Wave):节点多跳转发,网络密钥和路由表是核心资产。攻击者一旦通过某个弱节点入网,就能横向移动、篡改路由或发起黑洞攻击。Zigbee的Touchlink、Thread的Commissioner都是入网信任根,应优先测试其认证流程。

星型+网关(LoRaWAN):终端→网关→网络服务器→应用服务器。网关通常只做透明转发,攻击者若控制网关或伪造网关,可做Join重放、FCnt回滚、下行注入。测试重点是网关与NS之间的回传链路是否加密、终端是否校验下行帧的MIC和FCnt。

点对点(BLE):手机与设备直连。攻击者可在配对阶段做MITM,或在连接后重放GATT写操作。BLE的Just Works配对无MITM保护,是门锁、手环类设备的常见弱点。

混合拓扑(Thread+Wi-Fi、Zigbee+Wi-Fi):边界路由器/网关是协议转换点,也是攻击面汇聚点。测试时应关注网关是否将一种协议的信任错误地传递给另一种协议,例如通过Wi-Fi入侵后能否直接控制Zigbee设备。

三、攻击面清单:从协议到测试项

把分层和拓扑结合,可以形成一张可执行的攻击面清单。以下清单按“协议—层—攻击面—测试方法—观察点”组织,可直接用于测试计划。

协议层攻击面测试方法观察点
BLELink/SMPJust Works配对、固定PIN用nRF Connect或btlejack重放配对是否要求MITM保护、配对后能否重放
BLEGATT未认证写、句柄枚举枚举服务UUID,尝试无配对写写操作是否被拒绝、是否有权限校验
ZigbeeNWK帧计数器回滚、默认密钥用KillerBee嗅探并重放NWK帧FCnt是否递增、重放是否被丢弃
ZigbeeAPSAPS加密关闭、ZCL伪造解析APS头,构造On/Off命令设备是否执行伪造命令
Z-WaveNetworkS0密钥派生弱点捕获S0配对,离线推导网络密钥能否解密后续通信
Wi-FiMACDeauth、PMKID捕获aireplay-ng发送Deauth,hcxdumptool抓PMKID客户端是否掉线、能否破解PSK
LoRaWANJoinJoin-Accept重放、DevNonce复用用LoRaWAN网关模拟器重放Join终端是否接受旧Join、FCnt是否重置
ThreadCommissioner弱Commissioner凭证尝试用默认PSKc入网能否获取网络密钥并加入Mesh
NB-IoT应用模组固件、CoAP明文抓取模组串口日志,分析CoAP载荷是否有明文凭证、能否重放下行命令
建模提示:攻击面清单不是一次性文档。每次测试前,先确认目标设备实际启用了哪些层、哪些加密、哪些拓扑角色,再裁剪清单。例如一个Zigbee设备若同时支持Touchlink和标准入网,两条入网路径都要测;一个LoRaWAN终端若支持Class B,还要测下行窗口的时序攻击。

四、从全景到测试计划

实际项目中,建议按以下顺序把全景图转化为测试计划:第一步,用频谱仪或SDR确认目标频段和协议类型,避免抓错信号;第二步,用对应协议的分析工具(Wireshark+TI CC2531抓Zigbee、Ubertooth抓BLE、RTL-SDR抓LoRa)捕获正常通信,建立基线;第三步,对照攻击面清单,逐层尝试重放、篡改、伪造、降级;第四步,记录每次尝试的输入、设备响应和日志,判断防护是否生效。

例如测试一款Zigbee智能灯:先抓取入网过程,确认是否使用默认TC Link Key(ZigbeeAlliance09);若使用默认密钥,则可用KillerBee注入伪造的NWK帧,观察灯是否响应。再测试APS层:若APS加密关闭,直接构造ZCL On/Off命令,观察灯是否被控制。最后测试拓扑:将攻击节点放在Mesh边缘,尝试通过弱节点入网,观察网络是否允许未授权节点加入。每一步的观察点都应记录时间戳、帧序号、设备状态变化,形成可复现的测试证据。