劉博洋 劉潮 任藝琳 滿芮 苗晗
摘?要:隨著工業(yè)信息化的快速發(fā)展,工控系統(tǒng)利用最新的計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)以提高系統(tǒng)間的集成、互聯(lián)以及信息化管理水平,由封閉的系統(tǒng)到開放式系統(tǒng)的轉(zhuǎn)變引發(fā)的網(wǎng)絡(luò)安全事件逐年增多,目前已成為工控系統(tǒng)網(wǎng)絡(luò)安全中亟待解決的問題。模糊測(cè)試(fuzzing)技術(shù)可以在保證工控系統(tǒng)實(shí)時(shí)性和業(yè)務(wù)連續(xù)性的同時(shí),使用大量畸形數(shù)據(jù)輸入至目標(biāo)程序,通過監(jiān)測(cè)異常行為達(dá)到挖掘工控系統(tǒng)中潛在漏洞的目的。傳統(tǒng)的模糊測(cè)試方法通過提取工控協(xié)議特征生成測(cè)試用例,并使用新生成的測(cè)試用例作為模糊測(cè)試的輸入,以提高目標(biāo)程序。并以測(cè)試用例能否引發(fā)協(xié)議實(shí)體異常為標(biāo)志,盡可能全面地挖掘協(xié)議存在的漏洞。模糊測(cè)試方法自動(dòng)化程度高、不需要源代碼的支撐、可重復(fù)性強(qiáng)、誤報(bào)率低。模糊測(cè)試中生成測(cè)試用例傳統(tǒng)方法,針對(duì)協(xié)議的某個(gè)狀態(tài)或者單個(gè)功能類型碼發(fā)送測(cè)試用例,能發(fā)現(xiàn)對(duì)應(yīng)單個(gè)協(xié)議狀態(tài)或者單個(gè)功能類型碼的漏洞,但是很多安全漏洞都是由多個(gè)協(xié)議狀態(tài)或多個(gè)功能類型碼共同作用所觸發(fā)的。所以,已有的模糊測(cè)試方法并沒有對(duì)被測(cè)對(duì)象進(jìn)行全面、完整的漏洞檢測(cè)。模糊測(cè)試方法不受限于被測(cè)系統(tǒng)內(nèi)部細(xì)節(jié)和復(fù)雜程度,可以在有程序源代碼或沒有源代碼的情況下執(zhí)行,可擴(kuò)展性和實(shí)用性較好,已經(jīng)成為當(dāng)前最有效的漏洞挖掘方法。
關(guān)鍵詞:工控協(xié)議;模糊測(cè)試;漏洞挖掘
1?概述
工業(yè)控制系統(tǒng)(Industrial?Control?Systems,ICS)是計(jì)算機(jī)設(shè)備和工業(yè)生產(chǎn)控制部件組成的自動(dòng)控制系統(tǒng),主要包括數(shù)據(jù)采集與監(jiān)測(cè)控制系統(tǒng)(SCADA)、分布式控制系統(tǒng)(DCS)、可編程邏輯控制器(PLC)、遠(yuǎn)程終端單元(RTU)以及現(xiàn)場(chǎng)總線控制系統(tǒng)(FCS)等[12]。隨著工業(yè)信息化的快速發(fā)展,工控系統(tǒng)由最早專用封閉的計(jì)算機(jī)實(shí)時(shí)監(jiān)控系統(tǒng)發(fā)展到廣泛應(yīng)用互聯(lián)網(wǎng)信息技術(shù)的綜合性業(yè)務(wù)系統(tǒng)。其開放性導(dǎo)致系統(tǒng)安全漏洞和缺陷極易被攻擊者利用,工控系統(tǒng)的安全問題愈發(fā)突顯[34]。
隨著工業(yè)化與信息化的有效融合,越來(lái)越多的工控協(xié)議與設(shè)備集成了以太網(wǎng)功能,并將嵌入式技術(shù)、現(xiàn)場(chǎng)總線、工業(yè)以太網(wǎng)、多種工業(yè)控制網(wǎng)絡(luò)互聯(lián)以及無(wú)線通信技術(shù)融合到工業(yè)控制網(wǎng)絡(luò)中,由此引入的網(wǎng)絡(luò)安全風(fēng)險(xiǎn)會(huì)對(duì)工控系統(tǒng)造成巨大的威脅。而工控系統(tǒng)因其具有特殊性,其中大量工控系統(tǒng)采用私有協(xié)議、系統(tǒng)穩(wěn)定性要求高、網(wǎng)絡(luò)結(jié)構(gòu)和行為相對(duì)穩(wěn)定但對(duì)網(wǎng)絡(luò)防護(hù)要求相對(duì)較高。傳統(tǒng)的工控安全防護(hù)目標(biāo)重點(diǎn)在于保護(hù)信息不泄露,而工控系統(tǒng)安全防護(hù)的重點(diǎn)在于保證生產(chǎn)業(yè)務(wù)的連續(xù)穩(wěn)定可用且對(duì)信息的實(shí)時(shí)性要求更高。
在電力行業(yè)工控系統(tǒng)中,從發(fā)電端到用電端的每個(gè)環(huán)節(jié)都有不同形態(tài)的電力工控終端進(jìn)行數(shù)據(jù)采集、指令調(diào)度、遠(yuǎn)程控制等工作,工控終端與主站之間的控制信息和數(shù)據(jù)均通過工控協(xié)議實(shí)現(xiàn)傳遞[5]。因工控協(xié)議存在安全設(shè)計(jì)缺陷,加之系統(tǒng)缺乏安全防護(hù)機(jī)制,在使用過程中極易暴露出安全漏洞,攻擊者可利用以上安全漏洞達(dá)到對(duì)工控系統(tǒng)控制的目的。
工控系統(tǒng)因設(shè)計(jì)漏洞,極易成為攻擊者的目標(biāo),漏洞挖掘技術(shù)作為檢測(cè)工控系統(tǒng)漏洞的關(guān)鍵技術(shù),可以在未出現(xiàn)網(wǎng)絡(luò)安全問題的情況下及時(shí)發(fā)現(xiàn)潛在安全隱患,防范未知風(fēng)險(xiǎn),從而達(dá)到安全防御的作用[6]。常用的漏洞挖掘技術(shù)包括人工分析技術(shù)、補(bǔ)丁比對(duì)技術(shù)、動(dòng)靜態(tài)分析技術(shù)以及模糊測(cè)試技術(shù)。人工分析技術(shù)是一種通過人工構(gòu)造輸入條件,觀察目標(biāo)狀態(tài)的灰盒分析技術(shù),該種漏洞挖掘方法高度依賴操作人員的經(jīng)驗(yàn)。補(bǔ)丁比對(duì)技術(shù)通過反匯編調(diào)試的手段對(duì)原始文件和補(bǔ)丁文件進(jìn)行反匯編,比較打補(bǔ)丁前后的二進(jìn)制文件的差異,即可明確漏洞位置。靜態(tài)分析技術(shù)是通過逆向技術(shù)獲得被分析目標(biāo)源代碼,并檢測(cè)程序中不符合安全規(guī)則的行為,發(fā)現(xiàn)程序中存在的漏洞的白盒分析技術(shù)。該方法因需不斷擴(kuò)大特征庫(kù)而導(dǎo)致誤報(bào)率高,也存在較大局限性。動(dòng)態(tài)分析技術(shù)是利用調(diào)試器作為動(dòng)態(tài)分析工具,通過觀察執(zhí)行過程中程序的運(yùn)行狀態(tài)發(fā)現(xiàn)漏洞[7]。其中,模糊測(cè)試技術(shù)(fuzz?testing)是一種基于缺陷注入的自動(dòng)化軟件測(cè)試技術(shù),它利用黑盒分析技術(shù)方法,黑盒測(cè)試是通過將大量未知數(shù)據(jù)作為模糊測(cè)試的輸入,以程序是否出現(xiàn)異常為標(biāo)志,以此判斷程序中是否存在安全漏洞[810]。模糊測(cè)試技術(shù)作為動(dòng)態(tài)分析技術(shù)的一種,因其操作簡(jiǎn)單、誤報(bào)率低以及良好的自動(dòng)化測(cè)試能力,近些年在漏洞挖掘領(lǐng)域取得了長(zhǎng)足的發(fā)展。
2?模糊測(cè)試方法
模糊測(cè)試通過提取工控網(wǎng)絡(luò)協(xié)議的協(xié)議特征,隨機(jī)生成測(cè)試用例,將其輸入?yún)f(xié)議實(shí)體程序中,并實(shí)時(shí)監(jiān)控被測(cè)對(duì)象的狀態(tài),對(duì)協(xié)議實(shí)體異常進(jìn)行分析。該技術(shù)不依賴于被測(cè)對(duì)象的源代碼,測(cè)試原理簡(jiǎn)單,自動(dòng)化程度較高,測(cè)試范圍廣,是一種高效的網(wǎng)絡(luò)協(xié)議漏洞挖掘方法。
基于工控協(xié)議的模糊測(cè)試方法以網(wǎng)絡(luò)報(bào)文為測(cè)試用例,待被測(cè)對(duì)象接收到網(wǎng)絡(luò)報(bào)文后,對(duì)網(wǎng)絡(luò)報(bào)文進(jìn)行解析,從而提取出相關(guān)數(shù)據(jù)信息,數(shù)據(jù)進(jìn)入程序內(nèi)部進(jìn)行業(yè)務(wù)邏輯處理的同時(shí),可以實(shí)現(xiàn)對(duì)被測(cè)對(duì)象的運(yùn)行狀態(tài)的監(jiān)控。模糊測(cè)試的工作原理是通過事先構(gòu)造好的測(cè)試用例發(fā)送給測(cè)試目標(biāo)后通過測(cè)試目標(biāo)反饋的問題找出測(cè)試目標(biāo)漏洞的過程[1113]。從執(zhí)行過程的角度來(lái)說(shuō),大致可以分為以下五個(gè)階段。
2.1?確定測(cè)試對(duì)象
模糊測(cè)試的第一步為確定測(cè)試對(duì)象,我們將確定測(cè)試對(duì)象的原則定義為:一切向測(cè)試目標(biāo)程序輸入的數(shù)據(jù)都應(yīng)該被認(rèn)為是危險(xiǎn)的,所有測(cè)試對(duì)象都可能是存在潛在安全風(fēng)險(xiǎn)的模糊測(cè)試變量,測(cè)試人員根據(jù)測(cè)試對(duì)象的特征選擇適合的工具以及測(cè)試框架進(jìn)行模糊測(cè)試。
2.2?生成模糊測(cè)試數(shù)據(jù)
大多數(shù)模糊測(cè)試的方法是通過向目標(biāo)系統(tǒng)不斷輸入可以誘發(fā)軟件缺陷的測(cè)試數(shù)據(jù),因此測(cè)試數(shù)據(jù)的生成是模糊測(cè)試非常關(guān)鍵的環(huán)節(jié),模糊測(cè)試數(shù)據(jù)的生成方式主要有兩種:一種是通過預(yù)先確定的值,使用基于已存在的數(shù)據(jù)通過算法將其變異,生成新的測(cè)試數(shù)據(jù);另一種是通過分析被測(cè)試應(yīng)用程序及其使用的數(shù)據(jù)格式,動(dòng)態(tài)生成測(cè)試數(shù)據(jù)。
2.3?執(zhí)行模糊測(cè)試
確定測(cè)試對(duì)象以及完成模糊測(cè)試數(shù)據(jù)生成的兩個(gè)步驟后,就可以進(jìn)行模糊測(cè)試。執(zhí)行模糊測(cè)試需要依據(jù)測(cè)試目標(biāo)選擇對(duì)應(yīng)的測(cè)試方法,該步驟通過自動(dòng)化的手段向被測(cè)系統(tǒng)發(fā)送數(shù)據(jù)包、利用被測(cè)試程序打開包含測(cè)試數(shù)據(jù)的文件。
2.4?監(jiān)視異常
測(cè)試過程中,對(duì)異常和錯(cuò)誤進(jìn)行監(jiān)控是模糊測(cè)試過程中極為重要的步驟,模糊測(cè)試的目的不僅是確定被測(cè)試程序是否存在安全漏洞,更重要的是確定程序?yàn)楹螘?huì)產(chǎn)生異常。模糊測(cè)試需要根據(jù)被測(cè)應(yīng)用和所決定采用的模糊測(cè)試類型來(lái)設(shè)置各種形式的監(jiān)視,從而發(fā)現(xiàn)漏洞并及時(shí)進(jìn)行漏洞修復(fù)。
2.5?判定是否存在潛在的安全漏洞
模糊測(cè)試中發(fā)現(xiàn)漏洞,需要判定該漏洞是否是一個(gè)可被利用的安全漏洞,以防漏洞被攻擊者利用,導(dǎo)致安全問題的發(fā)生。
3?自動(dòng)化模糊測(cè)試工具
工控協(xié)議自身具有協(xié)議種類多、協(xié)議構(gòu)造非公開、面向控制等特點(diǎn),使得模糊測(cè)試前期對(duì)協(xié)議進(jìn)行解析十分困難,加之協(xié)議腳本構(gòu)造過程復(fù)雜,極大降低了模糊測(cè)試方法在工控協(xié)議領(lǐng)域的測(cè)試效率。因此,利用生成技術(shù)或變異技術(shù)構(gòu)造測(cè)試樣例就成為模糊測(cè)試過程中的關(guān)鍵問題,其決定了模糊測(cè)試的效率。目前,自動(dòng)化測(cè)試工具的開發(fā),可以快速構(gòu)造測(cè)試樣例,對(duì)模糊測(cè)試效率的提升有很大幫助。常用的自動(dòng)化測(cè)試工具分為兩大類,一類可以根據(jù)已知輸入數(shù)據(jù)的規(guī)范制作新的輸入,代表工具有SPIKE、Sulley、SNOOZE、Peachfuzz、Boofuzz等;另外一種是根據(jù)已知數(shù)據(jù)樣本通過變異的方法生成新的測(cè)試用例,代表工具有ProxyFuzz、SecFuzz、GPF、TaoF等[1417]。以下為幾種常用的自動(dòng)化模糊測(cè)試工具。
SPIKE模糊測(cè)試工具是最具有代表性的模糊測(cè)試創(chuàng)建工具集,它可以基于網(wǎng)絡(luò)協(xié)議生成測(cè)試數(shù)據(jù)。SPIKE通過塊的概念將產(chǎn)生的數(shù)據(jù)以不同格式嵌入自身測(cè)試數(shù)據(jù)中,這樣可以通過一種易于理解的方式描述協(xié)議構(gòu)成,使基于塊的協(xié)議模型有較強(qiáng)可讀性。當(dāng)需要在特定位置嵌入精確數(shù)據(jù)時(shí),SPIKE的塊可以極大程度上縮短計(jì)算時(shí)間,提升工作效率。
Peach模糊測(cè)試工具是一個(gè)開源的模糊測(cè)試框架,其具有兩種測(cè)試用例生成方法,基于變異的測(cè)試用例生成方法和基于生成的測(cè)試用例生成方法。前者根據(jù)已有的數(shù)據(jù)樣本中的某個(gè)元素值進(jìn)行修改,用于實(shí)現(xiàn)變異測(cè)試用例的生成。但通過該方法生成的測(cè)試用例可能不被被測(cè)對(duì)象接受,適用范圍具有局限性。另外一種測(cè)試方法是根據(jù)目標(biāo)協(xié)議特征,定義Peach?Pits文件中的數(shù)據(jù)結(jié)構(gòu)和類型,實(shí)現(xiàn)基于協(xié)議特征的測(cè)試用例的生成。
Sulley模糊測(cè)試工具是基于Python的開源模糊測(cè)試框架,可以支持整個(gè)模糊測(cè)試流程,不僅可以簡(jiǎn)化測(cè)試用例的生成,同樣可以對(duì)與目標(biāo)系統(tǒng)之間的數(shù)據(jù)傳輸,以及目標(biāo)系統(tǒng)的監(jiān)控的模糊測(cè)試全流程進(jìn)行簡(jiǎn)化。
結(jié)語(yǔ)
工控系統(tǒng)廣泛應(yīng)用在電力、水利、交通運(yùn)輸、航空航天等工業(yè)領(lǐng)域,是國(guó)家基礎(chǔ)設(shè)施的重要組成部分。隨著工業(yè)化與信息化的深度融合,二者結(jié)合使工控系統(tǒng)由獨(dú)立封閉的物理環(huán)境,變成與企業(yè)內(nèi)網(wǎng)甚至互聯(lián)網(wǎng)產(chǎn)生了數(shù)據(jù)交換的開放性網(wǎng)絡(luò)。并且打破了工控系統(tǒng)物理環(huán)境上的封閉性以及系統(tǒng)軟硬件的專用性,這給不法分子創(chuàng)造了可乘之機(jī)。在數(shù)據(jù)傳輸方面工控協(xié)議從私有化轉(zhuǎn)向通用化,攻擊者從工控通信協(xié)議中的安全漏洞入手,對(duì)整個(gè)系統(tǒng)的正常工作產(chǎn)生影響。作為安全漏洞主要的分析測(cè)試方法之一,模糊測(cè)試只需要掌握很少的目標(biāo)知識(shí),并且可以很容易地?cái)U(kuò)展到大型應(yīng)用程序,可重用性好,因此已經(jīng)成為最流行的漏洞發(fā)現(xiàn)解決方案[18]。
參考文獻(xiàn):
[1]周光凱.聯(lián)網(wǎng)工控設(shè)備巡查系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱工業(yè)大學(xué),2017.
[2]吳丹丹.面向工控協(xié)議的模糊測(cè)試方法研究[D].南京理工大學(xué).
[3]康榮保,張曉,杜艷霞.工業(yè)控制系統(tǒng)信息安全防護(hù)技術(shù)研究[J].通信技術(shù),2018,51(08):19651971.
[4]周穎,郭榮華,賀惠民,等.工業(yè)網(wǎng)絡(luò)安全:智能電網(wǎng)SCADA和其他工業(yè)控制系統(tǒng)等關(guān)鍵基礎(chǔ)設(shè)施的網(wǎng)絡(luò)安全[M].國(guó)防工業(yè)出版社,2014.
[5]賴英旭,楊凱翔,劉靜,等.基于模糊測(cè)試的工控網(wǎng)絡(luò)協(xié)議漏洞挖掘方法[J].計(jì)算機(jī)集成制造系統(tǒng),2019,25(9):22652279.
[6]黃秀麗,張濤,馬媛媛,等.一種基于模糊測(cè)試的電網(wǎng)工控協(xié)議漏洞挖掘系統(tǒng)和方法,CN105245403A[P].2016.
[7]任澤眾,鄭晗,張嘉元,等.模糊測(cè)試技術(shù)綜述[J].計(jì)算機(jī)研究與發(fā)展,2021,58(05):944963.
[8]楊凱翔.基于模糊測(cè)試的工控網(wǎng)絡(luò)協(xié)議漏洞挖掘方法研究[D].北京工業(yè)大學(xué).
[9]賓冬梅,楊春燕,余通,等.基于電力Modbus公開協(xié)議的模糊測(cè)試方法[J].通信企業(yè)管理,2022(02):7788.
[10]吳丹丹.面向工控協(xié)議的模糊測(cè)試方法研究[D].南京理工大學(xué).
[11]Yuan?J.Research?on?attack?graph?generation?for?industrial?control?network?security?and?vulnerability?analysis[J].Modern?Electronics?Technique,2016.
[12]Ndiaye?M,JF?Pétin,Camerini?J,et?al.Performance?assessment?of?industrial?control?system?during?presales?uncertain?context?using?automatic?Colored?Petri?Nets?model?generation[C]//?International?Conference?on?Control.IEEE,2016.
[13]Banerjee?S,Grossmann?D.An?Electronic?Device?Description?Language?based?approach?for?communication?with?dbms?and?file?system?in?an?industrial?automation?scenario[C]//IEEE?International?Conference?on?Emerging?Technologies?&?Factory?Automation.IEEE,2016:14.
[14]羅常.工業(yè)控制系統(tǒng)信息安全防護(hù)體系在電力系統(tǒng)中的應(yīng)用研究[J].機(jī)電工程技術(shù),2016,45(12):97100.
[15]Liu?B,Liang?S,Cai?Z,et?al.Software?Vulnerability?Discovery?Techniques:A?Survey[C]//?Fourth?International?Conference?on?Multimedia?Information?Networking?&?Security.IEEE,2013.
[16]黃奕.基于模糊測(cè)試的軟件安全漏洞發(fā)掘技術(shù)研究[D].中國(guó)科學(xué)技術(shù)大學(xué).
[17]Gan?S,Chao?Z,Qin?X,et?al.CollAFL:Path?Sensitive?Fuzzing[C]//?2018?IEEE?Symposium?on?Security?and?Privacy(SP).IEEE?Computer?Society,2018.
[18]S?Rawat,V?Jain,A?Kumar,et?al.VUzzer:Applicationaware?Evolutionary?Fuzzing[C]//?Ndss.2017.
作者簡(jiǎn)介:劉博洋(1994—?),女,漢族,北京人,碩士研究生,助理工程師,研究方向:網(wǎng)絡(luò)安全;劉潮(1982—?),男,漢族,河北石家莊人,工學(xué)學(xué)士,助理工程師,研究方向:網(wǎng)絡(luò)安全;任藝琳(1997—?),女,漢族,河北定州人,工學(xué)學(xué)士,助理工程師,研究方向:網(wǎng)絡(luò)安全;滿芮(1996—?),女,回族,山東德州人,碩士研究生,助理工程師,研究方向:網(wǎng)絡(luò)安全;苗晗(1993—?),女,漢族,河北廊坊人,碩士研究生,助理工程師,研究方向:網(wǎng)絡(luò)安全。