本發(fā)明涉及模糊測試技術(shù),具體涉及一種針對工業(yè)控制協(xié)議的主從并行化灰盒模糊測試系統(tǒng)及方法。
背景技術(shù):
1、隨著信息技術(shù)的飛速發(fā)展,ics在全世界得到廣泛的應用。根據(jù)美國國家標準技術(shù)研究院給出的定義,ics是一個涵蓋了多種類型的控制系統(tǒng)通用術(shù)語,包括監(jiān)控和數(shù)據(jù)采集系統(tǒng)、集散控制系統(tǒng)以及其他控制系統(tǒng),如可編程邏輯控制器,常用于工業(yè)領域和關(guān)鍵基礎設施的控制系統(tǒng)中。由于智能傳感器技術(shù)和無線網(wǎng)絡的進步,ics在降低工業(yè)部門和關(guān)鍵的基礎設施維護成本的同時提高了運行的速度。作為ics組件通訊的重要手段,ics協(xié)議在實現(xiàn)上存在著不同類型的漏洞,因此ics協(xié)議一直是黑客攻擊的目標之一。
2、目前模糊測試技術(shù)是針對ics協(xié)議等工業(yè)控制協(xié)議主流的漏洞挖掘技術(shù),與其他技術(shù)相比,模糊測試易于部署,具有良好的擴展性和適用性,在有無源代碼的情況下均可進行。此外,由于模糊測試是在實際執(zhí)行中進行的,極高的準確性成為其另一大優(yōu)勢。更重要的是,模糊測試只需要很少的目標程序知識,并且可以輕松擴展到大規(guī)模應用程序。因此,模糊測試是目前最有效、最先進的漏洞發(fā)現(xiàn)技術(shù)之一。
3、目前,學術(shù)界以及工業(yè)界中有關(guān)灰盒模糊測試器加速技術(shù)的研究廣泛使用了并行策略?,F(xiàn)有的模糊測試并行策略一般分為同構(gòu)并行和異構(gòu)并行兩類。同構(gòu)并行策略中每個模糊測試實例都使用相同的模糊測試器,由于其實現(xiàn)簡單以及系統(tǒng)魯棒性強的特點,受到了廣泛應用。但是,其同構(gòu)的特性導致模糊測試策略多樣性不足,整體效率提升不明顯。同時,同構(gòu)并行策略中各實例之間信息交流極少,使得測試可能存在大量冗余,浪費了寶貴的系統(tǒng)資源。為了解決同構(gòu)并行策略存在的問題,異構(gòu)并行策略集成了多種不同機制的模糊器,并使用主從結(jié)構(gòu)對種子信息進行調(diào)度。
4、與此同時,針對協(xié)議程序的模糊測試工具不同于針對普通程序工具,如圖1所示,由于協(xié)議程序存在大量的狀態(tài)轉(zhuǎn)換,針對協(xié)議程序的模糊測試相比之下更為復雜。然而,目前先進的同構(gòu)并行框架與異構(gòu)并行框架都只針對普通程序,對于具有狀態(tài)信息的協(xié)議程序兼容性存在顯著不足,主要表現(xiàn)在以下兩個方面:無法識別并收集協(xié)議程序狀態(tài)信息,以及無法高效調(diào)度全部有效信息。因此,如何解決上述問題成為工業(yè)控制協(xié)議并行框架發(fā)展的重要挑戰(zhàn)。
技術(shù)實現(xiàn)思路
1、針對現(xiàn)有技術(shù)中的上述不足,本發(fā)明提供的針對工業(yè)控制協(xié)議的主從并行化灰盒模糊測試系統(tǒng)及方法解決了現(xiàn)有模糊測試方法不能識別并收集協(xié)議程序狀態(tài)信息,以及無法高效調(diào)度全部有效信息的問題。
2、為了達到上述發(fā)明目的,本發(fā)明采用的技術(shù)方案為:
3、第一方面,提供一種針對工業(yè)控制協(xié)議的主從并行化灰盒模糊測試系統(tǒng),其包括控制器、多個不同的模糊測試實例和監(jiān)控器,所述控制器包括全局信息收集與同步模塊和集中式種子調(diào)度模塊;
4、全局信息收集與同步模塊用于收集多個模糊測試實例運行時的目標狀態(tài)運行情況、覆蓋率位圖、種子執(zhí)行情況及產(chǎn)生新種子的種子,并對所有覆蓋率位圖整合后,與目標狀態(tài)運行情況和產(chǎn)生新種子的種子同步給每個模糊測試實例;
5、集中式種子調(diào)度模塊用于根據(jù)種子執(zhí)行情況,計算模糊測試時每個種子被選中后的跳過概率,并與產(chǎn)生新種子的種子進行關(guān)聯(lián);
6、每個模糊測試實例用于根據(jù)其存儲的初始信息選取種子對待測對象進行模糊測試,待測對象為工業(yè)控制協(xié)議;當模糊測試次數(shù)大于第一預設次數(shù)時,根據(jù)接收的目標狀態(tài)運行情況,計算目標狀態(tài)的得分,并選取得分最高的目標狀態(tài);
7、根據(jù)種子的來源、種子被選中后的跳過概率和選取的目標狀態(tài),選取種子對待測對象進行模糊測試;當未達到模糊測試的終止條件時,繼續(xù)執(zhí)行模糊測試;每輪模糊測試完成后,將覆蓋率位圖、目標狀態(tài)運行情況、種子執(zhí)行情況及產(chǎn)生新種子的種子發(fā)送給全局信息收集與同步模塊;
8、監(jiān)控器用于監(jiān)控待測對象是否崩潰或超時,并將待測對象發(fā)生崩潰或超時信息發(fā)送給全局信息收集與同步模塊進行記錄。
9、進一步地,根據(jù)選取的目標狀態(tài)、種子的來源及種子被選中后的跳過概率,選取種子對待測對象進行模糊測試的方法包括:
10、a1、根據(jù)選取的目標狀態(tài),選取模糊測試實例的種子列表中與目標狀態(tài)相同的所有種子;
11、a2、判斷選取的種子是否來源于當前模糊測試實例,若是,進入步驟a3,否則進入步驟a4;
12、a3、根據(jù)模糊測試實例內(nèi)置的種子選取策略確定是否跳過當前種子;
13、a4、根據(jù)種子被選中后的跳過概率確定是否跳過當前種子。
14、上述技術(shù)方案的有益效果為:如果種子來源于自身,則使用更適合自身的策略來進行種子調(diào)度;如果種子來源于其他實例,則使用全局信息在宏觀層面進行種子調(diào)度。這種方案能夠同時兼顧實例本身算法的深度優(yōu)勢和全局信息的廣度優(yōu)勢,充分發(fā)揮種子的作用,提高模糊測試效率。
15、進一步地,所述目標狀態(tài)運行情況包括目標狀態(tài)進行模糊測試的次數(shù)、目標狀態(tài)被選擇的次數(shù)以及目標狀態(tài)發(fā)現(xiàn)新路徑的次數(shù),其存儲于狀態(tài)數(shù)據(jù)庫中;
16、種子執(zhí)行情況為不同目標狀態(tài)下的種子信息,其存儲于種子數(shù)據(jù)庫,所述種子數(shù)據(jù)庫使用哈希表存儲信息,哈希表中的key為狀態(tài)名稱,field為種子的md5值,value為目標狀態(tài)-種子二元組的三個屬性:種子產(chǎn)生的新種子數(shù)、種子執(zhí)行次數(shù)、種子的執(zhí)行效率。
17、進一步地,種子被選中后的跳過概率的表達式為:
18、
19、其中,ej和tj均為種子j在同一目標狀態(tài)下的執(zhí)行次數(shù)和發(fā)現(xiàn)的路徑數(shù);m常數(shù);efficiencyi為種子j的執(zhí)行效率;spj為種子j被選中后的跳過概率。
20、上述技術(shù)方案的有益效果為:模糊測試實例能夠優(yōu)先選擇出用更少的執(zhí)行次數(shù)發(fā)現(xiàn)更多路徑的優(yōu)秀種子,基于該種子進行模糊測試能夠提升模糊測試的效率,覆蓋更多深層次的代碼。
21、進一步地,計算目標狀態(tài)的得分的表達式為:
22、
23、其中,scorei為目標狀態(tài)i的得分;k為常數(shù);fi為目標狀態(tài)i進行模糊測試的次數(shù);si為目標狀態(tài)i被選擇的次數(shù),pi為目標狀態(tài)i發(fā)現(xiàn)的路徑數(shù);為向上取整。
24、上述技術(shù)方案的有益效果為:模糊測試實例能夠優(yōu)先選擇出用更少的執(zhí)行次數(shù)發(fā)現(xiàn)更多路徑的狀態(tài),該狀態(tài)具有更大的探索潛力,對其進行探索更有可能覆蓋更多的代碼,有助于提高代碼覆蓋率且發(fā)現(xiàn)該狀態(tài)下的漏洞。
25、進一步地,終止條件為所有模糊測試實例進行的模糊測試總次數(shù)大于第二預設次數(shù)或者模糊測試時間達到預設測試時長。
26、進一步地,每個模糊測試實例根據(jù)其存儲的初始信息包括初始狀態(tài)信息和初始種子,初始種子的獲取方法包括:
27、采用報文狀態(tài)碼將待測對象的協(xié)議報文分為不同類型的報文;
28、將不同類型的報文分別放入不同的模糊測試實例中,作為模糊測試實例的初始種子。
29、進一步地,產(chǎn)生新種子的種子存儲于全局種子池中,并在模糊測試次數(shù)大于第一預設次數(shù)時,模糊測試實例將全局種子池中的種子加入到其種子列表中。
30、第二方面,本方案還提供一種針對工業(yè)控制協(xié)議的主從并行化灰盒模糊測試方法,其包括步驟:
31、s1、模糊測試實例根據(jù)其初始狀態(tài)信息和種子信息,選取種子對待測對象進行模糊測試;
32、s2、將覆蓋率位圖、目標狀態(tài)運行情況、種子執(zhí)行情況及產(chǎn)生新種子的種子發(fā)送給全局信息收集與同步模塊;
33、s3、判斷所有模糊測試實例進行的模糊測試總次數(shù)是否大于第一預設次數(shù),若是,則進入s4,否則返回s1;
34、s4、接收全局信息收集與同步模塊發(fā)送的目標狀態(tài)運行情況、整合后的覆蓋率位圖及產(chǎn)生新種子的種子;
35、s5、根據(jù)目標狀態(tài)運行情況,計算目標狀態(tài)的得分,并選取得分最高的目標狀態(tài);
36、s6、根據(jù)種子的來源、種子被選中后的跳過概率和選取的目標狀態(tài),選取種子對待測對象進行模糊測試;
37、s7、將覆蓋率位圖、目標狀態(tài)運行情況、種子執(zhí)行情況及產(chǎn)生新種子的種子發(fā)送給全局信息收集與同步模塊;
38、s8、判斷所有模糊測試實例進行的模糊測試總次數(shù)是否大于第二預設次數(shù)或者模糊測試時間是否達到預設測試時長,若是,則終止模糊測試,否則返回步驟s4。
39、進一步地,根據(jù)選取的目標狀態(tài)、種子的來源及種子被選中后的跳過概率,選取種子對待測對象進行模糊測試的方法包括:
40、a1、根據(jù)選取的目標狀態(tài),選取模糊測試實例的種子列表中與目標狀態(tài)相同的所有種子;
41、a2、判斷選取的種子是否來源于當前模糊測試實例,若是,進入步驟a3,否則進入步驟a4;
42、a3、根據(jù)模糊測試實例內(nèi)置的種子選取策略確定是否跳過當前種子;
43、a4、根據(jù)種子被選中后的跳過概率確定是否跳過當前種子。
44、本發(fā)明的有益效果為:不同的模糊測試實例由于輸入種子和技術(shù)路線的不同,產(chǎn)生新的種子擁有較大差異,本方案使用多個不同的模糊測試實例可以憑借多樣化的策略和輸入在一個極大的覆蓋空間中生成種子,從而極大提升代碼覆蓋效率。
45、通過全局信息收集與同步模塊和集中式種子調(diào)度模塊的配合可以收集多個模糊測試實例產(chǎn)生的目標狀態(tài)運行情況及種子執(zhí)行情況,并將這些數(shù)據(jù)同步至各個模糊測試實例,指導它們進一步的測試,可以使不同模糊測試實例進行高效的信息交流,從而提高整體模糊測試效率。