BLE 安全之虫洞攻击
注:本文為“小米安全中心”原創(chuàng),轉(zhuǎn)載請聯(lián)系“小米安全中心”
上期回顧:跨站讀取數(shù)據(jù)小結(jié)
0x00 前言
所謂『蟲洞』,在天體物理中是通過扭曲空間,連接宇宙遙遠(yuǎn)區(qū)域間的一個隧道,通過穿越這個隧道可以完成『時空穿越』。其實(shí)我并不懂天體物理,這些是我 Google 來的。
在 BLE 安全中,有一種攻擊近似于『蟲洞』,可以在一瞬間讓相隔萬里的兩個設(shè)備完成親密接觸。
這種攻擊手法在 blackhat USA 2016 由安全研究者 Jasek 進(jìn)行了闡述,同時 Jasek 公開了一篇詳細(xì)介紹 BLE 安全的 White Paper『GATTACKING BLUETOOTH SMART DEVICES』和對 BLE 進(jìn)行安全評估的工具?GATTacker。
PS:閱讀本文需要有 BLE 基礎(chǔ),限于篇幅,本文不會對 BLE 展開細(xì)講。
0x01 蟲洞攻擊原理
在談?wù)撓x洞攻擊之前讓我們先簡單了解下 BLE,BLE 是 Bluetooth Low Energy (低功耗藍(lán)牙)的縮寫,和傳統(tǒng)藍(lán)牙類似,是一種近距離進(jìn)行設(shè)備間無線連接和通訊的協(xié)議。BLE 和傳統(tǒng)藍(lán)牙除了名字相似外,其架構(gòu)設(shè)計完全不同。BLE 物如其名,其具有極低的功耗,加上其使用簡單,成本低廉,深受 IoT 的喜愛,目前在家庭、健康、醫(yī)療等領(lǐng)域使用廣泛。比如我們所熟悉的手環(huán),就是使用的 BLE 技術(shù)。
雖然 BLE 傳輸距離可以長達(dá) 100 米,但其仍然是一種近距離的無線通訊協(xié)議,其使用場景仍然需要兩個設(shè)備進(jìn)行近距離接觸。大部分使用場景如下:
Phone?<--?BLE?-->?Device假設(shè)我們有一種需求是想讓 BLE 的傳輸距離增加到 200 米,那么可以通過下面方式來實(shí)現(xiàn):
Phone?<--?BLE?-->?BLE?Relay?Device?<--?BLE?-->?Device我們通過一個 BLE Relay 設(shè)備來把 BLE 信號進(jìn)行中繼以達(dá)到 200 米的傳輸距離。更遠(yuǎn)的距離可以通過增強(qiáng)天線性能或者復(fù)用 Relay 設(shè)備來實(shí)現(xiàn)。
如果是地球的兩端呢?應(yīng)該沒有人傻到采用優(yōu)樂美奶茶繞地球的方式來完成 BLE 的傳遞。正常的思維會采用下面的方式來實(shí)現(xiàn):
Phone?<--?BLE?-->?BLE?Peripheral?<--?Tunnel?-->?BLE?Central?<--?BLE?-->?Device我們通過額外的 BLE Central/Peripheral 設(shè)備以及 Tunnel 來完成 BLE 的傳遞。
放在 BLE 安全攻擊模型中,我們可以把?BLE Peripheral <-- Tunnel --> BLE Central?部分稱之為『蟲洞』,通過『蟲洞』來對正常的 BLE 通訊設(shè)備完成同一時間點(diǎn)甚至超越時間上的跨時空攻擊。
0x02 蟲洞攻擊實(shí)現(xiàn)
實(shí)現(xiàn)『蟲洞』攻擊之前,我們還需要稍微再了解一下 BLE 協(xié)議,參考下圖的 BLE 協(xié)議結(jié)構(gòu)
?BLE 協(xié)議結(jié)構(gòu)
BLE 協(xié)議有很多部分組成,但是我們主要關(guān)注兩部分:?
-
GAP(Generic Access Profile)
-
GATT(Generic Attribute Profile)
GAP?GAP 用于讓兩個設(shè)備進(jìn)行連接。GAP 為設(shè)備定義多個角色,其中最重要的兩個分別是:Central 和 Pheipheral。
-
Pheipheral 發(fā)出廣播,可以被 Central 設(shè)備進(jìn)行掃描和連接,比如手環(huán);
-
Central 掃描 Pheipheral 設(shè)備,并對其進(jìn)行連接,比如手機(jī);
GATT?GATT 用于讓兩個設(shè)備進(jìn)行連接后的通訊。GATT 定義設(shè)備之間通過 Service 和 Characteristic 的東西來進(jìn)行通訊,不同的 Characteristic 代表設(shè)備的不同功能。GATT 的結(jié)構(gòu)如下:
了解了 GAP 和 GATT 之后,再來回憶一下『蟲洞』攻擊的模型?BLE Peripheral <-- Tunnel --> BLE Central,也就是說我們需要實(shí)現(xiàn)三部分功能,分別是 BLE Peripheral、Tunnel、BLE Central。
BLE Central
-
連接到 Device,獲取其所有 Service 和 Characteristic,以及設(shè)備名稱和 MAC 等信息,通過 Tunnel 傳輸?shù)?BLE Peripheral,供 BLE Peripheral 偽造 Device。同時保持和 Device 的連接,用于后續(xù)對 Device 進(jìn)行操作;
Tunnel
-
websocket,socket,xmpp、http 等等,whatever,只要能夠遠(yuǎn)程通訊都可以,用于BLE Central 和 BLE Pheipheral 之間數(shù)據(jù)傳輸;
BLE Peripheral
-
接收 BLE Central 傳送過來的 Device 相關(guān)數(shù)據(jù),完全偽造 Device,供 Phone 進(jìn)行連接。把后續(xù) Phone 對 Device 的操作通過 Tunnel 傳輸?shù)?BLE Central 端;
最終,BLE Peripheral、Tunnel、BLE Central 三者實(shí)現(xiàn)了一個『蟲洞』,拉近 Phone 和 Device 之間的距離,使其完成近距離接觸。
只要網(wǎng)絡(luò)可達(dá),不在乎距離多遠(yuǎn)。
0x03 蟲洞攻擊相關(guān)工具
GATTacker?https://github.com/securing/gattacker
Btlejuice?https://github.com/DigitalSecurity/btlejuice
具體用法參見文檔,具體實(shí)現(xiàn)參見代碼。
0x04 攻擊場景
在談?wù)摗合x洞』時,我們一直在談?wù)摼嚯x,但是在實(shí)際的攻擊場景中,距離并不是關(guān)鍵,關(guān)鍵的是攻擊思想。下面羅列的攻擊場景僅供參考
DDoS?在近距離,我們可以通過偽造 Device,使 Phone 強(qiáng)制連接我們偽造的 Device 以達(dá)到拒絕服務(wù)攻擊的目的。
竊聽或篡改數(shù)據(jù)?通過『蟲洞』,我們可以洞悉 Phone 到 Device 的數(shù)據(jù)通訊,必要時候可以對數(shù)據(jù)進(jìn)行篡改以達(dá)到我們想要的效果。
會話劫持?對于一些設(shè)備,通過『蟲洞』,可以完成 Device 對 BLE Central 的認(rèn)證,保持 BLE Central 對 Device 的連接,后續(xù)可以任意操作 Device。
當(dāng)然攻擊場景肯定不止上面提到的這三種,可以發(fā)散思維,想想還有什么攻擊場景??
0x05 結(jié)尾
『蟲洞』攻擊其實(shí)就是 MITM,我并非故意標(biāo)題黨,而是我覺得在 IoT 快速發(fā)展的今天,形形色色的使用了 BLE 技術(shù)的智能設(shè)備已經(jīng)深入到我們的生活中,并且在影響著我們的生活。手環(huán)、智能門鎖、無鑰匙進(jìn)入、醫(yī)療設(shè)備等等,BLE 在為我們提供便利的同時,也埋伏著安全隱患。這種攻擊雖然有前置條件,但是一旦發(fā)生輕則泄露個人隱私數(shù)據(jù),重則造成財產(chǎn)損失,甚至對生命安全產(chǎn)生威脅。
希望本文會被相關(guān)從業(yè)者看到,能有些許思考。如果能夠有些許影響,則更好不過。
0x06 參考資料
-
http://www.gattack.io/?中涵蓋的 white paper、slides、code
-
https://github.com/DigitalSecurity/btlejuice
-
https://www.bluetooth.com/zh-cn/specifications/bluetooth-core-specification
-
以及與同事 rayxcp 的討論
總結(jié)
以上是生活随笔為你收集整理的BLE 安全之虫洞攻击的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Example: Communicati
- 下一篇: 移动APP漏洞自动化检测平台建设