文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.07.020
中文引用格式: 李航,,董偉,,朱廣宇. 基于Fuzzing測(cè)試的工業(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.
0 引言
隨著兩化的深度融合,,工業(yè)控制系統(tǒng)集成了自動(dòng)化技術(shù),、網(wǎng)絡(luò)技術(shù)和信息技術(shù),工業(yè)企業(yè)也由原來(lái)的“孤島式”,、完全封閉的狀況,,向互聯(lián)互通方向大力發(fā)展。工業(yè)企業(yè)的信息化建設(shè)提高了企業(yè)的生產(chǎn)經(jīng)營(yíng)效率,,也帶來(lái)了工業(yè)控制系統(tǒng)信息安全的風(fēng)險(xiǎn),。最近幾年,,針對(duì)工業(yè)控制系統(tǒng)的攻擊層出不窮,且攻擊的深度和強(qiáng)度進(jìn)一步增強(qiáng),,“震網(wǎng)”和“火焰”病毒肆虐,,已經(jīng)說(shuō)明了工業(yè)控制系統(tǒng)信息安全問題的嚴(yán)重性。2015年12月,,烏克蘭電網(wǎng)被攻破,,導(dǎo)致大面積停電;2016年1月,,以色列宣稱本國(guó)電網(wǎng)遭受了大規(guī)模信息安全攻擊等,,更是直指工業(yè)控制系統(tǒng)的脆弱性。由于工業(yè)控制系統(tǒng)大量應(yīng)用在國(guó)家重要基礎(chǔ)設(shè)施內(nèi),,若被惡意攻擊,,使得控制系統(tǒng)崩潰,后果將不堪設(shè)想,。
對(duì)于工業(yè)企業(yè)來(lái)說(shuō),,及時(shí)發(fā)現(xiàn)信息安全風(fēng)險(xiǎn),盡早對(duì)大量工業(yè)企業(yè)控制系統(tǒng)進(jìn)行檢測(cè)測(cè)試,,發(fā)現(xiàn)其安全漏洞并及時(shí)加固,,才可提高其自身的工控信息安全抵抗能力。但是,,目前使用的工業(yè)控制標(biāo)準(zhǔn)基本參照國(guó)際標(biāo)準(zhǔn),,工控產(chǎn)品大部分都是國(guó)外品牌,我國(guó)政府并沒有強(qiáng)制性的審查制度和認(rèn)證體系,,工控設(shè)備廠商不會(huì)完全主動(dòng)對(duì)我國(guó)工業(yè)企業(yè)開放,,只能采用黑盒技術(shù),從標(biāo)準(zhǔn)協(xié)議入手,,利用Fuzzing測(cè)試手段,,挖掘工業(yè)控制系統(tǒng)和產(chǎn)品的安全漏洞,做到盡早發(fā)現(xiàn),、盡早加固,。
1 Fuzzing測(cè)試
Fuzzing測(cè)試是采用黑盒測(cè)試的思想和技術(shù),將一組隨機(jī)生成的數(shù)據(jù)作為程序的輸入,,并監(jiān)視程序的異常狀態(tài),,通過記錄導(dǎo)致異常的輸入來(lái)進(jìn)一步回溯程序的缺陷位置。早期的Fuzzing技術(shù)僅是應(yīng)用在軟件測(cè)試方面的一種簡(jiǎn)單的隨機(jī)測(cè)試技術(shù),,但卻有效地發(fā)現(xiàn)了許多程序中的錯(cuò)誤,。
一般情況下,F(xiàn)uzzing工具包括一個(gè)隨機(jī)數(shù)據(jù)生成器,,用來(lái)產(chǎn)生隨機(jī)二進(jìn)制數(shù)據(jù)或者字符串,,同時(shí),為了協(xié)助追蹤錯(cuò)誤原因和地址,,F(xiàn)uzzing還引入了一些腳本用來(lái)加強(qiáng)測(cè)試過程的自動(dòng)化,,記錄程序崩潰現(xiàn)場(chǎng)。為了避免產(chǎn)生大量無(wú)效的測(cè)試數(shù)據(jù),,參數(shù)腳本給出了引擎生成的測(cè)試用例中數(shù)據(jù)的格式,、長(zhǎng)度等與數(shù)據(jù)之間的一些關(guān)系,如SPIKE,、Sulley使用的類C格式的腳本,、Peach使用的XML格式的腳本。許多Fuzzing工具的數(shù)據(jù)生成方式基于變異技術(shù),,而樣本文件則是這些工具用來(lái)變異測(cè)試數(shù)據(jù)的基準(zhǔn),。基于樣本文件產(chǎn)生的測(cè)試數(shù)據(jù),,可以大大提高測(cè)試用例的有效性,,可以提高測(cè)試的代碼覆蓋率,可以減輕測(cè)試用例構(gòu)造的復(fù)雜度[1],。圖1為模糊測(cè)試階段,。
針對(duì)工業(yè)控制系統(tǒng)標(biāo)準(zhǔn)協(xié)議的Fuzzing測(cè)試,需要結(jié)合工業(yè)控制系統(tǒng)的特征,,一種比較有效的方式就是對(duì)工業(yè)控制系統(tǒng)標(biāo)準(zhǔn)協(xié)議的格式進(jìn)行分析,,通過對(duì)有效字段的有效變換來(lái)增加輸入的有效性。這種方式的實(shí)現(xiàn)主要是忽略掉協(xié)議的固定字段進(jìn)而減少輸入數(shù)據(jù)的產(chǎn)生數(shù)量,,提高測(cè)試效率和測(cè)試的有效性,。其次為了進(jìn)一步提高數(shù)據(jù)的生成效率,可以采用多元聯(lián)動(dòng)的方式來(lái)生成數(shù)據(jù),,即:由原來(lái)的每次變換只變換一個(gè)字段改成每次變換同時(shí)變換多個(gè)相關(guān)的字段,。這樣的數(shù)據(jù)生成器可以產(chǎn)生更加有效的輸入[2]。為了解決隨機(jī)產(chǎn)生數(shù)據(jù)帶來(lái)的狀態(tài)爆炸等問題,,在數(shù)據(jù)生成器中加入了數(shù)據(jù)行為和狀態(tài)機(jī),,這樣的生成方式超越了黑盒測(cè)試的限制,介于黑盒測(cè)試和白盒測(cè)試之間,,而狀態(tài)機(jī)的加入更是提高了數(shù)據(jù)之間的關(guān)聯(lián)特性,,使得生成測(cè)試數(shù)據(jù)的有效性大大提高。
2 MMS標(biāo)準(zhǔn)
IEC61850標(biāo)準(zhǔn)是電力系統(tǒng)自動(dòng)化領(lǐng)域唯一的全球通用標(biāo)準(zhǔn),。其中MMS標(biāo)準(zhǔn)協(xié)議是基于通用網(wǎng)絡(luò)通信平臺(tái)的IEC61850標(biāo)準(zhǔn)的8-1指定協(xié)議,,大量應(yīng)用在電力系統(tǒng)自動(dòng)化領(lǐng)域。
MMS標(biāo)準(zhǔn)是為了便于信息處理系統(tǒng)互聯(lián)而制定的成套國(guó)際標(biāo)準(zhǔn)之一,,它作為開放系統(tǒng)互聯(lián)OSI的基本參考模型的一個(gè)應(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ù),。也就是說(shuō),,MMS作為OSI應(yīng)用層標(biāo)準(zhǔn),它需要使用OSI表示層(第六層)向其提供服務(wù)[3],。
3 基于Fuzzing測(cè)試的漏洞挖掘研究及問題分析
本文研究對(duì)象為電力自動(dòng)化系統(tǒng)自動(dòng)化設(shè)備中的繼電保護(hù)設(shè)備,,該設(shè)備是變電站二次電力系統(tǒng)中最重要的一個(gè)設(shè)備。當(dāng)電力系統(tǒng)發(fā)生故障或異常工況時(shí),,可以自動(dòng)將故障設(shè)備從系統(tǒng)中切除,,或者發(fā)出信號(hào)由值班人員消除異常工況根源,以減輕或者避免設(shè)備損壞和對(duì)相鄰地區(qū)供電的影響,。
3.1 Fuzzing測(cè)試工具架構(gòu)
Fuzzing測(cè)試工具為自主研發(fā),,該產(chǎn)品硬件設(shè)備為定制化開發(fā),具有6個(gè)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),功能模塊分為:控制模塊,、端口掃描模塊,、測(cè)試用例生成與加載模塊、Fuzz模塊,、Monitor模塊,;測(cè)試工具還集成了數(shù)據(jù)行為學(xué)習(xí)功能的自學(xué)習(xí)模塊,可根據(jù)數(shù)據(jù)情況自學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),,建立數(shù)據(jù)分析庫(kù),,提高Fuzzing測(cè)試算法的效率。Fuzzing測(cè)試工具涵蓋Ethernet,、ARP,、IP、ICMP,、IGMP,、UDP以及TCP等常用網(wǎng)絡(luò)協(xié)議的模糊測(cè)試,同時(shí)還支持Modbus TCP/IP、DNP3.0,、EtherNet/IP-CIP,、Foudation Fieldbus、IEC104,、IEC-61850,、MMS、PROFINET以及OPC UA等工控協(xié)議,。軟件系統(tǒng)的功能模塊圖如圖2所示。
3.2 基于Fuzzing的漏洞挖掘過程
針對(duì)繼電保護(hù)的測(cè)試采用Fuzzing測(cè)試技術(shù),,利用橋接方式,,在被測(cè)設(shè)備和其上位機(jī)系統(tǒng)之間建立物理連接,具有監(jiān)聽,、學(xué)習(xí),、測(cè)試等模式。
按照?qǐng)D3的連接示意圖將被測(cè)設(shè)備和測(cè)試工具連接在一起,,對(duì)被測(cè)設(shè)備進(jìn)行測(cè)試時(shí),,首先對(duì)被測(cè)報(bào)文進(jìn)行監(jiān)聽(如圖4),分析得出其被測(cè)設(shè)備與上位機(jī)系統(tǒng)通信規(guī)約為MMS標(biāo)準(zhǔn)協(xié)議,。
確定MMS標(biāo)準(zhǔn)協(xié)議后,,啟動(dòng)測(cè)試程序,選擇ARP,、ICMP,、TCP等狀態(tài)監(jiān)視器,用來(lái)監(jiān)控被測(cè)設(shè)備的通信狀態(tài),,同時(shí)選擇MMS標(biāo)準(zhǔn)協(xié)議語(yǔ)法測(cè)試模塊,。此時(shí)被測(cè)設(shè)備與測(cè)試工具通信狀態(tài)良好,如圖5監(jiān)視器連接狀態(tài)比對(duì)圖所示,。
圖5左側(cè)說(shuō)明在測(cè)試開始時(shí),,ARP、ICMP,、TCP等狀態(tài)監(jiān)視器顯示正常,,被測(cè)設(shè)備與測(cè)試工具之間通信連接正常。啟動(dòng)以后,,會(huì)利用Fuzzing技術(shù)進(jìn)行MMS協(xié)議語(yǔ)法測(cè)試用例的構(gòu)造,。MMS-TPKT數(shù)據(jù)語(yǔ)法測(cè)試用例中,按照TPKT格式,,版本號(hào)和保留位為固定字段,,長(zhǎng)度和數(shù)據(jù)段進(jìn)行多種變異,從而生成大量格式正確的隨機(jī)數(shù)據(jù)。在測(cè)試過程中,,會(huì)打開一個(gè)TCP連接,,發(fā)送數(shù)據(jù)包并嘗試接收數(shù)據(jù)包,如果不能接收,,則關(guān)閉該TCP連接,,并且打開一個(gè)新的TCP連接。如果不能打開一個(gè)新的TCP連接,,則表示上一條測(cè)試數(shù)據(jù)導(dǎo)致設(shè)備發(fā)生了異常,,并且對(duì)該數(shù)據(jù)的版本號(hào)值、保留位以及相關(guān)子集的大小等進(jìn)行分析,,得出產(chǎn)生異常的原因,。
在啟動(dòng)測(cè)試并持續(xù)一段時(shí)間后,如圖5右側(cè)所示,,ARP,、ICMP狀態(tài)監(jiān)視器發(fā)生丟包,TCP狀態(tài)監(jiān)視器連接中斷,,被測(cè)設(shè)備出現(xiàn)拒絕服務(wù)狀態(tài),,完全無(wú)法工作。
3.3 問題回溯以及結(jié)果分析
對(duì)被測(cè)設(shè)備發(fā)生的問題進(jìn)行數(shù)據(jù)分析,,采用回溯方式,,同時(shí)分析測(cè)試報(bào)文,如圖6,。
MMS協(xié)議棧是基于TCP/IP的,,作為定義在開放系統(tǒng)互聯(lián)模型(OSI)之上的應(yīng)用層協(xié)議,在TCP/IP之上構(gòu)建MMS通信的映射方式有2種:(1)在TCP/IP與會(huì)話層之間采用RFC1006作為MMS的適配層,;(2)在MMS與TCP/IP之間直接映射,。
當(dāng)把ISO/OSI應(yīng)用移植到TCP/IP環(huán)境中時(shí),可采用2種方式:(1)移植每一個(gè)單獨(dú)的應(yīng)用,,在TCP上開發(fā)本地協(xié)議,;(2)通過TCP/IP提供的ISO/OSI的傳輸服務(wù),此方法為所有的基于傳輸服務(wù)的應(yīng)用提供通用方案,。
ISO8073傳輸協(xié)議在對(duì)等層間以非連續(xù)的單元傳輸信息,,這些單元叫作傳輸協(xié)議數(shù)據(jù)單元(TPDU),為了在TCP上實(shí)現(xiàn)TS服務(wù),,需要將TPDU封裝入一個(gè)非連續(xù)的報(bào)文單元——TPKT,。
由于TCP報(bào)文字節(jié)流是沒有邊界的,為了達(dá)到NS服務(wù)的要求,,要通過一種機(jī)制實(shí)現(xiàn)TPDU的定界,,TPKT恰好實(shí)現(xiàn)了這種封裝。
TPKT包含報(bào)文頭、TPDU兩部分,。通過TCP實(shí)現(xiàn)NS服務(wù)要實(shí)現(xiàn)報(bào)文的封裝和拆分,,以向上層提供非連續(xù)的報(bào)文而非字節(jié)流。TPKT的具體格式如表1,。
分析得出,,MMS標(biāo)準(zhǔn)利用了TPKT協(xié)議,而TPKT(transport services on top of the TCP)協(xié)議是應(yīng)用層數(shù)據(jù)傳輸協(xié)議,,它處于TCP協(xié)議之上,,用來(lái)傳輸應(yīng)用層數(shù)據(jù)負(fù)載,而在電力設(shè)備中,,基于MMS協(xié)議的數(shù)據(jù)用來(lái)傳輸通信的負(fù)載數(shù)據(jù),,或者承載更高層的協(xié)議。
利用問題報(bào)文并結(jié)合MMS協(xié)議進(jìn)行分析,,發(fā)現(xiàn)如下問題:
(1)在TCP流上進(jìn)行傳輸?shù)臄?shù)據(jù)是沒有界限的,而TPKT提供了報(bào)文分界,,于是當(dāng)發(fā)送的報(bào)文的TPKT的length字段超過了設(shè)備緩存的長(zhǎng)度,,length字段設(shè)置為50 000,實(shí)際測(cè)試用例累計(jì)達(dá)到50 004,,就可能造成設(shè)備內(nèi)存溢出進(jìn)而造成設(shè)備宕機(jī),,拒絕服務(wù)。
(2)在測(cè)試用例中組裝了正確的協(xié)議頭,,但是協(xié)議負(fù)載部分填充了不符合MMS協(xié)議規(guī)約的數(shù)據(jù),,如果設(shè)備對(duì)這種報(bào)文的處理存在缺陷,可能導(dǎo)致協(xié)議棧崩潰,,出現(xiàn)拒絕服務(wù),。
在回溯過程中,如果回溯的區(qū)間過短,,那么Fuzzing測(cè)試工具監(jiān)視器不會(huì)出現(xiàn)問題,,只有回溯的區(qū)間達(dá)到某一個(gè)臨界值后問題才會(huì)重現(xiàn)漏洞。由此可見,,漏洞的出現(xiàn)和數(shù)據(jù)的積累有著直接的相關(guān)性,。
4 結(jié)束語(yǔ)
本文介紹了Fuzzing測(cè)試技術(shù)的基本情況,分析了MMS標(biāo)準(zhǔn)協(xié)議的結(jié)構(gòu)和工作特點(diǎn),,利用自主研發(fā)的Fuzzing測(cè)試工具,,完成了針對(duì)電力設(shè)備的漏洞挖掘及分析工作,有效證明了基于Fuzzing測(cè)試技術(shù)的工業(yè)控制協(xié)議漏洞挖掘技術(shù)的可行性,。同時(shí)對(duì)于工業(yè)控制系統(tǒng)及設(shè)備來(lái)說(shuō),,被惡意攻擊后拒絕服務(wù),會(huì)給工業(yè)企業(yè)正常生產(chǎn)帶來(lái)非常大的影響??梢岳眠@項(xiàng)研究,,與工業(yè)企業(yè)、工控系統(tǒng)及設(shè)備生產(chǎn)制造商合作,,開展相關(guān)測(cè)試的研究并形成測(cè)試規(guī)范和標(biāo)準(zhǔn),,在系統(tǒng)以及設(shè)備上線前、運(yùn)行調(diào)試中,、后期維護(hù)中進(jìn)行測(cè)試工作,,發(fā)現(xiàn)系統(tǒng)本身的漏洞,及時(shí)進(jìn)行補(bǔ)丁升級(jí)或者實(shí)施有效防護(hù)措施,,有效提升工業(yè)控制系統(tǒng)的信息安全性,。
參考文獻(xiàn)
[1] Michael Sutton,Adam Greene,,Pedram Amini.模糊測(cè)試-強(qiáng)制發(fā)掘安全漏洞的利器[M].段念,,趙勇,譯.北京:電子工業(yè)出版社,,2013.
[2] 張寶峰,,張翀斌,許源.基于模糊測(cè)試的網(wǎng)絡(luò)協(xié)議漏洞挖掘[J].清華大學(xué)學(xué)報(bào):自然科學(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.