協(xié)議安全是工業(yè)控制系統(tǒng)信息安全中的一項(xiàng)重要內(nèi)容,非標(biāo)協(xié)議格式的正確識(shí)別是協(xié)議安全分析的基礎(chǔ)。基于工控系統(tǒng)行業(yè)現(xiàn)狀和工控協(xié)議的結(jié)構(gòu)確定、傳輸重復(fù)、語(yǔ)義有限的特性,提出了基于網(wǎng)絡(luò)流量的非標(biāo)準(zhǔn)工控協(xié)議逆向識(shí)別方法,通過(guò)單報(bào)文處理進(jìn)行初步分詞聚類(lèi),多報(bào)文處理進(jìn)行報(bào)文序列比對(duì),關(guān)鍵字段推斷語(yǔ)義,最終得到協(xié)議格式。驗(yàn)證結(jié)果表明,該方法能較好地識(shí)別非標(biāo)工控協(xié)議格式。
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)容。各工控廠(chǎng)商或個(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)指在不依賴(lài)于協(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ù)僅依賴(lài)于所捕獲的網(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)、廠(chǎng)站級(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)總線(xiàn),而在本地和遠(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廠(chǎng)商提供的專(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ì)話(huà),一個(gè)完整會(huì)話(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)等特性,可以?xún)?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ì)話(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ì)話(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)證
以?xún)煞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ī)。
-
協(xié)議
+關(guān)注
關(guān)注
2文章
606瀏覽量
39297 -
通信數(shù)據(jù)
+關(guān)注
關(guān)注
0文章
13瀏覽量
9986 -
工控系統(tǒng)
+關(guān)注
關(guān)注
1文章
100瀏覽量
14612
原文標(biāo)題:【學(xué)術(shù)論文】非標(biāo)工業(yè)控制協(xié)議格式逆向方法研究
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論