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