BLE低功耗藍芽

蟇窳瓨發表於2024-06-22

ble低功耗藍芽

ble流量嗅探與重放

低功耗藍芽協議棧

BLE是低功耗藍芽的英文縮寫(Bluetooth Low Energy),是藍芽4.0版本起開始支援的新的、低功耗版本的藍芽技術規範。

低功耗藍芽瞄準多個市場,特別是移動智慧終端,智慧家居,互聯裝置等領域,主要特點包括:

  • 低功耗,使用紐扣電池就可以執行數月至數年。
  • 快連線,毫秒級的連線速度,傳統藍芽甚至長達數分鐘。
  • 遠距離,長達數百米的通訊距離,而傳統藍芽通常10米左右。

qq_pic_merged_1719058374210

物理層(phy):使用GFSK調製無線訊號,並將2.4GHz頻段劃分為40個射頻通道(3個廣播通道,37個資料通道)。

  • 直接測試模式(DTM):透過測試儀器直接連線藍芽裝置控制介面,自動完成與藍芽模組之間的互動命令和藍芽引數的設定,從而對藍芽模組進行測試。

  • 鏈路層(LL):定義邏輯通道併為通道選擇調頻技術;控制裝置的射頻狀態(等待、廣播、掃描、發起連線等)和角色;控制資料包的傳送時機、完整性等。

  • 主機控制器介面(HCI):為主機和控制器提供統一的通訊介面。這一層的功能可以透過軟體API來實現,也可以使用硬體外設來實現。

  • 邏輯鏈路控制和適配協議(L2CAP):用於協商與建立邏輯通訊通道。BLE使用固定邏輯通訊通道來傳輸協議資料,可避免建立通道時帶來的額外時間消耗。

  • 安全管理器(SM):定義了裝置配對與金鑰分配的方式,併為裝置之間的安全連線和資料交換提供服務。

  • 屬性協議(ATT):定義了訪問服務端裝置資料的規則(比如讀、寫等)。資料儲存在屬性伺服器的屬性(attribute)中,供屬性客戶端執行讀寫操作。

  • 通用屬性規範(GAP):負責處理裝置的訪問模式和程式,具體包括定義藍芽裝置的角色、通訊操作模式和過程,定義藍芽地址、藍芽名稱等與藍芽相關的引數。

  • 通用訪問規範(GAP):主要用來控制裝置連線和廣播。通用訪問規範可使你的裝置被其他裝置發現,並決定了你的裝置是否可以或者怎樣與互動裝置進行通訊。

  • 各種應用程式:基於藍芽協議的應用程式

  • 通用屬性配置檔案(GATT)
    GATT配置檔案定義瞭如何透過BLE連線來交換所有配置檔案和使用者資料。它為基於GATT的配置檔案提供了參考框架和精確的用例,以確保不同供應商生產的裝置之間的互操作性。標準的BLE配置檔案都以GATT配置檔案為基礎,並且必須遵守GATT配置檔案才能正常執行。

    ​ 儘管藍芽規範在屬性協議(ATT)中定義了屬性,但定義的這些屬性是與ATT相關的。ATT依靠公開的所有概念提供一系列精確的協議資料單元(PDU),以允許客戶端訪問伺服器上的屬性。

    ​ 而GATT進一步建立了嚴格的層次結構,允許使用一組簡潔的規則在客戶端和伺服器之間訪問與檢索資料,而這些規則共同構成了所有基於 GATT 的配置檔案使用的框架。

    在GATT伺服器中,屬性被分組為服務(service),每個服務可以包含零個或多個特徵(characteristic),不同的特徵之間用唯一的 UUID區分,這些特徵又可以包括零個或多個描述符(descriptor)。對於聲稱與 GATT 相容的任何 BLE 裝置來說,都具有相應的層次結構。

    image-20240622201454991

    ​ 在日常生活中,一種常見的 BLE 裝置是智慧手環。假設它包含 3 個服務,分別是提供裝置資訊的服務、統計步數的服務和檢測心率的服務。在提供裝置資訊的服務中,包含的特徵有廠商資訊、硬體資訊和版本資訊等,而在檢測心率的服務中則包含心率的特徵等。每個特徵都有對應的值(value)和描述符,用於提供更多相關資訊。心率特徵中的值是與心率相關的資料,而描述符是對該value的描述說明,如value的單位。許可權等。

    ​ 儘管BLE裝置的配對操作是加密的,但每個特徵的值可以在不加密的狀態下進行讀寫。當特徵值發生改變時,藍芽裝置會收到相應的通知。

智慧燈泡攻擊實驗

工具:wireshark+52832dongle+lifesmart智慧燈泡+lightblue+lifesmart

1.確定藍芽裝置

開啟藍芽燈泡並用產品官方app與其藍芽連線,再使用lightblue檢測藍芽訊號強度,找到一靠近燈泡訊號飆升遠離燈泡訊號掉的最明顯的裝置就是藍芽燈泡。

image-20240622202302750

這裡是第二個裝置,BULB。

2.wireshark抓藍芽資料包

插上52832,監聽目標裝置,當52832指示燈變從紅色閃爍變綠即連線成功。

image-20240622205827402

多次在app上開關燈泡,找到對應開關的服務。

image-20240622204720722

標記的2條是開關操作,發現每次操作value倒數第七位自增1,開燈末尾是181,關燈180.並且找到了servic和其特徵的uuid紅線劃出了。

3.重放攻擊

現在燈是開的,我們透過lightblue改寫上述服務的特徵值,達到重放攻擊。

輸入Value: 0e000000000000000000000410020180.燈滅

相關文章