崔欣,溫彥龍
(1.國(guó)家知識(shí)產(chǎn)權(quán)局專利局, 北京 100083;2.中國(guó)電子信息產(chǎn)業(yè)集團(tuán)有限公司, 北京100190)
隨著“兩化”融合的推進(jìn)和以太網(wǎng)技術(shù)在工業(yè)控制系統(tǒng)中得到大量使用,進(jìn)而引發(fā)的病毒和木馬攻擊工控設(shè)備的事件不斷出現(xiàn),嚴(yán)重威脅基礎(chǔ)工業(yè)控制設(shè)備的安全運(yùn)行,其造成的損失可能非常巨大,甚至不可估量。2010年10月,伊朗“震網(wǎng)”(Stuxnet)病毒事件,引起了各國(guó)對(duì)工控設(shè)備安全的高度重視。面對(duì)安全形勢(shì)日益嚴(yán)峻,國(guó)內(nèi)外生產(chǎn)企業(yè)都把工業(yè)控制系統(tǒng)安全防護(hù)建設(shè)提上了日程。而在工業(yè)控制系統(tǒng)中,工控網(wǎng)絡(luò)存在著特殊性,導(dǎo)致商用IT網(wǎng)絡(luò)的安全技術(shù)無(wú)法適應(yīng)工業(yè)控制系統(tǒng)。所以,必須要針對(duì)工業(yè)控制系統(tǒng)設(shè)備進(jìn)行安全性模糊測(cè)試,發(fā)現(xiàn)潛在安全風(fēng)險(xiǎn),以便及時(shí)采取風(fēng)險(xiǎn)應(yīng)對(duì)措施,防止安全風(fēng)險(xiǎn)被進(jìn)一步利用,降低工業(yè)控制系統(tǒng)安全風(fēng)險(xiǎn)被利用的概率。
近年來(lái),越來(lái)越多工控設(shè)備被攻擊事件頻繁被媒體曝光。2015年12月,某黑客組織使用BlackEnergy惡意程序?qū)蹩颂m電力系統(tǒng)進(jìn)行攻擊破壞,造成嚴(yán)重的電力安全事故。該安全事件導(dǎo)致伊萬(wàn)諾-弗蘭科夫斯克、 霍洛登卡、卡盧什、多麗娜、 科西夫、納維爾納及亞列姆恰等地區(qū)停電3小時(shí)以上,數(shù)十萬(wàn)戶受到事件影響。這是第一次由于工控設(shè)備受到網(wǎng)絡(luò)攻擊而導(dǎo)致的大面積停電事故,具有非常重要的歷史意義。
當(dāng)前工控設(shè)備或系統(tǒng)存在的主要安全風(fēng)險(xiǎn)有以下幾個(gè)方面:
(1)多數(shù)工控設(shè)備采用通用的通信協(xié)議
多數(shù)工控設(shè)備或系統(tǒng)采用TCP/IP等通用的通信協(xié)議,通用通信協(xié)議存在的安全風(fēng)險(xiǎn)也勢(shì)必會(huì)影響到工控設(shè)備或系統(tǒng)的安全。
(2)調(diào)試終端大多采用通用操作系統(tǒng)
目前,大部分的工控設(shè)備操作站或調(diào)試終端均安裝Windows、Linux等通用操作系統(tǒng)。再加上,日常安全管理不到位,致使多數(shù)操作系統(tǒng)長(zhǎng)時(shí)間不升級(jí)、不安裝系統(tǒng)補(bǔ)丁,形成了大量的安全漏洞。
(3)日常安全管理策略不到位
缺少針對(duì)工控設(shè)備的日常安全管理策略及制度要求,工控設(shè)備使用無(wú)章可循,為安全事件留下了大量安全隱患。
(4)工控軟件本身缺少安全性設(shè)計(jì)
多數(shù)工控設(shè)備更重視設(shè)備功能、性能,安全性設(shè)計(jì)考慮缺失,甚至連最基本的殺毒軟件都不安裝,或及時(shí)安裝也不會(huì)及時(shí)更新系統(tǒng)補(bǔ)丁,是大多數(shù)工控軟件存在的共性問題,這都為工控設(shè)備安全事件埋下嚴(yán)重隱患,見圖1。
圖1 典型工控系統(tǒng)的安全問題
目前,在工控設(shè)備的風(fēng)險(xiǎn)分析及漏洞發(fā)現(xiàn)方面,歐美國(guó)家仍處于領(lǐng)先地位。
加拿大的伍爾德泰克公司的Achilles的模糊測(cè)試功能已相對(duì)成熟,且形成了相對(duì)完整的認(rèn)證管理體系,在國(guó)際上有一定的知名度。國(guó)內(nèi)外知名工控廠商,多數(shù)已通過其認(rèn)證。
芬蘭科諾康公司的漏洞挖掘、掃描技術(shù)在全球也有一定的技術(shù)優(yōu)勢(shì)。2014年,科諾康公司利用其技術(shù)優(yōu)勢(shì),成功發(fā)現(xiàn)震驚世界的互聯(lián)網(wǎng)漏洞——心臟出血漏洞。
目前,國(guó)內(nèi)有關(guān)工控設(shè)備的漏洞挖掘、掃描分析技術(shù),仍處于研究、探索階段,少部分科研單位已開展相關(guān)課題研究。
目前,大量嵌入式工控設(shè)備被廣泛應(yīng)用,如通信保護(hù)裝置、工控交換機(jī)、計(jì)量監(jiān)測(cè)等。這些被廣泛應(yīng)用的嵌入式設(shè)備多數(shù)基于通用芯片、操作系統(tǒng)、通用協(xié)議進(jìn)行設(shè)計(jì)、開發(fā),產(chǎn)品廠商重點(diǎn)關(guān)注工控設(shè)備的功能、性能及易用性,工控設(shè)備的安全設(shè)計(jì)及實(shí)現(xiàn),往往被忽略。隨著工控設(shè)備或系統(tǒng)安全風(fēng)險(xiǎn)不斷突出,嵌入式設(shè)備潛在的安全風(fēng)險(xiǎn)、漏洞也被不斷發(fā)現(xiàn),勢(shì)必對(duì)工控設(shè)備或系統(tǒng)安全形成重要的威脅。
基于此,有必要對(duì)工控系統(tǒng)所使用的各類嵌入式設(shè)備進(jìn)行安全風(fēng)險(xiǎn)研究和測(cè)試,提前發(fā)現(xiàn)工控設(shè)備或系統(tǒng)存在的安全風(fēng)險(xiǎn)或漏洞,不斷提升工控設(shè)備或系統(tǒng)的風(fēng)險(xiǎn)應(yīng)對(duì)能力,進(jìn)一步確保工控設(shè)備或系統(tǒng)的安全穩(wěn)定運(yùn)行。
工業(yè)控制系統(tǒng)的的模糊測(cè)試是自動(dòng)化生成可用于輸入被測(cè)試工控設(shè)備或系統(tǒng)的測(cè)試數(shù)據(jù),進(jìn)而檢驗(yàn)工控設(shè)備或系統(tǒng)的安全性。
根據(jù)預(yù)期的測(cè)試目標(biāo),明確怎樣通過標(biāo)準(zhǔn)協(xié)議進(jìn)行模糊測(cè)試。模糊測(cè)試方法一般為如下三種:
(1)白盒測(cè)試。
(2)黑盒測(cè)試。
(3)灰盒測(cè)試。
白盒測(cè)試:此方法需要根據(jù)被測(cè)工控系統(tǒng)的全部代碼、設(shè)計(jì)文檔等資源進(jìn)行全透明測(cè)試。此方法高度依賴代碼開放度,屬于代碼級(jí)測(cè)試。
方法優(yōu)勢(shì):針對(duì)完整代碼進(jìn)行評(píng)審、測(cè)試,覆蓋程度最高。
方法劣勢(shì):分析完整開發(fā)代碼復(fù)雜性太高,不可避免地會(huì)產(chǎn)生誤報(bào)。測(cè)試人員的業(yè)務(wù)水平對(duì)測(cè)試結(jié)果也會(huì)產(chǎn)生比較大的影響。而且,多數(shù)廠商并不愿意提供完整的源代碼給測(cè)試人員。
黑盒測(cè)試:此方法可完全忽略被測(cè)工控系統(tǒng)的內(nèi)部邏輯,僅通過對(duì)被測(cè)系統(tǒng)進(jìn)行外部掃描進(jìn)行安全性驗(yàn)證、測(cè)試。測(cè)試者模擬用戶行為進(jìn)行輸入,通過輸出結(jié)果分析工控設(shè)備的安全性。
方法優(yōu)勢(shì):可操作性、可實(shí)現(xiàn)性非常高,適用于各種不同類型的工控設(shè)備;方法簡(jiǎn)單,可在不了解工控設(shè)備內(nèi)部邏輯的基礎(chǔ)上開展測(cè)試工作;結(jié)果可重現(xiàn),此方法可在任何情況下重現(xiàn)測(cè)試結(jié)果。
方法劣勢(shì):對(duì)工控設(shè)備的安全分析結(jié)果不全面。
灰盒測(cè)試:該方法是以上兩種方法的折中,包含黑盒測(cè)試邏輯的同時(shí),也包含通過各種途徑獲得的系統(tǒng)內(nèi)部邏輯。
方法優(yōu)勢(shì):既具有良好的可用性,也有比較高的覆蓋率。
方法劣勢(shì):測(cè)試方法復(fù)雜性較高,對(duì)測(cè)試人員業(yè)務(wù)素養(yǎng)有較高要求。
綜合考慮到復(fù)雜性、可實(shí)現(xiàn)性、易用性及可重現(xiàn)性,選擇黑盒測(cè)試方法作為模糊測(cè)試的方法。
模糊測(cè)試通過向工控設(shè)備或系統(tǒng)應(yīng)用程序逆向輸入污染數(shù)據(jù),同時(shí)監(jiān)控工控設(shè)備的輸出異常,對(duì)發(fā)現(xiàn)工控系統(tǒng)、設(shè)備、協(xié)議的存在的安全風(fēng)險(xiǎn)具有重大意義,使得風(fēng)險(xiǎn)發(fā)現(xiàn)不再完全依賴于CVE/CNVD等公開漏洞庫(kù)。
測(cè)試用污染數(shù)據(jù)的生成主要有以下幾種方法:
3.3.1 預(yù)先生成測(cè)試用例
該方法首先對(duì)工控設(shè)備協(xié)議規(guī)則進(jìn)行研究、分析,理解該協(xié)議規(guī)則所支持的數(shù)據(jù)類型、結(jié)構(gòu)以及可以接受的數(shù)值范圍。然后,根據(jù)協(xié)議規(guī)則生成用于測(cè)試被測(cè)試工控設(shè)備的邊界范圍或違規(guī)范圍測(cè)試用例。
創(chuàng)建預(yù)先生成測(cè)試用例需要大量的工作量,但是測(cè)試用例一旦形成,就具備很高的復(fù)用性,用于測(cè)試某種工控設(shè)備協(xié)議、規(guī)則的不同實(shí)現(xiàn)。但是,這種方法的局限性在于缺乏隨機(jī)性,測(cè)試用例執(zhí)行完成,測(cè)試工作便結(jié)束。
3.3.2 生成隨機(jī)數(shù)據(jù)輸入
隨機(jī)生成數(shù)據(jù)的方法是效率比較低的方法,但是,該防范可以迅速識(shí)別目標(biāo)設(shè)備或系統(tǒng)中是否有存在嚴(yán)重安全風(fēng)險(xiǎn)。隨機(jī)生成數(shù)據(jù)方法可以簡(jiǎn)單地向目標(biāo)設(shè)備或系統(tǒng)發(fā)送偽隨機(jī)數(shù)據(jù),期望得到正常或非正常的結(jié)果。
3.3.3 強(qiáng)制性測(cè)試
此方法是一種相對(duì)有效的模糊測(cè)試方法,此方法基本不需了解工控設(shè)備相關(guān)知識(shí)。該方法關(guān)鍵在于不斷修改數(shù)據(jù)發(fā)送給被測(cè)設(shè)備或系統(tǒng)。除了不斷發(fā)送數(shù)據(jù)外,該方法還加入了必要的錯(cuò)誤檢測(cè)、日志分析等手段。但是,該方法效率相對(duì)較低,在生成垃圾數(shù)據(jù)處理上會(huì)形成很多不必要的浪費(fèi)。但是,該防范的優(yōu)勢(shì)也是比較明顯的,具體如下:
(1)該方法的測(cè)試過程可以完全實(shí)現(xiàn)自動(dòng)化。
(2)使用該方法的代碼覆蓋程度依賴于一致的合法數(shù)據(jù)包,即使要達(dá)到較低的覆蓋率,對(duì)樣本的需求量也比較大。
3.3.4 自動(dòng)協(xié)議生成測(cè)試
自動(dòng)協(xié)議生成測(cè)試可以理解為強(qiáng)制性測(cè)試的升級(jí)版。使用該測(cè)試方法,首先要研究被測(cè)工控設(shè)備或系統(tǒng)的協(xié)議、規(guī)則。
測(cè)試者需要區(qū)別數(shù)據(jù)包中的靜態(tài)部分和動(dòng)態(tài)部分,動(dòng)態(tài)部分可以被模糊化變量替代。模糊測(cè)試器動(dòng)態(tài)生成測(cè)試數(shù)據(jù),并將輸入到被測(cè)設(shè)備。
該方法的測(cè)試結(jié)果對(duì)測(cè)試者的依賴程度較高,測(cè)試者需要能夠了解協(xié)議、規(guī)則中最容易發(fā)生故障的部分。
模糊測(cè)試方法對(duì)數(shù)據(jù)結(jié)構(gòu)了解得越多,就越能夠在模糊測(cè)試中關(guān)注那些易于引發(fā)異常的協(xié)議中的部分,所以必須要了解工控系統(tǒng)通信協(xié)議的組成與規(guī)范,這樣才能生成一個(gè)更好的模糊測(cè)試數(shù)據(jù)。
例如:在IP分片的測(cè)試中,主要在如下兩個(gè)方面做了變異,第一是標(biāo)識(shí)符(Identifier)字段,第二個(gè)標(biāo)記(Flags)字段,一方面,在標(biāo)記字段中,MF位是用來(lái)說(shuō)明是否有更多的分片,正常情況下,如果所有的分片都發(fā)送完畢后這個(gè)位會(huì)被置成0,標(biāo)識(shí)所有的分片都已經(jīng)就緒,可以重組所有的分片,而在變異的數(shù)據(jù)包中這個(gè)位并沒有去理會(huì)是否所有的分片都收到,而是一直標(biāo)識(shí)為后續(xù)片,導(dǎo)致接收方需要不斷緩存分片,另一方面,除了上述處理外,還不斷的改變標(biāo)識(shí)符字段,導(dǎo)致了會(huì)產(chǎn)生很多組這樣的無(wú)法重組的報(bào)文,當(dāng)這樣的報(bào)文所需要的空間超過系統(tǒng)可以承受的空間而又無(wú)法正確處理這樣的錯(cuò)誤的時(shí)候就會(huì)導(dǎo)致緩沖區(qū)溢出,進(jìn)而導(dǎo)致系統(tǒng)崩潰。
綜上所述,從模糊測(cè)試的原理進(jìn)行深度研究?;跍y(cè)試用例的程序編譯實(shí)現(xiàn)變異報(bào)文的構(gòu)建,借以對(duì)工控系統(tǒng)協(xié)議的錯(cuò)誤或缺陷進(jìn)行檢查。本文設(shè)計(jì)了一個(gè)自動(dòng)化測(cè)試框架以實(shí)現(xiàn)其可拓展性和完備性,實(shí)現(xiàn)測(cè)試目標(biāo)的全方面監(jiān)控,測(cè)試結(jié)果的全方位管理。
基于本文設(shè)計(jì)實(shí)現(xiàn)的工業(yè)控制系統(tǒng)模糊測(cè)試框架(見圖2),對(duì)工控系統(tǒng)中廣泛使用的某型號(hào)變壓器保護(hù)設(shè)備、某型號(hào)測(cè)控裝置進(jìn)行了漏洞挖掘,發(fā)現(xiàn)了MMS協(xié)議語(yǔ)法漏洞、IP分片報(bào)文漏洞等多個(gè)原創(chuàng)高危漏洞。
圖2 工業(yè)控制系統(tǒng)模糊測(cè)試框架
以下是對(duì)某款設(shè)備進(jìn)行測(cè)試的結(jié)果:
00ARP監(jiān)視器顯示被測(cè)設(shè)備ARP請(qǐng)求的響應(yīng)時(shí)間(見圖3),X軸是時(shí)間軸,Y軸標(biāo)識(shí)響應(yīng)時(shí)間,單位為毫秒(ms)。被測(cè)設(shè)備在17:57:48及之前工作正常,ARP響應(yīng)時(shí)間在0.5ms左右,在17:57:48之后已經(jīng)無(wú)法對(duì)ARP請(qǐng)求作出響應(yīng),說(shuō)明被測(cè)設(shè)備已經(jīng)出現(xiàn)故障。
圖3 ARP監(jiān)視器
圖4 ICMP監(jiān)視器
ICMP監(jiān)視器顯示被測(cè)設(shè)備對(duì)ICMP請(qǐng)求的響應(yīng)時(shí)間(見圖4),X軸是時(shí)間軸,Y軸標(biāo)識(shí)響應(yīng)時(shí)間,單位為毫秒(ms)。被測(cè)設(shè)備在17:57:48及之前工作正常,ICMP響應(yīng)時(shí)間在0.5ms左右,在17:57:48之后已經(jīng)無(wú)法對(duì)ICMP請(qǐng)求作出響應(yīng),說(shuō)明被測(cè)設(shè)備已經(jīng)出現(xiàn)故障。
TCP監(jiān)視器顯示被測(cè)設(shè)備開放的TCP端口的數(shù)量(見圖5),X軸是時(shí)間軸,Y軸標(biāo)識(shí)TCP端口的數(shù)量。被測(cè)設(shè)備在17:57:49及之前工作正常,開放的TCP端口為2個(gè),在17:57:49之后無(wú)法探測(cè)到開放的TCP端口,說(shuō)明被測(cè)設(shè)備已經(jīng)出現(xiàn)故障。
圖5 TCP監(jiān)視器
綜上所述,在測(cè)試過程中,用于監(jiān)視協(xié)議棧的ICMP和ARP監(jiān)視器突然超時(shí),而用于監(jiān)視服務(wù)的TCP監(jiān)視器的端口開放數(shù)量也從2個(gè)變?yōu)?個(gè),說(shuō)明所有的服務(wù)已經(jīng)關(guān)閉,由此可以推斷,此款設(shè)備已經(jīng)宕機(jī)。
本文在研究模糊測(cè)試的理論方法的基礎(chǔ)上,選擇適當(dāng)?shù)募夹g(shù)路線,設(shè)計(jì)實(shí)現(xiàn)了一個(gè)工業(yè)控制系統(tǒng)模糊測(cè)試框架,基于此框架發(fā)現(xiàn)了工控領(lǐng)域中使用的部分設(shè)備的原創(chuàng)高危漏洞。這說(shuō)明,對(duì)工業(yè)控制系統(tǒng)進(jìn)行健壯性測(cè)試,對(duì)提高工控安全性具有積極的意義,是一個(gè)重要的努力方向。