《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Fuzzing測(cè)試的工業(yè)控制協(xié)議漏洞挖掘技術(shù)研究
基于Fuzzing測(cè)試的工業(yè)控制協(xié)議漏洞挖掘技術(shù)研究
2016年電子技術(shù)應(yīng)用第7期
李 航,董 偉,朱廣宇
中國(guó)電子信息產(chǎn)業(yè)集團(tuán)有限公司第六研究所 工業(yè)控制系統(tǒng)信息安全技術(shù)國(guó)家工程實(shí)驗(yàn)室工業(yè)控制系統(tǒng)安全檢測(cè)中心,北京102209
摘要: 為了及早發(fā)現(xiàn)工業(yè)控制系統(tǒng)本身的信息安全問(wèn)題,基于Fuzzing測(cè)試技術(shù)在軟件測(cè)試領(lǐng)域的成功經(jīng)驗(yàn),針對(duì)工業(yè)控制系統(tǒng)協(xié)議MMS協(xié)議進(jìn)行分析和研究,利用電力系統(tǒng)自動(dòng)化領(lǐng)域常用的繼電器保護(hù)設(shè)備,采用橋接的方式進(jìn)行MMS協(xié)議的Fuzzing測(cè)試,有效挖掘出被測(cè)設(shè)備的漏洞,導(dǎo)致了被測(cè)設(shè)備拒絕服務(wù),并進(jìn)行了漏洞問(wèn)題的分析。研究表明,利用工控協(xié)議的Fuzzing測(cè)試技術(shù)可以有效地進(jìn)行工控信息安全的漏洞挖掘工作。
中圖分類(lèi)號(hào): TP29;TH6
文獻(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.
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)集成了自動(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è)試階段。

ck3-t1.gif

    針對(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所示。

ck3-t2.gif

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é)議。

ck3-t3.gif

ck3-t4.gif

    確定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ì)圖所示。

ck3-t5.gif

    圖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。

ck3-t6.gif

    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。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é)議之上,用來(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.

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