藍牙是一種短距的無線通訊技術(shù),可實現(xiàn)固定設(shè)備、移動設(shè)備之間的數(shù)據(jù)交換。可以說藍牙是當(dāng)今世界上,最受歡迎和使用最為廣泛的無線技術(shù)之一。隨著物聯(lián)網(wǎng)的快速發(fā)展,藍牙技術(shù)也加速了其發(fā)展步伐以適應(yīng)不斷增長的市場和用戶需求。藍牙特別興趣小組(SIG)正不斷努力提高藍牙的傳輸速度,以讓藍牙技術(shù)更好的融合于各種物聯(lián)網(wǎng)設(shè)備當(dāng)中。
低功耗藍牙(BLE)是藍牙4.0規(guī)范的一部分,其包括傳統(tǒng)藍牙和藍牙高速協(xié)議。相較于傳統(tǒng)藍牙,BLE旨在使用更低的功耗,并保持同等距離的通信范圍。BLE只在需要時傳輸少量數(shù)據(jù),而除此之外則會保持關(guān)閉狀態(tài),這大大降低了其功耗,也使其成為了在低數(shù)據(jù)速率下需要長久連接使用的理想選擇。BLE非常適合運用于電視遙控器,但對于需要傳輸大量數(shù)據(jù)的無線媒體流設(shè)備則并不適用。
BLE內(nèi)置于我們今天使用的許多電器或智能設(shè)備當(dāng)中,例如智能手機,智能電視,醫(yī)療設(shè)備,咖啡機等等。
BLE 受歡迎的原因?
支持多平臺,以下列出的設(shè)備和平臺均支持藍牙 4.0和BLE:
iOS5+ (iOS7+ preferred)
Android 4.3+ (numerous bug fixes in 4.4+)
Apple OS X 10.6+
Windows 8 (XP, Vista and 7 only support Bluetooth 2.1)
GNU/Linux Vanilla BlueZ 4.93+
Windows Phone
BLE 聽上去不錯,但真的如此嗎?
從安全的角度來看,這個問題提的非常的好。事實是 – BLE只是一個協(xié)議。制造商可以在他們的設(shè)備中安全地實施BLE。但如果隨機數(shù)生成器無法生成“足夠強壯”的隨機數(shù),那么即使最強的加密協(xié)議也可能被破解,這同樣也適用于BLE。因此,換句話來說就是BLE的安全性實際掌握在其實施者手中。
雖然,所有低功耗藍牙設(shè)備開發(fā)的主要動機都是為了增強用戶體驗。但與此同時,我們需要思考的是安全性是否也已同步?
下面,讓我們看看影響B(tài)LE安全性的三個主要漏洞:
1. 竊聽
考慮常規(guī)的BLE通信,一端是手機,一端是BLE設(shè)備。假如二者沒有進行認(rèn)證加密,那么在通信開始之前,在附近開啟一個BLE Sniffer,就可以看到手機與BLE設(shè)備之間的連接后的通信數(shù)據(jù)明文。
2. MITM 攻擊
MITM(Man in the Middle)中間人攻擊是指第三方設(shè)備混入BLE通信鏈路之間,偽造通信數(shù)據(jù)迷惑雙方。
假如設(shè)備A和設(shè)備B在通信之始,設(shè)備M注意到二者要進行通信,設(shè)備M截取設(shè)備A發(fā)起的連接請求,偽裝成設(shè)備B跟其建立連接進行通信,通信完畢后再偽裝成設(shè)備A向設(shè)備B發(fā)起連接請求,建立連接后重復(fù)設(shè)備A在前面發(fā)送的數(shù)據(jù)。這樣設(shè)備A就一直以為在跟設(shè)備B進行通信,設(shè)備B也同樣,卻不知中間還藏著一個第三者。
3. 拒絕服務(wù)攻擊
由于目前大多數(shù)無線設(shè)備都使用內(nèi)置電池組,因此這些設(shè)備存在遭受拒絕服務(wù)攻擊(DoS)的風(fēng)險。DoS攻擊會導(dǎo)致系統(tǒng)頻繁崩潰,并耗盡其電池電量。Fuzzing攻擊也會導(dǎo)致系統(tǒng)崩潰,因為攻擊者可能會將格式錯誤或非標(biāo)準(zhǔn)數(shù)據(jù),發(fā)送到設(shè)備的藍牙無線電檢查其響應(yīng),并最終擊垮設(shè)備。
BLE 的核心概念
BLE有兩個基本概念:
GAP – 通用屬性配置文件
GATT – 通用屬性
GAP
GAP(Generic Access Profile)主要負責(zé)控制設(shè)備連接和廣播。GAP使你的設(shè)備被其他設(shè)備可見,并決定了你的設(shè)備是否可以或者怎樣與合同設(shè)備進行交互。
GAP給設(shè)備定義了若干角色,其中主要的兩個是:外圍設(shè)備(Peripheral)和中心設(shè)備(Central)。
外圍設(shè)備:這一般就是非常小或者簡單的低功耗設(shè)備,用來提供數(shù)據(jù),并連接到一個更加相對強大的中心設(shè)備。
中心設(shè)備:中心設(shè)備相對比較強大,用來連接其他外圍設(shè)備。例如手機等。
廣播協(xié)議
GAP的廣播工作流程如下圖所示:
在GAP 中外圍設(shè)備通過兩種方式向外廣播數(shù)據(jù):Advertising Data Payload(廣播數(shù)據(jù))和Scan Response Data Payload(掃描回復(fù)),每種數(shù)據(jù)最長可以包含31字節(jié)。這里廣播數(shù)據(jù)是必需的,因為外設(shè)必需不停的向外廣播,讓中心設(shè)備知道它的存在。掃描回復(fù)是可選的,中心設(shè)備可以向外設(shè)請求掃描回復(fù),這里包含一些設(shè)備額外的信息,例如設(shè)備的名字。
GATT
GATT(Generic Attribute Profile)定義了兩個BLE設(shè)備,通過Service 和Characteristic進行通信。GATT使用了ATT(Attribute Protocol)協(xié)議,ATT 協(xié)議把 Service,Characteristic對應(yīng)的數(shù)據(jù)保存在一個查找表中,次查找表使用 16 bit ID 作為每一項的索引。一旦兩個設(shè)備建立起了連接,GATT 就開始起作用了,這也意味著,GATT只有在GAP管理的廣播流程完成后才能啟動。
GATT的兩個主要概念:
Services
Characteristics
Service
Service是把數(shù)據(jù)分成一個個的獨立邏輯項,它包含一個或者多個 Characteristic。每個 Service 有一個 UUID 唯一標(biāo)識。 UUID 有 16 bit 的,或者 128 bit 的。16 bit 的 UUID 是官方通過認(rèn)證的,需要花錢購買,128 bit 是自定義的,這個就可以自己隨便設(shè)置。
官方通過了一些標(biāo)準(zhǔn) Service,完整列表在這里。以 Heart Rate Service為例,可以看到它的官方通過 16 bit UUID是0x180D,包含3個Characteristic:Heart Rate Measurement, Body Sensor Location和Heart Rate Control Point,并且定義了只有第一個是必須的,它是可選實現(xiàn)的。
Characteristic
在GATT事務(wù)中的最低界別的是Characteristic,Characteristic是最小的邏輯數(shù)據(jù)單元,當(dāng)然它可能包含一個組關(guān)聯(lián)的數(shù)據(jù),例如加速度計的 X/Y/Z三軸值。
與Service類似,每個 Characteristic用16 bit或128 bit的UUID唯一標(biāo)識。你可以免費使用Bluetooth SIG官方定義的標(biāo)準(zhǔn) Characteristic,使用官方定義的,可以確保 BLE 的軟件和硬件能相互理解。當(dāng)然,你可以自定義Characteristic,這樣的話就只有你自己的軟件和外設(shè)能夠相互理解。
例如,SIG規(guī)定的官方TX功耗UUID是0×1804。
利用 BLE 的工具
Linux為BLE提供了最好的支持。想要使用BLE,我們需要安裝blueZ。命令如下:
sudo apt-get install bluez
這里我使用的是Ubuntu系統(tǒng)的電腦,該設(shè)備將作為與其他外圍設(shè)備通信的中心網(wǎng)關(guān)。安裝完成后,我們需要兩個工具來掃描,連接和讀/寫數(shù)據(jù)。
hcitool
gatttool
在開始之前,我們需要掃描附近的BLE設(shè)備。找到后我們需要設(shè)法與其建立連接,讀/寫數(shù)據(jù),發(fā)現(xiàn)其中的漏洞以進行利用。因此,hcitool是我們必不可少的工具。
|