[無線安全]玩轉無線電——不安全的藍牙鎖

0x00 前言

隨着物聯網科技的飛速發展, 各種IOT設備都經過使用無線技術BTLE; ZigBee; WIFI; 6LoWPAN等來實現萬物互聯. 但隨之而來的安全及我的用戶隱私問題也愈來愈敏感.  汪汪將在這篇文章中分享一個低功耗藍牙智能鎖的分析案例. 但願能對IOT安全研究起到拋磚引玉做用.php

 

 

BTLE 俗稱低功耗藍牙, 比傳統的藍牙更能控制功耗和成本. 所以成爲當下 IOT 產品中使用很是頻繁的技術. 好比小米智能手環; 飛利浦的HUE 智能燈,  甚至還有羞羞的蛋蛋系列都是經過BTLE 來完成聯接的.  聽說BTLE設備的年出貨量在過去15年內增長了1000倍,已經達到了30億的水平,在將來的4~5年內還將增長到50億.html

 

 

不過越是流行的東西, 黑客對其也越是有興趣. 經過簡單的搜索即可發現很多關於BTLE 設備安全隱患的文章. 其中編號爲 CVE-2013-4866 的硬編碼PIN漏洞堪稱一絕. 由於它是第一個關於智能馬桶的漏洞. 感興趣的朋友能夠自行了解相關信息.git

 

 

0x01 BTLE 基礎

有些朋友可能會以爲僅僅是家裏的智能燈或者手環被黑了, 並不會形成什麼特別的影響.  但是有一類藍牙智能設備的安全問題可就沒這麼簡單了. 不過在進入主題以前你們先來了解一下BTLE 吧.****github

 

其實關於BTLE 的基礎介紹網上已經有不少了. 這裏只是簡單介紹下想要進行測試的必備知識. BTLE 設備運行在2.4ghz. 分爲40 個頻道, 每一個頻道 2Mhz 帶寬.  其中頻道 37; 38; 39 爲廣播頻道. 剩餘的37個頻道爲數據頻道.express

 

 

BTLE 定義使用了3 種匹配模式. JustWorks; 6-digit PIN **和 **Out of band. 其中JustWorks 默認使用000000做爲PIN來完成匹配. 這樣的設計給自己不帶輸入方式的設備提供了便利. 但同時讓全部人均可以輕易以其匹配. 咱們的目標 DOG&BONE 智能鎖使用的正是此方式.安全

在匹配成功後, 咱們即可以經過一個獨特的UUID對 Characteristics 進行讀寫操做. 從而實現不一樣的功能, 好比開燈/關燈等. 在格式上UUID 又分爲Bluetooth Special Interest Group (SIG) 規範的 16bit 公有UUID (e.g. 0000180F-0000-1000-8000-00805F9B34FB) 和 廠商自定義的 128 bit 私有UUID (e.g. 00001524-1212-EFDE-1523-785FEABCD123)服務器

 

 

在與BTLE 交互的硬件方面能夠說很是簡單. 僅僅一個便宜的BTLE 藍牙Dongle 便可. 同時大部分的手機好比IPHONE 自帶BTLE功能. 若是想增長收發信號範圍的話還能夠經過外接天線的方式達到目的.架構

 

 

軟件方面的選擇也很是之多. 若是是IPHONE 用戶的話, 我的推薦 LightBlue. 固然想要深刻的話, 則必須使用Linux下的開源軟件, 好比hcitool or Gatttool. 尤爲是gatttool 提供了一個很是好的交互界面.併發

 

 

 

0x02 BTLE 智能鎖

市面上具備BTLE功能的安防產品種類繁多, 其中又以智能鎖爲主. 可是做爲一款安全產品的自身的安全性能又如何呢. 在DEFCON24上有安全研究員爆出數款藍牙智能鎖的安全漏洞. 而漏洞的類型五花八門. 從明文密碼到重放攻擊, 甚至還有一款門鎖在Fuzzing 攻擊下徹底失效, 致使門戶大開.app

 

 

其實智能鎖的架構很是簡單. 經過手機APP 做爲中轉跟雲服務器交互, 用戶甚至能夠從地球任何一個角落打開鎖. 這是普通門鎖沒法比的.

 

 

今天的主角DOG&BONE 藍牙智能鎖正式登場了. DOG&BONE 智能鎖是由一家位於英國的公司生產. 目前在市面上售價爲100 $. 但在逆向了他們的手機APP後, 發現真正的開發者應該是一名華人. 就如大多數廠商那樣, 他們也號稱自家的智能鎖安全性能極高. 適當的宣傳是能夠理解的, 但這家公司彷佛有點過了頭. 簡單來講就是號稱此鎖擁有銀行級別的安全性能, 甚至須要設計出蘋果電腦的傳奇硬件黑客Steve Wozniak 親自出馬才行. 但真實狀況是否是真有那麼安全呢? 讓咱們來一塊兒測試下吧.

 

0x03 攻擊準備

在攻擊起始階段最重要的就是情報收集, 掌握目標儘量多的信息對隨後的深刻研究相當重要. 就DOG&BONE 鎖而言, 咱們可使用LightBLUE 與其交互, 獲得一些基本信息開始.

 

 

如圖所示: 咱們能夠知道DOG&BONE的藍牙地址; 使用了Nordic的藍牙芯片. 且提供了何種services, 這些services 的UUID 又是哪些.

 

 

善用GOOGLE 搜索能夠發現除了官方文檔以外的許多信息. 這裏咱們發現網上已經有其餘研究人員對其進行解剖. 方便咱們瞭解了其內部結構信息. 從而更加確認了DOG&BONE 使用的是Nordic NRF51822 芯片.

從官方發佈的APP 咱們能夠了解到DOG&BONE都提供了哪些功能. DOG&BONE 的APP 同時有IOS 和Android 2種版本, 條件容許的話能夠對2種版本分別測試分析. DOG&BONE APP 能夠時時查看鎖的電池容量等基本信息. 咱們能夠經過 tap to unlock 和設置passcodes 等方式來打開智能鎖. 而且能夠共享給其餘用戶, 並限制其使用的次數和時間. 當設備提供的功能越多, 潛在的攻擊點也隨之增加. 隨後咱們會針對這些功能進一步深刻.

 

跟大多數Android app 同樣, APP自己沒有加固. 因此咱們能夠輕易經過JD-GUI 獲得JAVA Byte codes. 從代碼中咱們能夠窺探到DOG&BONE的工做機制和採用了何種認證方式. 一些相當重要的信息也同時暴露出來. 好比UUID 和其對應的功能.

 

 

不只如此DOG&BONE APP雖然使用了SSL 來加密其與雲服務器的交互數據, 可是並沒用啓用Certs-Pinning. 因此咱們仍能夠經過中間人的方式抓到全部的交互數據包. 並對其進一步分析. 經常使用的MitM工具包括 MitMProxy 和BurpSuit Pro 等.

 

 

另外一方面DOG&BONE使用藍牙來與智能鎖交互. 詳細的藍牙交互數據包將大大縮短咱們的分析的時間. 幸運的是自從Android 4.4 開始便提供了Bluetooth HCI Logs 的功能. 咱們能夠將獲得的btsnoop_hci.log 導入Wireshark 中進行分析.

 

 

在分析後, 咱們能夠得知DOG&BONE 是經過對屬性爲lock_password的UUID 寫入正確的解鎖密碼得以開鎖. 而這個解鎖密碼則是從服務端產生的, 併發送到鎖和APP裏保存. 可是這個密碼只有當用戶將鎖和本身的帳號取消關聯, 再從新綁定時纔會更新. 那麼問題來了會有用戶每開一次鎖就把鎖和本身的帳號取消關聯嗎?

 

 

經過MitM抓包能夠獲得當前的開鎖密碼. 這時能夠用BTLE dongle 將密碼寫入lock_password 的UUID 來驗證密碼的正確. 但請注意目前咱們僅是從本身的手機獲得開鎖密碼. 若是想截取別人的開鎖密碼, 咱們就須要知道如何從空中抓包..

Unlock DogBone Lock (視頻地址)

http://v.qq.com/page/n/2/1/n0519c7d021.html


0x04 攻擊 – RF無線層

如何從空中抓取藍牙包?這裏必須說起Michael Ossmann 設計的Ubertooth. 這能夠說是藍牙安全研究的瑞士軍刀. 具體使用方法能夠移步到其官網. 但必須提醒的是若是須要確保能夠抓到藍牙包, 咱們須要使用3 個Ubertooth 來監控 37 38 39 這3 個廣播頻道.

 

 

 

在獲得足夠的數據包後, 咱們能夠經過 CrackLE 來破解出BTLE 配對的密碼. 可是由於DOG&BONE 使用的是JustWorks 配對模式. 因此實際上是徹底能夠省略這步的.

 

 

若是覺的Ubertooth 價格太高的話, 咱們也能夠用基於CC2540 芯片的TI-SmartRF Sniffer. 和其自帶的SmartRF 軟件. 並且測試發現抓包效果要比Ubertooth 好些.

 

 

0x05 攻擊 – APP 運用層

你們還記得DOG&BONE還有一個共享鎖的功能麼. 在共享給其餘用戶的同時, 還能夠限制其使用的次數和時間. 那麼這期間到底發生了什麼, 是否能夠繞過限制呢. 這裏咱們經過BurpSuit Pro 來一探究竟.

其實共享過程很簡單, 當鎖的主人決定共享給某個用戶. 服務端會發送邀請token 給此用戶

 

當此用戶接受了邀請. 服務器便會將鎖的ID 和共享類型等信息返回到用戶的帳號. 這裏的共享類型包含了次數以及時間限制信息.

 

 

而當此用戶想開鎖時, 客戶端便會發送請求到服務端. 若是一切順利服務端會將當前的解鎖密碼返回. 從而達到開鎖的目的.

 

 

但若是用戶的次數用完了, 此時再發送開鎖請求. 服務端返回錯誤信息.

 

可是由於整個過程都在咱們的掌握之中, 因此咱們能夠將服務端的返回信息換成任意咱們想要的信息. 好比提升共享次數等. 如下是繞過共享次數限制的視頻演示.

Bypass DogBone lock sharing limits (視頻地址)

 

http://v.qq.com/page/y/3/v/y05190ihb3v.html

 

0X06 攻擊 – 物理機械層

以上咱們經過逆向應用程序, 藍牙數據包嗅探等方式搞定了Dog&Bone 智能鎖的安全防護. 但事實上還有一個很是簡單但又很是致命的方式能夠打開鎖. 那就是使用SHIM (鐵片) 攻擊, 事實證實每每最簡單的攻擊方式倒是最行之有效的. 如下是演示視頻, 在看過以後你還願意花100 美金去買這個所謂的智能鎖嗎?

 

Bypass DogBone by SHIM (視頻地址:)

http://v.qq.com/page/j/8/q/j0519sav98q.html

 

0X07 總結

經過DOG&BONE 藍牙鎖這個案例, 相信你們對低功耗藍牙設備的分析和攻擊方式有了必定程度的瞭解. 但市面上的BTLE相關產品種類繁多, 每款產品的安全程度也各不相同. 你們能夠自行嘗試玩出新花樣. 而從開發者的角度來講在設計階段就要將安全防護考慮進去. 在產品上市前能夠考慮找白帽黑客測試事後再發布.

 

0x08 參考文獻

https://lacklustre.net/    

https://github.com/securing/gattacker

http://greatscottgadgets.com/ubertoothone

https://github.com/pwnieexpress/blue_hydra

https://en.wikipedia.org/wiki/Bluetooth_Low_Energy

https://github.com/kevin2600/BTLE-SmartLock-Hacking

https://media.ccc.de/v/33c3-8019-lockpicking_in_the_iot

http://hackaday.com/2016/08/08/the-terrible-security-of-bluetooth-locks/

 

author,kevin2600  文章轉載自先知社區,原文地址:https://xianzhi.aliyun.com/forum/read.php?tid=1799&displayMode=1&page=1&toread=1#tpc

更多安全類熱點資訊及知識分享,請持續關注阿里聚安全博客

相關文章
相關標籤/搜索