天天看点

物联网设备安全1.4 改变灯泡状态

<b>1.4 改变灯泡状态</b>

<b></b>

到目前为止,我们知道了如何向网桥发送命令改变灯泡状态。网桥本身使用zigbee light link(zll)无线协议向灯泡发送指令。zll协议以ieee 802.15.4标准为基础,是一种低成本、低功耗、广泛应用于数以百万计的设备和传感器上的协议。zll标准实际上是一个zigbee应用配置的规范,定义了与消费市场和小型专业设备相关的照明系统参数。

zll需要开发商提供主密钥,并将它保存在网桥和灯泡上。初始化时(也就是用户按下网桥按键时),网桥会产生一个随机网络密钥并使用主密钥进行加密。灯泡使用主密钥解密并读取出网络密钥,之后网桥和灯泡就可以使用该网络密钥进行通信了。

使用killerbee框架和rz u盘,我们可以嗅探zll的网络流量。插入rz u盘之后,我们先使用zbid工具验证一下,zbid是killerbee套件中的一个工具:

# zbid

dev product string serial number

002:005 killerb001 [deleted]

之后,我们就可以使用zbwireshark命令进行嗅探(比如这里嗅探11信道):

# zbwireshark -f 11 -i '002:005'

该命令会启动wireshark(http://www.wireshark.org/)工具,并开始捕获zigbee流量。

如图1-15所示,网桥持续不断地在信道11上发送信标广播请求(zigbee的信道范围从11~26),候选设备如灯泡可以对该信标请求做出响应,以加入到网络中。

图1-15:wireshark捕获信标请求

本例中,除了信标请求之外,在20信道上也会出现zll流量,如图1-16所示。zigbee的security header中的security control字段设为0x01,表示正在使用一个消息认证码(aes-cbc-mac-3/mic-32)。该消息认证码的传输过程也被捕获到并显示出来了。

图1-16:wireshark捕获20信道流量

当网桥收到一个认证请求用以改变与其关联的灯泡状态时,就需要使用zigbee协议以及zll规范进行通信了,通信过程如图1-15和图1-16所示。

我们知道网桥使用zll协议与灯泡通信。网桥还会使用一个共享密钥来维持与照明系统基础设施的基于http的带外连接。当网桥接收到来自照明网站(或者来自远程网络的ios app)路由过来的命令时,会启用该连接。应用于网桥的zll实现或者加密方法有可能存在缺陷。然而,要利用这些缺陷,攻击者需要与被攻击对象保持很近的距离(以便于利用zll的问题),或者能够拦截网络数据并注入数据包。

由于这类问题发生的概率比较低,所以它并不视为关键的风险,但是它的潜在威胁还是值得我们陈述一下。

继续阅读