秦玉海+陳杰+康小彤
摘 要 隨著個(gè)人藍(lán)牙設(shè)備的普及,藍(lán)牙通過(guò)公共頻段進(jìn)行信息傳輸?shù)姆绞绞沟盟{(lán)牙安全問(wèn)題顯得越來(lái)越突出。同時(shí),基于藍(lán)牙技術(shù)實(shí)現(xiàn)通訊的軟件,如FireChat聊天軟件等大量興起,一方面成為公眾推崇私密通信的新寵,另一方面卻成為不法分子逃避監(jiān)管的工具。而由于藍(lán)牙技術(shù)短時(shí)間內(nèi)的快速發(fā)展,加之嗅探的困難性,很少有設(shè)備能夠?qū)崿F(xiàn)對(duì)藍(lán)牙通信數(shù)據(jù)的監(jiān)聽(tīng)或是注入。本文重點(diǎn)關(guān)注藍(lán)牙底層協(xié)議,研究數(shù)據(jù)包結(jié)構(gòu)和藍(lán)牙設(shè)備微微網(wǎng)的建立過(guò)程,分析藍(lán)牙嗅探工作中存在的難點(diǎn),并借助現(xiàn)有的軟硬件證明藍(lán)牙嗅探的可行性。
關(guān)鍵詞 藍(lán)牙;嗅探;協(xié)議;微微網(wǎng)
中圖分類號(hào) TP3 文獻(xiàn)標(biāo)識(shí)碼 A 文章編號(hào) 1674-6708(2017)194-0072-02
近年來(lái),藍(lán)牙技術(shù)享有前所未有的聲望和發(fā)展速度,在移動(dòng)設(shè)備上的覆蓋率更是驚人。事實(shí)上,藍(lán)牙已經(jīng)成為無(wú)線配件及智能設(shè)備的主要連接方式[1]。不幸的是,最近研究表明,藍(lán)牙所采用的兩級(jí)流加密模式存在許多缺陷,用戶隱私受到潛在危脅。另一方面,則是利用藍(lán)牙傳遞信息的新型通訊軟件被用于違法犯罪活動(dòng)中,嚴(yán)重影響社會(huì)和諧安定。面對(duì)藍(lán)牙技術(shù)的發(fā)展,應(yīng)當(dāng)積極采取應(yīng)對(duì)措施,加強(qiáng)在藍(lán)牙嗅探方向的研究。
1 技術(shù)背景
1.1 藍(lán)牙
藍(lán)牙技術(shù)是一種支持短距離的無(wú)線數(shù)據(jù)交換方式。一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備建立的藍(lán)牙網(wǎng)絡(luò)被稱為微微網(wǎng)(Piconet)。藍(lán)牙技術(shù)因其低功耗、低成本、靈活性強(qiáng)而被廣泛應(yīng)用于短距離無(wú)線通信中。根據(jù)實(shí)用需求,藍(lán)牙設(shè)備的最大發(fā)射功率也被分為三個(gè)等級(jí)[2],而其覆蓋范圍也隨著功率而變化。
目前,藍(lán)牙技術(shù)聯(lián)盟負(fù)責(zé)監(jiān)督藍(lán)牙規(guī)范的研究,管理認(rèn)證項(xiàng)目,并維護(hù)商標(biāo)權(quán)益[3]。
1.2 無(wú)線電層
藍(lán)牙協(xié)議棧最底層被稱為無(wú)線電層。藍(lán)牙技術(shù)采用2.4GHz工作頻段,該頻段是全世界公開(kāi)通用的無(wú)線頻段(ISM Band),無(wú)需付費(fèi)和申請(qǐng),保證了藍(lán)牙可以獲得更大的使用范圍。藍(lán)牙使用跳頻技術(shù),并以1 600跳/s的速率進(jìn)行跳頻,傳輸?shù)臄?shù)據(jù)將會(huì)分割成多個(gè)數(shù)據(jù)包,通過(guò)指定的79個(gè)藍(lán)牙信道分別傳輸數(shù)據(jù)包,每個(gè)信道占1MHz,藍(lán)牙的實(shí)際使用波段為2 400MHz~2 483.5MHz(包括防護(hù)頻帶)。這種方法導(dǎo)致了選擇性攔截的困難,因?yàn)楣粽咄枰肋B續(xù)的跳頻序列。
1.3 基帶層
基帶層負(fù)責(zé)管理物理連接,確保由藍(lán)牙設(shè)備組成的微微網(wǎng)內(nèi)各單元之間由射頻構(gòu)成的物理連接。每個(gè)藍(lán)牙設(shè)備都有一個(gè)唯一的48位藍(lán)牙設(shè)備地址(BD_ADDR),分為3個(gè)部分,包括24位的低端地址部分(LAP)、8位的高端地址部分(UAP)和16位的非有效地址部分(NAP)。該地址可以說(shuō)是藍(lán)牙技術(shù)的運(yùn)算核心,負(fù)責(zé)幾乎所有藍(lán)牙正常工作的控制參數(shù),如密鑰、跳頻序列都是由此地址計(jì)算得到的。
1.4 數(shù)據(jù)包結(jié)構(gòu)
所有的藍(lán)牙數(shù)據(jù)包都按統(tǒng)一的結(jié)構(gòu)進(jìn)行封裝,由訪問(wèn)碼、報(bào)頭和有效載荷組成。一個(gè)有效的數(shù)據(jù)包必須包含訪問(wèn)碼,訪問(wèn)碼用于數(shù)據(jù)同步和DC偏移補(bǔ)償。一個(gè)最簡(jiǎn)單的藍(lán)牙數(shù)據(jù)包,如用于尋呼、查詢和相應(yīng)過(guò)程的ID包,可以僅包含一個(gè)68bit的訪問(wèn)碼。藍(lán)牙通信過(guò)程中有一個(gè)非常重要的包——跳頻同步(FHS)包,它包含藍(lán)牙設(shè)備的BD_ADDR和時(shí)鐘信息。
1.5 連接的建立
為進(jìn)行藍(lán)牙數(shù)據(jù)傳輸,必須先建立連接。首先,主設(shè)備會(huì)廣播發(fā)送ID包作為查詢。此時(shí)所使用的是79個(gè)藍(lán)牙信道中的32個(gè)廣播信道。從設(shè)備收到這個(gè)包后,會(huì)發(fā)送一個(gè)FHS包,其中包含了從設(shè)備的BD_ADDR和時(shí)鐘信息。收到FHS包的主設(shè)備進(jìn)入尋呼狀態(tài),并按照從設(shè)備的跳頻序列計(jì)算出特定的應(yīng)答時(shí)間,發(fā)送ID包。從設(shè)備會(huì)固定間隔地掃描外部尋呼,在收到主設(shè)備的應(yīng)答ID包后,響應(yīng)該應(yīng)答,發(fā)送ID包。主設(shè)備收到從設(shè)備ID包后,發(fā)送FHS包確定連接的跳頻序列。最后,主從設(shè)備分別發(fā)送ID包和FHS包進(jìn)行驗(yàn)證,建立連接。
在微微網(wǎng)中,所有設(shè)備共享主設(shè)備的時(shí)鐘,以312.5?s為一個(gè)時(shí)鐘周期,兩個(gè)周期構(gòu)成625?s一個(gè)時(shí)間槽。通常情況下,主設(shè)備都會(huì)從雙數(shù)槽傳輸數(shù)據(jù),從設(shè)備從單數(shù)槽傳輸數(shù)據(jù)。
2 藍(lán)牙嗅探方案
2.1 藍(lán)牙嗅探的難點(diǎn)
藍(lán)牙嗅探的第一個(gè)障礙就是截獲藍(lán)牙跳頻序列。想要獲得一個(gè)完整的藍(lán)牙數(shù)據(jù)傳輸需要監(jiān)聽(tīng)所有的79個(gè)藍(lán)牙信道,必須攔截和過(guò)濾獲得完整的數(shù)據(jù)包,這就要求必須知道正確的藍(lán)牙跳頻序列。獲得藍(lán)牙跳頻序列的方法有兩個(gè),一種是依靠強(qiáng)大的軟硬件設(shè)備,另一種方法需要等待設(shè)備重新建立連接,并從建立連接的數(shù)據(jù)包中獲得跳頻序列。
另一個(gè)問(wèn)題是常見(jiàn)藍(lán)牙硬件基于數(shù)據(jù)包的訪問(wèn)碼自動(dòng)進(jìn)行過(guò)濾。由于過(guò)濾行為發(fā)生在硬件層面,無(wú)法通過(guò)上層軟件的設(shè)計(jì)來(lái)解決,必須依靠相應(yīng)的硬件設(shè)備才能解決該問(wèn)題。
2.2 藍(lán)牙抓包工具Wireshark
Wireshark作為一款常用的抓包工具而被廣泛使用。而1.12以上及版本的Wireshark中增添了藍(lán)牙協(xié)議標(biāo)準(zhǔn),意味著可以通過(guò)Wireshark對(duì)捕獲的藍(lán)牙數(shù)據(jù)包進(jìn)行分析,為嗅探工作提供了很大的便利。同時(shí),Wireshark也提供了監(jiān)聽(tīng)本機(jī)藍(lán)牙接口的功能,能夠監(jiān)聽(tīng)與本機(jī)相連的藍(lán)牙設(shè)備。圖1為用Wireshark抓取的藍(lán)牙數(shù)據(jù)包信息。
圖1中展示的是計(jì)算機(jī)與藍(lán)牙耳機(jī)建立連接過(guò)程中的部分?jǐn)?shù)據(jù)包。編號(hào)27為計(jì)算機(jī)作為主設(shè)備廣播發(fā)射的一個(gè)數(shù)據(jù)包,查詢附近的藍(lán)牙設(shè)備。編號(hào)28至編號(hào)31都是藍(lán)牙耳機(jī)對(duì)計(jì)算機(jī)的查詢響應(yīng),除編號(hào)28外的三個(gè)數(shù)據(jù)包中都含有耳機(jī)的BD_ADDR。自此,計(jì)算機(jī)與藍(lán)牙耳機(jī)通過(guò)互相發(fā)送數(shù)據(jù)包,逐步建立藍(lán)牙連接。
2.3 藍(lán)牙無(wú)線開(kāi)發(fā)平臺(tái)Ubertooth
Ubertooth One是由Ubertooth項(xiàng)目組設(shè)計(jì)提供的一款用于藍(lán)牙研究的硬件。Ubertooth是一個(gè)開(kāi)放源代碼的2.4GHz無(wú)線開(kāi)發(fā)平臺(tái),適用于藍(lán)牙監(jiān)測(cè)。Ubertooth One同樣通過(guò)USB接口與計(jì)算機(jī)相連。
利用Specan UI工具能夠直觀地觀測(cè)到實(shí)時(shí)的藍(lán)牙頻譜信息,如圖2所示。在圖2的觀測(cè)中存在一個(gè)與手機(jī)相連的藍(lán)牙耳機(jī)。
可以發(fā)現(xiàn),活躍的無(wú)線信號(hào)主要集中在2 403Hz到2 446Hz之間,意味著該手機(jī)與藍(lán)牙的數(shù)據(jù)傳輸主要集中在這些信道上。另外,2 402Hz、2 426Hz、2 480Hz為固定的廣播信道,用于對(duì)未連接設(shè)備間發(fā)送廣播數(shù)據(jù),連接建立和發(fā)現(xiàn)遠(yuǎn)程設(shè)備。這3個(gè)信道在頻譜上也有明顯的特點(diǎn)。
Ubertooth One也能支持選擇要監(jiān)聽(tīng)的信道,或是捕獲藍(lán)牙數(shù)據(jù)包等功能。捕獲的藍(lán)牙數(shù)據(jù)包可以通過(guò)Wireshark等軟件進(jìn)行分析。通過(guò)Ubertooth One發(fā)送藍(lán)牙數(shù)據(jù)包目前為止還是不可能的,意味著不能使用Ubertooth One實(shí)現(xiàn)藍(lán)牙數(shù)據(jù)包的注入操作。
3 結(jié)論
藍(lán)牙嗅探方案的實(shí)現(xiàn),目前還存在不少的難點(diǎn)。另一方面來(lái)看,過(guò)高的門檻也杜絕了大量不法分子利用藍(lán)牙盜取公民信息的企圖。但是,諸如FireChat之類的,通過(guò)藍(lán)牙進(jìn)行通信的軟件常常被應(yīng)用在違法犯罪活動(dòng)中,已經(jīng)嚴(yán)重危害了公共安全。深入研究藍(lán)牙技術(shù),積極研究藍(lán)牙嗅探方案,不但能解決當(dāng)前問(wèn)題,更為將來(lái)的藍(lán)牙安全問(wèn)題做好應(yīng)對(duì)準(zhǔn)備。
參考文獻(xiàn)
[1]Albazrqaoe W, Huang J, Xing G. Practical Bluetooth Traffic Sniffing: Systems and Privacy Implications[C]//International Conference on Mobile Systems, Applications,and Services.ACM,2016:333-345.
[2]李旭輝,梁曉煒.短距離無(wú)線通信技術(shù)在信息傳輸中的應(yīng)用[J].信息通信,2017(2).
[3]高宋偉,徐洪智,黃艷,等.基于Android的藍(lán)牙通信程序設(shè)計(jì)[J].電腦編程技巧與維護(hù),2015(11):44-46.endprint