亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2021-07-26 11:56:00姜亞光李建彬閆靖晨劉曙元李坤昌
        計算機工程 2021年7期
        關(guān)鍵詞:網(wǎng)絡(luò)協(xié)議工控測試用例

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

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

        0 概述

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

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

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

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

        1 S7 協(xié)議與模糊測試

        1.1 S7 協(xié)議

        1.1.1 S7 協(xié)議結(jié)構(gòu)

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

        圖1 S7 協(xié)議結(jié)構(gòu)Fig.1 Structure of S7 protocol

        1.1.2 S7 協(xié)議漏洞

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

        1.2 模糊測試

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

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

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

        基于生成的模糊測試方法需要根據(jù)已知網(wǎng)絡(luò)協(xié)議的協(xié)議特征和測試用例生成策略,從而建立網(wǎng)絡(luò)協(xié)議數(shù)據(jù)模型,并根據(jù)協(xié)議模型構(gòu)造測試用例生成器,生成畸形的網(wǎng)絡(luò)報文作為測試用例發(fā)送給被測對象。這種方法可以保證較高的測試用例接收率,但用例的異常程度不高,非法數(shù)據(jù)的覆蓋程度相對較低,導(dǎo)致生成的用例在測試時效率低下,因此,為達到預(yù)計的測試效果,需要花費更多的時間和更多的用例數(shù)據(jù)進行測試。此外,這種基于生成的模糊測試方法一般需要根據(jù)協(xié)議特征來構(gòu)建測試用例生成器,而滿足這方面的需求不僅要做大量的網(wǎng)絡(luò)協(xié)議相關(guān)的調(diào)研,而且還要求開發(fā)人員對關(guān)于網(wǎng)絡(luò)協(xié)議的專業(yè)知識有相當(dāng)?shù)膬洹?/p>

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

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

        2 基于LSTM的S7協(xié)議模糊測試方法

        2.1 LSTM 模型

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

        圖3 LSTM 模型結(jié)構(gòu)Fig.3 Structure of LSTM model

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

        ft表示若遺忘門函數(shù),Wf表示遺忘門函數(shù)側(cè)權(quán)重,ht-1表示上一時刻LSTM 的輸出值,bf表示遺忘門側(cè)偏置,則遺忘門函數(shù)表示為:

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

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

        Sigmoid 門函數(shù)表示為:

        若ht表示當(dāng)前輸出值,則:

        2.2 模型構(gòu)建

        2.2.1 數(shù)據(jù)采集

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

        一臺裝有WIN10 操作系統(tǒng)的筆記本,在該筆記本中安裝S7 模擬器,以及虛擬環(huán)境下的WIN10 操作系統(tǒng),同樣安裝S7 模擬器,打開筆記本上的S7 模擬器上的Server 服務(wù)器作為上位機,打開虛擬環(huán)境下的S7 模擬器中的Client 客戶端作為下位機,例如PLC,然后在下位機上執(zhí)行相應(yīng)的控制操作,在筆記本上打開Wireshark 來實時抓取模擬器通信協(xié)議包,獲取實驗數(shù)據(jù)集。

        模擬環(huán)境配置如下:1)WIN10(本機)S7 模擬器Server,IP地址為192.168.0.100;2)虛擬環(huán)境下的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 數(shù)據(jù)預(yù)處理

        上述幀需要經(jīng)過有效的預(yù)處理之后才能構(gòu)造數(shù)據(jù)集,預(yù)處理過程主要包含3 步,分別是分析幀數(shù)據(jù)格式、數(shù)據(jù)進制轉(zhuǎn)換和數(shù)據(jù)歸一化處理。

        1)分析幀數(shù)據(jù)的格式。使用網(wǎng)絡(luò)抓包工具Wireshark 分析可知,S7 協(xié)議的數(shù)據(jù)幀是十六進制的字符串?dāng)?shù)據(jù)。

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

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

        2.2.3 構(gòu)建方法

        為實現(xiàn)對S7 協(xié)議的模糊測試,本文使用LSTM神經(jīng)網(wǎng)絡(luò)對S7 協(xié)議數(shù)據(jù)進行預(yù)測。該模型主要包括數(shù)據(jù)預(yù)處理模塊、測試用例生成模型搭建模塊和測試用例檢測模塊。

        1)數(shù)據(jù)預(yù)處理模塊主要包括數(shù)據(jù)格式分析、數(shù)據(jù)進制轉(zhuǎn)換和數(shù)據(jù)歸一化處理。程序?qū)崿F(xiàn)時的偽代碼如下:

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

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

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

        3 實驗驗證

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

        3.1 數(shù)據(jù)采集和預(yù)處理

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

        3.2 模型參數(shù)訓(xùn)練和硬件配置

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

        硬件配置為Intel?Core i7-8750 CPU,8 GB 內(nèi)存的服務(wù)器。訓(xùn)練時間約為40 h。

        3.3 測試用例集的生成

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

        3.4 測試用例執(zhí)行

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

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

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

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

        3.5 實驗結(jié)果分析

        本文所采用的算法為LSTM 算法,利用局部模糊來對S7 協(xié)議幀各字段進行模糊分析。由實驗結(jié)果可知,模型生成的數(shù)據(jù)機構(gòu)和訓(xùn)練集合中的數(shù)據(jù)幀很相似,可見循環(huán)神經(jīng)網(wǎng)絡(luò)模型對S7 協(xié)議結(jié)構(gòu)學(xué)習(xí)有較好的結(jié)果。圖6 為部分生成的測試數(shù)據(jù)結(jié)果。圖中顯示,LSTM 模型預(yù)測出的數(shù)據(jù)已經(jīng)具備真實測試用例的特征,可根據(jù)特征進行測試用例的預(yù)測。與Peach 對特征字段關(guān)聯(lián)性很小的方法相比,本文模型對特征字段關(guān)聯(lián)性較大。實驗結(jié)果顯示本文方法所生成的測試用例代碼覆蓋度較高,驗證了其有效性。

        圖6 部分測試數(shù)據(jù)預(yù)測結(jié)果Fig.6 Partial prediction results of test data

        4 結(jié)束語

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

        猜你喜歡
        網(wǎng)絡(luò)協(xié)議工控測試用例
        計算機網(wǎng)絡(luò)理論下的傳播研究結(jié)構(gòu)模型:Communication一詞的兩種翻譯
        基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
        一種藍牙多跳網(wǎng)絡(luò)協(xié)議的設(shè)計與研究
        電子制作(2018年17期)2018-09-28 01:56:52
        基于混合遺傳算法的回歸測試用例集最小化研究
        工控速派 一個工控技術(shù)服務(wù)的江湖
        工控速浱 一個工控技術(shù)服務(wù)的江湖
        基于DPI技術(shù)的語音視頻流量監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)
        熱點追蹤 工控安全低調(diào)而不失重要
        基于攻擊圖的工控系統(tǒng)脆弱性量化方法
        芻議局域網(wǎng)中網(wǎng)絡(luò)協(xié)議的添加與配置
        科技資訊(2015年10期)2015-06-29 18:17:23
        乱码一二区在线亚洲| 精品久久av一区二区| 国产va免费精品观看精品| 青青久在线视频免费观看| 亚洲女同精品一区二区久久| 激情视频国产在线观看| 国产网站一区二区三区| 国产无套内射久久久国产| 国产91网址| 国内专区一区二区三区| 东北女人一级内射黄片| 极品av麻豆国产在线观看| 国产精品视频免费播放 | 午夜视频免费观看一区二区| 亚洲黄色av一区二区三区| 亚洲成a∨人片在线观看不卡| 亚洲av成人一区二区三区av| 国产好片日本一区二区三区四区 | 亚洲永久国产中文字幕| 曰本无码人妻丰满熟妇啪啪| 亚洲男人天堂2017| 18禁成人免费av大片一区| 亚洲av片无码久久五月| 大地资源网高清在线播放| 国产精品高潮呻吟av久久无吗| 成人国产一区二区三区精品不卡| 视频一区二区三区黄色| 欧美成人精品午夜免费影视| YW亚洲AV无码乱码在线观看| 精品人妻av区二区三区| 国产午夜精品无码| 宝贝把腿张开我要添你下边动态图| 久久久久AV成人无码网站| 麻神在线观看免费观看| 亚洲av麻豆aⅴ无码电影| 中文AV怡红院| 亚洲一区二区综合精品| 偷国产乱人伦偷精品视频| 日本中文字幕在线播放第1页| 三级日本午夜在线观看| 亚洲三区在线观看内射后入|