周利是一個從事無線安全研究的技術專家,為了對藍牙設備安全進行研究,周利決定在一家大型超市的入口執行一些攻擊測試,以驗證藍牙手機中的安全問題和普遍的社會影響性。故事的另一個主角則是一部T610手機的用戶,暫且讓我們稱他為Joey。我們希望Joey或者與Joey存在同樣問題的用戶能夠看到這個故事,并學會故事中介紹到的技巧,保護自己的藍牙手機安全。在開始講述故事之前我們先給出第一個建議。
藍牙安全建議1:不使用就不啟用
如果希望保護藍牙的安全,一個首要的原則是在不需要使用藍牙的時候將其關閉。對于移動電話來說可以在藍牙設置頁面中將藍牙關閉,而對于計算機上的藍牙適配器則可以通過附帶的工具軟件或操作系統本身的藍牙軟件將其設置為不可連接狀態。
探詢藍牙設備
發現周圍的藍牙設備
周利找了一個角落坐了下來,并打開了自己接有USB藍牙棒的筆記本電腦,這上面運行著內置了藍牙支持的SuSE Linux 9.3(目前大部分的藍牙安全工具包括故事中出現的工具都運行于Linux之上)。有不少方法可以發現周圍的藍牙設備,周利首先使用了最簡單的方法,使用Linux系統所提供的hcitool工具集進行探測。在命令行鍵入hcitool scan就可以對周圍的環境執行一次快速的掃描操作。周利的運氣不錯,沒用多長時間就發現了一個名為T610-Phone的藍牙設備。

發現處于不可見狀態的藍牙設備
藍牙設備可以設置三種模式,分別是可見、不可見和有限可見。這些模式決定了該藍牙設備在何種情況下可被其它藍牙設備發現。
由于hcitool只能發現處于可見狀態下的藍牙設備,所以周利決定利用BTScanner掃描程序檢測是否存在處于不可見狀態的藍牙設備。在命令行下進入BTScanner所在目錄并執行BTScanner命令。BTScanner提供了被稱為brute force的暴力掃描模式,在該模式下可以發現那些處于不可見狀態下的藍牙設備。在這一輪的檢測中,周利又有了新的收獲,一個名為MESSIAH和一個名為Redwolf的處于不可見狀態下的藍牙設備被發現。

藍牙安全建議2:可見模式存在安全隱患
事實上將設備設置為不可見并不會對驗證受信任設備造成影響,而且可以減少不必要的安全威脅。盡管將設備設置為不可見仍然有可能被發現,但是攻擊者必須進行強度高得多的掃描,相對來說設置為不可見的藍牙設備是較難被攻擊的。以故事中的情況為例,如果名為T610的設備沒有設置為可見的話是不可能在這么短的時間內被發現的,特別是在人流平均每5分鐘就會變化的情況下。
巧妙識別藍牙型號
通過檢測的設備名識別
在發現目標之后,可以首先從設備的名字判斷設備的型號。從目標發現階段獲得的信息來看,名為T610-Phone的藍牙設備很可能是索尼愛立信生產的T610移動電話,這是一種市場占有率很高的產品。而名為MESSIAH和Redwolf的設備則無法從名字判斷出設備的情況。
通過地址識別制造商
除了設備名之外周利還獲取了設備地址信息,該地址對于藍牙設備來說是獨一無二的,跟網卡的MAC地址極為相似。根據地址的前三個字節可以判斷出設備的制造廠商,從而進一步判斷設備的型號。舉例來說,諾基亞所使用的地址前綴通常為00:02:EE、00:60:57、00:E0:03,而索尼愛立信使用的地址前綴通常為00:0A:D9,西門子則是00:01:E3。各個廠商被分配的地址范圍可以從IEEE的OUI數據庫進行查詢,地址是http://standards.ieee.org/regauth/oui/index.shtml。對照地址規范,名為T610的設備確實是索尼愛立信制造的,而Redwolf是一部諾基亞生產的設備,MESSIAH使用的則是一個不太常見的地址前綴。
驗證藍牙設備指紋
盡管已經獲得了一些信息,但是還不足以確認設備的實際型號,所以周利借鑒了PC平臺上的方法,對這些發現的藍牙設備進行了指紋識別。進行這樣的識別是因為每種藍牙設備提供的服務以及應答服務查詢的方式都各不相同,所以可以通過匹配目標設備返回的信息來確認設備的型號,這種方法與NMAP程序識別計算機操作系統的方法非常類似。

在btdsd項目所屬的頁面http://www.betaversion.net/btdsd/db發布了很多藍牙手機的指紋,這些指紋也包含在BluePrint工具的數據庫當中。周利進入到BluePrint程序所在的目錄,執行了如下的命令:sdp browse --tree 00:13:EF:F0:D5:06 | ./bp.pl 00:13:EF:F0:D5:06。這里的sdp是Linux系統下的SDP(服務發現協議)工具,可以用于查詢藍牙設備的服務狀態。在對發現的所有目標執行了指紋識別之后,周利得出了如下的結論:目標設備T610返回的指紋是00:0A:D9@4063698,這說明該設備確實是一部索尼愛立信的T610手機,而目標設備Redwolf的指紋是00:11:9F@3408116,表明這是一部諾基亞7610手機。
藍牙安全建議3:使用安全設置
在藍牙規范中定義了三種安全模式,沒有任何保護的無安全模式、通過驗證碼保護的服務級安全、可以應用加密的設備級安全,在適用的情況下盡可能應用較高的安全模式。事實上平均每一百部藍牙手機中有大約10%到20%設置了1111或1234這樣容易猜解的密碼,設置了強壯密碼的藍牙手機可以在很大程度上避免未受權訪問和一些暴力破解類型的攻擊。
攻陷藍牙手機
在確認了目標設備的型號之后,周利決定對T610-Phone進行攻擊。因為索尼愛立信的T610有一個安全缺陷,可能導致該型號的手機受到被稱為BlueSnarf的攻擊,這是針對藍牙設備最常見的攻擊方法。這種攻擊是基于這樣一種原理:通過連接到藍牙設備的OPP(對象交換傳輸規格)可以在設備之間交換各種信息,例如電話簿等等,由于廠商的原因一些型號的藍牙設備存在脆弱點,使攻擊者可以在無須認證的情況下連接到這些設備上下載設備中的資料。
周利使用Linux系統下的obexftp工具連接到T610以下載其中的信息,obexftp是用于訪問移動設備存儲器的工具程序。在Linux的命令控制臺執行如下命令:
# obexftp -b 00:0A:D9:15:0B:1C -B 10 -g telecom/pb.vcf
這個命令能夠讓周利從目標T610手機中獲取電話簿文件,其中-b選項意味著使用藍牙設備進行連接,在選項開關之后跟隨的是目標設備T610的地址。-B選項規定了所使用的通道情況。另外,-g選項后面的參數是所獲取的文件路徑和名稱,將該參數替換成telecom/cal.vcs就可以獲取T610上的日程安排信息。事實上,通過這種攻擊方法還可以獲取圖片和其它數據文件,只要知道文件存儲的位置和名稱就能夠實現。

與BlueSnarf一樣,一些存在問題的手機可能會被攻擊者通過AT命令操縱,攻擊者除了可以下載手機中的信息之外,還可以操縱手機進行撥號、短信發送和互聯網訪問等活動,這種攻擊被稱之為BlueBug攻擊。
而攻擊者還可以通過一些社交工程手段在某些型號的手機里留下后門,其前提是攻擊者與目標建立了合法的連接。然后攻擊者可以告知目標手機連接已被關閉但依然能在目標手機用戶不知情的情況下通過該鏈路訪問目標手機,這種攻擊通常被歸類為BACKDOOR攻擊。
另外還有一些低安全風險的騷擾性的攻擊,例如匿名在藍牙設備之間發送信息的Bluejacking攻擊,現在已經形成了一些社群專門研究和總結Bluejacking攻擊方面的技巧。值得一提的是,諾基亞7610有很大的可能會遭受拒絕服務攻擊,因為通過OBEX對象交換協議向某些7610手機發送名字中帶有冒號等特殊字符的文件可能造成藍牙功能失效,重啟手機后能夠恢復正常。
藍牙安全建議4:保持對安全更新的跟蹤
安全漏洞是造成藍牙手機安全問題的最主要原因之一,好在大部分存在安全漏洞的手機都可以通過廠商提供的更新獲得解決。所以藍牙手機用戶應該了解自己的設備是否有安全漏洞并及時從廠商處獲取更新。另外更多地了解藍牙安全方面的知識并應用一些免費的藍牙安全工具也可以有效地減少受攻擊的可能。
