張尚韜
摘要:為了開展藍牙OBEX協(xié)議漏洞挖掘的相關技術研究,該研究首先概述了OBEX的基本概念,接著詳細分析了藍牙OBEX協(xié)議格式,并著重研究OBEX對象模型、會話模型及請求/響應數(shù)據(jù)包格式,為今后藍牙OBEX協(xié)議漏洞挖掘研究打下基礎。
關鍵詞:藍牙;OBEX;模型
中圖分類號:TP393? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2020)16-0045-03
Abstract:In order to carry out the relevant technical research on the vulnerability mining of Bluetooth OBEX protocol, this study first outlines the basic concept of OBEX, then analyzes the format of Bluetooth OBEX protocol in detail, and focuses on the obex object model, session model and request / response packet format, which lays the foundation for the future research on the vulnerability mining of Bluetooth OBEX protocol.
Key words: Bluetooth; OBEX; model
1 OBEX基本概念
[OBEX]是對象交換協(xié)議最初紅外數(shù)據(jù)協(xié)會IrDA(Infrared Data Association)開發(fā)的用于紅外數(shù)據(jù)鏈路上數(shù)據(jù)對象交換的會話層協(xié)議。后來作為小范圍無線通信系統(tǒng)的藍牙采納了該協(xié)議,這使得原先基于紅外鏈路的OBEX應用可能很方便地移植到藍牙上來或在兩者之間進行切換。協(xié)議能夠支持文件傳遞、同步等多個應用,能夠讓不同的設備間完成簡單便捷的交換。藍牙[OBEX]協(xié)議被普遍地運用于智能手機、平板電腦、數(shù)字相機等各個設備間以此完成數(shù)據(jù)的傳遞[1-4]。
對OBEX協(xié)議進行格式分析須了解OBEX在藍牙棧中所處的層次結構。圖1描述了OBEX在藍牙協(xié)議棧中的地位。
圖1給出了OBEX在藍牙體系中的層次以及基于[OBEX]的部分應用。在層次組成的藍牙協(xié)議棧中,[OBEX]是一類面向應用層的協(xié)議,工作于協(xié)議棧的頂端,能夠完成文件傳遞,同步等各項操作,也可以讓不同的設備間完成簡單便捷的交換??山粨Q的內容包括文件、圖像以及應用支持的各種數(shù)據(jù)資料。對象交換使用的是建立在查詢/應答基礎上的[Client/Server]模式,任意兩個藍牙設備都能夠構成主從聯(lián)系,發(fā)起方是主,接收者為從。
藍牙的核心協(xié)議和應用規(guī)范由SIG制定,它的版本也在不斷升級,[OBEX]協(xié)議自身劃分了兩大部分:數(shù)據(jù)對象模型以及會話協(xié)議。前者涵蓋了即將傳遞的數(shù)據(jù)對象的各類資料和對象自身。整個模型的成立是建立在不同標準下的可分析的信息頭,比較接近于HTTP當中所界定的信息頭定義。會話協(xié)議中還提出了數(shù)據(jù)傳輸?shù)木唧w流程,[OBEX]采用基于二進制分組的客戶機/服務器模式當作整個流程的具體模型[5-6]。下面分別介紹這兩種模型。
2 OBEX對象模型
對象模型不但要分析對象自身,并且還要分析除此以外的各種描繪信息,詳細措施就是使用不同的對象頭。用于針對性地描述對象的某一點,名稱、類別等,如文件[test.txt]就包含下列幾大對象頭:名稱、類別、長度以及文件自身。
對象頭常見格式為:<頭ID>+<值>。頭ID為單字節(jié)的無符號整數(shù),用于分辨識別對象頭涵蓋哪些內容及對應的數(shù)值屬于什么格式;頭的值存在多個字節(jié),相應的格式也要按照頭ID進行設定。全部的對象頭都是能夠選擇的,按照應用的具體狀況,可以選擇全部或局部應用,還可以一個都不用。頭ID的作用是使對象頭易于解析,并使對象頭可以按任意順序出現(xiàn),還可以使應用程序很容易地跳過不支持的對象頭。
[OBEX]定義了一組常用的對象頭,它也支持[HTTP]對象頭,還支持用戶自定義的對象頭,滿足了絕大多數(shù)設備的需要。頭ID的最高2位表示對象頭的編碼方式,低6位是對象頭的具體含義。編碼方式?jīng)Q定了對象頭的長度,這樣不支持的對象頭可以被完整地丟棄,而不會影響對下一對象頭的解析。頭ID最高兩位含義見表1。
3 OBEX會話模型
會話協(xié)議中描繪了[OBEX]會話的主要構造,涵蓋了設備之間的會話格式以及對應的操作編碼[8]。[OBEX]會話出現(xiàn)于某次[OBEX]連接中,只需要在連接初期傳遞一次設備信息,同時狀態(tài)信息可以一直維持。發(fā)起連接請求的叫作[OBEX]客戶端,接受的那端叫作[OBEX]服務端。[OBEX]格式是請求/應答對,客戶端傳遞出請求之后,等候服務端的反饋,之后發(fā)出下一條請求。一對請求/應答也稱為一個操作。在進行連接時,雙方會商議數(shù)據(jù)包的內存大小,如果請求超過這個大小,就需要分幾次進行發(fā)送。在這樣的狀況下,每個請求數(shù)據(jù)包都要有應答數(shù)據(jù)包與其對應。一個操作事實上就是一個請求/應答數(shù)據(jù)包,而最終的那個數(shù)據(jù)包會存在特定的標識。兩個數(shù)據(jù)包對應的格式是相同的,根據(jù)順序依次為:1字節(jié)的操作碼,2字節(jié)的數(shù)據(jù)包長度,后面對對象頭的需求不固定,數(shù)量也同樣能夠設定為多個。操作碼最高位叫作完成位,代表該數(shù)據(jù)包是否為最終的那個數(shù)據(jù)包。同時其長度與對象頭的長度比較相似,同樣是采用網(wǎng)絡字節(jié)的排序進行傳遞,同時包括了操作碼以及長度所占據(jù)的三大字節(jié)。由于長度只有2字節(jié),因此數(shù)據(jù)包長度不可以超出65535。對象頭只可以置于一個數(shù)據(jù)包當中,不可以使用多個。對象頭排序也并未進行具體的規(guī)定,不過可以將描述目標的對象頭置于其自身前面。
按照設備實際狀況,客戶端以及服務端既可以只選擇一個做也可以一起做。而請求的具體操作碼界定情況如表3所示。
應答操作碼還有一個稱呼叫作應答碼,是將一個[HTTP]狀態(tài)碼進行編碼同時壓縮至1個字節(jié)低7位,其實際含義可以參照對應的[HTTP]文檔。
上面兩個表格里面的操作碼、響應碼中括號里的數(shù)其最高位是“1”時的對應值,該位意味著這是請求時的最終的那個數(shù)據(jù)包。如采用“Put”操作傳遞一個較大的對象過程中,要采用許多的“Put”數(shù)據(jù)包才能夠實現(xiàn),不過僅僅是最后的一個“Put”包會獲得最高位設置。
4 總結
通過以上研究,我們認識了藍牙OBEX協(xié)議,對藍牙OBEX協(xié)議的對象模型、會話模型及請求/響應數(shù)據(jù)包格式有深入的了解,為下一步開展藍牙OBEX協(xié)議格式規(guī)范研究奠定基礎。
參考文獻:
[1] 張文安,洪榛,朱俊威,陳博.工業(yè)控制系統(tǒng)網(wǎng)絡入侵檢測方法綜述[J].控制與決策,2019,34(11):2277-2288.
[2] 王群,李馥娟,周倩.網(wǎng)絡空間安全體系結構及其關鍵技術研究[J].南京理工大學學報,2019,43(04):495-504.
[3] 楊世超.物聯(lián)網(wǎng)云平臺接入安全技術研究[A].中國通信學會.2019年全國公共安全通信學術研討會優(yōu)秀論文集[C].中國通信學會:中國通信學會,2019:5.
[4] 陸英.大數(shù)據(jù)時代使用藍牙的風險及解決方案[J].計算機與網(wǎng)絡,2019,45(14):52-53.
[5] 蔣綱,周敬利,余勝生,等.基于Bluetooth OBEX協(xié)議的文件傳輸技術的研究[J].小型微型計算機系統(tǒng),2003,24(4): 687-690.
[6] David Kammer,Gordon McNutt,Brian Senese,Jennifer Bray.Bluetooth Application Developers Guide[M].Elsevier Science Ltd.2005.
[7] Infrared Data Association,(IrDA)Object Exchange Protocol OBEX Version 1.3[EB/OL].http://www.irda.org.oct,2008.
[8] Specification of the Bluetooth System vl.l Profile Part K:SerVice Discovery Application Profile.Bluetooth SIG,2001:48-50.
【通聯(lián)編輯:代影】