本發(fā)明涉及基于工控協(xié)議模糊測試的數(shù)據(jù)分層生成方法,屬于工業(yè)控制技術領域。
背景技術:
目前,隨著工業(yè)化與信息化進程的不斷交叉融合,越來越多的信息技術應用到了工業(yè)領域。與此同時,由于工業(yè)控制系統(tǒng)廣泛采用通用軟硬件和網(wǎng)絡設施,以及與企業(yè)管理信息系統(tǒng)的集成,導致工業(yè)控制系統(tǒng)越來越開放,并且與企業(yè)內(nèi)網(wǎng),甚至是與互聯(lián)網(wǎng)產(chǎn)生了數(shù)據(jù)交換。所以針對工業(yè)控制設備開啟了工控漏洞挖掘。例如,申請?zhí)枮镃N99804465.2的專利公開了一種數(shù)據(jù)配送系統(tǒng)包括若干個能夠發(fā)送數(shù)據(jù)項的數(shù)據(jù)源,和能夠從若干個數(shù)據(jù)源接收數(shù)據(jù)項并將接收的數(shù)據(jù)項銷售給用戶的數(shù)據(jù)自動銷售機。數(shù)據(jù)自動銷售機包括由用戶操作選擇所需數(shù)據(jù)項的數(shù)據(jù)選擇裝置;根據(jù)特定標準從若干個數(shù)據(jù)源中選擇保存數(shù)據(jù)選擇裝置所選的數(shù)據(jù)項的那一個數(shù)據(jù)源的數(shù)據(jù)源選擇裝置;與數(shù)據(jù)源選擇裝置相連接、接收數(shù)據(jù)源選擇裝置所選的數(shù)據(jù)項的數(shù)據(jù)接收裝置;和外部存儲器件可拆卸地安裝在上面,將數(shù)據(jù)接收裝置接收的數(shù)據(jù)項寫入外部存儲器件的數(shù)據(jù)更新裝置。
例如,申請?zhí)枮镃N201080054629.4的專利公開了一種數(shù)據(jù)線,包括線主體以及與其兩端連接的接口,所述線主體包括:第一層管,其外表面設有一卡放裝置,所述卡放裝置包括沿著所述第一層管的圓周方向設置的彼此相對的一對卡板組;彈簧,其同軸套設在所述第一層管內(nèi),并相隔一定距離,所述彈簧與所述第一層管之間填充有海綿層,所述海綿層中均勻嵌設有多個內(nèi)部呈中空的橡膠球;第二層管,其同軸套設在所述彈簧內(nèi);多個芯線,其設在所述第二層管內(nèi);本發(fā)明通過在數(shù)據(jù)線表面間隔設有一卡放裝置,將數(shù)據(jù)線進行折疊狀盤繞,然后將位于數(shù)據(jù)線逐步卡放在卡放裝置內(nèi),待全部卡放完畢后,長條數(shù)據(jù)線形成折疊狀。例如,申請?zhí)枮镃N200810216084.7的專利公開了一手持數(shù)據(jù)輸入設備的構成與操作方式。是在手持設備的不同側面上分兩組集成輸入組件,其中甲組位于設備的內(nèi)側或內(nèi)上側,專供拇指操作;乙組位于設備的外側,專供四指操作。由五指的協(xié)同操作使兩輸入組件中的各部件完成指定動作。再將指定動作轉變?yōu)楠毩⒌碾娦盘栞敵觯酝瓿苫A數(shù)據(jù)移動中的頻繁批量輸入。數(shù)據(jù)手摒棄了按鍵的平面空間分布,騰出了現(xiàn)代手持設備寶貴的正面面積;發(fā)揮了大拇指以外的四指功能,解放了另一只手。可以讓使用者更為快捷地在手持設備上完成頻繁、復雜、批量的信息輸入。
例如,申請?zhí)枮镃N201010231735.7的專利公開了一種數(shù)據(jù)卡,包括主芯片、開關及輸入輸出接口。輸入輸出接口從主機接收電壓信號及控制信號,并將電壓信號與控制信號傳送至開關。當所述控制信號為高電平信號時,開關導通,電壓信號經(jīng)由開關被傳送至主芯片,致使主芯片啟用通用串行總線功能。當控制信號為低電平信號時,開關斷開,主芯片不能得到供電,致使主芯片關閉通用串行總線功能。上述數(shù)據(jù)卡通過控制信號控制開關的導通或斷開,進而控制主芯片啟用或關閉通用串行總線功能。例如,申請?zhí)枮镃N201310644047.7的專利公開了一種數(shù)據(jù)線,包括殼體、USB接頭、數(shù)據(jù)線接頭和數(shù)據(jù)線纜,所述殼體內(nèi)設有彈性旋轉輪,數(shù)據(jù)線纜繞設在彈性旋轉輪上,殼體兩端分別設有第一接口和第二接口,數(shù)據(jù)線纜穿過第一接口與USB接頭相連,數(shù)據(jù)線纜穿過第二接口與數(shù)據(jù)線接頭相連,第一接口旁邊設有與USB接頭相適應的套殼,第二接口旁邊設有與數(shù)據(jù)線接頭相適應的套殼。
綜上所述,漏洞挖掘的技術基礎是模糊測試,目前開源的模糊測試框架有很多,比如sully,peach,目前所有的傳統(tǒng)的開源框架的測試數(shù)據(jù)生成都是一次性生成的,這樣的生成方式主要的缺點如下:
1、由于目前大多數(shù)工業(yè)協(xié)議都是架構在TCP/IP協(xié)議棧上的,所以一次性生成數(shù)據(jù)的方式導致腳本配置文件的復雜度增加。
2、一次性生成測試數(shù)據(jù)的方式不利于數(shù)據(jù)生成的可重用性,既:每次生成的數(shù)據(jù)的過程有很多是重復工作。
3、不利于模糊測試數(shù)據(jù)庫的積累。
本發(fā)明為了解決上述的缺點,在進行測試數(shù)據(jù)生成的時候不采用整體生成的方式,而是根據(jù)協(xié)議自身的分層機制進行分層生成,這樣做的好處是,各層的協(xié)議數(shù)據(jù)生成相互獨立,每一個層次上都能夠形成一個規(guī)則庫,這樣能夠根據(jù)需要來對使用不同的規(guī)則來生成不同的數(shù)據(jù),這種做法最大的好處是就減低了不同層數(shù)據(jù)生成規(guī)則的復雜度。
例如,如果數(shù)據(jù)分成5層,每層測規(guī)則分別是10、9、8、7、6個,那么按著傳統(tǒng)的數(shù)據(jù)生成方式,需要生成的腳本配置文件是10*9*8*7*6=30240個,如果采用分層的方式需要的腳本配置文件是10+9+8+7+6=40個。由此可見采用分成方式和不分層方式在數(shù)據(jù)生成的復雜度上的差別是很大的。
技術實現(xiàn)要素:
本發(fā)明的目的在于提供一種能夠克服上述技術問題的基于工控協(xié)議模糊測試的數(shù)據(jù)分層生成方法,本發(fā)明的目的在于給出一種有效的解決模糊測試數(shù)據(jù)生成的方式,用來對協(xié)議進行分層處理,進而使得協(xié)議數(shù)據(jù)的生成具有可重用,方便測試數(shù)據(jù)庫的積累。數(shù)據(jù)能夠根據(jù)網(wǎng)絡協(xié)議進行分層,或者通過用戶自定義的方式進行分層,每層生成一個腳本配置文件,本發(fā)明能夠通過腳本配置文件的組合來生成不同的模糊測試數(shù)據(jù)。
本發(fā)明的基于工控協(xié)議模糊測試的數(shù)據(jù)分層生成方法包括以下步驟:
(1)根據(jù)網(wǎng)絡協(xié)議或者業(yè)務需求進行數(shù)據(jù)分層。
(2)分別加載各層級的腳本配置文件。
(3)解析腳本配置文件,并生成不同數(shù)據(jù)類型的變量。
(4)根據(jù)腳本配置文件的層次,自低到高的順序依次生成模糊測試數(shù)據(jù)。
(5)拼接所有層級生成的數(shù)據(jù)形成一個完整的數(shù)據(jù)包。
(6)把封裝好的數(shù)據(jù)包發(fā)送給被測設備。
本發(fā)明的優(yōu)點是:
1、協(xié)議分解成多層,降低了協(xié)議數(shù)據(jù)生成的復雜度。
2、每層的協(xié)議數(shù)據(jù)可對應多個腳本配置文件,為數(shù)據(jù)的多樣性提供支持。
3、腳本配置文件能夠隨意組合,能夠滿足更多的業(yè)務需求而無需重復的工
作量。
4、有利于模糊測試數(shù)據(jù)庫的積累。
附圖說明
圖1是本發(fā)明所述基于工控協(xié)議模糊測試的數(shù)據(jù)分層生成方法的流程示意圖;
圖2是OSI模型示意圖。
具體實施方式
下面結合附圖對本發(fā)明的實施方式進行詳細描述。如圖1所示,
本發(fā)明的基于工控協(xié)議模糊測試的數(shù)據(jù)分層生成方法包括以下步驟:
(1)根據(jù)網(wǎng)絡協(xié)議或者業(yè)務需求進行數(shù)據(jù)分層。
(2)分別加載各層級的腳本配置文件。
(3)解析腳本配置文件,并生成不同數(shù)據(jù)類型的變量。
(4)根據(jù)腳本配置文件的層次,自低到高的順序依次生成模糊測試數(shù)據(jù)。
(5)拼接所有層級生成的數(shù)據(jù)形成一個完整的數(shù)據(jù)包。
(6)把封裝好的數(shù)據(jù)包發(fā)送給被測設備。
由于ModbusTCP協(xié)議是構筑在TCP/IP協(xié)議上的一種工控協(xié)議,所以對ModbusTCP協(xié)議的模糊測試的數(shù)據(jù)生成必須包括TCP/IP協(xié)議棧的支持;下面以ModbusTCP協(xié)議為例對本發(fā)明進行詳細說明。
如圖2所示的OSI模型示意圖,在按著OSI七層模型進行分層能夠分為數(shù)據(jù)鏈路層、網(wǎng)絡層、傳輸層、會話層、表示層、物理層和應用層。在實際應用的時候可以按著具體情況進行分層。
本發(fā)明的基于工控協(xié)議模糊測試的數(shù)據(jù)分層生成方法包括以下步驟:
(1)對數(shù)據(jù)進行分層,根據(jù)OSI七層模型,能夠把ModbusTCP協(xié)議分層數(shù)據(jù)鏈路層、網(wǎng)絡層、傳輸層、物理層和應用層。
(2)對每一層進行模糊測試的腳本配置文件進行編寫。
(3)把腳本配置文件加載到模糊測試框架。
(4)解析腳本配置文件生成不同類型的變量。
(5)從低到高對每一層的腳本配置文件進行數(shù)據(jù)的生成。
(6)拼接各層的數(shù)據(jù)組成一個完整的數(shù)據(jù)包。
(7)把數(shù)據(jù)包發(fā)送出去。
本發(fā)明的基于工控協(xié)議模糊測試的數(shù)據(jù)分層生成方法不僅限于此類分層,還能夠根據(jù)具體業(yè)務進行靈活分層,例如能夠把應用層協(xié)議分成幾個層級來分別描述來降低腳本配置文件的復雜度以及提高腳本配置文件的可重用性。
本發(fā)明能夠根據(jù)不同的應用場景來靈活分層,例如MMS協(xié)議屬于應用層協(xié)議,但是MMS協(xié)議本身又分了幾個層級,而這樣的分層同樣能夠用本專利的方法進行分層處理,從而在生成MMS協(xié)議的測試報文的時候能夠更靈活,而工作量能夠大大被壓縮。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明公開的范圍內(nèi),能夠輕易想到的變化或替換,都應涵蓋在本發(fā)明權利要求的保護范圍內(nèi)。