文獻(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)信息安全問(wèn)題的嚴(yán)重性。2015年12月,烏克蘭電網(wǎng)被攻破,導(dǎo)致大面積停電;2016年1月,以色列宣稱(chēng)本國(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ó)政府并沒(méi)有強(qiáng)制性的審查制度和認(rèn)證體系,工控設(shè)備廠商不會(huì)完全主動(dòng)對(duì)我國(guó)工業(yè)企業(yè)開(kāi)放,只能采用黑盒技術(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),通過(guò)記錄導(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è)試過(guò)程的自動(dòng)化,記錄程序崩潰現(xiàn)場(chǎng)。為了避免產(chǎn)生大量無(wú)效的測(cè)試數(shù)據(jù),參數(shù)腳本給出了引擎生成的測(cè)試用例中數(shù)據(jù)的格式、長(zhǎng)度等與數(shù)據(jù)之間的一些關(guān)系,如SPIKE、Sulley使用的類(lèi)C格式的腳本、Peach使用的XML格式的腳本。許多Fuzzing工具的數(shù)據(jù)生成方式基于變異技術(shù),而樣本文件則是這些工具用來(lái)變異測(cè)試數(shù)據(jù)的基準(zhǔn)?;跇颖疚募a(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)行分析,通過(guò)對(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)爆炸等問(wèn)題,在數(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)之一,它作為開(kāi)放系統(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è)試的漏洞挖掘研究及問(wèn)題分析
本文研究對(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è)備為定制化開(kāi)發(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的漏洞挖掘過(guò)程
針對(duì)繼電保護(hù)的測(cè)試采用Fuzzing測(cè)試技術(shù),利用橋接方式,在被測(cè)設(shè)備和其上位機(jī)系統(tǒng)之間建立物理連接,具有監(jiān)聽(tīng)、學(xué)習(xí)、測(cè)試等模式。
按照?qǐng)D3的連接示意圖將被測(cè)設(shè)備和測(cè)試工具連接在一起,對(duì)被測(cè)設(shè)備進(jìn)行測(cè)試時(shí),首先對(duì)被測(cè)報(bào)文進(jìn)行監(jiān)聽(tīng)(如圖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è)試開(kāi)始時(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è)試過(guò)程中,會(huì)打開(kāi)一個(gè)TCP連接,發(fā)送數(shù)據(jù)包并嘗試接收數(shù)據(jù)包,如果不能接收,則關(guān)閉該TCP連接,并且打開(kāi)一個(gè)新的TCP連接。如果不能打開(kāi)一個(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 問(wèn)題回溯以及結(jié)果分析
對(duì)被測(cè)設(shè)備發(fā)生的問(wèn)題進(jìn)行數(shù)據(jù)分析,采用回溯方式,同時(shí)分析測(cè)試報(bào)文,如圖6。
MMS協(xié)議棧是基于TCP/IP的,作為定義在開(kāi)放系統(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上開(kāi)發(fā)本地協(xié)議;(2)通過(guò)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é)流是沒(méi)有邊界的,為了達(dá)到NS服務(wù)的要求,要通過(guò)一種機(jī)制實(shí)現(xiàn)TPDU的定界,TPKT恰好實(shí)現(xiàn)了這種封裝。
TPKT包含報(bào)文頭、TPDU兩部分。通過(guò)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é)議。
利用問(wèn)題報(bào)文并結(jié)合MMS協(xié)議進(jìn)行分析,發(fā)現(xiàn)如下問(wèn)題:
(1)在TCP流上進(jìn)行傳輸?shù)臄?shù)據(jù)是沒(méi)有界限的,而TPKT提供了報(bào)文分界,于是當(dāng)發(fā)送的報(bào)文的TPKT的length字段超過(guò)了設(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ù)。
在回溯過(guò)程中,如果回溯的區(qū)間過(guò)短,那么Fuzzing測(cè)試工具監(jiān)視器不會(huì)出現(xiàn)問(wèn)題,只有回溯的區(qū)間達(dá)到某一個(gè)臨界值后問(wèn)題才會(huì)重現(xiàn)漏洞。由此可見(jià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)制造商合作,開(kāi)展相關(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.