http://p6.qhimg.com/t019285a71323c6d5e0.png


一、前言


在这篇文章中,我们将向读者介绍如何使用Attify ZigBee框架,对基于ZigBee的IoT(物联网)设备和智能设备进行渗透测试并发现漏洞。


二、关于Zigbee


ZigBee是目前IoT设备中最常见的通信协议之一。自2004年诞生以来,ZigBee迅速普及,已经成为在自动化或短距离无线控制场景中最常用的协议之一。

ZigBee具备一些附加功能,比如低功耗、原生支持网状网络以及低带宽占用率等,这些优点进一步推动了这项新技术的普及。

到目前为止,ZigBee已经成为IoT设备中最常用的协议之一,广泛应用在包括三星智能设备以及飞利浦的Hue智能照明设备在内的许多热门产品中。

ZigBee联盟负责ZigBee设备的认证,同时也负责维护经过联盟认证的产品列表。

人们对ZigBee的安全普遍缺乏意识,因此我们经常会碰到某些缺乏最基本安全防护的ZigBee设备。这些设备在很多方面存在漏洞,比如攻击者可以嗅探通信传输中的敏感信息,也可以夺取关键基础设施的控制权。

我们希望通过这篇文章以及其他IoT安全产品(比如这个工具包),能够提高IoT产品的安全性,使IoT生态系统更加健康。


三、Attify Zigbee框架


Attify ZigBee框架(以下简称AZF)是一款具备GUI操作界面的产品,对RiverLoop Security出品的KillerBee工具进行了封装,可以让初涉IoT以及无线电安全领域的初学者更加轻松掌握KillerBee工具的整个使用流程。随着时间的推移,我们计划在AZF中添加更多的功能,扩展整个框架,使其能够更加高效识别ZigBee通信中存在的漏洞。

在开始使用AZF之前,首先你需要克隆GitHub上的AZF代码仓库,运行其中的installer.sh开始安装过程。

http://p9.qhimg.com/t0155262c3ba831be98.png

这个安装脚本同时还将安装KillerBee工具,顺便解决工具运行所需要的其他依赖项。


四、设置AZF


要运行这个工具,我们需要进入AZF所在文件夹,运行如下命令,启动AZF。

1
python main.py

你可以对AZF进行配置,定制KillerBee工具包中的哪些工具可以在AZF的GUI界面中显示。你可以在“Settings”菜单中,选择需要显示的工具列表,也可以通过Ctrl+S弹出配置菜单进行定制。

http://p8.qhimg.com/t0180bc48f3dffaea3c.png

KillerBee框架由几种工具组成,但这些工具没有全部包含在AZF中。目前来说,AZF已经包含ZigBee渗透测试所需要用到的必备工具,在将来发布的新版中,会将其他工具添加进来。

你可以参考此链接,了解KillerBee工具包的更多功能。


五、开始工作


我们认为最好是通过具体案例来介绍工具的使用方法。因此,本文中我们将使用AZF,黑掉某个IoT智能灯泡,在这个过程中,向大家展示AZF的使用方法。

在开始工作前,你需要准备如下环境:

1、已刷入KillerBee的Atmel RzRaven U盘。你可以参考KillerBee在GitHub上的说明,按步骤完成刷入过程,也可以到这里购买一个已刷好的RzRaven U盘。

2、存在漏洞的IoT设备。

3、已安装AZF的虚拟机或系统。

环境准备完毕后,你可以将Atmel RzRaven U盘插入系统中并启动工具。对于本文的演示案例来说,我们需要使用以下工具:

1、Zbid

2、Zbstumbler

3、Zbdump

4、Zbreplay

在AZF的工具配置菜单中选择以上工具,点击“save configuration”,保存配置。


六、查找Atmel RZRaven U盘


插入RZRaven U盘后,你可以在zbid选项卡中检测到U盘的插入信息,如下所示:

http://p5.qhimg.com/t01253fe1216c09f46c.png

现在,我们的RzRave U盘已插入,并被AZF成功识别,我们所需要做的就是找到目标设备所用的信道(channel),利用该信息进一步对设备进行渗透测试。


七、查找目标设备的信道


ZigBee总共使用了2.4GHz频带中的16个信道用于通信。作为一名安全研究员,我们最初的目标是确定目标设备正在使用的具体信道。我们可以使用zbstumbler工具完成这一任务。

Zbstumbler是专门针对ZigBee设备的网络发现工具,它的工作原理是通过发送信标请求帧,根据收到的响应信标帧判断设备的存在情况。Zbstumbler每隔2秒变换一次信道,自动进行信标帧的发送动作。通过这一过程,我们就可以发现这16个信道中存在的任何ZigBee设备。

如果你已经知道目标设备在ZigBee通信中可能使用的具体信道,你可以单独指定这个信道来发送和接受信标帧。

http://p4.qhimg.com/t017d51713ba994e0d1.png

如上图所示,zbstumbler成功识别出信道20上的ZigBee设备。


八、导出Zigbee通信数据包


成功识别设备使用的信道后,下一步工作是捕获设备发送和接收的数据包。

如果你在安全领域是个新手,我必须向你强调通信数据包分析的重要性,它在许多场合下都能帮助我们发现许多有趣的信息。在本例中,我们会使用某种方法捕捉通信报文,重放相同的数据包,通过数据包控制目标设备的行为。

在使用zbdump工具捕获数据包之前,我们需要设置以下参数值:

1、接口(Interface):该值可从zbid中获得。

2、信道号(Channel):我们之前使用zbstumbler获得的信道号。

3、个数(Count):这是个可选项,用来设置我们想要捕获的数据包个数。本例中,我们设置该值为100。

4、输出文件名(Output File):目标文件名,用来保存已捕获的数据包。本例中,我们将所捕获的数据包存为“IoTbulb.pcap”文件。

http://p6.qhimg.com/t0181d4eb997890fe8a.png

现在我们已经输入了所有的参数,一旦我们点击“Start Capture”按钮,我们就能开始捕获通信数据包(最多捕获100个),并保存到输出文件中。

本文案例中,在点击“Start Capture”按钮按钮后,我们将通过移动应用程序打开和关闭灯泡、更换灯光颜色,并执行其他操作。之后我们停止抓包,将嗅探的数据包保存到“IoTbulb.pcap”文件中。


九、通过重放Zigbee数据包控制IoT设备


经过上一步,我们已经成功捕获了通信数据包,接下来我们可以重放数据包,开展针对IoT设备的重放攻击。

抓包文件全部保存在AZF上一层文件夹中的pcap目录。我们可以通过zbreplay菜单,选择pcap目录中的pcap文件。

选择我们在上一步骤中生成的pcap文件,选择正确的信道,然后选择重放攻击所用的延迟时间。

这一切配置完毕后,点击“replay”按钮,开始重放数据包。攻击完成后,你可以看到灯泡的颜色会发生变化,这些行为与我们之前在抓包过程中看到的行为一致。

因此,在这个案例中,IoT设备不能防御重放攻击,这也是我们攻击能够奏效的原因。

http://p9.qhimg.com/t01dc2c4ee53d22eab2.png

重放攻击目前仍然是IoT设备中最为常见的基于无线电的漏洞之一,但这种漏洞对你来说只是个开头,还有很多其他漏洞可待挖掘。


演示视频


我们会在YouTuBe上放出更多的演示视频,如果你在使用过程中发现任何错误,或者有其他功能需求,可以在GitHub上向我们反映。



 本文由 安全客 翻译,作者:興趣使然的小胃

原文链接:http://blog.attify.com/2017/04/24/hack-iot-devices-zigbee-sniffing-exploitation/