-
-
[原创]浅析Zigbee协议攻击面
-
发表于: 2024-11-9 17:00 1890
-
一般一个物联网/工控网络的攻击面:
可能的攻击面:“云网端”
平台层:云端、管理应用
网络层:网络通信设备
感知层:硬件设备以及软件程序
zigbee就是处在感知层和网络层之间的通信协议,作为和设备直接通信的门户,针对zigbee协议可以做到的事情有:
操控设备进行某些操作
获取设备rootshell,并且长期驻留
攻击内网里面的其它物联网或者pc、服务器设备
至于受限于100m的传输范围,其实我们可以拓宽一下思路,比如使用无人机来搭载zigbee的发射模块?
现状就是很多很多设备的zigbee协议没有做到最好,即使做到最好,那也有可能被某些问题导致其安全性受损,接下来尝试浅析一下zigbee协议本身和落地应用的安全
作为一种自组网、低功耗、短时延、自愈能力强、可容纳大容量节点的局域网通信技术,Zigbee主要使用在智能家居、各类工业或者城市的传感器场景,而且芯片便宜,非常适合大规模部署的设备
有两个原因使得Zigbee网络和通信通常被认为难以受到攻击:
1)Zigbee网络具有封闭性质,配备了专用的调试流程来将新设备添加到网络中。除调试外,Zigbee网络处于关闭状态,控制器不会处理加入请求。来自未经授权设备的数据包将被拒绝。
2)Zigbee协议使用AES算法加密和CCM*模式认证来保护应用层(即网络层的有效负载)。如果没有正确的安全密钥(在调试期间交换),攻击者无法渗透Zigbee系统。
但真实情况恐怕并非如此
1、非安全模式:不采取任何安全服务策略,默认,仅适合调试;
2、访问控制模式:通过访问控制列表限制非法节点获取数据,但不对传输进行加密;
3、安全模式:不仅进行访问控制,也采用AES 128位加密算法进行通讯加密
接下来仅讨论第三种情况,因为前两种情况安全性非常差,仅仅适合用于调试而非部署,
对其进行安全性的分析,可以不关注通信层面繁多的知识
,而应该重点关注:网络层、应用层如何做认证
zigbee很早就考虑到了传输安全问题,使用AES128的加密传输措施以及CCM模式认证,对网络层的payload进行加密传输,数据帧的封装情况如下
物理层-数据链路层-网络层(NWK,Network)
最后使用MIC(MessageIntegrity Code)验证数据完整性,类似于CRC校验
在2003年,Jakob Jonsson已经证明了AES-CCM在隐私性和真实性方面的安全性与其他提议的模式(如OCB)一致。
因此,研究Zigbee认证机制的安全性显得更为有意义。
要了解Zigbee协议网络架构安全性的区别,首先又要了解以下两种密钥
给网络层的唯一密钥(zigbee局域网的门户)NetworkKey网络密钥,用来保证网络层的安全传输,主要用在广播通信,每个节点都要有网络密钥才能与其他节点安全通信。
可以是通过网络设备向信任中心发出请求,要求将密钥发送给它获得
给应用层端到端加密的两两之间独立密钥:
LinkKey链接密钥,如果节点之间希望进行通信,则节点需要向信任中心请求一个链接密钥,用来保证端到端的安全
分为以下两种模型
集中式安全模型:复杂但最安全的模型
分布式安全模型:简单,但是安全性较低。
分布式安全模型(mesh组网)为什么安全性较低?
网络中的所有节点都使用相同的网络密钥Network Key来加密消息。
为了配置方便,所有节点在注册入网络之前都已预先配置了一个链接密钥Link key,用于在注册过程中加密传输网络密钥(Network Key)。
攻击者只需获取一个节点的网络密钥,即可解密和伪造该网络中所有节点之间的通信。
不推荐使用这种不安全的网络,如果一定要使用,做好密钥的保密和防窃听工作吧
集中式安全模型提供了更高的安全性,因为集中管理所有安全策略和密钥分发和周期性的更新,能有效地防止密钥的重用、未经授权的设备加入网络,
并且每组通信使用新协商的link key链接密钥,这也让敌手无法通过单点的设备来解密整个网络的通信
接下来尝试浅析集中式网络这一网络架构的安全性