《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于Fuzzing測試的工業(yè)控制協(xié)議漏洞挖掘技術(shù)研究
基于Fuzzing測試的工業(yè)控制協(xié)議漏洞挖掘技術(shù)研究
2016年電子技術(shù)應(yīng)用第7期
李 航,,董 偉,,朱廣宇
中國電子信息產(chǎn)業(yè)集團(tuán)有限公司第六研究所 工業(yè)控制系統(tǒng)信息安全技術(shù)國家工程實驗室工業(yè)控制系統(tǒng)安全檢測中心,,北京102209
摘要: 為了及早發(fā)現(xiàn)工業(yè)控制系統(tǒng)本身的信息安全問題,基于Fuzzing測試技術(shù)在軟件測試領(lǐng)域的成功經(jīng)驗,,針對工業(yè)控制系統(tǒng)協(xié)議MMS協(xié)議進(jìn)行分析和研究,,利用電力系統(tǒng)自動化領(lǐng)域常用的繼電器保護(hù)設(shè)備,采用橋接的方式進(jìn)行MMS協(xié)議的Fuzzing測試,,有效挖掘出被測設(shè)備的漏洞,,導(dǎo)致了被測設(shè)備拒絕服務(wù),并進(jìn)行了漏洞問題的分析。研究表明,,利用工控協(xié)議的Fuzzing測試技術(shù)可以有效地進(jìn)行工控信息安全的漏洞挖掘工作,。
中圖分類號: TP29;TH6
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.07.020
中文引用格式: 李航,,董偉,,朱廣宇. 基于Fuzzing測試的工業(yè)控制協(xié)議漏洞挖掘技術(shù)研究[J].電子技術(shù)應(yīng)用,2016,,42(7):79-82.
英文引用格式: Li Hang,,Dong Wei,Zhu Guangyu. Research on industrial control protocol vulnerability mining technology based on Fuzzing test[J].Application of Electronic Technique,,2016,,42(7):79-82.
Research on industrial control protocol vulnerability mining technology based on Fuzzing test
Li Hang,Dong Wei,,Zhu Guangyu
National Engineering Laboratory for Industrial Control System Information Security Technology Industrial Control System Security Testing Center,, The 6th Research Institute of China Electronics Corporation,Beijing 102209,,China
Abstract: In order to discover the problem of information security in industrial control system,, analysis and research on MMS protocol of industrial control system protocol were done based on the successful experience of Fuzzing testing technology in the field of software testing, and the relay protection equipment in the field of power system automation was used to carry out the Fuzzing test of MMS protocol by means of bridge,, which mined vulnerabilities of measured equipment effectively and led to the DUT′s denial of service. Some analysis about the problem of vulnerability was done. The research shows that the Fuzzing test technology of industrial control protocol can be used to effectively carry out the work of vulnerability mining in industrial control information security.
Key words : ICS,;security,;Fuzzing,;MMS;vulnerability discovery,;protocol

0 引言

    隨著兩化的深度融合,,工業(yè)控制系統(tǒng)集成了自動化技術(shù)、網(wǎng)絡(luò)技術(shù)和信息技術(shù),,工業(yè)企業(yè)也由原來的“孤島式”,、完全封閉的狀況,向互聯(lián)互通方向大力發(fā)展,。工業(yè)企業(yè)的信息化建設(shè)提高了企業(yè)的生產(chǎn)經(jīng)營效率,,也帶來了工業(yè)控制系統(tǒng)信息安全的風(fēng)險。最近幾年,,針對工業(yè)控制系統(tǒng)的攻擊層出不窮,,且攻擊的深度和強(qiáng)度進(jìn)一步增強(qiáng),“震網(wǎng)”和“火焰”病毒肆虐,,已經(jīng)說明了工業(yè)控制系統(tǒng)信息安全問題的嚴(yán)重性,。2015年12月,烏克蘭電網(wǎng)被攻破,,導(dǎo)致大面積停電,;2016年1月,,以色列宣稱本國電網(wǎng)遭受了大規(guī)模信息安全攻擊等,更是直指工業(yè)控制系統(tǒng)的脆弱性,。由于工業(yè)控制系統(tǒng)大量應(yīng)用在國家重要基礎(chǔ)設(shè)施內(nèi),,若被惡意攻擊,使得控制系統(tǒng)崩潰,,后果將不堪設(shè)想,。

    對于工業(yè)企業(yè)來說,及時發(fā)現(xiàn)信息安全風(fēng)險,,盡早對大量工業(yè)企業(yè)控制系統(tǒng)進(jìn)行檢測測試,,發(fā)現(xiàn)其安全漏洞并及時加固,才可提高其自身的工控信息安全抵抗能力,。但是,,目前使用的工業(yè)控制標(biāo)準(zhǔn)基本參照國際標(biāo)準(zhǔn),工控產(chǎn)品大部分都是國外品牌,,我國政府并沒有強(qiáng)制性的審查制度和認(rèn)證體系,,工控設(shè)備廠商不會完全主動對我國工業(yè)企業(yè)開放,只能采用黑盒技術(shù),,從標(biāo)準(zhǔn)協(xié)議入手,,利用Fuzzing測試手段,挖掘工業(yè)控制系統(tǒng)和產(chǎn)品的安全漏洞,,做到盡早發(fā)現(xiàn),、盡早加固。

1 Fuzzing測試

    Fuzzing測試是采用黑盒測試的思想和技術(shù),,將一組隨機(jī)生成的數(shù)據(jù)作為程序的輸入,,并監(jiān)視程序的異常狀態(tài),通過記錄導(dǎo)致異常的輸入來進(jìn)一步回溯程序的缺陷位置,。早期的Fuzzing技術(shù)僅是應(yīng)用在軟件測試方面的一種簡單的隨機(jī)測試技術(shù),,但卻有效地發(fā)現(xiàn)了許多程序中的錯誤。

    一般情況下,,F(xiàn)uzzing工具包括一個隨機(jī)數(shù)據(jù)生成器,,用來產(chǎn)生隨機(jī)二進(jìn)制數(shù)據(jù)或者字符串,同時,,為了協(xié)助追蹤錯誤原因和地址,,F(xiàn)uzzing還引入了一些腳本用來加強(qiáng)測試過程的自動化,記錄程序崩潰現(xiàn)場,。為了避免產(chǎn)生大量無效的測試數(shù)據(jù),,參數(shù)腳本給出了引擎生成的測試用例中數(shù)據(jù)的格式、長度等與數(shù)據(jù)之間的一些關(guān)系,如SPIKE,、Sulley使用的類C格式的腳本,、Peach使用的XML格式的腳本。許多Fuzzing工具的數(shù)據(jù)生成方式基于變異技術(shù),,而樣本文件則是這些工具用來變異測試數(shù)據(jù)的基準(zhǔn),。基于樣本文件產(chǎn)生的測試數(shù)據(jù),,可以大大提高測試用例的有效性,,可以提高測試的代碼覆蓋率,可以減輕測試用例構(gòu)造的復(fù)雜度[1],。圖1為模糊測試階段,。

ck3-t1.gif

    針對工業(yè)控制系統(tǒng)標(biāo)準(zhǔn)協(xié)議的Fuzzing測試,需要結(jié)合工業(yè)控制系統(tǒng)的特征,,一種比較有效的方式就是對工業(yè)控制系統(tǒng)標(biāo)準(zhǔn)協(xié)議的格式進(jìn)行分析,,通過對有效字段的有效變換來增加輸入的有效性。這種方式的實現(xiàn)主要是忽略掉協(xié)議的固定字段進(jìn)而減少輸入數(shù)據(jù)的產(chǎn)生數(shù)量,,提高測試效率和測試的有效性,。其次為了進(jìn)一步提高數(shù)據(jù)的生成效率,可以采用多元聯(lián)動的方式來生成數(shù)據(jù),,即:由原來的每次變換只變換一個字段改成每次變換同時變換多個相關(guān)的字段,。這樣的數(shù)據(jù)生成器可以產(chǎn)生更加有效的輸入[2]。為了解決隨機(jī)產(chǎn)生數(shù)據(jù)帶來的狀態(tài)爆炸等問題,,在數(shù)據(jù)生成器中加入了數(shù)據(jù)行為和狀態(tài)機(jī),,這樣的生成方式超越了黑盒測試的限制,介于黑盒測試和白盒測試之間,,而狀態(tài)機(jī)的加入更是提高了數(shù)據(jù)之間的關(guān)聯(lián)特性,,使得生成測試數(shù)據(jù)的有效性大大提高。

2 MMS標(biāo)準(zhǔn)

    IEC61850標(biāo)準(zhǔn)是電力系統(tǒng)自動化領(lǐng)域唯一的全球通用標(biāo)準(zhǔn),。其中MMS標(biāo)準(zhǔn)協(xié)議是基于通用網(wǎng)絡(luò)通信平臺的IEC61850標(biāo)準(zhǔn)的8-1指定協(xié)議,大量應(yīng)用在電力系統(tǒng)自動化領(lǐng)域,。

    MMS標(biāo)準(zhǔn)是為了便于信息處理系統(tǒng)互聯(lián)而制定的成套國際標(biāo)準(zhǔn)之一,,它作為開放系統(tǒng)互聯(lián)OSI的基本參考模型的一個應(yīng)用層服務(wù)元素ASE,列入OSI環(huán)境中的應(yīng)用層之中,。

    MMS是最大,、最復(fù)雜的應(yīng)用層協(xié)議標(biāo)準(zhǔn)之一,其目的是定義由MMS提供的各種服務(wù),,MMS服務(wù)由MMS協(xié)議提供,。協(xié)議采用ISO8649及ISO8822分別定義關(guān)聯(lián)控制服務(wù)元素ACSE和表示層的適用服務(wù)。也就是說,MMS作為OSI應(yīng)用層標(biāo)準(zhǔn),,它需要使用OSI表示層(第六層)向其提供服務(wù)[3],。

3 基于Fuzzing測試的漏洞挖掘研究及問題分析

    本文研究對象為電力自動化系統(tǒng)自動化設(shè)備中的繼電保護(hù)設(shè)備,該設(shè)備是變電站二次電力系統(tǒng)中最重要的一個設(shè)備,。當(dāng)電力系統(tǒng)發(fā)生故障或異常工況時,,可以自動將故障設(shè)備從系統(tǒng)中切除,或者發(fā)出信號由值班人員消除異常工況根源,,以減輕或者避免設(shè)備損壞和對相鄰地區(qū)供電的影響,。

3.1 Fuzzing測試工具架構(gòu)

    Fuzzing測試工具為自主研發(fā),該產(chǎn)品硬件設(shè)備為定制化開發(fā),,具有6個10/100/1 000 M業(yè)務(wù)電口,、16路數(shù)字量輸入接口、2路繼電器輸出接口,、1路RJ45 console接口(RS232協(xié)議),、1路232/485(DB9)接口。

    軟件系統(tǒng)采用B/S結(jié)構(gòu),,功能模塊分為:控制模塊,、端口掃描模塊、測試用例生成與加載模塊,、Fuzz模塊,、Monitor模塊;測試工具還集成了數(shù)據(jù)行為學(xué)習(xí)功能的自學(xué)習(xí)模塊,,可根據(jù)數(shù)據(jù)情況自學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),,建立數(shù)據(jù)分析庫,提高Fuzzing測試算法的效率,。Fuzzing測試工具涵蓋Ethernet,、ARP、IP,、ICMP,、IGMP、UDP以及TCP等常用網(wǎng)絡(luò)協(xié)議的模糊測試,,同時還支持Modbus TCP/IP,、DNP3.0、EtherNet/IP-CIP,、Foudation Fieldbus,、IEC104、IEC-61850,、MMS,、PROFINET以及OPC UA等工控協(xié)議,。軟件系統(tǒng)的功能模塊圖如圖2所示。

ck3-t2.gif

3.2 基于Fuzzing的漏洞挖掘過程

    針對繼電保護(hù)的測試采用Fuzzing測試技術(shù),,利用橋接方式,,在被測設(shè)備和其上位機(jī)系統(tǒng)之間建立物理連接,具有監(jiān)聽,、學(xué)習(xí),、測試等模式。

    按照圖3的連接示意圖將被測設(shè)備和測試工具連接在一起,,對被測設(shè)備進(jìn)行測試時,,首先對被測報文進(jìn)行監(jiān)聽(如圖4),分析得出其被測設(shè)備與上位機(jī)系統(tǒng)通信規(guī)約為MMS標(biāo)準(zhǔn)協(xié)議,。

ck3-t3.gif

ck3-t4.gif

    確定MMS標(biāo)準(zhǔn)協(xié)議后,,啟動測試程序,選擇ARP,、ICMP,、TCP等狀態(tài)監(jiān)視器,用來監(jiān)控被測設(shè)備的通信狀態(tài),,同時選擇MMS標(biāo)準(zhǔn)協(xié)議語法測試模塊,。此時被測設(shè)備與測試工具通信狀態(tài)良好,如圖5監(jiān)視器連接狀態(tài)比對圖所示,。

ck3-t5.gif

    圖5左側(cè)說明在測試開始時,,ARP、ICMP,、TCP等狀態(tài)監(jiān)視器顯示正常,,被測設(shè)備與測試工具之間通信連接正常。啟動以后,,會利用Fuzzing技術(shù)進(jìn)行MMS協(xié)議語法測試用例的構(gòu)造,。MMS-TPKT數(shù)據(jù)語法測試用例中,按照TPKT格式,,版本號和保留位為固定字段,,長度和數(shù)據(jù)段進(jìn)行多種變異,從而生成大量格式正確的隨機(jī)數(shù)據(jù),。在測試過程中,,會打開一個TCP連接,發(fā)送數(shù)據(jù)包并嘗試接收數(shù)據(jù)包,,如果不能接收,則關(guān)閉該TCP連接,,并且打開一個新的TCP連接,。如果不能打開一個新的TCP連接,,則表示上一條測試數(shù)據(jù)導(dǎo)致設(shè)備發(fā)生了異常,并且對該數(shù)據(jù)的版本號值,、保留位以及相關(guān)子集的大小等進(jìn)行分析,,得出產(chǎn)生異常的原因。

    在啟動測試并持續(xù)一段時間后,,如圖5右側(cè)所示,,ARP、ICMP狀態(tài)監(jiān)視器發(fā)生丟包,,TCP狀態(tài)監(jiān)視器連接中斷,,被測設(shè)備出現(xiàn)拒絕服務(wù)狀態(tài),完全無法工作,。

3.3 問題回溯以及結(jié)果分析

    對被測設(shè)備發(fā)生的問題進(jìn)行數(shù)據(jù)分析,,采用回溯方式,同時分析測試報文,,如圖6,。

ck3-t6.gif

    MMS協(xié)議棧是基于TCP/IP的,作為定義在開放系統(tǒng)互聯(lián)模型(OSI)之上的應(yīng)用層協(xié)議,,在TCP/IP之上構(gòu)建MMS通信的映射方式有2種:(1)在TCP/IP與會話層之間采用RFC1006作為MMS的適配層,;(2)在MMS與TCP/IP之間直接映射。

    當(dāng)把ISO/OSI應(yīng)用移植到TCP/IP環(huán)境中時,,可采用2種方式:(1)移植每一個單獨(dú)的應(yīng)用,,在TCP上開發(fā)本地協(xié)議;(2)通過TCP/IP提供的ISO/OSI的傳輸服務(wù),,此方法為所有的基于傳輸服務(wù)的應(yīng)用提供通用方案,。

    ISO8073傳輸協(xié)議在對等層間以非連續(xù)的單元傳輸信息,這些單元叫作傳輸協(xié)議數(shù)據(jù)單元(TPDU),,為了在TCP上實現(xiàn)TS服務(wù),,需要將TPDU封裝入一個非連續(xù)的報文單元——TPKT。

由于TCP報文字節(jié)流是沒有邊界的,,為了達(dá)到NS服務(wù)的要求,,要通過一種機(jī)制實現(xiàn)TPDU的定界,TPKT恰好實現(xiàn)了這種封裝,。

    TPKT包含報文頭,、TPDU兩部分。通過TCP實現(xiàn)NS服務(wù)要實現(xiàn)報文的封裝和拆分,,以向上層提供非連續(xù)的報文而非字節(jié)流,。TPKT的具體格式如表1。ck3-b1.gif

    分析得出,,MMS標(biāo)準(zhǔn)利用了TPKT協(xié)議,,而TPKT(transport services on top of the TCP)協(xié)議是應(yīng)用層數(shù)據(jù)傳輸協(xié)議,,它處于TCP協(xié)議之上,用來傳輸應(yīng)用層數(shù)據(jù)負(fù)載,,而在電力設(shè)備中,,基于MMS協(xié)議的數(shù)據(jù)用來傳輸通信的負(fù)載數(shù)據(jù),或者承載更高層的協(xié)議,。

    利用問題報文并結(jié)合MMS協(xié)議進(jìn)行分析,,發(fā)現(xiàn)如下問題:

    (1)在TCP流上進(jìn)行傳輸?shù)臄?shù)據(jù)是沒有界限的,而TPKT提供了報文分界,,于是當(dāng)發(fā)送的報文的TPKT的length字段超過了設(shè)備緩存的長度,,length字段設(shè)置為50 000,實際測試用例累計達(dá)到50 004,,就可能造成設(shè)備內(nèi)存溢出進(jìn)而造成設(shè)備宕機(jī),,拒絕服務(wù)。

    (2)在測試用例中組裝了正確的協(xié)議頭,,但是協(xié)議負(fù)載部分填充了不符合MMS協(xié)議規(guī)約的數(shù)據(jù),,如果設(shè)備對這種報文的處理存在缺陷,可能導(dǎo)致協(xié)議棧崩潰,,出現(xiàn)拒絕服務(wù),。

    在回溯過程中,如果回溯的區(qū)間過短,,那么Fuzzing測試工具監(jiān)視器不會出現(xiàn)問題,,只有回溯的區(qū)間達(dá)到某一個臨界值后問題才會重現(xiàn)漏洞。由此可見,,漏洞的出現(xiàn)和數(shù)據(jù)的積累有著直接的相關(guān)性,。

4 結(jié)束語

    本文介紹了Fuzzing測試技術(shù)的基本情況,分析了MMS標(biāo)準(zhǔn)協(xié)議的結(jié)構(gòu)和工作特點(diǎn),,利用自主研發(fā)的Fuzzing測試工具,,完成了針對電力設(shè)備的漏洞挖掘及分析工作,有效證明了基于Fuzzing測試技術(shù)的工業(yè)控制協(xié)議漏洞挖掘技術(shù)的可行性,。同時對于工業(yè)控制系統(tǒng)及設(shè)備來說,,被惡意攻擊后拒絕服務(wù),會給工業(yè)企業(yè)正常生產(chǎn)帶來非常大的影響,??梢岳眠@項研究,與工業(yè)企業(yè),、工控系統(tǒng)及設(shè)備生產(chǎn)制造商合作,,開展相關(guān)測試的研究并形成測試規(guī)范和標(biāo)準(zhǔn),在系統(tǒng)以及設(shè)備上線前,、運(yùn)行調(diào)試中,、后期維護(hù)中進(jìn)行測試工作,,發(fā)現(xiàn)系統(tǒng)本身的漏洞,,及時進(jìn)行補(bǔ)丁升級或者實施有效防護(hù)措施,,有效提升工業(yè)控制系統(tǒng)的信息安全性。

參考文獻(xiàn)

[1] Michael Sutton,,Adam Greene,,Pedram Amini.模糊測試-強(qiáng)制發(fā)掘安全漏洞的利器[M].段念,趙勇,,譯.北京:電子工業(yè)出版社,,2013.

[2] 張寶峰,張翀斌,,許源.基于模糊測試的網(wǎng)絡(luò)協(xié)議漏洞挖掘[J].清華大學(xué)學(xué)報:自然科學(xué)版,,2009,49(S):14-15.

[3] ISO 9506-1,,ISO 9506-2,,ISO/IEC 8802-3.Communication networks and systems in substations Part8-1:Specific Communication Service Mapping(SCSM)——Mappings to MMS[S].2011.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。