劉博洋 劉潮 任藝琳 滿芮 苗晗
摘?要:隨著工業信息化的快速發展,工控系統利用最新的計算機網絡技術以提高系統間的集成、互聯以及信息化管理水平,由封閉的系統到開放式系統的轉變引發的網絡安全事件逐年增多,目前已成為工控系統網絡安全中亟待解決的問題。模糊測試(fuzzing)技術可以在保證工控系統實時性和業務連續性的同時,使用大量畸形數據輸入至目標程序,通過監測異常行為達到挖掘工控系統中潛在漏洞的目的。傳統的模糊測試方法通過提取工控協議特征生成測試用例,并使用新生成的測試用例作為模糊測試的輸入,以提高目標程序。并以測試用例能否引發協議實體異常為標志,盡可能全面地挖掘協議存在的漏洞。模糊測試方法自動化程度高、不需要源代碼的支撐、可重復性強、誤報率低。模糊測試中生成測試用例傳統方法,針對協議的某個狀態或者單個功能類型碼發送測試用例,能發現對應單個協議狀態或者單個功能類型碼的漏洞,但是很多安全漏洞都是由多個協議狀態或多個功能類型碼共同作用所觸發的。所以,已有的模糊測試方法并沒有對被測對象進行全面、完整的漏洞檢測。模糊測試方法不受限于被測系統內部細節和復雜程度,可以在有程序源代碼或沒有源代碼的情況下執行,可擴展性和實用性較好,已經成為當前最有效的漏洞挖掘方法。
關鍵詞:工控協議;模糊測試;漏洞挖掘
1?概述
工業控制系統(Industrial?Control?Systems,ICS)是計算機設備和工業生產控制部件組成的自動控制系統,主要包括數據采集與監測控制系統(SCADA)、分布式控制系統(DCS)、可編程邏輯控制器(PLC)、遠程終端單元(RTU)以及現場總線控制系統(FCS)等[12]。隨著工業信息化的快速發展,工控系統由最早專用封閉的計算機實時監控系統發展到廣泛應用互聯網信息技術的綜合性業務系統。其開放性導致系統安全漏洞和缺陷極易被攻擊者利用,工控系統的安全問題愈發突顯[34]。
隨著工業化與信息化的有效融合,越來越多的工控協議與設備集成了以太網功能,并將嵌入式技術、現場總線、工業以太網、多種工業控制網絡互聯以及無線通信技術融合到工業控制網絡中,由此引入的網絡安全風險會對工控系統造成巨大的威脅。而工控系統因其具有特殊性,其中大量工控系統采用私有協議、系統穩定性要求高、網絡結構和行為相對穩定但對網絡防護要求相對較高。傳統的工控安全防護目標重點在于保護信息不泄露,而工控系統安全防護的重點在于保證生產業務的連續穩定可用且對信息的實時性要求更高。
在電力行業工控系統中,從發電端到用電端的每個環節都有不同形態的電力工控終端進行數據采集、指令調度、遠程控制等工作,工控終端與主站之間的控制信息和數據均通過工控協議實現傳遞[5]。因工控協議存在安全設計缺陷,加之系統缺乏安全防護機制,在使用過程中極易暴露出安全漏洞,攻擊者可利用以上安全漏洞達到對工控系統控制的目的。
工控系統因設計漏洞,極易成為攻擊者的目標,漏洞挖掘技術作為檢測工控系統漏洞的關鍵技術,可以在未出現網絡安全問題的情況下及時發現潛在安全隱患,防范未知風險,從而達到安全防御的作用[6]。常用的漏洞挖掘技術包括人工分析技術、補丁比對技術、動靜態分析技術以及模糊測試技術。人工分析技術是一種通過人工構造輸入條件,觀察目標狀態的灰盒分析技術,該種漏洞挖掘方法高度依賴操作人員的經驗。補丁比對技術通過反匯編調試的手段對原始文件和補丁文件進行反匯編,比較打補丁前后的二進制文件的差異,即可明確漏洞位置。靜態分析技術是通過逆向技術獲得被分析目標源代碼,并檢測程序中不符合安全規則的行為,發現程序中存在的漏洞的白盒分析技術。該方法因需不斷擴大特征庫而導致誤報率高,也存在較大局限性。動態分析技術是利用調試器作為動態分析工具,通過觀察執行過程中程序的運行狀態發現漏洞[7]。其中,模糊測試技術(fuzz?testing)是一種基于缺陷注入的自動化軟件測試技術,它利用黑盒分析技術方法,黑盒測試是通過將大量未知數據作為模糊測試的輸入,以程序是否出現異常為標志,以此判斷程序中是否存在安全漏洞[810]。模糊測試技術作為動態分析技術的一種,因其操作簡單、誤報率低以及良好的自動化測試能力,近些年在漏洞挖掘領域取得了長足的發展。
2?模糊測試方法
模糊測試通過提取工控網絡協議的協議特征,隨機生成測試用例,將其輸入協議實體程序中,并實時監控被測對象的狀態,對協議實體異常進行分析。該技術不依賴于被測對象的源代碼,測試原理簡單,自動化程度較高,測試范圍廣,是一種高效的網絡協議漏洞挖掘方法。
基于工控協議的模糊測試方法以網絡報文為測試用例,待被測對象接收到網絡報文后,對網絡報文進行解析,從而提取出相關數據信息,數據進入程序內部進行業務邏輯處理的同時,可以實現對被測對象的運行狀態的監控。模糊測試的工作原理是通過事先構造好的測試用例發送給測試目標后通過測試目標反饋的問題找出測試目標漏洞的過程[1113]。從執行過程的角度來說,大致可以分為以下五個階段。
2.1?確定測試對象
模糊測試的第一步為確定測試對象,我們將確定測試對象的原則定義為:一切向測試目標程序輸入的數據都應該被認為是危險的,所有測試對象都可能是存在潛在安全風險的模糊測試變量,測試人員根據測試對象的特征選擇適合的工具以及測試框架進行模糊測試。
2.2?生成模糊測試數據
大多數模糊測試的方法是通過向目標系統不斷輸入可以誘發軟件缺陷的測試數據,因此測試數據的生成是模糊測試非常關鍵的環節,模糊測試數據的生成方式主要有兩種:一種是通過預先確定的值,使用基于已存在的數據通過算法將其變異,生成新的測試數據;另一種是通過分析被測試應用程序及其使用的數據格式,動態生成測試數據。
2.3?執行模糊測試
確定測試對象以及完成模糊測試數據生成的兩個步驟后,就可以進行模糊測試。執行模糊測試需要依據測試目標選擇對應的測試方法,該步驟通過自動化的手段向被測系統發送數據包、利用被測試程序打開包含測試數據的文件。
2.4?監視異常
測試過程中,對異常和錯誤進行監控是模糊測試過程中極為重要的步驟,模糊測試的目的不僅是確定被測試程序是否存在安全漏洞,更重要的是確定程序為何會產生異常。模糊測試需要根據被測應用和所決定采用的模糊測試類型來設置各種形式的監視,從而發現漏洞并及時進行漏洞修復。
2.5?判定是否存在潛在的安全漏洞
模糊測試中發現漏洞,需要判定該漏洞是否是一個可被利用的安全漏洞,以防漏洞被攻擊者利用,導致安全問題的發生。
3?自動化模糊測試工具
工控協議自身具有協議種類多、協議構造非公開、面向控制等特點,使得模糊測試前期對協議進行解析十分困難,加之協議腳本構造過程復雜,極大降低了模糊測試方法在工控協議領域的測試效率。因此,利用生成技術或變異技術構造測試樣例就成為模糊測試過程中的關鍵問題,其決定了模糊測試的效率。目前,自動化測試工具的開發,可以快速構造測試樣例,對模糊測試效率的提升有很大幫助。常用的自動化測試工具分為兩大類,一類可以根據已知輸入數據的規范制作新的輸入,代表工具有SPIKE、Sulley、SNOOZE、Peachfuzz、Boofuzz等;另外一種是根據已知數據樣本通過變異的方法生成新的測試用例,代表工具有ProxyFuzz、SecFuzz、GPF、TaoF等[1417]。以下為幾種常用的自動化模糊測試工具。
SPIKE模糊測試工具是最具有代表性的模糊測試創建工具集,它可以基于網絡協議生成測試數據。SPIKE通過塊的概念將產生的數據以不同格式嵌入自身測試數據中,這樣可以通過一種易于理解的方式描述協議構成,使基于塊的協議模型有較強可讀性。當需要在特定位置嵌入精確數據時,SPIKE的塊可以極大程度上縮短計算時間,提升工作效率。
Peach模糊測試工具是一個開源的模糊測試框架,其具有兩種測試用例生成方法,基于變異的測試用例生成方法和基于生成的測試用例生成方法。前者根據已有的數據樣本中的某個元素值進行修改,用于實現變異測試用例的生成。但通過該方法生成的測試用例可能不被被測對象接受,適用范圍具有局限性。另外一種測試方法是根據目標協議特征,定義Peach?Pits文件中的數據結構和類型,實現基于協議特征的測試用例的生成。
Sulley模糊測試工具是基于Python的開源模糊測試框架,可以支持整個模糊測試流程,不僅可以簡化測試用例的生成,同樣可以對與目標系統之間的數據傳輸,以及目標系統的監控的模糊測試全流程進行簡化。
結語
工控系統廣泛應用在電力、水利、交通運輸、航空航天等工業領域,是國家基礎設施的重要組成部分。隨著工業化與信息化的深度融合,二者結合使工控系統由獨立封閉的物理環境,變成與企業內網甚至互聯網產生了數據交換的開放性網絡。并且打破了工控系統物理環境上的封閉性以及系統軟硬件的專用性,這給不法分子創造了可乘之機。在數據傳輸方面工控協議從私有化轉向通用化,攻擊者從工控通信協議中的安全漏洞入手,對整個系統的正常工作產生影響。作為安全漏洞主要的分析測試方法之一,模糊測試只需要掌握很少的目標知識,并且可以很容易地擴展到大型應用程序,可重用性好,因此已經成為最流行的漏洞發現解決方案[18]。
參考文獻:
[1]周光凱.聯網工控設備巡查系統的設計與實現[D].哈爾濱工業大學,2017.
[2]吳丹丹.面向工控協議的模糊測試方法研究[D].南京理工大學.
[3]康榮保,張曉,杜艷霞.工業控制系統信息安全防護技術研究[J].通信技術,2018,51(08):19651971.
[4]周穎,郭榮華,賀惠民,等.工業網絡安全:智能電網SCADA和其他工業控制系統等關鍵基礎設施的網絡安全[M].國防工業出版社,2014.
[5]賴英旭,楊凱翔,劉靜,等.基于模糊測試的工控網絡協議漏洞挖掘方法[J].計算機集成制造系統,2019,25(9):22652279.
[6]黃秀麗,張濤,馬媛媛,等.一種基于模糊測試的電網工控協議漏洞挖掘系統和方法,CN105245403A[P].2016.
[7]任澤眾,鄭晗,張嘉元,等.模糊測試技術綜述[J].計算機研究與發展,2021,58(05):944963.
[8]楊凱翔.基于模糊測試的工控網絡協議漏洞挖掘方法研究[D].北京工業大學.
[9]賓冬梅,楊春燕,余通,等.基于電力Modbus公開協議的模糊測試方法[J].通信企業管理,2022(02):7788.
[10]吳丹丹.面向工控協議的模糊測試方法研究[D].南京理工大學.
[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]羅常.工業控制系統信息安全防護體系在電力系統中的應用研究[J].機電工程技術,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]黃奕.基于模糊測試的軟件安全漏洞發掘技術研究[D].中國科學技術大學.
[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.
作者簡介:劉博洋(1994—?),女,漢族,北京人,碩士研究生,助理工程師,研究方向:網絡安全;劉潮(1982—?),男,漢族,河北石家莊人,工學學士,助理工程師,研究方向:網絡安全;任藝琳(1997—?),女,漢族,河北定州人,工學學士,助理工程師,研究方向:網絡安全;滿芮(1996—?),女,回族,山東德州人,碩士研究生,助理工程師,研究方向:網絡安全;苗晗(1993—?),女,漢族,河北廊坊人,碩士研究生,助理工程師,研究方向:網絡安全。