網絡安全知識:藍牙安全

主要的兩個藍牙無線電版本是:
藍牙基本速率/增強數據速率 (BR/EDR),也稱為藍牙經典
藍牙低功耗 (BLE),也稱為藍牙智能,是2010年作為藍牙4.0的一部分引入的輕量級子集
Bluetooth Classic 和 BLE 使用不兼容的不同堆棧。但是,它們可以共存于共享同一天線的一臺設備中,因為它們都使用 2.4 GHz ISM 頻段的相同無線電頻率,并應用跳頻擴頻 (FHSS) 機制來避免干擾。事實上,在許多情況下,它們是相輔相成的;這就是為什么現在大多數設備都是雙模式的原因。如下圖所示,Bluetooth Classic 單模設備預計將在未來消失,而 BLE 單模設備則因 IoT 行業的擴張而增長。

值得注意的是,Bluetooth Classic 并不是 BLE 的過時版本;它們是用于不同應用的不同技術。Bluetooth Classic 主要用于需要點對點連續流傳輸的情況,例如無線音頻流傳輸(無線揚聲器、耳機、車載娛樂系統)或文件傳輸。另一方面,BLE 專為極低功耗操作而設計,支持多種通信拓撲,從點對點擴展到廣播和網狀網絡。BLE 應用的示例包括監控傳感器、信標和高精度室內定位服務。
這篇文章的重點是 BLE,特別是 4.2 版,該版本將在 2025 年 2 月之前有效。需要注意的是,藍牙規范的第 5 版引入了一些本文未概述的新功能(例如,擴展廣告,網狀網絡,或測向)。但是,第 5 版設備在市場上還不是很普遍。
是什么讓它“低能耗”?
要點是 BLE 盡可能讓無線電保持關閉狀態。這是通過以下方式實現的:
只有三個廣告頻道,而不是經典規格的16到32個。這減少了待機時間。
非常快速的連接建立(從非連接狀態到連接狀態)大約需要三毫秒,這意味著使用無線電的時間更少。Bluetooth Classic連接最多可能需要100 毫秒。
低峰值功率,15mA,有助于節省電池。Bluetooth Classic 峰值功率為 25mA,這也很低,但對于基于紐扣電池的應用來說還不夠。
藍牙堆棧:
應用層 | 應用 | |
主持人 | 通用訪問配置文件 (GAP) | |
通用屬性配置文件 (GATT) | ||
屬性協議 (ATT) | 保安經理 | |
邏輯鏈路控制和適配協議 (L2CAP) | ||
控制器 | 鏈路層 | 直接測試模式 |
物理層 | ||
讓我們簡要定義每一層是如何工作的:
應用層通常是最重要數據所在的位置。在這一層之下,其他人負責傳輸或轉換數據。
GAP 定義了 BLE 連接的兩個主要方面:
- 可見性:設備如何相互發現,包括掃描和廣告
- 交互:設備如何相互交互,包括如何管理連接(角色、模式、安全參數等)
BLE 中主要有兩種連接模式:Advertising(單向發送數據,不建立連接)和Connected(雙向發送數據)。
只有在 GAP 完全設置可見性和交互方面之后,GATT 才會定義設備如何相互交換信息。為此,GATT 使用 ATT 作為底層協議來定義服務器如何向客戶端公開其數據以及數據的結構。數據被構造為屬性,可以是多種類型(命令、請求、響應、通知、指示或確認)中的一種,并使用 16 位唯一 ID(也稱為“句柄”)存儲在表中入口。因此,屬性的句柄可以從 0x0001 到 0xFFFF。根據藍牙規范,保留值為 0x0000 的屬性句柄,不得使用。
如前所述,GATT 定義了如何與屬性(必須發送的數據)進行交互,為此,它使用以下概念:
- 服務:一組一個或多個屬性
- 特性:服務端要暴露給客戶端的一段數據
gatttool是一個有用的工具,可以用來處理這些屬性。
BLE 中的安全管理器負責配對、加密和簽名等安全程序。所有連接都從“無安全”模式(不配對)開始,當它們想要以安全的方式交換數據時,它們需要配對。配對過程涉及交換臨時密鑰 (TK) 以生成用于加密連接鏈路的短期密鑰 (STK)。整個通信的安全性在很大程度上取決于這種傳統知識是如何交換的。有四種關聯模型(針對 BLE 4.2),選擇其中一種取決于設備的輸入/輸出能力(以明文形式交換的信息)。我們將它們從最不安全到最安全進行了排序:
關聯模型 (1-3) 被稱為LE Legacy Pairing ,由于缺乏安全性,應該避免使用。
- Just works :此模型適用于沒有顯示屏的設備,例如耳機或揚聲器(因此,此方法可能最適用于 BLE <4.2 設備)。TK 設置為零,因此可以通過輕松計算 STK 進行竊聽和中間人 (MiTM) 攻擊。
- 密碼:此模型適用于通常具有顯示屏的設備(盡管有一些例外)。一臺設備顯示一個隨機生成的 6 位數字 TK,另一臺設備請求它。如果設備沒有顯示,用戶需要在兩者中輸入相同的 TK。此方法提供了一些針對竊聽和 MITM 攻擊的保護;但是,由于 TK 很容易被暴力破解,因此整體安全性很差。
- 帶外 (OOB) :此模型適用于具有替代通信技術(例如 NFC)的設備,可用于交換加密信息。如果備用通道是安全的,此方法可提供良好的安全保護。在這種情況下,TK 可能不容易被暴力破解,因為不需要人工交互,因此此方法生成的 TK 可能更長(最多 128 位)且更復雜。
關聯模型 (4) 是最安全的,被稱為LE 安全連接(在 BLE 4.2 中引入)。該模型的主要區別在于,這些關聯模型不使用 TK 和 STK,而是使用長期密鑰 (LTK) 來加密連接鏈接,并使用公鑰密碼學(特別是橢圓曲線 Diffie Hellman 算法)來交換LTK。此改進可防止竊聽攻擊,但不能防止 MitM 攻擊。
數值比較:該模型提供了最好的安全性,而不會過多地影響用戶體驗。因此,在設計 BLE 設備或應用程序時推薦使用它。使用此模型時,兩個設備交換其公共 ECDH 密鑰,并為每個對等方獨立生成一個隨機的 128 位隨機數,以提供針對重放攻擊的保護。然后,交換這些隨機數(使用 ECDH 密鑰,以避免竊聽攻擊)并使用 確認值生成功能進行檢查. 最后,兩個設備都使用交換的公鑰和隨機數獨立計算出一個六位數,并在顯示器上顯示出來。此時,用戶需要檢查它們并確認(用“是”或“否”)兩個數字匹配。匹配數字意味著沒有執行 MitM 攻擊,因此可以安全地加密連接鏈接。如果數字不匹配且用戶選擇“否”,則配對過程失敗,從而保護用戶。
總之,上面列出的所有關聯模型的主要和困難目標是在沒有建立連接的兩個設備之間安全地交換密鑰。最大的優勢是通常這兩種設備之間都有一個人。
接下來是邏輯鏈路控制和適配協議 (L2CAP) 層,負責多路復用、分段和重組、邏輯連接建立和流量控制。它相當于TCP/IP棧中的IP。
最后,我們有鏈路層,它負責掃描、通告和創建連接,并直接與將位轉換為 RF 的物理層交互。這兩層是由藍牙芯片中的硬件實現的。所有其他的都由設備中的軟件實現。
滲透測試 BLE 連接
安全性如何?BLE只是一種技術;因此,兩個設備之間的 BLE 安全責任取決于制造商應用的實施。
當可以完全控制至少一臺設備時:
滲透測試 BLE 設備的最簡單方法是使用主機控制器接口 (HCI)。如前所述,Host層由軟件實現,Controller層由硬件實現。藍牙 HCI 指定了它們之間的所有交互,并且可以記錄這些交互。不需要額外的硬件。
記錄 HCI 事件和命令非常容易,尤其是在 Android、Linux 和 OS X 系統上:
- Android:不需要 root 或其他應用程序。“開發者選項”下已經有一個名為“啟用藍牙 HCI 監聽日志”的選項。啟用此選項后,智能手機將開始將所有通過 HCI 的流量記錄到一個文件中。
- Linux:“btmon”工具用于將 HCI 事件和命令記錄到文件中。
- OS X:XCode 的附加工具,稱為“PacketLogger”,用于記錄此流量。
日志記錄應用程序生成 BTsnoop 格式的文件,這些文件不是純文本。但是,它們可以很容易地加載到 Wireshark 中。以下 Wireshark 過濾器可用于分析 BLE 流量:
- btatt:顯示ATT數據包,內容是應用程序發送和接收的數據。
- bthci_cmd.le_long_term_key:顯示 BLE 加密的長期密鑰。在捕獲的流量中找不到這些字節意味著連接未經過 BLE 加密(但可以在應用層加密)。
對于經典藍牙:
- bthci_cmd.link_key:顯示用于加密藍牙連接的鏈接密鑰。在捕獲的流量中找不到這些字節意味著連接未經過 BLE 加密(但可以在應用層加密)。
日志記錄總是比嗅探更容易,應盡可能使用。
當無法完全控制任何設備時:
例如,當想要分析無線游戲控制器與其游戲控制臺之間的 BLE 流量時。通常,在這種情況下我們有三種選擇:
- 將游戲控制器與另一臺您可以完全控制并記錄流量的設備配對(并非總是可行)。
- 在游戲控制臺中獲得完全控制并記錄流量(并非總是可能)。
- 無需完全控制任何設備即可嗅探通信。
最后一個選項通常需要額外的硬件,例如 BBC MicroBit、BlueFruit 或 Ubertooth。然而,這些設備并不可靠,它們會丟失數據包,即使連接已被捕獲。
此外,這些設備中的每一個都只能在一個 BLE 通道上收聽。由于 BLE 頻譜具有三個廣告通道,因此使用一臺設備捕獲連接的概率為 33.33%。使用兩個設備,則為 66.66%。使用三臺設備(每個廣告頻道一臺),概率為 100%。
通常用于嗅探的軟件是BTLE Jack,它自動解決了 BLE 中應用的跳頻機制帶來的所有困難。
對于更專業的任務,Ellisys 公司銷售用于藍牙嗅探的非常好的和可靠的設備,例如 Bluetooth Explorer 或 Bluetooth Vanguard。但是,價格比 MicroBit 或 BlueFruit 高得多。
總之,對于大多數筆測試項目,使用主機控制器接口記錄流量就足夠了。如果顧問無法完全控制任何設備,一個 BBC MicroBit(或類似的嗅探工具)就足夠了。但是,如果設備丟失數據包,他們將需要重復該過程。
中間人攻擊
當日志記錄或嗅探還不夠并且需要修改流量時,我們通常使用兩種攻擊向量:
- 在完全受控的設備上掛鉤函數(例如,使用Frida )。
- 在網絡級別執行中間人 (MitM) 攻擊。
如今,一些供應商對他們的應用程序代碼進行了嚴重的混淆,使得逆向工程師很難理解。此外,滲透測試幾乎總是有時間限制的,因此當代碼被混淆時,第一個選項通常變得不可行。
然而,僅使用一臺筆記本電腦和兩個 BLE 加密狗,就可以執行 MitM 攻擊,而無需對固件或移動應用程序進行任何類型的分析。因此,代碼混淆不能防止第二種攻擊向量。
gattacker 和BTLE Juice等工具已經處理了所有 BLE 協議階段和功能,以允許 MitM 和中繼攻擊。這些工具非常靈活,非常適合發現應用程序或 BLE 協議本身的新缺陷。
例如,攻擊者可以使用工具 gattacker 在配對階段對兩個設備之間的連接進行中間人攻擊,并修改流量以誘使設備進入更不安全的關聯模型。
結論
強烈建議開始研究 BLE 和物聯網設備。許多物聯網供應商仍在為其設備應用非常薄弱的安全性(如果有的話),這相當于 90 年代計算機的安全性。






























