文獻(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)的安全性越來越受到全球范圍的關(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)信息主要通過人工逆向的方式來獲得,但這種方法往往耗時(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é)議描述的情況下,,通過對(duì)協(xié)議實(shí)體的網(wǎng)絡(luò)輸入輸出、系統(tǒng)行為和指令執(zhí)行流程進(jìn)行監(jiān)控和分析,,提取協(xié)議語(yǔ)法,、語(yǔ)義和同步信息的過程[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)行,通過對(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ù)字量類型信息比較多,,文本類型信息少,,視頻類信息獨(dú)立傳輸;(2)多數(shù)信息有實(shí)時(shí)性要求,,通信過程要在規(guī)定的時(shí)限內(nèi)完成,,否則就會(huì)造成數(shù)據(jù)質(zhì)量失效;(3)有相對(duì)明確的數(shù)據(jù)生成者與使用者,,許多傳輸過程也在確定的物理環(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),,如開始和截止標(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廠商提供的專用軟件或硬件設(shè)備中,,所以不易獲取協(xié)議處理的可執(zhí)行程序,而獲取工控網(wǎng)絡(luò)中的數(shù)據(jù)流量相對(duì)簡(jiǎn)單,。所以對(duì)工控協(xié)議的逆向分析多采用基于網(wǎng)絡(luò)流量的方式,。根據(jù)工控協(xié)議的特點(diǎn),提出通過主要預(yù)處理,、單報(bào)文處理,、多報(bào)文處理、語(yǔ)義推斷4個(gè)階段逆向分析工控協(xié)議的方法,,如圖2所示,。
2.1 數(shù)據(jù)預(yù)處理
通過接入工控系統(tǒng)網(wǎng)絡(luò)中捕獲網(wǎng)絡(luò)中通信數(shù)據(jù),作為原始數(shù)據(jù)源,。根據(jù)IP地址,、端口號(hào)等分包過濾出需要分析的特定通信實(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)文開始,以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)行聚類劃分。分詞是指識(shí)別區(qū)分出報(bào)文中的一些特殊字段,。單報(bào)文分詞指識(shí)別出僅單個(gè)報(bào)文就可識(shí)別出的字段,,如文本字段、時(shí)間戳字段,、校驗(yàn)碼字段等,。根據(jù)報(bào)文中識(shí)別出的字段屬性對(duì)報(bào)文進(jìn)行聚類劃分,可得到不同類型的報(bào)文組類,。下面主要說明文本字段和時(shí)間戳字段的識(shí)別,。
(1)文本字段識(shí)別。將報(bào)文字節(jié)流中屬于ASCII碼中可打印字符取值范圍內(nèi)的連續(xù)字節(jié),,將其識(shí)別為文本字段,;否則為二進(jìn)制字段[7]。為了避免將屬于二進(jìn)制字段的字節(jié)錯(cuò)誤地識(shí)別為文本字段,,限定文本字段的長(zhǎng)度必須超過設(shè)定的文本長(zhǎng)度最小閾值。由于工控協(xié)議中傳輸文本的數(shù)據(jù)包相對(duì)較少且格式相對(duì)單一,,因此可將含有文本字段的報(bào)文聚為一類進(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ù)性高,、同類型報(bào)文長(zhǎng)度等長(zhǎng)等特性,可以優(yōu)先進(jìn)行同長(zhǎng)報(bào)文比對(duì),,按比對(duì)結(jié)果再分類得到不同格式類型,;再將得到的格式類型相或相近的不同長(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)容的不變段與變化段,。為了避免將同一初始分類組中長(zhǎng)度相同但格式不同的報(bào)文進(jìn)行強(qiáng)行比對(duì),影響比對(duì)的準(zhǔn)確度,,需要設(shè)定距離閾值,,在距離過大時(shí)停止比對(duì),并將之再分類,。依據(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ì)算子類間的距離,,逐步將距離最小的子類進(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ì)后分類的各類中選取少數(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í)字段的取值一般類型較少、變化率小,,且與后續(xù)字段序列的格式相關(guān)聯(lián),,作用域多位于其后區(qū)域。如果該字段變化導(dǎo)致后部所有字段格式發(fā)生變化,,將其識(shí)別為協(xié)議格式字段。
數(shù)據(jù)字段是指對(duì)報(bào)文結(jié)構(gòu)和其他關(guān)鍵字段影響不大或沒有直接影響的可變字段,,一般指報(bào)文的負(fù)載,。特征是隨機(jī)性強(qiáng),且變化無規(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é)議格式類型,,如圖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í)別的方法,。通過對(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í)別率較低。未來研究方向?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ǎng)絡(luò)環(huán)境下未知協(xié)議語(yǔ)義分析與提取技術(shù)[D].成都:電子科技大學(xué),,2014.
作者信息:
程必成,劉仁輝,,趙云飛,,許鳳凱
(華北計(jì)算機(jī)系統(tǒng)工程研究所 工業(yè)控制系統(tǒng)信息安全技術(shù)國(guó)家工程實(shí)驗(yàn)室,北京100083)