文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.171041
中文引用格式: 程必成,,劉仁輝,,趙云飛,,等. 非標(biāo)工業(yè)控制協(xié)議格式逆向方法研究[J].電子技術(shù)應(yīng)用,,2018,44(4):126-129.
英文引用格式: Cheng Bicheng,,Liu Renhui,,Zhao Yunfei,et al. Research on non-standard industrial control protocol formats reverse[J]. Application of Electronic Technique,,2018,,44(4):126-129.
0 引言
隨著2010年“震網(wǎng)病毒”的出現(xiàn),工業(yè)控制系統(tǒng)(Industrial Control Systems,,ICS)的安全性越來(lái)越受到全球范圍的關(guān)注[1],。接口環(huán)節(jié)是ICS中的關(guān)鍵環(huán)節(jié),而通信協(xié)議又是接口的核心,,工控協(xié)議的安全性分析已成為等級(jí)保護(hù)等安全測(cè)評(píng)中一項(xiàng)重要的內(nèi)容,。各工控廠商或個(gè)人出于提供個(gè)性化功能、優(yōu)化通信性能,、簡(jiǎn)化協(xié)議實(shí)現(xiàn)的復(fù)雜度等因素的考慮,,導(dǎo)致工控行業(yè)中有大量的非標(biāo)準(zhǔn)協(xié)議存在。非標(biāo)工控協(xié)議安全性分析采用的模糊測(cè)試等方法的前提是已知協(xié)議的格式信息,,所以非標(biāo)工控協(xié)議格式逆向識(shí)別成為了工控信息安全中的一項(xiàng)重要內(nèi)容,。
以往,非標(biāo)工控協(xié)議的格式結(jié)構(gòu)信息主要通過(guò)人工逆向的方式來(lái)獲得,,但這種方法往往耗時(shí)費(fèi)力且結(jié)果不準(zhǔn)確,。工控協(xié)議與信息系統(tǒng)應(yīng)用協(xié)議的區(qū)別導(dǎo)致信息系統(tǒng)應(yīng)用協(xié)議逆向識(shí)別方法對(duì)非標(biāo)工控協(xié)議的識(shí)別度不高。因此,,需要研究適用于非標(biāo)工控協(xié)議的格式逆向識(shí)別方法,。
1 協(xié)議逆向技術(shù)和工控協(xié)議特點(diǎn)
1.1 協(xié)議逆向技術(shù)介紹
協(xié)議逆向工程(Protocol Reverse Engineering,PRE)指在不依賴于協(xié)議描述的情況下,,通過(guò)對(duì)協(xié)議實(shí)體的網(wǎng)絡(luò)輸入輸出,、系統(tǒng)行為和指令執(zhí)行流程進(jìn)行監(jiān)控和分析,提取協(xié)議語(yǔ)法,、語(yǔ)義和同步信息的過(guò)程[2],。根據(jù)分析對(duì)象的不同,協(xié)議格式逆向分析技術(shù)分為基于網(wǎng)絡(luò)流量和基于執(zhí)行軌跡的協(xié)議格式逆向分析技術(shù),。
基于網(wǎng)絡(luò)流量的協(xié)議格式逆向分析技術(shù)以網(wǎng)絡(luò)數(shù)據(jù)流為分析對(duì)象,,根據(jù)協(xié)議字段的取值變化頻率和特征推斷得到協(xié)議格式。其依據(jù)是數(shù)據(jù)流中的單個(gè)報(bào)文樣本是協(xié)議格式的一個(gè)實(shí)例,,相同格式的報(bào)文樣本具有相似性,,不同格式的報(bào)文樣本具有一定的差異性,可以將具有相似性的報(bào)文匯集在一起,,推斷它們所遵循的報(bào)文格式,。這種分析技術(shù)僅依賴于所捕獲的網(wǎng)絡(luò)數(shù)據(jù)包,具有比較好的通用性,因此應(yīng)用較廣泛,。
基于執(zhí)行軌跡的協(xié)議格式逆向分析技術(shù)主要對(duì)實(shí)現(xiàn)協(xié)議的二進(jìn)制可執(zhí)行程序進(jìn)行逆向分析,,獲得程序具體處理網(wǎng)絡(luò)通信數(shù)據(jù)包的指令執(zhí)行序列。其主要依據(jù)是程序?qū)?shù)據(jù)包的處理按照定義好的數(shù)據(jù)包格式進(jìn)行,,通過(guò)對(duì)程序執(zhí)行的跟蹤,,可以獲得協(xié)議的部分或全部語(yǔ)義、語(yǔ)法信息,。該技術(shù)方法除需獲取通信數(shù)據(jù)包外,,還需獲得協(xié)議的實(shí)體可執(zhí)行程序,這導(dǎo)致該技術(shù)在應(yīng)用范圍方面有一定的局限性,。表1為基于網(wǎng)絡(luò)流量和基于執(zhí)行軌跡兩種技術(shù)的比較及代表性的項(xiàng)目,。
1.2 工業(yè)控制協(xié)議特點(diǎn)
工控協(xié)議是指工業(yè)控制網(wǎng)絡(luò)中現(xiàn)場(chǎng)設(shè)備、控制器,、操作員站,、通信和應(yīng)用等服務(wù)器、工程師站之間數(shù)據(jù)通信的規(guī)定,,與系統(tǒng)功能和網(wǎng)絡(luò)架構(gòu)密切相關(guān),,對(duì)成套設(shè)施級(jí)可編程邏輯控制器(Programmable Logic Controller,PLC),、廠站級(jí)分布式控制系統(tǒng)(Distributed Control System,,DCS)、廣域的數(shù)據(jù)采集和監(jiān)控系統(tǒng)(Supervisory Control and Data Acquisition,,SCADA),,分別發(fā)揮提供核心基礎(chǔ)能力的作用。隨著工控行業(yè)的發(fā)展,,工控協(xié)議更多地采用基于以太網(wǎng)的通信協(xié)議方式,,按照TCP/IP協(xié)議體系結(jié)構(gòu)的劃分,工控以太網(wǎng)協(xié)議主要是應(yīng)用層協(xié)議,。
相比較于傳統(tǒng)的基于以太網(wǎng)的信息系統(tǒng)應(yīng)用協(xié)議,,工業(yè)控制協(xié)議通常具有以下特點(diǎn):(1)傳輸信息中,以二進(jìn)制形式表示的模擬量,、數(shù)字量類(lèi)型信息比較多,,文本類(lèi)型信息少,,視頻類(lèi)信息獨(dú)立傳輸,;(2)多數(shù)信息有實(shí)時(shí)性要求,通信過(guò)程要在規(guī)定的時(shí)限內(nèi)完成,,否則就會(huì)造成數(shù)據(jù)質(zhì)量失效,;(3)有相對(duì)明確的數(shù)據(jù)生成者與使用者,許多傳輸過(guò)程也在確定的物理環(huán)境中進(jìn)行,通常認(rèn)為通信環(huán)境比較清潔,,許多通信數(shù)據(jù)不加密,;(4)協(xié)議中采用多種交互控制方式,如請(qǐng)求應(yīng)答交互,、周期主動(dòng)傳輸,,也提供多種流量?jī)?yōu)化機(jī)制,如變化傳輸,、事件訂閱等,;(5)在自動(dòng)控制層,使用包含工業(yè)以太網(wǎng)等多種形式的現(xiàn)場(chǎng)總線,,而在本地和遠(yuǎn)程監(jiān)控層,,基礎(chǔ)層多采用基于以太網(wǎng)的TCP、UDP等可路由協(xié)議,;(6)出于工業(yè)應(yīng)用的可靠性,、安全性要求,通信數(shù)據(jù)包具有一定的檢錯(cuò),、容錯(cuò),,甚至是糾錯(cuò)能力,可保證數(shù)據(jù)的完整性,;(7)多數(shù)情況下,,數(shù)據(jù)包具有相對(duì)一致的協(xié)議控制結(jié)構(gòu)和數(shù)據(jù)內(nèi)容結(jié)構(gòu),如開(kāi)始和截止標(biāo)記,、報(bào)文發(fā)送者和接收者標(biāo)識(shí),、報(bào)文功能碼、報(bào)文長(zhǎng)度,、校驗(yàn)碼等,。圖1為一些工控協(xié)議格式結(jié)構(gòu)示例。
2 非標(biāo)工控協(xié)議格式逆向識(shí)別方法
工業(yè)控制網(wǎng)絡(luò)中協(xié)議處理程序主要集成在ICS廠商提供的專(zhuān)用軟件或硬件設(shè)備中,,所以不易獲取協(xié)議處理的可執(zhí)行程序,,而獲取工控網(wǎng)絡(luò)中的數(shù)據(jù)流量相對(duì)簡(jiǎn)單。所以對(duì)工控協(xié)議的逆向分析多采用基于網(wǎng)絡(luò)流量的方式,。根據(jù)工控協(xié)議的特點(diǎn),,提出通過(guò)主要預(yù)處理、單報(bào)文處理,、多報(bào)文處理,、語(yǔ)義推斷4個(gè)階段逆向分析工控協(xié)議的方法,如圖2所示,。
2.1 數(shù)據(jù)預(yù)處理
通過(guò)接入工控系統(tǒng)網(wǎng)絡(luò)中捕獲網(wǎng)絡(luò)中通信數(shù)據(jù),,作為原始數(shù)據(jù)源,。根據(jù)IP地址、端口號(hào)等分包過(guò)濾出需要分析的特定通信實(shí)體間的通信數(shù)據(jù),,作為逆向分析的報(bào)文序列樣本集,。對(duì)報(bào)文序列中出現(xiàn)的丟包、重傳,、亂序等情況進(jìn)行處理,;濾除不含負(fù)載的報(bào)文;丟棄校驗(yàn)和出錯(cuò)的報(bào)文,;將IP分片的報(bào)文進(jìn)行重組,;對(duì)于TCP會(huì)話,一個(gè)完整會(huì)話以SYN報(bào)文開(kāi)始,,以FIN/RST報(bào)文結(jié)束,。由于工控?cái)?shù)據(jù)往往要求實(shí)時(shí)性,因此本文不考慮單個(gè)TCP報(bào)文中包含多個(gè)應(yīng)用層協(xié)議的情況,。
對(duì)于應(yīng)用層協(xié)議的逆向,,需要將數(shù)據(jù)包按照TCP/IP協(xié)議格式進(jìn)行自底向上的解除封裝,依次去除數(shù)據(jù)鏈路層,、網(wǎng)絡(luò)層和傳輸層的格式封裝,,得到完整應(yīng)用層報(bào)文。
2.2 單報(bào)文處理
單報(bào)文處理的作用是對(duì)協(xié)議數(shù)據(jù)進(jìn)行分詞,,并依據(jù)分詞結(jié)果將協(xié)議數(shù)據(jù)包進(jìn)行聚類(lèi)劃分,。分詞是指識(shí)別區(qū)分出報(bào)文中的一些特殊字段。單報(bào)文分詞指識(shí)別出僅單個(gè)報(bào)文就可識(shí)別出的字段,,如文本字段,、時(shí)間戳字段、校驗(yàn)碼字段等,。根據(jù)報(bào)文中識(shí)別出的字段屬性對(duì)報(bào)文進(jìn)行聚類(lèi)劃分,,可得到不同類(lèi)型的報(bào)文組類(lèi)。下面主要說(shuō)明文本字段和時(shí)間戳字段的識(shí)別,。
(1)文本字段識(shí)別,。將報(bào)文字節(jié)流中屬于ASCII碼中可打印字符取值范圍內(nèi)的連續(xù)字節(jié),將其識(shí)別為文本字段,;否則為二進(jìn)制字段[7],。為了避免將屬于二進(jìn)制字段的字節(jié)錯(cuò)誤地識(shí)別為文本字段,限定文本字段的長(zhǎng)度必須超過(guò)設(shè)定的文本長(zhǎng)度最小閾值,。由于工控協(xié)議中傳輸文本的數(shù)據(jù)包相對(duì)較少且格式相對(duì)單一,,因此可將含有文本字段的報(bào)文聚為一類(lèi)進(jìn)行處理。圖3中框中部分為報(bào)文中的文本字段,。
(2)時(shí)間戳字段識(shí)別,。將報(bào)文中連續(xù)的4 B或8 B數(shù)據(jù)按照時(shí)間戳(Unix timestamp)的方式進(jìn)行計(jì)算得到時(shí)間值,如果該值在報(bào)文捕獲時(shí)間的固定誤差范圍內(nèi),,可將該4 B或8 B標(biāo)識(shí)為時(shí)間戳字段,。圖4中框中部分即為小端字序表示的時(shí)間戳字段,時(shí)間值為2016年11月30日09:51:21.507340209,。
2.3 多報(bào)文處理
多報(bào)文處理的作用是在劃分出同一報(bào)文組中的報(bào)文內(nèi)容固定段與非固定段,、定長(zhǎng)段和不定長(zhǎng)段。序列比對(duì)是樣本再劃段和語(yǔ)義推斷的前提,。由于工控協(xié)議往往具有格式相同或相近,、傳輸信息重復(fù)性高、同類(lèi)型報(bào)文長(zhǎng)度等長(zhǎng)等特性,,可以優(yōu)先進(jìn)行同長(zhǎng)報(bào)文比對(duì),,按比對(duì)結(jié)果再分類(lèi)得到不同格式類(lèi)型;再將得到的格式類(lèi)型相或相近的不同長(zhǎng)報(bào)文進(jìn)行不同長(zhǎng)報(bào)文比對(duì),。最終得到多個(gè)不同格式樣本的子集,。
同長(zhǎng)度報(bào)文比對(duì)主要是劃分出相同長(zhǎng)度報(bào)文組中報(bào)文內(nèi)容的不變段與變化段。為了避免將同一初始分類(lèi)組中長(zhǎng)度相同但格式不同的報(bào)文進(jìn)行強(qiáng)行比對(duì),,影響比對(duì)的準(zhǔn)確度,,需要設(shè)定距離閾值,在距離過(guò)大時(shí)停止比對(duì),,并將之再分類(lèi),。依據(jù)比對(duì)結(jié)果劃分標(biāo)記變化段和不變段。
不同長(zhǎng)報(bào)文比對(duì)主要是識(shí)別出長(zhǎng)度不同,、但格式相同或相近的報(bào)文中內(nèi)容數(shù)據(jù)定長(zhǎng)段和不定長(zhǎng)段,。采用時(shí)間和空間復(fù)雜度都相對(duì)比較適合的漸進(jìn)多序列比對(duì)算法。參考PI項(xiàng)目中的漸進(jìn)比對(duì)算法,,主要包括3個(gè)步驟:(1)采用Smith-Waterman算法找出任意兩個(gè)樣本之間的局部最佳比對(duì),,據(jù)此計(jì)算樣本間的相似度,并構(gòu)造樣本集的距離矩陣,;(2)采用非加權(quán)成對(duì)群算術(shù)平均法(Unweighted Pair Group Method with Arithmetic means,,UPGMA)計(jì)算子類(lèi)間的距離,逐步將距離最小的子類(lèi)進(jìn)行合并,;(3)執(zhí)行漸進(jìn)多序列比對(duì),,采用Needleman-Wunsch算法進(jìn)行雙序列動(dòng)態(tài)規(guī)劃比對(duì)[8],對(duì)未對(duì)齊的字節(jié)進(jìn)行補(bǔ)充,。為減少算法復(fù)雜度,,對(duì)同長(zhǎng)報(bào)文比對(duì)后分類(lèi)的各類(lèi)中選取少數(shù)樣本組合成作為樣本集進(jìn)行不同長(zhǎng)報(bào)文比對(duì)。
2.4 字段語(yǔ)義推斷
字段的語(yǔ)義表示協(xié)議將如何使用該字段,,包括會(huì)話標(biāo)識(shí)符,、序號(hào),、地址、長(zhǎng)度字段,、格式標(biāo)識(shí)字段,、校驗(yàn)和、時(shí)間戳等,。以不同字段在協(xié)議語(yǔ)法層次中表現(xiàn)出的不同特征作為語(yǔ)義推斷的依據(jù),,對(duì)不同字段按照相應(yīng)的識(shí)別方法進(jìn)行識(shí)別。由于單報(bào)文處理中已將文本字段,、時(shí)間戳字段,、校驗(yàn)和字段等進(jìn)行了識(shí)別,因此該階段主要在二進(jìn)制數(shù)據(jù)段內(nèi)對(duì)標(biāo)識(shí)符,、序號(hào),、長(zhǎng)度、地址,、功能碼,、數(shù)據(jù)等字段進(jìn)行識(shí)別。最后對(duì)提取的格式進(jìn)行整理融合,,最終得到協(xié)議的格式結(jié)構(gòu),。
序號(hào)字段是用于標(biāo)識(shí)報(bào)文在一個(gè)會(huì)話的先后順序。特征是一般靠近段首,,取值一直變化,,且與報(bào)文的截獲先后順序相對(duì)應(yīng)??梢詫?duì)未知的數(shù)值變化段進(jìn)行判斷,,如其取值變化與報(bào)文的截獲序號(hào)成正相關(guān)的關(guān)系,則判定為序號(hào)字段,。
長(zhǎng)度字段是報(bào)文中用于定界的字段,,字段長(zhǎng)度通常為2 B或4 B,取值與樣本中的某一字段或連續(xù)的某幾個(gè)字段的長(zhǎng)度相等,,作用域通常在該字段之后或包含所有字段,。識(shí)別策略為判斷該字段值與其后的某一字段或連續(xù)的某幾個(gè)字段的長(zhǎng)度、或與所有字段總長(zhǎng)度是否相等,,若相等則判定為長(zhǎng)度字段,。
格式標(biāo)識(shí)字段是指用于區(qū)別報(bào)文中部分子格式序列的關(guān)鍵字段,多為協(xié)議格式字段或功能碼字段,,格式標(biāo)識(shí)字段的取值一般類(lèi)型較少,、變化率小,且與后續(xù)字段序列的格式相關(guān)聯(lián),,作用域多位于其后區(qū)域,。如果該字段變化導(dǎo)致后部所有字段格式發(fā)生變化,,將其識(shí)別為協(xié)議格式字段。
數(shù)據(jù)字段是指對(duì)報(bào)文結(jié)構(gòu)和其他關(guān)鍵字段影響不大或沒(méi)有直接影響的可變字段,,一般指報(bào)文的負(fù)載,。特征是隨機(jī)性強(qiáng),且變化無(wú)規(guī)律可循,,長(zhǎng)度可能不固定,,通常位于協(xié)議后部或尾部,,對(duì)于序列比對(duì)中需要插入空位的可變字段,,判定為數(shù)據(jù)字段,文本字段也判定為數(shù)據(jù)字段,。
3 方法驗(yàn)證
以兩種典型ICS系統(tǒng)中的通信數(shù)據(jù)作為數(shù)據(jù)源進(jìn)行驗(yàn)證,。以某PLC與工程師站組態(tài)軟件之間的通信協(xié)議數(shù)據(jù)包為數(shù)據(jù)源,采用本文所述方法對(duì)協(xié)議進(jìn)行逆向識(shí)別,,識(shí)別的格式結(jié)果如表2所示,。
以某DCS中的通信數(shù)據(jù)為數(shù)據(jù)源,對(duì)其進(jìn)行協(xié)議的逆向識(shí)別,,得到3種主要的協(xié)議格式類(lèi)型,,如圖5所示,格式I,、II中請(qǐng)求報(bào)文格式和應(yīng)答報(bào)文的格式不同,,格式III請(qǐng)求和應(yīng)答采用同種格式。
4 結(jié)論
工控協(xié)議逆向格式識(shí)別是協(xié)議安全性分析的重要前提,。本文根據(jù)工控協(xié)議的特點(diǎn),,提出基于網(wǎng)絡(luò)流量技術(shù),采用單報(bào)文處理,、多報(bào)文處理,、字段語(yǔ)義推斷3個(gè)階段進(jìn)行協(xié)議格式逆向識(shí)別的方法。通過(guò)對(duì)兩種協(xié)議數(shù)據(jù)源的驗(yàn)證可以看出,,本文方法能較好地逆向協(xié)議格式,,提取出協(xié)議格式標(biāo)識(shí)、序號(hào),、長(zhǎng)度,、數(shù)據(jù)等關(guān)鍵字段。
受基于網(wǎng)絡(luò)流量逆向分析技術(shù)的局限性,,本文方法對(duì)協(xié)議功能碼具體語(yǔ)義的識(shí)別率較低,。未來(lái)研究方向?yàn)閷⑷斯は闰?yàn)知識(shí)和機(jī)器學(xué)習(xí)方法引入?yún)f(xié)議逆向識(shí)別中,同時(shí)結(jié)合協(xié)議上下文,,實(shí)現(xiàn)更高的樣本覆蓋率,,以提高協(xié)議逆向識(shí)別的準(zhǔn)確度,,同時(shí)得到協(xié)議轉(zhuǎn)換的狀態(tài)機(jī)[9]。
參考文獻(xiàn)
[1] 屈婉瑩,,魏為民,,朱蘇榕.工業(yè)控制系統(tǒng)通信協(xié)議安全研究[C].2015年全國(guó)智能電網(wǎng)用戶端能源管理學(xué)術(shù)年會(huì)論文集,上海,,2015:220-224.
[2] 吳禮發(fā),,洪征,潘璠.網(wǎng)絡(luò)協(xié)議逆向分析及應(yīng)用[M].北京:國(guó)防工業(yè)出版社,,2016.
[3] MARSHALL B.The protocol information project[EB/OL].(2011-03-20)[2017-03-14].http://www.4tphi.net/~awal-ters/PI/PI.html.
[4] SHEVERTALOV M,,MANCORIDIS S.A reverse engineering tool for extracting protocols of networked applications[C].Proceedings of the 14th Working Conference on Reverse Engineering,IEEE Computer Society,,Washington DC,,USA,2007:229-238.
[5] CUI W,,KANNAN J,,WANG H J.Discover:automatic protocol reverse engineering from network traces[C].16th USENIX Security Symposium,2007:199-212.
[6] BOSSERT G,,GUIHERY F.Security evaluation of communication protocols in common criteria[EB/OL].(2014-03-20)[2017-03-14].http://www.netzob.org.
[7] 孫芳慧.基于Net-Trace的未知協(xié)議格式逆向技術(shù)研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),,2015.
[8] 張黎.基于Net-Trace的網(wǎng)絡(luò)協(xié)議逆向工程方法研究[D].武漢:華中科技大學(xué),2011.
[9] 蘇彬彬.無(wú)線網(wǎng)絡(luò)環(huán)境下未知協(xié)議語(yǔ)義分析與提取技術(shù)[D].成都:電子科技大學(xué),,2014.
作者信息:
程必成,,劉仁輝,趙云飛,,許鳳凱
(華北計(jì)算機(jī)系統(tǒng)工程研究所 工業(yè)控制系統(tǒng)信息安全技術(shù)國(guó)家工程實(shí)驗(yàn)室,,北京100083)