国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

工控協(xié)議逆向分析技術研究與挑戰(zhàn)

2022-05-09 05:03付安民季宇凱王占豐
計算機研究與發(fā)展 2022年5期
關鍵詞:工控字段報文

黃 濤 付安民 季宇凱 毛 安 王占豐 胡 超

1(南京理工大學計算機科學與工程學院 南京 210094) 2(廣西可信軟件重點實驗室(桂林電子科技大學) 廣西桂林 541004) 3(南京萊克貝爾信息技術有限公司 南京 210007) 4(解放軍陸軍工程大學指揮控制工程學院 南京 210007)

隨著工業(yè)數(shù)字化、網(wǎng)絡化、智能化的快速發(fā)展,工業(yè)互聯(lián)網(wǎng)已經(jīng)成為國家先進制造的重要基礎設施,其安全問題也逐漸受到重視,尤其是工業(yè)控制系統(tǒng)(industrial control system, ICS)安全已成為實施制造強國和網(wǎng)絡強國戰(zhàn)略的重要保障[1-2].然而,日益頻發(fā)的ICS安全事件表明ICS已經(jīng)存在大量安全漏洞和隱患[3-5],如2017年烏克蘭、俄羅斯等多國的銀行、電力、通信系統(tǒng)均遭受Petya勒索病毒襲擊,2019年委內(nèi)瑞拉遭受電網(wǎng)攻擊,2021年伊朗國家鐵路系統(tǒng)遭受網(wǎng)絡入侵等.ICS通過專有的工業(yè)控制協(xié)議(簡稱“工控協(xié)議”)實現(xiàn)各組件間的通信,進而控制工控網(wǎng)絡內(nèi)的各種工控設備.然而,由于商業(yè)性和安全性等原因[6],大多數(shù)工控設備廠商都不提供公開協(xié)議文檔,造成ICS中存在大量私有、非標準的工控協(xié)議[7],為ICS的網(wǎng)絡行為管理、模糊測試[8]、入侵檢測[9-11]帶來了巨大挑戰(zhàn).

協(xié)議逆向工程(protocol reverse engineering, PRE)是指在不依賴協(xié)議描述的情況下,通過對協(xié)議實體的網(wǎng)絡輸入/輸出、系統(tǒng)行為和指令執(zhí)行流程進行監(jiān)控和分析,提取協(xié)議語法、語義和同步信息,從而推斷出未知協(xié)議的消息格式和狀態(tài)機模型的過程[12].最初的PRE技術完全基于人工分析的方式進行,需要耗費大量時間和精力.而后由于PRE在網(wǎng)絡入侵檢測、深度數(shù)據(jù)包分析、模糊測試等領域應用效果顯著,逐漸引發(fā)眾多學者研究,PRE技術也因此得到迅速發(fā)展,由最初的“人工分析”過渡到目前的“自動化分析”,并逐漸發(fā)展成2個分支[12-13]:1)基于程序執(zhí)行的協(xié)議逆向分析技術,通過監(jiān)視協(xié)議實體對消息的處理過程以及各消息片段的使用方式,獲取協(xié)議的結構及字段語義,比如2007年Caballero等人提出Polyglot[14],基于動態(tài)污點技術完成對協(xié)議消息的字段劃分;2)基于報文序列的協(xié)議逆向分析技術,通過對網(wǎng)絡內(nèi)的目標報文流量進行分析,獲取協(xié)議的結構及字段語義,并且隨著自然語言處理、機器學習等人工智能技術的不斷成熟,這類協(xié)議逆向分析技術也得到了迅速發(fā)展[15],不僅研究對象從文本協(xié)議擴展到二進制協(xié)議,而且方法類型也不斷豐富,比如基于序列比對的Discoverer[16],NetZob[17],MSA-HMM[18]等方法,基于概率模型的Biprominer[19],ProGraph[20],HsMM[21]等方法,基于頻繁集的AutoReEngine[22],SPREA[23],HIERARCHICAL CSP[24]方法,以及基于語義分析的FieldHunter[25],WASp[26]等方法.此外,協(xié)議逆向分析方法也從最初的字段劃分和結構識別逐漸向語義推斷、狀態(tài)機重構拓展,如PETX[27],ReverX[28],BFS[29]等方法.然而,相比于互聯(lián)網(wǎng)系統(tǒng),ICS對工控設備的操作精度和響應速度通常要求更高,但那些底層工控設備的計算性能卻相對有限,難以處理較為復雜的工控指令和數(shù)據(jù)[1,3].因此,為了保證ICS的實時性和穩(wěn)定性,工控協(xié)議通常采用二進制編碼,并且功能相對固定,結構也比較簡潔,甚至只通過一個或幾個比特來表示相應功能,導致目前大多數(shù)針對互聯(lián)網(wǎng)協(xié)議的逆向分析方法無法直接適用于工控協(xié)議[12,30],但工控協(xié)議的這些特征也為其逆向分析提供了一定依據(jù).

結合工控協(xié)議的共性特征,近幾年不斷有學者基于互聯(lián)網(wǎng)協(xié)議逆向分析技術,提出針對工控協(xié)議的逆向分析方法.一方面,部分學者基于程序執(zhí)行對工控協(xié)議進行逆向分析,比如2018年魏驍?shù)热薣30]和Chen等人[31]分別都借助污點分析技術,實現(xiàn)對工控協(xié)議的字段劃分和結構識別,并具有較高的識別準確度,但由于這類方法對ICS的穩(wěn)定性影響和可控性要求都比較高,且實施和分析難度也較大,目前該方向的研究仍相對較少.另一方面,部分學者基于報文序列對工控協(xié)議進行逆向分析,主要分為2類方法:1)主要針對互聯(lián)網(wǎng)協(xié)議逆向分析技術進行改進或重新設計,以實現(xiàn)工控協(xié)議的自動化逆向分析.比如Wu等人[32]通過pair-HMM方法對序列比對算法進行改進,以完善相鄰字段的對比,提高工控協(xié)議格式提取的效率和準確度;Wang等人[33]針對基于N-gram模型的協(xié)議逆向分析方法進行改進,提出V-gram模型將協(xié)議字段識別精度提高到“半字節(jié)”.然而,這類方法雖然都能夠?qū)崿F(xiàn)工控協(xié)議格式的自動化提取,但只有較少方法能夠進一步完成工控協(xié)議字段的語義推斷.2)借助專家的先驗知識,對現(xiàn)有公開工控協(xié)議的關鍵字段特征進行分析,歸納出相應字段的“啟發(fā)式規(guī)則”,以提前實現(xiàn)對部分關鍵字段的識別,比如MSERA[34],IPART[35],IPRFW[36]等方法.這類人機協(xié)同型方法不僅能夠進一步提高工控協(xié)議格式提取的效率和準確度,而且還有利于工控協(xié)議字段的語義推斷.

綜上所述,本文將系統(tǒng)性研究和分析目前工控協(xié)議的逆向分析技術,主要將其分為兩大類:基于程序執(zhí)行的分析技術和基于報文序列的分析技術.再重點根據(jù)“人機參與程度”將基于報文序列的方法分為全自動型方法和人機協(xié)同型方法.本文具體包括4部分內(nèi)容:

1) 重點針對2種典型工控協(xié)議Modbus和DNP3的結構特征進行詳細分析,進而歸納工控協(xié)議的共性特征;

2) 闡述基于程序執(zhí)行和基于報文序列這2種工控協(xié)議逆向分析框架的基本流程與特點,并從多個角度全面討論各自框架中互聯(lián)網(wǎng)協(xié)議逆向分析方法和工控協(xié)議逆向分析方法的區(qū)別;

3) 分別針對基于程序執(zhí)行和基于報文序列的工控協(xié)議逆向分析方法展開深入剖析,并重點從人機協(xié)同程度和協(xié)議格式提取方式這2個角度,對基于報文序列的工控協(xié)議逆向分析方法進行分類討論與對比分析;

4) 討論和分析目前各種工控協(xié)議逆向分析方法的特點和不足,并進一步分析和展望工控協(xié)議逆向分析技術的未來可能發(fā)展方向.

1 工控協(xié)議分析及其特征

相比于互聯(lián)網(wǎng)協(xié)議,雖然工控協(xié)議目前仍沒有統(tǒng)一的設計規(guī)范,但基于ICS的高精度、高實時性和高可靠性的要求,以及底層工控設備相對有限的計算性能,通常工控協(xié)議的結構更加簡明,功能更加固定[35-36].因此,針對工控協(xié)議的典型特征進行分析和歸納,將非常有助于工控協(xié)議的逆向研究[37].

1.1 典型工控協(xié)議分析

目前比較常見的公開工控協(xié)議主要包括:工控標準協(xié)議Modbus、工業(yè)以太網(wǎng)協(xié)議Ethemet/IP、輸配電通信協(xié)議IEC104/IEC61850系列協(xié)議簇、分布式網(wǎng)絡協(xié)議DNP3和開放式實時以太網(wǎng)協(xié)議EtherCAT[38]等.本節(jié)將重點針對Modbus[39]和DNP3[40]這2種經(jīng)典工控協(xié)議的結構特征進行分析.

1) Modbus

Modbus是1979年Modicon公司為可編程邏輯控制器(PLC)通信而提出的一種開放串行通信協(xié)議,由于其在工業(yè)網(wǎng)絡中易于部署和擴展,目前被廣泛采用,并成為工業(yè)領域通信協(xié)議的業(yè)界標準[39].

Modbus協(xié)議是一種基于主/從架構的協(xié)議,用于Modbus節(jié)點之間帶有發(fā)送請求和讀取響應類型的消息通信,在一個數(shù)據(jù)鏈路上通常只能處理247個地址,限制了可以連接到主控站點的從機數(shù)量(Modbus/TCP除外).Modbus信息都以“幀”的方式傳輸,每個信息幀有確定的起始點和結束點,便于接收設備識別,但目前幾乎所有的Modbus實現(xiàn)都是官方標準的變體,它們在開始/結束標志、校驗模式和格式等方面都存在一定差異,也進而導致不同供應商的設備之間可能無法正確通信[41].目前常見的Modbus協(xié)議變體主要包括3種:Modbus RTU,Modbus ASCII和Modbus/TCP.其中,Modbus/TCP基于TCP/IP開發(fā),工業(yè)設備通過以太網(wǎng)進行數(shù)據(jù)交互,其數(shù)據(jù)幀格式與RTU非常類似,并去掉其中的校驗碼,因此此處僅重點介紹Modbus的RTU和ASCII協(xié)議.

① Modbus RTU

Modbus RTU是一種采用二進制編碼的Modbus實現(xiàn)方式,結構相對緊湊.在RTU模式下,整個信息幀必須作為一個連續(xù)的流傳輸,并且不同的消息幀之間至少需要相隔傳輸3.5 B所需要的空閑時間,如果小于該時間,接收設備會將此消息作為前一信息幀的延續(xù).Modbus RTU采用CRC校驗碼,以保證消息傳輸?shù)目煽啃?如圖1所示,在格式方面,Modbus RTU信息幀主要包括4個字段:設備地址、功能碼、數(shù)據(jù)和CRC校驗字段.

Fig. 1 Modbus RTU protocol structure圖1 Modbus RTU協(xié)議結構

其中,起始位和結束位分別表示3.5 B以上的消息間隔時間;設備地址表示從機地址,即需要對該消息進行回應的從機,其他非該地址的從機可以不回應;功能碼表示具體操作,比如“06”代表“寫操作”;數(shù)據(jù)代表需要操作的具體數(shù)據(jù);CRC檢驗用于檢驗該消息在傳輸過程中是否出錯,主要根據(jù)前3個字段計算相應的CRC檢驗碼.

② Modbus ASCII

Modbus ASCII是一種人類可讀的、冗長的表示方式.由于國內(nèi)工業(yè)控制中很少采用ASCII碼作為標準,因此Modus ASCII在國內(nèi)的工控領域運用很少.在Modbus ASCII模式下,每個字節(jié)都被拆分成2個ASCII字符即2 B進行發(fā)送,因此其發(fā)送量是RTU模式的2倍.Modbus ASCII消息幀通過特定字符判定起始位置,以英文冒號“:”(0x3A)表示開始,以“回車”(0x0D)和“換行”(0x0A)表示結束,各占1 B和2 B .最后采用LRC檢驗,保證消息傳輸?shù)目煽啃裕琈odbus ASCII的詳細結構如圖2所示.其中,數(shù)據(jù)數(shù)量表示后續(xù)數(shù)據(jù)字段中的字節(jié)個數(shù),其他字段含義和RTU模式類似.

Fig. 2 Modbus ASCII protocol structure圖2 Modbus ASCII協(xié)議結構

2) DNP3

DNP3協(xié)議是一種分布式網(wǎng)絡協(xié)議,解決了SCADA行業(yè)中協(xié)議混雜、沒有公認標準的問題.SCADA可以通過該協(xié)議與主站、RTU及IED進行通信,針對電磁干擾、元件老化等惡劣環(huán)境具有一定可靠性,并通過CRC校驗保證數(shù)據(jù)的準確性.目前DNP3協(xié)議已被廣泛應用于各類ICS中,如電力、水處理等行業(yè)[40].

DNP3協(xié)議完全基于TCP/IP,并具有類似OSI的協(xié)議棧結構[42],主要包括數(shù)據(jù)鏈路層、傳輸控制層和應用層,且各層數(shù)據(jù)單元的結構特征基本類似.因此,此處僅以數(shù)據(jù)鏈路層的數(shù)據(jù)單元為例,分析DNP3協(xié)議報文的結構特征,如圖3所示.

Fig. 3 Data unit structure of data link layer in DNP3 protocol圖3 DNP3協(xié)議中數(shù)據(jù)鏈路層的數(shù)據(jù)單元結構

其中,起始位表明數(shù)據(jù)開始的起始字節(jié),固定為0x05 0x64;控制字段代表該消息的控制信息,精確到1 b,其詳細結構如圖4所示.

Fig. 4 DNP3 control field structure圖4 DNP3控制字段結構

第0位:方向(direction,DIR).表示發(fā)送的方向.

第1位:源發(fā)標志位(primary,PRI).表示發(fā)送設備是主設備還是從設備,其中1表示主設備,0表示從設備.

第2位:幀的計數(shù)位(frame count bit,FCB).用于糾錯,如果是response則為保留位.

第3位:幀計數(shù)有效位(frame count valid,FCV).表示FCB是否有效.如果FCB=0,表示FCB未開啟;如果是response則為數(shù)據(jù)流控制位(data flow control,DFC),表示數(shù)據(jù)鏈路層是否發(fā)生緩沖區(qū)溢出.

第4~7位:功能碼(FunctionCode).根據(jù)主從設備,代表不同含義.比如,對于主設備,0代表鏈路重置;但對于從設備,0代表同意.

1.2 工控協(xié)議特征

通過對Modbus RTU, Modbus ASCII和DNP3等典型工控協(xié)議的結構特征進行分析可知,目前這些工控協(xié)議雖然還沒有統(tǒng)一的設計規(guī)范,但在編碼、結構、周期性等方面都存在一些共性特征[43],主要包括7方面:

1) 二進制編碼.為保證ICS的高實時性和可用性,工控協(xié)議通常不加密,大多數(shù)都采用二進制編碼,少量采用ASCII進行編碼.

2) 結構簡明.即使部分工控協(xié)議存在協(xié)議棧的多層結構,如DNP3,S7Comm協(xié)議等,但每一層協(xié)議的數(shù)據(jù)報文結構都較為簡明,功能相對固定,長度比較短,總體呈現(xiàn)一種扁平化的結構,只包含頭部和數(shù)據(jù),并且各字段之間沒有額外的關鍵字或分隔符.

3) 字段精度較細.工控協(xié)議字段的劃分顆粒度通常較細,雖然字段長度通常為一個字節(jié)的整數(shù)倍,但字段內(nèi)的功能劃分可能會精確到比特級,比如DNP3的控制字段.

Fig. 5 Framework of industrial control protocol reverse based on taint analysis圖5 基于污點分析的工控協(xié)議逆向框架

4) 周期性強.工控協(xié)議報文傳輸通常都具有較強的周期性,特別是交互信息和控制信息,并且同類型協(xié)議報文在長度和格式方面存在相似性.

5) 起始標志明顯.工控協(xié)議數(shù)據(jù)幀具有明顯的起始標志,通常采用時間間隔或者標志位等方式.

6) 差錯校驗.為了保證數(shù)據(jù)幀傳輸?shù)恼_率,大多數(shù)工控協(xié)議都存在差錯校驗字段,通常采用CRC或者LRC校驗.但部分基于TCP/IP以太網(wǎng)的工控協(xié)議通常會采用TCP/IP和鏈路層校驗機制來校驗分組交換的準確性,如Modbus/TCP.

7) 狀態(tài)機簡單.ICS中通常是主機發(fā)送命令,從機響應并執(zhí)行命令,通信模式較為簡單,因此,工控協(xié)議一般只有簡單的狀態(tài)機.

針對工控協(xié)議的這些共性特征,一方面,可以基于互聯(lián)網(wǎng)協(xié)議的逆向分析方法,進一步改進或重新設計針對工控協(xié)議的自動化逆向分析方法;另一方面,也可以通過專家分析,歸納工控協(xié)議各種特征字段的啟發(fā)式規(guī)則,以進一步提高工控協(xié)議的逆向分析效果和準確性.

2 工控協(xié)議逆向分析框架

工控協(xié)議逆向分析技術作為近幾年協(xié)議逆向技術在工控領域的具體應用[44],幾乎沒有經(jīng)歷最初的基于人工分析的階段,目前主要分為2種方式:基于程序執(zhí)行和基于報文序列的工控協(xié)議逆向分析技術[15,45].

2.1 基于程序執(zhí)行的分析框架

工控程序執(zhí)行期間,協(xié)議報文中不同字段通常會被各自的函數(shù)調(diào)用,并且相同函數(shù)通常也只調(diào)用相同字段的數(shù)據(jù).因此,基于程序執(zhí)行的工控協(xié)議逆向分析技術可以通過跟蹤并分析目標工控協(xié)議程序執(zhí)行期間函數(shù)堆棧、指令序列、數(shù)據(jù)、寄存器等信息的變化情況,完成工控協(xié)議的字段劃分和語義推斷[46],而工控協(xié)議的結構簡明、周期性強等特征也更加有利于這類方法的實施.

目前針對工控協(xié)議程序的分析主要借助污點分析思想實現(xiàn),并分為靜態(tài)污點分析和動態(tài)污點分析,它們的區(qū)別主要在于是否需要運行程序.前者可以不運行程序,僅需要對程序源代碼進行分析[47];而后者需要運行程序,通過調(diào)試、代碼注入等方式[48]對目標程序進行分析[49].但是由于工控程序源代碼通常較難獲取等原因,目前大多數(shù)都是借助動態(tài)污點分析實現(xiàn)對工控程序函數(shù)、指令和數(shù)據(jù)的跟蹤與分析[50],主要分為目標監(jiān)控、目標跟蹤與分析和協(xié)議推斷3個階段[51],如圖5所示.首先,確定可監(jiān)控的目標協(xié)議程序,將其二進制程序或協(xié)議報文作為監(jiān)控目標;然后,通過動態(tài)污點分析方法與插樁技術跟蹤并記錄目標程序運行期間的函數(shù)、指令和字段數(shù)據(jù)的執(zhí)行軌跡;最后,結合它們之間的“共現(xiàn)”情況,比如,某些協(xié)議數(shù)據(jù)字節(jié)在哪些函數(shù)中出現(xiàn)或者某些函數(shù)的二進制指令調(diào)用過哪些協(xié)議字節(jié),進而推斷出工控協(xié)議字段的邊界,并結合工控協(xié)議字段的特征,進一步完成工控協(xié)議報文的格式提取、語義推斷及狀態(tài)機重構.

Table 1 Comparison of Different Types of PRE Methods Based on Program Execution

然而,這類基于程序執(zhí)行的分析技術要么需要獲取工控執(zhí)行程序的源代碼,要么需要對工控程序進行反復運行與調(diào)試.因此,相比于互聯(lián)網(wǎng)系統(tǒng),對具有高可靠性、高穩(wěn)定性和高實時性等要求的ICS來說,運用這類分析方法通常都難以實現(xiàn).表1分別從5個角度將其與同類型的互聯(lián)網(wǎng)協(xié)議逆向分析技術進行對比.

1) 在協(xié)議程序獲取難度方面.由于部分基于程序執(zhí)行的方法需要對執(zhí)行程序的二進制源代碼進行分析,因此相比于互聯(lián)網(wǎng)應用程序,ICS的程序執(zhí)行文件不僅更加難以獲取,而且各種二進制程序文件格式也不統(tǒng)一,還需要做進一步兼容.

2) 在目標程序可控程度方面.由于目前互聯(lián)網(wǎng)協(xié)議早已在各種輕量級且相對靈活的應用程序上成熟運行,而工控協(xié)議主要應用于中大型且較為專業(yè)的ICS中,因此,相比于互聯(lián)網(wǎng)系統(tǒng),這些ICS更加難以控制.

3) 在對系統(tǒng)穩(wěn)定性的影響方面.相比于互聯(lián)網(wǎng)應用程序,ICS通常要求更高的可靠性、穩(wěn)定性和實時性,因此針對目標程序的反復調(diào)試更容易對工控程序的穩(wěn)定性等造成影響.

4) 在執(zhí)行過程監(jiān)控難度方面.相比于ICS,不僅互聯(lián)網(wǎng)設備的軟硬件支持比較完善,而且針對互聯(lián)網(wǎng)程序執(zhí)行過程監(jiān)控的工具和手段也更加全面、成熟,所以互聯(lián)網(wǎng)程序的執(zhí)行過程更易于監(jiān)控.

5) 在指令序列分析難度方面.相比于互聯(lián)網(wǎng)協(xié)議,工控協(xié)議具有結構簡明、周期性強、狀態(tài)機簡單等特點,所以工控協(xié)議指令序列更易于分析.

綜合以上對比分析可以明顯看出,相比于互聯(lián)網(wǎng)協(xié)議,雖然基于程序執(zhí)行的工控協(xié)議逆向分析方法能夠準確監(jiān)控指令執(zhí)行過程中函數(shù)與數(shù)據(jù)調(diào)用以及內(nèi)存變化等情況,且具有較高的識別精度與準確度,但是該類方法通常需要獲取工控程序源代碼或反復調(diào)試程序,比較難以實施.因此,目前針對該方向的研究并不是很多,該類方法主要應用于一些小型的輕量級ICS.

2.2 基于報文序列的分析框架

基于報文序列的工控協(xié)議逆向分析技術主要針對工控協(xié)議通信實體間的網(wǎng)絡報文流量進行分析,重點結合工控協(xié)議的特征,通過序列比對、聚類等算法完成協(xié)議的格式提取等操作.由于這類方法僅需要收集和分析實體間的通信流量,不僅易于實施,而且對目標系統(tǒng)的穩(wěn)定性等影響都比較小,因此成為目前研究較多的方法.

該類技術的框架流程基本類似于互聯(lián)網(wǎng)協(xié)議逆向分析技術[52],但為了更好地適用于工控協(xié)議,部分學者將工控協(xié)議的共性特征引入到原有的互聯(lián)網(wǎng)協(xié)議逆向分析框架,改進或重新設計了工控協(xié)議逆向分析的部分環(huán)節(jié)(如格式提取),形成一種“全自動型”的工控協(xié)議逆向分析技術,具有較高的自動性和通用性.而另一部分學者基于公開工控協(xié)議中各種關鍵字段的特征,歸納出相應的“啟發(fā)式規(guī)則”,并通過“人工干預”的方式提前識別私有工控協(xié)議中的部分關鍵字段,以進一步提高后續(xù)逆向分析環(huán)節(jié)的效率和準確率,進而形成一種“人機協(xié)同型”的工控協(xié)議逆向分析技術.但值得注意的是,這2類技術都將研究重心集中在工控協(xié)議的“格式提取”階段,特別是關鍵字段的劃分,因為該階段的準確性直接關系到后續(xù)“語義推斷”和“狀態(tài)機重構”的準確性[53].

基于報文序列的工控協(xié)議逆向分析技術主要包括輸入預處理、格式提取、語義推斷和狀態(tài)機重構4個階段[15],其中,格式提取可以進一步分為字段劃分和結構識別.具體框架流程如圖6所示.

Fig. 6 Framework of industrial control protocol reverse based on packet sequence圖6 基于報文序列的工控協(xié)議逆向框架

第1階段是輸入預處理.首先根據(jù)目標協(xié)議實體特征對網(wǎng)絡流量數(shù)據(jù)進行過濾,將其劃分為不同的會話;然后再結合工控協(xié)議的基本特征(如報文長度、報文相似度等),對目標報文序列進行初步聚類,得到多組報文序列集合.

第2階段是格式提取.主要包括字段劃分和結構識別2個步驟.首先針對每組同類型的報文序列集合,結合工控協(xié)議關鍵字段的特征,使用序列比對、統(tǒng)計分析、概率模型、深度學習等算法,完成工控特征字段的劃分;再重點通過各種聚類算法,完成工控協(xié)議的結構識別.

第3階段是語義推斷.針對每個聚類中同一種協(xié)議結構,結合工控協(xié)議各種關鍵字段的特征(如位置、長度、數(shù)值、熵等)和上下文信息,推斷相應字段的語義.因此該階段通常要求對工控協(xié)議的應用背景和設計規(guī)范等先驗知識具有一定的了解,但目前工控協(xié)議領域仍缺少統(tǒng)一的設計規(guī)范,并且各工控廠家很少公開各自的協(xié)議文檔,導致沒有足夠的先驗知識,使得語義推斷仍然是工控協(xié)議逆向分析的難點.

第4階段是狀態(tài)機重構.消息數(shù)據(jù)幀中通常存在一些能夠反映消息狀態(tài)的狀態(tài)字段,根據(jù)不同消息的狀態(tài)字段取值和各類消息之間的順序,初步完成狀態(tài)機構建,隨后再進一步完成狀態(tài)機化簡.但是一方面由于該階段比較依賴格式提取和語義推斷的結果,另一方面由于大多數(shù)工控協(xié)議只有簡單的狀態(tài)機,因此目前針對工控協(xié)議狀態(tài)機重構的研究也比較少.

基于報文序列的協(xié)議逆向分析技術通常對報文樣本的覆蓋率和協(xié)議規(guī)范等先驗知識具有一定的要求,因此,對于穩(wěn)定性較高且缺少協(xié)議設計先驗知識的ICS來說,針對工控協(xié)議進行逆向分析仍具有一定難度.表2分別從5個角度將其與同類型互聯(lián)網(wǎng)的協(xié)議逆向分析技術進行對比.

1) 在報文樣本覆蓋率方面,ICS通常具有較高的穩(wěn)定性和可靠性,因此一些特殊的異常流量通常較難收集,如系統(tǒng)故障或重啟等指令信息,并且人為觸發(fā)的代價比較大.而互聯(lián)網(wǎng)系統(tǒng)往往對程序的穩(wěn)定性與可靠性要求較低,通過人為觸發(fā)等方式可以收集到更加全面的報文樣本,具有比工控協(xié)議更高的樣本覆蓋率,更加有助于協(xié)議逆向分析.

Table 2 Comparison of Different Types of PRE Methods Based on Packet Sequence

2) 在協(xié)議規(guī)范和先驗知識方面,目前互聯(lián)網(wǎng)協(xié)議已經(jīng)具有統(tǒng)一的協(xié)議規(guī)范和標準,并且大多數(shù)互聯(lián)網(wǎng)協(xié)議也都是公開的,如IP,TCP等協(xié)議,為互聯(lián)網(wǎng)協(xié)議逆向分析提供了較多的先驗知識.而目前各工控設備廠商基于安全性和商業(yè)性等考慮,大多數(shù)都自行設計各自的工控協(xié)議,不僅沒有統(tǒng)一的工控協(xié)議規(guī)范,而且也不對外公開,導致工控協(xié)議的先驗知識相對較少,遠不如互聯(lián)網(wǎng)協(xié)議.

3) 在字段識別精度要求方面,大多數(shù)互聯(lián)網(wǎng)協(xié)議(含二進制協(xié)議)的字段精度為字節(jié),一個字段通常需要使用多個字節(jié)表示.然而,由于工控硬件和網(wǎng)絡等性能通常都相對有限,而ICS又具有較高的實時性等要求,導致工控協(xié)議的字段劃分需要更加精細,通常為1個或幾個比特,這為工控協(xié)議逆向分析提出了更高的識別精度要求.

4) 在協(xié)議結構復雜性方面,由于工控設備通常只需要高效地完成各自指定的操作,功能相對單一,且重復性較高,因此,相比于互聯(lián)網(wǎng)協(xié)議,大部分工控協(xié)議都具有結構簡明、周期性強和狀態(tài)機簡單等特點,非常有利于其逆向分析.

5) 在協(xié)議數(shù)據(jù)加密方面,相比于開放的互聯(lián)網(wǎng)環(huán)境,工控網(wǎng)絡通常比較封閉,所以基于安全性考慮,目前很多互聯(lián)網(wǎng)協(xié)議都存在加密現(xiàn)象,但針對工控協(xié)議的加密現(xiàn)象仍比較少,這比較有利于工控協(xié)議的逆向分析.

綜合以上對比分析可以明顯看出,在樣本覆蓋率、協(xié)議規(guī)范與先驗知識和字段識別精度方面,互聯(lián)網(wǎng)協(xié)議的逆向分析都比較有優(yōu)勢,而工控協(xié)議的逆向分析僅在協(xié)議結構復雜性和協(xié)議數(shù)據(jù)加密方面具有一定優(yōu)勢.因此,目前大多數(shù)基于報文序列的工控協(xié)議逆向分析方法都主要結合工控協(xié)議的結構特征進行設計.

此外,表3重點針對工控協(xié)議的不同類型協(xié)議逆向分析技術進行對比,結果表明:僅在識別精度與準確度方面,基于程序執(zhí)行的工控協(xié)議逆向分析技術具有較好的性能;在方法實施難度、對系統(tǒng)影響和自動化程度方面,基于報文序列的工控協(xié)議逆向分析技術都具有明顯的優(yōu)勢.

Table 3 Comparison of Different Types of PRE Methods for Industrial Control Protocols

2.3 小 結

本節(jié)重點闡述了基于程序執(zhí)行和基于報文序列這2類工控協(xié)議逆向分析框架的基本流程與特點,并從多個角度將工控協(xié)議逆向分析技術與同類型的互聯(lián)網(wǎng)協(xié)議逆向分析技術進行對比分析,總結各自的優(yōu)勢和劣勢.其次,本節(jié)針對工控協(xié)議逆向分析技術,進一步剖析基于程序執(zhí)行和基于報文序列這2類分析技術的優(yōu)勢和劣勢.可以明顯看出基于報文序列的逆向分析技術更加易于實施,且對ICS影響較小.因此目前針對該類技術的研究比較多,并旨在進一步提高對工控協(xié)議的識別精度和準確度.

3 基于程序執(zhí)行的工控協(xié)議逆向

根據(jù)第2節(jié)的分析,基于程序執(zhí)行的工控協(xié)議逆向分析技術通過跟蹤并分析目標工控程序執(zhí)行期間指令序列、數(shù)據(jù)、寄存器等信息的變化情況,實現(xiàn)工控協(xié)議的格式提取和語義推斷,并且此類大多數(shù)方法都是借助污點分析的思想,如Polyglot[14],AutoFormat[54],Prospex[55]等.

2018年魏驍?shù)热薣30]提出了一種基于靜態(tài)二進制分析的工控協(xié)議解析方法,將污點分析思想應用于靜態(tài)二進制分析過程[47,56],主要包括數(shù)據(jù)預處理、交叉引用分析、協(xié)議幀重構和語義提取4個階段:1)讀取IDA Pro反匯編后的匯編代碼,并通過代碼交叉引用和源于動態(tài)污點的數(shù)據(jù)交叉引用剔除與通信過程無關的函數(shù);2)調(diào)用IDC函數(shù),獲取交叉引用信息和函數(shù)間的依賴關系,并推斷函數(shù)類型;3)基于前一階段推斷結果,判斷函數(shù)代碼特征,完成對目標協(xié)議幀的重構與分類,形成記錄初步字段結構和常量字段值的幀結構;4)針對各協(xié)議幀字段的特征,如校驗域字段通常伴隨大量移位運算,完成協(xié)議幀的語義信息提取.

2018年Chen等人[31]重點根據(jù)“相同協(xié)議字段的字節(jié)在內(nèi)存中通常具有相同傳播軌跡”的原理,提出一種自動識別工控協(xié)議字段邊界的方法——AutoBoundary,借助動態(tài)污點分析的思想[49],對受污染的數(shù)據(jù)進行跟蹤,并建立對應的內(nèi)存?zhèn)鞑?memory propagation, MP)樹,以記錄每個消息字節(jié)在傳播過程中的內(nèi)存變化軌跡,再引入分支貢獻以量化MP樹中不同長度分支的權重,對相同分支進行合并以壓縮MP樹,提高后續(xù)字段邊界識別的效率.然后Chen等人結合分支中各節(jié)點的屬性,通過基于節(jié)點的序列對齊算法計算不同MP樹中各個分支間的相似度和各個MP樹之間的相似度,以相鄰2字節(jié)為對象,對所有消息字節(jié)進行聚類,劃分為不同集群,而集群之間就是協(xié)議字段邊界.

總體而言,目前基于程序執(zhí)行的工控協(xié)議逆向分析技術仍然主要借助污點分析的思想對工控協(xié)議程序執(zhí)行過程進行監(jiān)控,重點分析程序執(zhí)行過程中指令函數(shù)、字段數(shù)據(jù)和內(nèi)存的變化情況,通過它們的共現(xiàn)、依賴等關系,不斷推測工控協(xié)議字段的結構和語義,實現(xiàn)對工控協(xié)議的逆向分析.由于這類方法能夠?qū)た爻绦虻膱?zhí)行過程進行精確監(jiān)控,所以通常都具有較高的準確性,并且相比于互聯(lián)網(wǎng)協(xié)議,工控協(xié)議結構簡明、周期性強和狀態(tài)機簡單等特點,也能進一步提高這類分析方法的分析效果.根據(jù)污點分析原理不同,目前這類方法主要分為基于靜態(tài)污點分析和基于動態(tài)污點分析2種類型.其中,基于靜態(tài)污點分析的方法[30]需要獲取工控程序的源代碼,僅以只讀方式訪問程序二進制文件,在保證不破壞ICS穩(wěn)定性的前提下獲取工控協(xié)議的語義,并具有針對性強、通用性好等特點,但對于安全性要求較高的工控程序來說,獲取工控程序的二進制文件具有很大難度;而基于動態(tài)污點分析的方法[31]雖然不需要程序源代碼,但對樣本覆蓋率具有較高要求,特別是一些異常樣本(如重啟、崩潰等),所以需要反復調(diào)試程序,這對ICS的穩(wěn)定性和可靠性具有較大影響,因此只能適用于一些對穩(wěn)定性和可靠性要求較低的小型ICS.因此,基于程序執(zhí)行的工控協(xié)議逆向分析技術雖然具有較高的準確性,但實施條件通常較為嚴苛,特別是對于安全性、穩(wěn)定性和可靠性要求較高的ICS,導致目前該方向的研究仍比較少.

4 基于報文序列的全自動型工控協(xié)議逆向

相比于基于程序執(zhí)行的逆向分析技術,基于報文序列的逆向分析技術更易于實施,且對ICS的影響較小.因此部分學者將工控協(xié)議的共性特征引入現(xiàn)有的互聯(lián)網(wǎng)協(xié)議逆向分析框架,并重點對“格式提取”環(huán)節(jié)進行改進或重新設計,使其更加適用于工控協(xié)議,形成一種全自動型的分析技術,完全通過機器或者僅通過少量的人工協(xié)助,完成對工控協(xié)議的逆向分析[57].本節(jié)主要根據(jù)格式提取方式的不同將其分為4類[15]:基于序列比對的方法、基于頻繁集的方法、基于概率模型的方法和基于深度學習的方法.

4.1 基于序列比對的方法

針對工控領域中的無人機專用飛行控制協(xié)議,2017年Ji等人[58]重點結合飛行控制協(xié)議的結構特征和高實時性要求,定制了一種自動化逆向方法.首先,針對飛行控制協(xié)議結構簡明,且關鍵字段和動態(tài)字段長度固定等特征,分別按照報文長度和相似度距離對消息進行聚類;然后,結合無人機的高實時性要求,以及動作執(zhí)行與命令間隔時間基本一致的原理,通過各命令集群的累計誤差分析飛行控制指令含義;再次,通過序列比對算法提取命令的結構格式,并推斷各字段的語義;最后,通過校驗字段通常位于報文末尾的特征,對比特級的校驗字段位置進行推斷,并提出一種校驗值生成矩陣的方法,以驗證所推斷的校驗字段的正確性.但是該方法存在一定缺陷,即在推斷無人機飛行控制命令的含義時,要求終端無人機必須實時可見且完全可控,而該要求在一般中大型ICS中較難實現(xiàn),因此本方法僅適用于完全可控的小規(guī)模ICS.

2019年Wu等人[32]發(fā)現(xiàn)工控協(xié)議每個字段不僅具有明顯的字段邊界和多樣性特征,而且各自還彼此聯(lián)系,該特性非常適用于隱馬爾可夫(hidden Markov model, HMM)模型[59].因此,他們提出了一種基于pair-HMM的工控協(xié)議逆向分析方法,在格式提取階段,通過pair-HMM對序列比對算法進行改進,以提高工控協(xié)議相鄰字段間的比對效果,構造工控協(xié)議的格式模板,最后再合并高相似度的格式模板,生成更簡潔的消息格式.此外,該方法完全兼容文本和二進制型的工控協(xié)議.

綜上所述,文獻[58]重點結合目標協(xié)議的結構特征,針對性地按照報文長度和相似度距離進行聚類,并結合目標協(xié)議的目標完全可控且行動與命令都易于捕捉的場景特征推斷指令含義.該方法在針對指定的工控協(xié)議進行逆向分析方面具有較高的準確性,對校驗字段的識別精度甚至達到比特級,但是其泛化能力較弱,通用性差.而文獻[32]完全基于工控協(xié)議的共性特征,通過pair-HMM對序列比對算法進行改進,完善相鄰字段的對比,以提高工控協(xié)議格式提取的效率和準確度,且具有較強的通用性,但精度方面未能達到比特級.

4.2 基于頻繁集的方法

2016年Ji等人[60]提出一種無人機通信協(xié)議的關鍵字提取框架,通過多模式匹配算法提取數(shù)據(jù)幀中的頻繁序列,并對具有類似頻繁序列的數(shù)據(jù)幀進行聚類,且為提高識別精度,利用改進的AC算法[61-62]識別8位頻繁序列;其次采用FP-Growth算法[63]分析頻繁序列之間的潛在關系,重點基于支持度和置信度掃描頻繁序列,獲取其特征集合并構建條件FP樹,以表示頻繁序列之間的聯(lián)系;最后利用關聯(lián)規(guī)則完成無人機通信協(xié)議的關鍵詞提取.

2020年Shim等人[64]提出了一個用于推導Modbus/TCP,Ethernet/IP等工控協(xié)議結構的方法.該方法考慮到消息的傳輸方向,包括請求消息和響應消息,采集并提取同一功能多次執(zhí)行后的消息流量;再結合工控協(xié)議消息長度和消息相似性方面的特點,通過mean-shift算法對工控協(xié)議消息進行聚類,并使用連續(xù)序列模式算法提取相同類型消息的公共子串,獲得每種類型消息的結構,進而推導各類型消息的執(zhí)行順序.

綜上所述,文獻[60]僅將重心放在工控協(xié)議的關鍵字提取上,而文獻[64]不僅完成了完整的格式提取,并且在其會話分析階段完成了對各類型消息執(zhí)行順序的推導,已初步涉及狀態(tài)機重構,只是文獻[64]并未對該階段工作進行詳細介紹.

4.3 基于概率模型的方法

2020年Wang等人[33]考慮到工控協(xié)議字段長度可能小于1 B,提出了一種基于Variable-gram(V-gram)的XGBoost工控協(xié)議逆向分析方法,以V-gram作為XGBoost模型的輸入,實現(xiàn)對S7等工控協(xié)議的逆向分析[65].該方法首先通過漸進式多序列比對算法對原始消息進行聚類,先將字段比對精度預設為半字節(jié),并標記各字段的位置信息;再不斷合并相鄰字段,實現(xiàn)消息序列的可變域和固定域分離,進而生成V-gram,以解決二進制特征識別中半字節(jié)型關鍵字識別效率低下的問題;最后,將V-gram作為XGBoost模型的輸入,利用XGBoost模型提取S7等工控協(xié)議的特征詞,并對數(shù)據(jù)包狀態(tài)進行分類和標記,實現(xiàn)FSM模型的構建.但是,該方法對捕獲消息的數(shù)量和多樣性比較敏感.

2021年Ye等人[66]提出一種概率性的網(wǎng)絡協(xié)議逆向方法——NETPLIER,將關鍵詞識別問題表述為一個概率推理問題[67].首先,通過多重序列對齊算法將客戶端與服務器端的消息劃分成字段列表,并為每個候選字段引入一個隨機變量來表示該字段成為關鍵字的概率;其次,基于每個候選字段對所有消息進行聚類,重點計算各集群的消息相似性約束、遠程耦合約束、結構一致性約束、維度約束等,具體約束定義如表4所示,越符合這些約束,則表示該候選字段成為關鍵字段的概率就越大,最終選擇概率最高的字段作為關鍵字;最后,基于所選擇的關鍵字對消息進行聚類,進一步完成格式提取、語義推斷和狀態(tài)機重構.

Table 4 Constraint Definition

NETPLIER方法深度挖掘關鍵字背后的各種約束關系,以概率量化約束關系的強弱,進而判定該字段是否為關鍵字.此外,該方法能夠兼容文本和二進制協(xié)議,且性能都優(yōu)于或不差于各自方向的典型優(yōu)秀算法.然而,NETPLIER方法在一定程度上也非常依賴真實的標記數(shù)據(jù),如果沒有這些正確標記的真實樣本數(shù)據(jù),也就無法準確判定聚類后的樣本種類是否滿足各種約束關系,也就無法通過約束力判斷相應關鍵字的正確性.

綜上所述,這2種基于概率模型的工控協(xié)議逆向分析方法都實現(xiàn)了完整的格式提取、語義推斷和狀態(tài)機重構等步驟.但是它們的實現(xiàn)原理卻完全不同.文獻[33]的方法與傳統(tǒng)基于N-gram的協(xié)議逆向分析方法基本類似,如FieldHunter[25], IPART[35]和ProDecoder[68]等,都是通過相鄰字節(jié)之間的共現(xiàn)概率完成關鍵字提取,但文獻[33]將N-gram改進為V-gram,將字段識別精度由字節(jié)級提升到半字節(jié)級,再利用XGBoost模型提取工控協(xié)議特征詞.而文獻[66]以概率量化關鍵字背后的各種約束關系,并通過各類約束關系的強弱確定該字段是否為真正的關鍵字段,進而實現(xiàn)關鍵字的準確識別,為協(xié)議逆向分析的研究提供了一種新穎的思路.

4.4 基于深度學習的方法

隨著深度學習技術的不斷成熟[69],部分學者將其引入到工控協(xié)議逆向分析領域.2020年Zhao等人[70]針對目前私有工控協(xié)議格式分析方法存在“通用性較弱、協(xié)議字段特征分析主觀性較強”等問題,提出了一種基于長短期記憶-全卷積神經(jīng)網(wǎng)絡(long short-term memory fully convolutional neural network, LSTM-FCN)的工控協(xié)議逆向分析方法,基于時序特性對Modbus, S7Comm等工控協(xié)議字段進行識別,具有較高的通用性,更避免了人為主觀因素的影響.

該方法首先將捕獲的公共和私有工控協(xié)議數(shù)據(jù)按捕獲時間排序,對同一字段的數(shù)據(jù)進行合并、排序,形成各字段的時間序列數(shù)據(jù),其中,采用“數(shù)據(jù)編碼”方法以避免數(shù)值特征對時間序列數(shù)據(jù)時序特征的影響;然后采用LSTM-FCN模型[71]對各字段時間序列數(shù)據(jù)的分類結果和格式特征進行不斷學習,該模型主要包括2部分:全卷積神經(jīng)網(wǎng)絡(fully convolutional neural network, FCN)和長短期記憶(long short-term memory, LSTM),它們同時對輸入數(shù)據(jù)進行處理,并將各自輸出拼接到Softmax以完成分類,模型結構如圖7所示;最后根據(jù)公共工控協(xié)議的格式特征,對已分類的私有工控協(xié)議字段分類結果進行融合,得到最終的格式信息.

Fig. 7 Structure of LSTM-FCN model圖7 LSTM-FCN模型架構

該方法重點結合工控協(xié)議字段的時序特性,通過深度學習的方法實現(xiàn)字段識別,為目前的工控協(xié)議逆向分析提供了一種新思路.

4.5 小 結

本節(jié)針對基于報文序列的全自動型工控協(xié)議逆向分析技術進行分析.目前大多數(shù)該類方法都結合工控協(xié)議的共性特征,對互聯(lián)網(wǎng)協(xié)議逆向分析技術的格式提取環(huán)節(jié)進行改進.如文獻[32]通過pair-HMM對序列比對算法進行改進;文獻[33]將N-gram改進為V-gram以提高工控協(xié)議字段的識別精度.但同時,也有部分學者另辟蹊徑,深入挖掘工控協(xié)議的其他內(nèi)在特性,重新設計相應的逆向分析環(huán)節(jié).比如文獻[66]挖掘關鍵字和多種集群約束之間的內(nèi)在聯(lián)系,構建約束概率計算模型;文獻[70]挖掘工控協(xié)議報文的時序特性,針對該特性引入深度學習領域的LSTM-FCN模型予以解決.這些都為全自動型工控協(xié)議逆向技術研究提供了更多新思路.

這些全自動型的工控協(xié)議逆向分析方法通常都具有較高的執(zhí)行效率和更強的通用性,但同時也比較依賴協(xié)議報文樣本的覆蓋率.此外,由于目前工控協(xié)議仍沒有完全統(tǒng)一的設計規(guī)范,因此在沒有人工協(xié)助的情況下,這類方法通常都難以完成后續(xù)工控字段的語義推斷與狀態(tài)機重構.

5 基于報文序列的人機協(xié)同型工控協(xié)議逆向

基于報文序列的全自動型工控協(xié)議逆向分析技術主要結合工控協(xié)議的共性特征,完全通過機器或者少量的人工協(xié)助實現(xiàn)對工控協(xié)議的自動化逆向分析.而另一部分學者結合已知工控協(xié)議中各種關鍵字段的特征,歸納出相應的啟發(fā)式規(guī)則,并在格式提取階段通過人工干預的方式提前識別私有工控協(xié)議中的部分關鍵字段,以進一步提高后續(xù)逆向分析環(huán)節(jié)的效率和準確率,進而形成一種人機協(xié)同型的工控協(xié)議逆向分析技術[72].本節(jié)依然根據(jù)格式提取方式將其分為4類:基于序列比對的方法、基于頻繁集的方法、基于語義的方法和基于數(shù)理特征的方法.

5.1 基于序列比對的方法

2021年Wang等人[34]認為“流水線式”的傳統(tǒng)協(xié)議逆向方法無法將后面階段識別的有效信息反饋到前面階段,限制了工控協(xié)議逆向的準確性,因此,提出一種多階段集成逆向分析法——MSERA,以完成OMRON_FINS,BACnet和Heidenhain等多種工控協(xié)議的逆向分析.該方法首先通過工控協(xié)議中各種特征字段的啟發(fā)式規(guī)則,提前對各種特征字段的范圍和語義進行預挖掘,如協(xié)議標識符、序列號、位置標識符等,并且提出語義優(yōu)先級解決部分字段的語義重疊問題;然后將所推斷的結果代入后續(xù)的逆向環(huán)節(jié),通過序列比對算法和DBSCAN聚類算法[73]將高相似度分組劃分為同一類別,并根據(jù)字段的動態(tài)變化特征,將同一類別中的數(shù)據(jù)包劃分為字段;最后,對無法通過預挖掘得到的字段語義進行重新分析.此外,MSERA方法還通過字段校正方法對一些異常字段進行了修正.

MSERA方法通過“啟發(fā)式識別+機器識別+修正”的方式,確實能夠提高工控協(xié)議逆向的準確度,但是當連續(xù)多個字段的內(nèi)容沒有改變時,MSERA也很難區(qū)分出這些字段,這也是基于報文序列的協(xié)議逆向分析技術無法克服的固有困難.

5.2 基于頻繁集的方法

2014年Zhang等人[74]認為如果部分子序列連續(xù)出現(xiàn)的頻率比較高,并且其后續(xù)字節(jié)具有很高的可變性,則該子序列很可能是一個關鍵字段,因此提出了Prowork方法,使用投票專家(voting expert, VE)算法[75]推斷關鍵字邊界,并根據(jù)其屬性(如長度、偏移量和頻率)對候選關鍵字段進行識別.其中,如圖8所示,VE算法在連續(xù)序列上使用窗口滑動,并通過決策規(guī)則C(x)在每個步驟中選出最可能的單詞邊界,用于分割沒有分隔符的文本,因此非常適用于二進制協(xié)議的字段劃分.

Fig. 8 VE algorithm illustration圖8 VE算法說明

然而,2020年Wang等人[35]認為Proword方法只考慮到消息的本地信息而非全局信息,并且Proword未能推斷協(xié)議的完整格式,因此,針對這一缺陷提出了IPART方法,結合工控協(xié)議的特點將VE算法改進為全局投票專家(global voting expert, GVE)算法,以實現(xiàn)Modbus,IEC104等工控協(xié)議的逆向分析.如圖9所示,IPART方法首先通過GVE算法將原始報文分解為一系列字段,每個字段都具有邊界和類型2種屬性,并對一些錯誤候選邊界進行重定位,以提高邊界的查找精度;其次,選擇一定范圍內(nèi)(如消息開始部分)的候選字段作為公共字段,結合各類型字段的特征,采用相應的啟發(fā)式規(guī)則推斷這些公共字段的類型,如長度字段、功能碼、序列ID等;再次,根據(jù)工控協(xié)議中具有相同功能的消息通常具有相同的格式的現(xiàn)象,將具有相同方向和功能碼的消息聚類到同一個集群中;最后,推斷每個子集群的格式,并對這些結果進行組合,得到一個協(xié)議的完整格式.

Fig. 9 The overview of IPART圖9 IPART的概述

2020年Jiang等人[76]和2021年Liu等人[36]均提出一種基于數(shù)據(jù)驅(qū)動的方法——IPRFW,以推斷Modbus,IEC104,Ethernet/IP等多種工控協(xié)議的字段邊界和類型.該方法首先將每條消息中每個位置的數(shù)據(jù)都提取到相應的集合;其次計算每個集合的熵(entropy)E(s):

(1)

其中,s代表集合,i代表集合中的元素,n代表集合大小.計算2個相鄰字段的熵距離D(X,Y):

(2)

其中,I(X)和I(Y)分別是變量X和Y的熵.再次,基于熵距離提出熵距離聚類(entropy distance cluster, EDC)算法,不斷將熵距離最小的相鄰字段進行遞歸合并,直至滿足終止條件,進而推斷字段邊界.最后,結合工控協(xié)議各類特征字段的啟發(fā)式規(guī)則,推斷相應的特征字段,如常量字段、長度字段和功能代碼字段等.

綜上所述,雖然IPART和IPRFW的核心思想都是通過查找頻繁集以準確定位工控字段的邊界.但是它們的查找方式存在一定差別.IPART是根據(jù)多個連續(xù)字節(jié)的共現(xiàn)頻率來推斷字段邊界,側(cè)重于前后字段在統(tǒng)計意義上的相關性.而IPRFW是依賴某個固定位置上各數(shù)據(jù)的出現(xiàn)頻率,并進一步通過相鄰字段的編輯距離進行不斷合并,以推斷字段邊界.此外,IPART推斷長度可變字段的能力相對有限,因為變量字段的投票通常很小,很可能被IPART過濾掉,而且IPART主要通過功能代碼對消息聚類,因此該方法仍然不夠成熟.

5.3 基于語義的方法

2018年Ládi等人[77]針對Modbus和MQTT這2種常見的工控協(xié)議[78],提出了一種基于圖的工控協(xié)議逆向分析方法.首先通過啟發(fā)式規(guī)則逐步推斷工控協(xié)議字段的類型和語義[79-80],初步構建無環(huán)連通圖(樹),再重點對無環(huán)連通圖中存在的冗余問題進行優(yōu)化,比如合并多個可變長度的字段和分支,替換有問題的枚舉類型節(jié)點,最終完成無環(huán)連通圖構建.該方法完全通過各工控協(xié)議字段的啟發(fā)式規(guī)則以識別字段語義,因此對樣本完備性具有較高要求,需要通信雙方可控,并重復調(diào)用盡可能多的不同選項和不同功能組合,以便收集到足夠且完整的協(xié)議網(wǎng)絡流量.因此,該方法僅適用于范圍較小且類型有限的工控協(xié)議的逆向分析.

5.4 基于數(shù)理特征的方法

目前大多數(shù)工控協(xié)議逆向分析方法都重點針對工控協(xié)議的結構簡明、字段精度較細和周期性強等特征進行設計,基本沒有考慮到部分工控協(xié)議的多層結構以及報文碎片化或重傳導致的報文混亂等現(xiàn)象對工控協(xié)議逆向分析的影響,如S7Comm協(xié)議等.為避免這些負面影響,2017年Chang等人[81]提出一種自動化協(xié)議逆向工具,針對公開工控協(xié)議典型字段的恒定數(shù)理特征進行分析,如熵值、唯一值個數(shù)和增加趨勢等,歸納相應的啟發(fā)式規(guī)則,并將之作為私有工控協(xié)議字段的決策標準.框架流程如圖10所示,主要分為5個步驟:會話分割、報文預處理、會話內(nèi)分析、會話間分析和服務器-客戶端分析.其中后面4個步驟是一個迭代循環(huán)過程.

Fig. 10 Packet field inference process圖10 報文字段推斷過程

該方法首先將網(wǎng)絡流量分割成多個會話;其次,在第一次循環(huán)中,優(yōu)先排除掉較小的數(shù)據(jù)包(可能表示簡單的確認)和較大的數(shù)據(jù)包(可能表示分片),再通過碎片整理獲得更多組織良好的數(shù)據(jù)包,進而發(fā)現(xiàn)一些更可靠的過濾和組裝規(guī)則;再次,結合各類特征字段的決策標準,如熵、唯一值的個數(shù)、增加趨勢等,完成各類字段的推斷,比如在會話內(nèi)分析階段,檢查會話中是否在固定位置字節(jié)上有變量值,如CRC、時間戳和序列ID等,而在隨后的會話間分析階段,隨著固定值字節(jié)的特征變得更加具體,可以繼續(xù)提取協(xié)議ID、會話ID、網(wǎng)絡地址等字段;最后,檢查和比較字段與響應標志相關或僅在響應報文中找到的值,以推斷代表服務器—客戶端關系的字段,并在每一次循環(huán)結束后,繼續(xù)利用計算的信息重新開始分析,以獲取更加精確的結果.

5.5 小 結

經(jīng)過本節(jié)對基于報文序列的人機協(xié)同型工控協(xié)議逆向分析技術的分析,雖然目前該類大多數(shù)方法都是通過啟發(fā)式規(guī)則對私有工控協(xié)議的特征字段進行人工預挖掘,但是它們對人工干預的節(jié)點選擇仍存在一定區(qū)別.如果將格式提取細分為字段劃分和結構識別2個子階段,那么文獻[34]、文獻[77]和文獻[81]等方法是在字段劃分前就執(zhí)行特征字段的預挖掘,而文獻[35]、文獻[36]和文獻[76]等方法是在字段劃分后再執(zhí)行特征字段的預挖掘.通常來講,人工干預越早,依賴的信息就越少,對專家的經(jīng)驗知識和啟發(fā)式規(guī)則的要求就越高,但也更能促進后續(xù)的逆向環(huán)節(jié),反之亦然.不過也有部分學者發(fā)現(xiàn)了工控協(xié)議通信過程中出現(xiàn)的一些其他現(xiàn)象,如分層結構和包碎片化、重傳等,并深入研究能夠克服這些負面影響的協(xié)議逆向分析方法.

這類人機協(xié)同型的工控協(xié)議逆向分析方法主要通過啟發(fā)式規(guī)則完成工控協(xié)議特征字段的預挖掘,不僅能夠進一步提高工控協(xié)議格式提取和后續(xù)分析環(huán)節(jié)的效率和準確度,而且非常有助于工控協(xié)議的字段語義推斷.但同時該方法也比較依賴專家對工控協(xié)議設計規(guī)范的了解程度.此外,這類方法通常泛化能力也相對較弱,由于專家人工分析存在一定的片面性和局限性,導致這些啟發(fā)式規(guī)則可能僅適用于部分領域的工控協(xié)議,甚至僅適用于指定工控協(xié)議.

6 討 論

6.1 方法對比分析

相比于互聯(lián)網(wǎng)協(xié)議,工控協(xié)議雖然沒有統(tǒng)一的設計規(guī)范和大量的先驗知識,導致大多數(shù)互聯(lián)網(wǎng)協(xié)議逆向分析方法無法完全適用,但它們具有結構簡明、周期性強等共性特征,為工控協(xié)議的逆向分析提供了更多依據(jù).

結合工控協(xié)議的共性特征,目前基于程序執(zhí)行的工控協(xié)議逆向分析技術主要借助污點分析的思想,對工控程序執(zhí)行期間的函數(shù)、指令和數(shù)據(jù)的軌跡進行跟蹤與分析,能夠達到較高的識別精度和準確度,但是該方法不僅對ICS的穩(wěn)定性影響較大,而且在工控領域難以實施,導致目前針對該類方法的研究仍比較少.而基于報文序列的工控協(xié)議逆向分析方法僅需要對捕獲的網(wǎng)絡流量進行分析,雖然識別精度和準確度不如基于程序執(zhí)行的工控協(xié)議逆向分析方法,但是它易于實施且對ICS的影響比較小,自動化程度也相對較高,因此成為目前研究較多的方向.本文重點按照人機參與程度的不同將其分為全自動型和人機協(xié)同型,再按照格式提取方式的不同,繼續(xù)分為基于序列比對的方法、基于頻繁集的方法和基于概率模型的方法等.其中,表5重點對基于報文序列的工控協(xié)議逆向分析方法,從多個維度進行對比分析與總結,主要包括時間、分析粒度、字段劃分、結構識別、語義推斷、狀態(tài)機重構等.

Table 5 Comparison of Industrial Control Protocol Reverse Methods

1) 從時間角度.目前針對工控協(xié)議的逆向分析研究主要是從2016年才開始,并主要集中在2019—2021年期間,說明隨著工業(yè)互聯(lián)網(wǎng)的興起,該領域的安全研究正在逐漸受到重視.

2) 從分析粒度角度.目前基于啟發(fā)式規(guī)則的人機協(xié)同型工控協(xié)議逆向分析方法對工控字段的識別精度只能做到字節(jié)級,但有少量全自動型工控協(xié)議逆向分析方法能夠精確到半字節(jié),甚至比特級,如文獻[33]和文獻[58].因此,目前基于報文序列的工控協(xié)議逆向分析技術對工控字段的識別精度仍存在較大不足,但是這也確實是該類型方法的難點.

3) 從字段劃分角度.全自動型工控協(xié)議逆向分析方法主要通過改進的序列比對算法、多模式匹配算法、FP-Growth算法、連續(xù)序列模式算法、V-gram等多種方法完成對特征字段的提取,而所有的人機協(xié)同型工控協(xié)議逆向分析方法都是基于啟發(fā)式規(guī)則完成協(xié)議字段的提取,僅部分方法會使用其他算法進行補充,如文獻[34]的NW序列比對算法和文獻[35]的全局投票專家算法等.

4) 從結構識別角度.這2類方法基本都是通過各種聚類算法完成格式識別,僅部分方法采用其他算法或模型進行輔助,如文獻[77]的graph-based算法、文獻[33]的XGBoost模型、文獻[66]的約束概率計算模型等.

5) 從語義推斷角度.僅有少數(shù)全自動型工控協(xié)議逆向分析方法能夠完成語義推斷,但是所有的人機協(xié)同型工控協(xié)議逆向分析方法都能夠完成語義推斷,說明工控協(xié)議特征字段的啟發(fā)式規(guī)則不僅有助于提高格式提取的效率和準確度,還能夠進一步促進工控協(xié)議字段的語義推斷.

6) 從狀態(tài)機重構角度.僅有少數(shù)全自動型工控協(xié)議逆向分析方法能夠?qū)崿F(xiàn)狀態(tài)機重構,但是所有的人機協(xié)同型工控協(xié)議逆向分析方法都沒有完成.因此,目前針對工控協(xié)議狀態(tài)機重構的研究仍比較少.

綜合來看,目前的工控協(xié)議逆向分析方法仍是將工控協(xié)議的格式提取(包括字段劃分和結構識別)作為核心工作,因為只有準確地提取工控協(xié)議的格式才能夠為后續(xù)逆向過程提供更高的性能保障.而僅有部分工控協(xié)議逆向分析方法能夠完成語義推斷,而能夠完成狀態(tài)機重構的方法更少.

6.2 未來研究方向

通過6.1節(jié)對工控協(xié)議逆向分析方法的總結可知,目前針對工控協(xié)議的逆向分析研究仍處于起步階段,但隨著近幾年工業(yè)互聯(lián)網(wǎng)的興起,該方向已逐漸引起眾多學者重視,因此我們認為未來針對工控協(xié)議的逆向分析研究可以從5方面展開.

1) 改善基于程序執(zhí)行的方法實施難度

基于程序執(zhí)行的工控協(xié)議逆向分析方法能夠?qū)た爻绦驁?zhí)行期間的函數(shù)、指令和數(shù)據(jù)進行跟蹤,因此具有較高的識別精度和準確度.但是因為其較難實施,且對ICS影響較大,目前針對這類分析技術的研究仍較少.因此如何尋找新的工具或者方法以改善基于程序執(zhí)行的工控協(xié)議逆向分析方法的實施難度及對ICS的影響,將是一個非常值得研究的方向.

2) 提高工控協(xié)議格式提取的準確度

目前,不論是基于程序執(zhí)行還是基于報文序列的工控協(xié)議逆向分析方法都將研究重心集中在格式提取上,主要包括字段劃分和結構識別2部分,因為只有準確地提取協(xié)議格式,才能夠保證后續(xù)環(huán)節(jié)的準確度.因此,可以繼續(xù)針對該方向進行研究.一方面可以結合工控協(xié)議的特征,繼續(xù)尋找其他能夠進一步提高格式提取效率和準確性的新方法;另一方面也可以進一步深挖工控協(xié)議的內(nèi)在屬性,如文獻[66]中的關鍵字和集群約束之間的內(nèi)在聯(lián)系,以及文獻[70]中的報文時序特性等,進而完成工控協(xié)議的格式提取.此外,文獻[69]基于深度學習完成工控協(xié)議的逆向分析,也是未來非常值得研究的一個方向.

3) 研究語義推斷和狀態(tài)機重構的方法

目前,大多數(shù)工控協(xié)議逆向分析方法都僅針對格式提取技術進行研究,能夠深入到語義推斷,甚至狀態(tài)機重構階段的方法少之又少.但是目前很多基于工控協(xié)議逆向分析的應用都非常依賴這2個環(huán)節(jié)的實現(xiàn),如入侵檢測、模糊測試[82]等.因此,針對工控協(xié)議語義推斷和狀態(tài)機重構的研究也是未來非常值得考慮的一個方向.

4) 研究針對工控協(xié)議其他特征的逆向分析技術

目前工控協(xié)議逆向分析方法通常都針對工控協(xié)議的結構簡明、字段精度較細、周期性等特性進行設計,但隨著工控設備、軟件和網(wǎng)絡等性能的不斷提升,ICS對系統(tǒng)的實時性、可靠性、穩(wěn)定性和功能性等需求也在逐漸提高.因此,工控協(xié)議的設計已經(jīng)逐漸趨向復雜,導致出現(xiàn)一些新的現(xiàn)象,如文獻[81]中研究的多層結構、報文碎片或重傳等現(xiàn)象,這些現(xiàn)象為工控協(xié)議的逆向分析帶來一些障礙.因此,針對工控協(xié)議的這些復雜特征進行研究也是非常值得思考的.

5) 研究工控加密協(xié)議逆向分析技術

基于商業(yè)性和安全性的考慮,大多數(shù)設備廠家都選擇不對外公開自己的工控協(xié)議規(guī)范,同時,由于原先工控設備的計算性能較低,無法再額外負擔對工控協(xié)議的加密與解密工作,因此目前大多數(shù)工控協(xié)議都未加密.但隨著針對工控協(xié)議逆向分析技術的研究越來越多,這類非加密工控協(xié)議的安全性已經(jīng)逐漸受到?jīng)_擊[83].因此,結合工控設備性能的快速提升,目前已經(jīng)有部分學者提出針對工控協(xié)議進行加密,以工控設備的“計算性能”換取必要的“安全性”[84].針對這類加密型工控協(xié)議的逆向研究勢必也會成為未來的重點研究方向.

6.3 應用領域

工控協(xié)議逆向分析技術可以對未知工控協(xié)議進行分析,并獲取協(xié)議規(guī)范和格式,目前可以被廣泛應用于入侵檢測、Fuzzing測試、協(xié)議重用等領域.

1) 入侵檢測

由于ICS的硬件、網(wǎng)絡等資源都相對有限,但又具有較高的實時性和可靠性要求,因此目前大多數(shù)工控協(xié)議為了提高通信效率,很少考慮一些非必要的安全需求,如安全認證和數(shù)據(jù)加密等,特別是一些早期設計的工控協(xié)議,都存在諸多安全性問題.將工控協(xié)議逆向分析技術應用于入侵檢測系統(tǒng),可以分析出ICS系統(tǒng)中的未知協(xié)議通信模型,包括協(xié)議格式、字段語義及取值范圍和狀態(tài)機信息等,一方面可以與惡意代碼協(xié)議特征庫進行比對,另一方面還可以基于這些信息進一步構造事件通信模型與服務模型,對各層協(xié)議進行深度檢測,并根據(jù)數(shù)據(jù)包生成相應的事件,以檢測ICS的入侵和異常行為,包括DoS、命令注入、未授權訪問、緩沖區(qū)溢出等,最終進一步提高入侵檢測系統(tǒng)的檢測準確率.

2) Fuzzing測試

Fuzzing測試又稱為模糊測試,通過自動或半自動生成大量非預期的測試數(shù)據(jù)作為目標測試程序的輸入,并監(jiān)測程序運行是否發(fā)生非預期結果,如輸出錯誤、執(zhí)行異?;騼?nèi)存泄漏等.將工控協(xié)議逆向分析技術與Fuzzing測試相結合,可以對目標ICS進行測試.通過工控協(xié)議逆向分析技術對目標ICS的通信協(xié)議進行逆向分析,可以得到工控協(xié)議的格式、字段語義和狀態(tài)機等信息,進而構建未知工控協(xié)議模型.基于該模型生成的大量測試數(shù)據(jù),不僅針對性較強,還具有較高的執(zhí)行路徑覆蓋率,將這些測試數(shù)據(jù)作為Fuzzing系統(tǒng)的輸入,對目標ICS進行測試,不僅能夠發(fā)現(xiàn)更多潛在的異常點,還能夠提高觸發(fā)漏洞的概率.

3) 協(xié)議重用

隨著工業(yè)的不斷升級和技術發(fā)展,經(jīng)常需要對一些早期開發(fā)的ICS進行更新,但相比于互聯(lián)網(wǎng)應用,這些ICS的規(guī)模通常更大,并且各ICS子系統(tǒng)之間的關聯(lián)性和依賴性也更強,重新開發(fā)不僅代價太大,而且對現(xiàn)有業(yè)務影響巨大,因此通常采用跨平臺移植和重用,為此需要深入了解各ICS子系統(tǒng)之間的通信機制.通過工控協(xié)議逆向分析技術,可以提取各ICS子系統(tǒng)之間未知通信協(xié)議的格式與狀態(tài)機模型,以及消息輸入、輸出之間的約束關系,基于這些信息可以實現(xiàn)對未知協(xié)議的重用,并進一步完成對現(xiàn)有ICS的升級與更新.

7 結束語

隨著工業(yè)互聯(lián)網(wǎng)近幾年的迅速興起,ICS的安全問題日益凸顯,而工控協(xié)議逆向分析為其提供了良好的解決思路.雖然目前針對互聯(lián)網(wǎng)協(xié)議的逆向分析技術具有很好的借鑒意義,但是由于工控協(xié)議特有的共性特征導致那些針對互聯(lián)網(wǎng)協(xié)議的逆向分析方法無法適用于工控協(xié)議的逆向分析,因此本文重點對工控協(xié)議逆向分析的研究現(xiàn)狀進行了詳細闡述與總結,并提出這些工控協(xié)議逆向分析方法存在的不足和未來的研究方向,希望能夠為更多從事這方面的同行學者提供一點幫助,以共同推進工控協(xié)議逆向分析技術的發(fā)展.

作者貢獻聲明:黃濤負責搜集、整理目前工業(yè)界和學術界的工控協(xié)議逆向研究工作,以及文章整體架構設計、撰寫和修改;付安民負責全文結構設計與指導,以及各章節(jié)內(nèi)容撰寫思路;季宇凱負責工控協(xié)議逆向框架和未來研究熱點的整理;毛安負責典型工控協(xié)議特征的分析、整理與總結;王占豐負責基于報文序列的工控協(xié)議逆向分類思路的指導;胡超負責工控協(xié)議逆向應用的整理以及全文總結.

猜你喜歡
工控字段報文
基于J1939 協(xié)議多包報文的時序研究及應用
以太網(wǎng)QoS技術研究及實踐
避免饑餓的CAN 總線高優(yōu)先級反轉(zhuǎn)算法
帶鉤或不帶鉤選擇方框批量自動換
基于報文類型的限速值動態(tài)調(diào)整
安全防護應貫穿工控系統(tǒng)全生命周期
全國政協(xié)委員何幫喜:工控網(wǎng)絡安全防護應納入國家戰(zhàn)略
啟明星辰網(wǎng)御星云 進軍工控安全領域
無正題名文獻著錄方法評述
無正題名文獻著錄方法評述
确山县| 正安县| 泰宁县| 监利县| 随州市| 霞浦县| 新竹市| 雷州市| 阿拉善左旗| 葵青区| 东平县| 怀集县| 渝中区| 四子王旗| 高密市| 保靖县| 武胜县| 麻阳| 墨玉县| 澎湖县| 麻栗坡县| 华阴市| 雅江县| 长沙县| 临西县| 剑阁县| 绥棱县| 会泽县| 武义县| 彰化县| 宝山区| 鄂州市| 策勒县| 原阳县| 类乌齐县| 胶州市| 炉霍县| 璧山县| 云浮市| 孟津县| 获嘉县|