?

基于LSTM的S7協議模糊測試用例生成方法

2021-07-26 11:56姜亞光李建彬閆靖晨劉曙元李坤昌
計算機工程 2021年7期
關鍵詞:網絡協議工控測試用例

姜亞光,陳 曦,2,李建彬,閆靖晨,劉曙元,李坤昌

(1.中國軟件評測中心,北京100044;2.北京大學軟件與微電子學院,北京102600;3.華北電力大學控制與計算機工程學院,北京100026;4.國能信控互聯技術有限公司,北京100039)

0 概述

隨著互聯網設備的全面普及,面向工業控制(工控)系統的網絡威脅日益增多,并且呈高強度和批量化的態勢[1-2],因此,人們開始關注保護關鍵基礎設施和制造工廠的重要性?;ミB和互操作性的發展擴大了工控系統的脆弱性,特別是在廣泛應用和傳播的背景下,數據被暴露給外部網絡,在通過發動各種攻擊獲取系統數據后,入侵者的行為可能會對現有的工業過程造成嚴重損害[3]。2010年6月,一種復雜的網絡武器——震網(Stuxnet)病毒肆虐全球[4],與傳統網絡病毒不同的是,震網病毒的攻擊對象是國家重要基礎設施,其本質是一種直接破壞現實世界中工業基礎設施的惡意攻擊代碼。據賽門鐵克公司統計,全球約有4.5 萬個網絡被該病毒感染。目前,主流的工業控制系統有DCS、SCADA、PLC、遠程終端設備等[5-6]。為實現系統中不同級設備間的數據通信,各類通信協議被不斷革新,其中由Siemens 公司基于ISO 協議設計實現的S7 通信協議在工業領域具有極其廣泛的應用[7-9]。因此,S7 協議的安全性測試成為研究熱點[10]。

目前,研究者針對工控系統的安全防護已經開展了一些研究工作。文獻[11]通過分析S7 協議的內容與幀格式,使客戶能夠自己編寫程序并用自己的socket 程序通過以太網讀寫西門子S200 PLC 區數據。文獻[12]介紹網絡協議的識別方法和測試用例生成技術,根據啟發式搜索算法和概率權重,提出一種基于參數權重的啟發式模糊測試框架。文獻[13]使用基于規則的狀態機和有狀態規則樹來指導模糊測試數據的生成,提高了有狀態網絡協議模糊化的效率和覆蓋率,同時提高了測試效率??傮w而言,針對工控網絡協議漏洞挖掘的研究仍處于探索階段。

目前,模糊測試是最常用的軟件漏洞挖掘方法,基于模糊測試的漏洞挖掘技術[14-16]可面向部分公有協議進行高效的漏洞挖掘,但由于該類技術針對性不強且內容覆蓋率低,因此在私有協議領域尚未得到較好應用??紤]到知識獲取難度大、描述建模成本高等因素的影響,研究者多采用專家分析方法人工編寫測試腳本,此方式不僅費時費力,而且對研究人員專業能力要求較高,生成的測試用例通過率也無法得到有效保證。由此可見,傳統的模糊測試方法已不能滿足工控系統的安全性要求。

神經網絡模型[17-19]善于從海量數據中挖掘規則和知識,因此,將神經網絡技術與工業通信安全防護工作相結合,是保障工控系統安全的一種重要舉措[20-21]。本文利用長短期記憶(Long Short-Term Memory,LSTM)[22]神經網絡模型強大的數據學習能力和預測能力,提出一種基于LSTM 的測試用例生成方法,通過不斷學習提取西門子S7 協議的特征,自動產生滿足協議結構的測試用例。

1 S7 協議與模糊測試

1.1 S7 協議

1.1.1 S7 協議結構

西門子S7 協議的TCP/IP 實現依賴于面向塊的ISO 傳輸服務,協議結構如圖1所示。S7 協議不僅允許協議數據單元(Protocol Data Unit,PDU)由TCP 承載,而且協議還包含在TPKT 和ISO-COTP 協議中。ISO 通過TCP 通信在RFC1006 中定義,ISO-COTP 在基于ISO 8073 協議(RFC905)的RFC2126 中定義。ST 協議結構如圖1所示。

圖1 S7 協議結構Fig.1 Structure of S7 protocol

1.1.2 S7 協議漏洞

當工控協議棧的程序中有漏洞時,其相應報文中的數據與協議中的規約會出現不同,這會引起上位機獲取異常數據,進而導致組態界面與實際運行狀態存在差異,使得現場工作人員無法正常工作。在工控系統行業漏洞庫平臺檢索S7 協議,截止至2019年11月15日檢索到相關漏洞77 條,其中僅2019年就有5 個漏洞。因此,對于模糊測試,本文提出通過學習得到S7 協議報文作為測試數據,用于發現協議中不符合協議規約的情況。

1.2 模糊測試

模糊測試可以將非預期的輸入傳送到目標系統,同時監視該系統的異常情況進而發現軟件的漏洞[23-24]。為提高測試用例的代碼覆蓋度,在進行模糊時需要考慮輸入向量的特征,例如協議測試時需要通過網絡協議解析獲得協議特征,根據已獲得的協議特征進一步生成測試用例。此外,在實時監控傳輸測試用例進行模糊測試的過程中,根據被測對象的狀態可以及時檢測出異常情況。模糊測試流程如圖2所示。依據不同的產生模式,網絡協議模糊測試方法主要有基于變異的方法和基于生成的方法[25]2 種。

圖2 模糊測試流程Fig.2 Procedure of fuzzy test

1.2.1 基于生成的模糊測試方法

基于生成的模糊測試方法需要根據已知網絡協議的協議特征和測試用例生成策略,從而建立網絡協議數據模型,并根據協議模型構造測試用例生成器,生成畸形的網絡報文作為測試用例發送給被測對象。這種方法可以保證較高的測試用例接收率,但用例的異常程度不高,非法數據的覆蓋程度相對較低,導致生成的用例在測試時效率低下,因此,為達到預計的測試效果,需要花費更多的時間和更多的用例數據進行測試。此外,這種基于生成的模糊測試方法一般需要根據協議特征來構建測試用例生成器,而滿足這方面的需求不僅要做大量的網絡協議相關的調研,而且還要求開發人員對關于網絡協議的專業知識有相當的儲備。

1.2.2 基于變異的模糊測試方法

基于變異的模糊測試方法首先捕獲網絡中正常通信的網絡報文,然后依據制定的模糊策略將報文中的某些字段更改為非法的字段,在生成變異的測試用例后,再對被測對象進行模糊測試。該測試方法不要求提前對被測的網絡協議進行深入了解學習,只需要針對特定的網絡通信,截取通信過程中的數據包,根據指定的模糊策略對數據包進行模糊修改。這種測試方法能夠給研究人員帶來極大的便利。測試用例經過變異策略更改數據值之后都包含了一些不合法數據值,因此,該方法的不合法數據覆蓋率較高,但是測試對象協議棧程序可能會拒絕接受包含不合法數據值的測試用例,最終導致基于變異的模糊測試方法生成的測試用例被接受的數量較少,降低了模糊測試的效率。

2 基于LSTM的S7協議模糊測試方法

2.1 LSTM 模型

LSTM 內部狀態主要通過3 個不同作用的控制開關進行改變和更新,LSTM 模型結構如圖3所示,其中一個開關的作用是保存長期狀態c,另一個負責對即時狀態向長期狀態c 的傳遞,最后一個開關用于把控當前時刻的輸出受長期狀態c 的影響程度。門是神經網絡中的一層全連接層,輸入向量經過門之后輸出0 到1 之間的實數向量,3 個開關都與門有關,分別對應遺忘門、輸入門和輸出門。以下公式表示了LSTM 的前向計算過程,通過加法和乘法運算修改信息用以更新當前狀態。

圖3 LSTM 模型結構Fig.3 Structure of LSTM model

若W表示權重,b表示偏置,δ(x)表示激活函數,則門函數表示為:

ft表示若遺忘門函數,Wf表示遺忘門函數側權重,ht-1表示上一時刻LSTM 的輸出值,bf表示遺忘門側偏置,則遺忘門函數表示為:

若Wc表示單元狀態的權重,xt表示t時刻的輸入,bc表示單元狀態的偏置值,則候選向量表示為:

若ct表示更新狀態,it表示輸入門的向量值,ct-1表示上一時刻的狀態,則更新狀態為:

Sigmoid 門函數表示為:

若ht表示當前輸出值,則:

2.2 模型構建

2.2.1 數據采集

本文在S7 模擬器傳輸過程中使用Wireshark 收集實驗數據。S7 模擬器模擬測試基本情況如下:

一臺裝有WIN10 操作系統的筆記本,在該筆記本中安裝S7 模擬器,以及虛擬環境下的WIN10 操作系統,同樣安裝S7 模擬器,打開筆記本上的S7 模擬器上的Server 服務器作為上位機,打開虛擬環境下的S7 模擬器中的Client 客戶端作為下位機,例如PLC,然后在下位機上執行相應的控制操作,在筆記本上打開Wireshark 來實時抓取模擬器通信協議包,獲取實驗數據集。

模擬環境配置如下:1)WIN10(本機)S7 模擬器Server,IP地址為192.168.0.100;2)虛擬環境下的WIN10 S7 模擬器客戶端,IP 地址為0.0.0.0;3)Wireshark_3.0.6,將IP 地址192.168.0.100 作為上位機,將IP 地址0.0.0.0作為下位機。

2.2.2 數據預處理

上述幀需要經過有效的預處理之后才能構造數據集,預處理過程主要包含3 步,分別是分析幀數據格式、數據進制轉換和數據歸一化處理。

1)分析幀數據的格式。使用網絡抓包工具Wireshark 分析可知,S7 協議的數據幀是十六進制的字符串數據。

2)數據進制轉換。筆者通過分析發現,十六進制的字母無法直接用于模糊測試用例的生成,即無法用作測試用例生成模型的輸入,因此,將數據由十六進制轉換為十進制數字來表示。此處主要考慮將一維十六進制轉換為一維十進制。轉換公式為H(data)→D(data)。

3)數據歸一化。數據歸一化過程包括去除數據中的無效數據、空缺數據和不完整數據的處理,將所得數據歸一化。去冗操作主要是去除數據集databegin 中的空值,歸一化處理主要是將數據歸一化到0.0~0.5 之間。

2.2.3 構建方法

為實現對S7 協議的模糊測試,本文使用LSTM神經網絡對S7 協議數據進行預測。該模型主要包括數據預處理模塊、測試用例生成模型搭建模塊和測試用例檢測模塊。

1)數據預處理模塊主要包括數據格式分析、數據進制轉換和數據歸一化處理。程序實現時的偽代碼如下:

2)測試用例生成模型搭建模塊主要包括LSTM數據輸入、前向計算和訓練輸出。在實現設計程序時,利用局部模糊來對S7 協議幀各字段進行模糊分析,其偽代碼如下:

3)測試用例檢測模塊主要包括檢測將特征值字段修改為邊界值、字段置為空、變更字段長度引起溢出。程序實現時的偽代碼如下:

通過上述3 個模塊的實現,可以完成數據預處理且歸一化,用處理過后的數據作為模型輸入能夠生成測試用例并檢測出測試用例是否有效。

3 實驗驗證

實驗的模型主要采用LSTM 來對S7 協議樣本數據進行訓練,進而生成更多的有效測試用例。在實驗中,S7 協議中的特征值字段分為可變字段和不可變字段,對可變字段進行模糊,對不可變字段做固定值操作,進而局部模糊生成測試用例。

3.1 數據采集和預處理

本文根據S7 模擬器模擬實際上位機和下位機的通信過程,獲取到138 481 條數據幀,這些數據幀類型很多,也存在重復問題。因此,對獲取的樣本集合進行分類、整合、去重,得到99 289 個有效的數據幀樣本。在此基礎上,對這些數據幀做進制轉換處理,對轉換后的十進制數據做歸一化處理,得到0.0~0.5 之間的數作為模型的輸入,形成23.03 MB 大小的訓練數據集。

3.2 模型參數訓練和硬件配置

LSTM 模型按Batch-size 為31 和61 形成2 組參數,其他設置為序列長度為2、1 層、4 個隱藏節點、0.01 學習率和100 輪次訓練。

硬件配置為Intel?Core i7-8750 CPU,8 GB 內存的服務器。訓練時間約為40 h。

3.3 測試用例集的生成

測試所用數據包括數據生成和數據幀組裝兩部分。通過LSTM 模型生成99 289 個模糊測試數據,然后和物理層到傳輸層的數據組裝在一起,形成完整的測試數據幀。

3.4 測試用例執行

為保證生成數據有效,使用腳本語言Python 編寫測試用例的執行腳本。本地服務端存放組裝后的S7 協議數據幀,虛擬機模擬下位機,與上位機通信獲取組裝后的S7 協議數據幀。首先啟動snap7 服務器端,啟動服務,然后把生成的測試用例放入腳本中,再運行腳本程序,即可將測試用例發送到服務器上,如圖4所示。

圖4 測試用例發送至服務器的界面Fig.4 Interface of sending test cases to server

判定1 條測試用例是否有效,其原理是檢測測試用例對應的協議控制操作是否會導致故障的發現,若發生故障,則測試用例有效,反之則無效。如圖5所示,1 條有效的測試用例主要包括9 個特征值,分別為Type、Version、Header Length 等字段。實驗考慮空指針、溢出和數值邊界這3 種異常情況。

圖5 判定1 條測試用例是否有效的界面Fig.5 Interface of judging validity of a test case

3.5 實驗結果分析

本文所采用的算法為LSTM 算法,利用局部模糊來對S7 協議幀各字段進行模糊分析。由實驗結果可知,模型生成的數據機構和訓練集合中的數據幀很相似,可見循環神經網絡模型對S7 協議結構學習有較好的結果。圖6 為部分生成的測試數據結果。圖中顯示,LSTM 模型預測出的數據已經具備真實測試用例的特征,可根據特征進行測試用例的預測。與Peach 對特征字段關聯性很小的方法相比,本文模型對特征字段關聯性較大。實驗結果顯示本文方法所生成的測試用例代碼覆蓋度較高,驗證了其有效性。

圖6 部分測試數據預測結果Fig.6 Partial prediction results of test data

4 結束語

本文提出一種基于神經網絡的S7 協議模糊測試用例生成方法。通過LSTM 神經網絡模型學習S7 協議樣本,得到協議的結構特征,預測生成符合結構特征的測試用例。仿真實驗對不同字段進行局部模糊,結果表明,該模型生成了大量有效的測試用例,預測出的數據具備真實測試用例的特征,測試用例的代碼覆蓋度較高,從而驗證了本文方法的有效性。然而本文所構建的模型數據來源類型單一,神經網絡本身所帶有的隨機性導致用例生成時某些固定字段存在誤差,并且脆弱性字段比較固定,而在實際應用中工控網絡面臨復雜的安全問題。因此,下一步將研究數據來源不同和字段值發生改變時如何生成更有效的測試用例,并進行對比實驗。

猜你喜歡
網絡協議工控測試用例
基于SmartUnit的安全通信系統單元測試用例自動生成
一種藍牙多跳網絡協議的設計與研究
基于混合遺傳算法的回歸測試用例集最小化研究
工控速派 一個工控技術服務的江湖
工控速浱 一個工控技術服務的江湖
基于載波技術的多點溫度測量系統設計
基于DPI技術的語音視頻流量監控系統設計與實現
熱點追蹤 工控安全低調而不失重要
基于攻擊圖的工控系統脆弱性量化方法
基于依賴結構的測試用例優先級技術
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合