皮人偉
(藍(lán)光發(fā)展股份有限公司 上海市 200940)
我們的攻擊目標(biāo)如下:對(duì)于一個(gè)給定的BLE 設(shè)備和該設(shè)備中的給定特征,我們可以使用我們的攻擊設(shè)備與目標(biāo)設(shè)備建立連接,并滿足目標(biāo)特征的安全要求。然后根據(jù)目標(biāo)特征的讀寫(xiě)權(quán)限,我們可以讀/寫(xiě)目標(biāo)特征,并通過(guò)設(shè)備的回應(yīng)展示我們攻擊的結(jié)果。
為了保護(hù)BLE 設(shè)備的數(shù)據(jù)安全,低功耗藍(lán)牙提供了一種加密策略。如果設(shè)備中某項(xiàng)數(shù)據(jù)設(shè)置了加密保護(hù),BLE 會(huì)要求訪問(wèn)者必須與該設(shè)備建立加密連接,然后才能訪問(wèn)該項(xiàng)數(shù)據(jù)。同時(shí),BLE 為不同能力的設(shè)備提供了不同的配對(duì)方法以生成密鑰,如基于帶外數(shù)據(jù)交換的配對(duì)方法(OOB),一個(gè)設(shè)備顯示六位數(shù)字并要求用戶輸入到另一個(gè)設(shè)備中(Passkey Entry),兩個(gè)設(shè)備都顯示六位數(shù)字并要求用戶比較是否相同(Numeric Comparison)等等。由于絕大多數(shù)配對(duì)方法都要求用戶參與,攻擊者難以繞過(guò)用戶授權(quán)而與目標(biāo)設(shè)備建立加密連接。加密策略有效防止了匿名訪問(wèn)和數(shù)據(jù)泄露。以上配對(duì)方法都要求設(shè)備有一定輸入輸出能力,例如有顯示屏,鍵盤(pán)等。如果參與配對(duì)的設(shè)備沒(méi)有輸入輸出能力,BLE 會(huì)采用一種不經(jīng)過(guò)用戶授權(quán)的方法進(jìn)行配對(duì)(Just Works)。當(dāng)使用Just Works 方法時(shí),雙方設(shè)備會(huì)自行協(xié)商密鑰。利用這一特性,我們提出了一種訪問(wèn)BLE 設(shè)備中加密數(shù)據(jù)的攻擊方法。第三方設(shè)備可以在配對(duì)過(guò)程中修改相關(guān)參數(shù),使得配對(duì)過(guò)程強(qiáng)制使用Just Works 方法配對(duì),以繞過(guò)用戶參與。利用此方法可以竊取啟用加密的BLE 設(shè)備的數(shù)據(jù)。
具體了流程如下:
(1)攻擊者使用第三方設(shè)備,與目標(biāo)設(shè)備建立BLE 連接。
(2)第三方設(shè)備向目標(biāo)設(shè)備發(fā)起配對(duì)請(qǐng)求,雙方設(shè)備開(kāi)始配對(duì)流程。
(3)在協(xié)商低功耗安全連接時(shí),修改數(shù)據(jù)包,將第三方設(shè)備的SC 位設(shè)置為0,進(jìn)入低功耗傳統(tǒng)配對(duì)。
(4)在協(xié)商帶外數(shù)據(jù)配對(duì)時(shí),修改數(shù)據(jù)包,將第三方設(shè)備的OOB 位設(shè)置為0,避免使用帶外數(shù)據(jù)配對(duì)。
(5)然后,將第三方設(shè)備的MITM 位設(shè)置為0。如果目標(biāo)設(shè)備MITM 位也為0,則使用Just Works 方法進(jìn)行配對(duì)。如果目標(biāo)設(shè)備MITM 位為1,第三方設(shè)備將IO capabilities 位設(shè)置為NoInputNoOutput,強(qiáng)制使用Just Works 方式進(jìn)行配對(duì)。
(6)由于使用了Just Works 方式進(jìn)行配對(duì),該過(guò)程將不經(jīng)用戶授權(quán)而靜默完成。最后,第三方設(shè)備使用生成的密鑰加密連接,即可訪問(wèn)目標(biāo)設(shè)備的加密數(shù)據(jù)。
1.3.1 干擾連接
圖1:建立連接和訪問(wèn)特征過(guò)程
圖2:靜默配對(duì)和訪問(wèn)數(shù)據(jù)過(guò)程
通常,目標(biāo)外圍設(shè)備與中央設(shè)備處于連接狀態(tài)。此時(shí),外圍設(shè)備不發(fā)送廣播包,因此攻擊者的第三方設(shè)備無(wú)法接收到廣播包并與外圍設(shè)備建立連接。為了中斷連接,攻擊者可以在BLE 的37 個(gè)通信信道中投放大量無(wú)用數(shù)據(jù)包。由于所有的通信信道都被占用,中央設(shè)備和外圍設(shè)備將無(wú)法向另一方發(fā)送心跳包。因此,他們之間的連接將被關(guān)閉,外圍設(shè)備將再次開(kāi)始廣播。這種攻擊方法也稱(chēng)為拒絕服務(wù)(DOS)攻擊。
1.3.2 建立新連接
由于用戶的中央設(shè)備和外圍設(shè)備之間的原有連接已經(jīng)中斷,攻擊設(shè)備可以從外圍設(shè)備接收到廣播包。然后,攻擊設(shè)備可以發(fā)送CONN_REQ 數(shù)據(jù)包來(lái)與外圍設(shè)備建立新連接。攻擊設(shè)備可以從外圍設(shè)備中查詢(xún)GATT 的特征列表。從列表中,攻擊設(shè)備可以獲取目標(biāo)特征的地址和讀寫(xiě)權(quán)限。應(yīng)該注意的是,此時(shí)的連接還沒(méi)有進(jìn)行過(guò)數(shù)據(jù)加密和身份認(rèn)證。因此,任何對(duì)加密和認(rèn)證有要求的特征,攻擊設(shè)備都無(wú)法訪問(wèn)。
1.3.3 讀寫(xiě)數(shù)據(jù)
我們考慮攻擊的目標(biāo)特征是可讀的。攻擊設(shè)備向未加密未認(rèn)證的連接中的目標(biāo)特征發(fā)送讀取請(qǐng)求。如果外圍設(shè)備響應(yīng)了該特征的值,則表示該特征的安全要求為NS,攻擊成功。圖1 展示了攻擊設(shè)備和目標(biāo)設(shè)備之間建立連接和讀/寫(xiě)特征的數(shù)據(jù)包交換。如果它返回錯(cuò)誤代碼Encryption Insufficient,則表示該特征要求加密。攻擊設(shè)備需要與外圍設(shè)備配對(duì)以滿足安全要求。否則(沒(méi)有響應(yīng)或返回其他錯(cuò)誤代碼),表明該特征不需要數(shù)據(jù)加密,但需要身份認(rèn)證。
1.3.4 靜默配對(duì)并讀寫(xiě)數(shù)據(jù)
由于攻擊者無(wú)法物理接觸用戶的設(shè)備,因此攻擊設(shè)備應(yīng)在未經(jīng)用戶授權(quán)的情況下與外圍設(shè)備配對(duì)。我們使用靜默配對(duì)方法與目標(biāo)設(shè)備進(jìn)行配對(duì)。配對(duì)完成后,攻擊設(shè)備與外圍設(shè)備共享新密鑰。因此,接下來(lái)的數(shù)據(jù)傳輸被加密。第三方設(shè)備向目標(biāo)特征發(fā)送讀取請(qǐng)求。此時(shí)的連接已經(jīng)進(jìn)行了加密,但是還沒(méi)有通過(guò)認(rèn)證。如果特征響應(yīng)一個(gè)值,則表示該特征的安全要求是ER,攻擊成功。圖2 展示了攻擊設(shè)備和目標(biāo)設(shè)備之間配對(duì)和讀/寫(xiě)特征的詳細(xì)數(shù)據(jù)包交換。如果沒(méi)有響應(yīng)或外圍設(shè)備響應(yīng)錯(cuò)誤代碼,則表示該特征需要身份認(rèn)證。
1.3.5 退化連接并讀寫(xiě)數(shù)據(jù)
為了通過(guò)不同設(shè)備的身份認(rèn)證,我們需要竊取用戶中心設(shè)備的身份認(rèn)證憑證,具體過(guò)程如下:攻擊設(shè)備首先將其MAC 地址更改為用戶外圍設(shè)備的MAC 地址。然后攻擊設(shè)備使用存儲(chǔ)的外圍設(shè)備的廣播包進(jìn)行廣播。當(dāng)用戶的中央設(shè)備嘗試與目標(biāo)設(shè)備重新連接時(shí),中央設(shè)備接收來(lái)自攻擊設(shè)備的廣播包。攻擊者的MAC 地址和廣播包與目標(biāo)設(shè)備的MAC 地址和廣播包完全相同。同時(shí),目標(biāo)設(shè)備因?yàn)楣粼O(shè)備與其連接而無(wú)法進(jìn)行廣播。用戶的中心設(shè)備將攻擊設(shè)備視為目標(biāo)設(shè)備,并與攻擊設(shè)備建立連接。用戶的中央設(shè)備發(fā)送加密請(qǐng)求。攻擊設(shè)備拒絕加密請(qǐng)求以退化連接。中央設(shè)備將停止加密,并使用明文發(fā)送身份認(rèn)證數(shù)據(jù)包。當(dāng)攻擊設(shè)備從中央設(shè)備接收到認(rèn)證請(qǐng)求時(shí),它將請(qǐng)求轉(zhuǎn)發(fā)給外圍設(shè)備,然后將目標(biāo)設(shè)備的響應(yīng)轉(zhuǎn)發(fā)到中央設(shè)備。攻擊設(shè)備重復(fù)這一個(gè)過(guò)程,直到身份認(rèn)證完成。
到目前為止,中央設(shè)備完成了身份認(rèn)證過(guò)程。攻擊者的第三方設(shè)備也被外圍設(shè)備認(rèn)證。攻擊設(shè)備向目標(biāo)特征發(fā)送讀請(qǐng)求。目標(biāo)設(shè)備將響應(yīng)該值,攻擊成功。如果攻擊設(shè)備與目標(biāo)設(shè)備配對(duì),則該特征的安全要求是EA。否則,安全要求是AR。
我們選擇了15 種最流行的代表性設(shè)備。我們購(gòu)買(mǎi)了這些設(shè)備,然后,我們?cè)谶@些設(shè)備上應(yīng)用我們的攻擊方法。
們提出的靜默配對(duì)攻擊方法在所有15 種代表性設(shè)備上都攻擊成功。這表明攻擊者可以在不經(jīng)過(guò)用戶授權(quán)的情況下與他們的設(shè)備進(jìn)行配對(duì),并訪問(wèn)這些設(shè)備中需要加密(ER)的特征。由于BLE的配對(duì)流程和方法都由BLE 規(guī)范所提供,對(duì)于所有的設(shè)備,該過(guò)程都是一樣的。因此,我們提出的靜默配對(duì)方法能夠攻擊所有的BLE 設(shè)備。
然后,我們進(jìn)一步評(píng)估了連接退化方法在這15 種設(shè)備上的表現(xiàn)。結(jié)果表明,除了華為榮耀手環(huán)3 連接退化失敗,而其它設(shè)備連接退化都成功了。通過(guò)對(duì)華為榮耀3 手環(huán)的分析,我們發(fā)現(xiàn)當(dāng)華為的手機(jī)應(yīng)用的加密請(qǐng)求被拒絕后,程序會(huì)停止下一步的執(zhí)行,而再次發(fā)起加密請(qǐng)求。因此,即使拒絕了加密請(qǐng)求,華為榮耀應(yīng)用也不會(huì)以明文發(fā)送后續(xù)認(rèn)證數(shù)據(jù)。因此,對(duì)于華為榮耀3 手環(huán),我們無(wú)法攻擊其中同時(shí)要求加密和認(rèn)證的特征(EA)。但是,對(duì)于其它的BLE 設(shè)備,我們的連接退化方法都可以獲得明文的認(rèn)證請(qǐng)求包,這意味著我們可以獲取它們中所有特征的訪問(wèn)權(quán)限。
可以看出我們的攻擊方法能夠?qū)δ壳傲餍械慕^大多數(shù)BLE 設(shè)備適用,造成隱私泄露或惡意控制。我們?yōu)锽LE 設(shè)備生產(chǎn)廠商和用戶總結(jié)了一些經(jīng)驗(yàn)教訓(xùn)。對(duì)于其他使用不同通信協(xié)議、不同軟件、不同版本的物聯(lián)網(wǎng)設(shè)備中,這些經(jīng)驗(yàn)同樣適用:
(1)設(shè)備的初始化非常重要。我們應(yīng)該確保初始配對(duì)和身份認(rèn)證是安全的。實(shí)際上,許多其他應(yīng)用程序都假定初始配對(duì)和身份認(rèn)證是安全的。如果初始化不安全,則攻擊者可以容易地獲取加密密鑰和認(rèn)證憑證,以監(jiān)聽(tīng)和破解中央設(shè)備和外圍設(shè)備之間的通信內(nèi)容。
(2)設(shè)備不應(yīng)在本地存儲(chǔ)太多數(shù)據(jù)。在設(shè)備將其數(shù)據(jù)與智能手機(jī)等中央設(shè)備同步后,它應(yīng)該在本地清除這些數(shù)據(jù)。否則,如果此設(shè)備受到攻擊,攻擊者可以獲得用戶的長(zhǎng)時(shí)間隱私數(shù)據(jù)。
(3)在設(shè)備的配對(duì)過(guò)程中應(yīng)當(dāng)讓用戶參與配對(duì),即使用數(shù)字比較和密鑰輸入等方法進(jìn)行配對(duì)。同時(shí),基于中央設(shè)備輸入輸出能力的配對(duì)操作也給BLE 帶來(lái)了安全威脅。例如,攻擊設(shè)備可以模仿低輸入輸出能力設(shè)備,并輕松地與外圍設(shè)備建立加密連接。即使對(duì)于低輸入輸出能力設(shè)備,也應(yīng)當(dāng)參考例如用戶手勢(shì)等側(cè)信道信息,以使用戶能夠參與加密和身份認(rèn)證。
(4)設(shè)備應(yīng)當(dāng)在特征的安全要求中同時(shí)啟用加密和身份認(rèn)證,即使用EA 安全要求。然而,在我們的評(píng)估中,我們發(fā)現(xiàn)現(xiàn)有設(shè)備都沒(méi)有使用EA 安全要求來(lái)保護(hù)其特征。這使得攻擊者非常容易繞過(guò)設(shè)備的訪問(wèn)權(quán)限控制以訪問(wèn)其中的特征。BLE 設(shè)備的制造商應(yīng)該更加關(guān)注BLE 設(shè)備的安全性。
在本文中,我們結(jié)合如今的一些攻擊方法,對(duì)物聯(lián)網(wǎng)設(shè)備的通信安全的進(jìn)行了一定的研究。通過(guò)對(duì)BLE 的深入分析和測(cè)量,我們提出了一種新的攻擊方法,它可以在不觸及設(shè)備的情況下通過(guò)BLE 設(shè)備的訪問(wèn)權(quán)限控制,從而讀寫(xiě)其中的數(shù)據(jù)。們總結(jié)了用戶和制造商的經(jīng)驗(yàn)教訓(xùn),并為BLE 設(shè)備提出了一種安全的機(jī)制。