一、前言
在這篇文章中,我們將向讀者介紹如何使用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開始安裝過程。

這個安裝腳本同時還將安裝KillerBee工具,順便解決工具運行所需要的其他依賴項。
四、設置AZF
要運行這個工具,我們需要進入AZF所在文件夾,運行如下命令,啟動AZF。
python main.py
你可以對AZF進行配置,定制KillerBee工具包中的哪些工具可以在AZF的GUI界面中顯示。你可以在“Settings”菜單中,選擇需要顯示的工具列表,也可以通過Ctrl+S彈出配置菜單進行定制。

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盤的插入信息,如下所示:

現在,我們的RzRave U盤已插入,并被AZF成功識別,我們所需要做的就是找到目標設備所用的信道(channel),利用該信息進一步對設備進行滲透測試。
七、查找目標設備的信道
ZigBee總共使用了2.4GHz頻帶中的16個信道用于通信。作為一名安全研究員,我們最初的目標是確定目標設備正在使用的具體信道。我們可以使用zbstumbler工具完成這一任務。
Zbstumbler是專門針對ZigBee設備的網絡發現工具,它的工作原理是通過發送信標請求幀,根據收到的響應信標幀判斷設備的存在情況。Zbstumbler每隔2秒變換一次信道,自動進行信標幀的發送動作。通過這一過程,我們就可以發現這16個信道中存在的任何ZigBee設備。
如果你已經知道目標設備在ZigBee通信中可能使用的具體信道,你可以單獨指定這個信道來發送和接受信標幀。

如上圖所示,zbstumbler成功識別出信道20上的ZigBee設備。
八、導出Zigbee通信數據包
成功識別設備使用的信道后,下一步工作是捕獲設備發送和接收的數據包。
如果你在安全領域是個新手,我必須向你強調通信數據包分析的重要性,它在許多場合下都能幫助我們發現許多有趣的信息。在本例中,我們會使用某種方法捕捉通信報文,重放相同的數據包,通過數據包控制目標設備的行為。
在使用zbdump工具捕獲數據包之前,我們需要設置以下參數值:
1、接口(Interface):該值可從zbid中獲得。
2、信道號(Channel):我們之前使用zbstumbler獲得的信道號。
3、個數(Count):這是個可選項,用來設置我們想要捕獲的數據包個數。本例中,我們設置該值為100。
4、輸出文件名(Output File):目標文件名,用來保存已捕獲的數據包。本例中,我們將所

現在我們已經輸入了所有的參數,一旦我們點擊“Start Capture”按鈕,我們就能開始捕獲通信數據包(最多捕獲100個),并保存到輸出文件中。
本文案例中,在點擊“Start Capture”按鈕按鈕后,我們將通過移動應用程序打開和關閉燈泡、更換燈光顏色,并執行其他操作。之后我們停止抓包,將嗅探的數據包保存到“IoTbulb.pcap”文件中。
九、通過重放Zigbee數據包控制IoT設備
經過上一步,我們已經成功捕獲了通信數據包,接下來我們可以重放數據包,開展針對IoT設備的重放攻擊。
抓包文件全部保存在AZF上一層文件夾中的pcap目錄。我們可以通過zbreplay菜單,選擇pcap目錄中的pcap文件。
選擇我們在上一步驟中生成的pcap文件,選擇正確的信道,然后選擇重放攻擊所用的延遲時間。
這一切配置完畢后,點擊“replay”按鈕,開始重放數據包。攻擊完成后,你可以看到燈泡的顏色會發生變化,這些行為與我們之前在抓包過程中看到的行為一致。
因此,在這個案例中,IoT設備不能防御重放攻擊,這也是我們攻擊能夠奏效的原因。

重放攻擊目前仍然是IoT設備中最為常見的基于無線電的漏洞之一,但這種漏洞對你來說只是個開頭,還有很多其他漏洞可待挖掘。
捕獲的數據包存為“IoTbulb.pcap”文件。
|