曾紀(jì)鈞,吳勤勤,吳一陽
(1. 廣東電網(wǎng)有限責(zé)任公司信息中心,廣東 廣州 510000;2. 中國南方電網(wǎng)公司信息化評(píng)測(cè)重點(diǎn)實(shí)驗(yàn)室,廣東 廣州 510000;3. 廣州粵能信息技術(shù)有限公司,廣東 廣州 510000)
目前,網(wǎng)絡(luò)安全已經(jīng)成為了國家、企業(yè)以及公眾關(guān)注的焦點(diǎn)。2012年,黨的十八大提出建設(shè)網(wǎng)絡(luò)強(qiáng)國的戰(zhàn)略目標(biāo),將網(wǎng)絡(luò)安全納入國家安全的組成部分;2016年4月19日,習(xí)近平總書記在網(wǎng)絡(luò)安全和信息化工作座談會(huì)上要求加快構(gòu)建關(guān)鍵信息基礎(chǔ)設(shè)施安全保障體系[1]。2016年11月7日,全國人大審議通過《中華人民共和國網(wǎng)絡(luò)安全法》,以法律形式明確規(guī)定了關(guān)鍵信息基礎(chǔ)設(shè)施運(yùn)營者應(yīng)當(dāng)履行網(wǎng)絡(luò)安全的責(zé)任和義務(wù)[2]。關(guān)鍵信息基礎(chǔ)設(shè)施是指面向公眾提供網(wǎng)絡(luò)信息服務(wù)或支撐能源、通信、金融、交通、公用事業(yè)等重要行業(yè)運(yùn)行的信息系統(tǒng)或工業(yè)控制系統(tǒng),包括網(wǎng)站類、平臺(tái)類、生產(chǎn)業(yè)務(wù)類等[3,4]。
在過去很長(zhǎng)一段時(shí)間內(nèi),工業(yè)控制系統(tǒng)的網(wǎng)絡(luò)安全一直被外界所忽視,行業(yè)普遍認(rèn)為工業(yè)控制系統(tǒng)部署在內(nèi)網(wǎng)環(huán)境,可讓其免于網(wǎng)絡(luò)攻擊,然而隨著智能制造、智能控制技術(shù)的不斷發(fā)展,越來越多的開放通用協(xié)議被引入至工業(yè)控制系統(tǒng),傳統(tǒng)獨(dú)立分散的網(wǎng)絡(luò)已融合為深度關(guān)聯(lián)、高度依賴的整體[5]。
工業(yè)控制系統(tǒng)的網(wǎng)絡(luò)安全風(fēng)險(xiǎn)正在呈現(xiàn)愈發(fā)嚴(yán)重之勢(shì)。典型的工業(yè)控制系統(tǒng)網(wǎng)絡(luò)安全事件包括:2010年,震網(wǎng)病毒利用西門子工控軟件漏洞攻擊伊朗核設(shè)施,導(dǎo)致核電站設(shè)施大范圍損毀,第一次讓公眾認(rèn)識(shí)到工業(yè)控制系統(tǒng)網(wǎng)絡(luò)安全的脆弱性[6];2016年,Black Energy病毒入侵烏克蘭國家電網(wǎng),導(dǎo)致伊萬諾-弗蘭科夫斯克地區(qū)大面積停電6小時(shí)[7]。
網(wǎng)絡(luò)通信協(xié)議是工業(yè)控制系統(tǒng)的重要組成部分,其網(wǎng)絡(luò)安全也是工業(yè)控制系統(tǒng)安全生產(chǎn)的重要內(nèi)容。本文開展了工業(yè)控制設(shè)備網(wǎng)絡(luò)通信協(xié)議安全測(cè)試技術(shù)的研究。通信協(xié)議安全測(cè)試技術(shù)是一種自動(dòng)化的漏洞挖掘技術(shù),其測(cè)試思想在于向目標(biāo)設(shè)備發(fā)送異常非預(yù)期的數(shù)據(jù),并通過監(jiān)視設(shè)備的異常結(jié)果來達(dá)到挖掘設(shè)備漏洞的目的[8,9]。目前,該技術(shù)已經(jīng)被廣泛應(yīng)用于挖掘文件格式、網(wǎng)絡(luò)協(xié)議和第三方插件的漏洞[10,11]。
本文重點(diǎn)研究了工業(yè)控制系統(tǒng)通信協(xié)議的安全測(cè)試技術(shù),論文首先提出了工控設(shè)備通信協(xié)議安全測(cè)試的框架,其次給出了系統(tǒng)各功能模塊的詳細(xì)設(shè)計(jì)。實(shí)踐結(jié)果表明,該種測(cè)試方法能有效檢測(cè)設(shè)備通信協(xié)議的健壯性,挖掘工業(yè)控制系統(tǒng)通信協(xié)議的漏洞。
通信協(xié)議安全測(cè)試系統(tǒng)分為管理平臺(tái)模塊、端口掃描模塊、測(cè)試數(shù)據(jù)生成模塊、監(jiān)視模塊等4大模塊[13],系統(tǒng)的總體架構(gòu)如下圖所示:
圖1 協(xié)議安全測(cè)試系統(tǒng)總體架構(gòu)Fig.1 The architecture of the communication protocol security testing system
管理平臺(tái)模塊負(fù)責(zé)接收用戶的指令,負(fù)責(zé)對(duì)測(cè)試平臺(tái)進(jìn)行配置以及管理;主機(jī)掃描模塊用來測(cè)試被測(cè)設(shè)備存活性、開放的端口服務(wù)、操作系統(tǒng)指紋信息等;測(cè)試數(shù)據(jù)發(fā)生引擎負(fù)責(zé)生成通信協(xié)議測(cè)試數(shù)據(jù);設(shè)備監(jiān)視模塊負(fù)責(zé)對(duì)被測(cè)設(shè)備進(jìn)行運(yùn)行監(jiān)視。
通信協(xié)議安全測(cè)試系統(tǒng)支持2種方式的測(cè)試模式,如下圖2所示。
圖2 通信協(xié)議安全測(cè)試系統(tǒng)測(cè)試模式Fig.2 The test mode of the communication protocol security testing system
(1)直連模式:測(cè)試系統(tǒng)與被測(cè)設(shè)備直連進(jìn)行測(cè)試,根據(jù)被測(cè)設(shè)備開發(fā)的通信端口,進(jìn)行對(duì)應(yīng)的通信協(xié)議測(cè)試;
(2)橋接模式:測(cè)試系統(tǒng)橋接到被測(cè)設(shè)備和上位機(jī)之間,充當(dāng)上位機(jī)與被測(cè)設(shè)備的通信中繼,自動(dòng)進(jìn)行通信協(xié)議測(cè)試[14]。
在測(cè)試流程上,通信協(xié)議安全測(cè)試的流程包括5大步驟[15]
1. 獲取被測(cè)電網(wǎng)嵌入式設(shè)備IP地址;
2. 對(duì)被測(cè)設(shè)備進(jìn)行主機(jī)掃描,發(fā)現(xiàn)設(shè)備的操作系統(tǒng)版本、端口號(hào)、軟件版本等指紋信息;
3. 根據(jù)設(shè)備的操作系統(tǒng)及軟件版本,生成測(cè)試數(shù)據(jù),并發(fā)送給被測(cè)設(shè)備;
4. 監(jiān)視被測(cè)設(shè)備在測(cè)試過程中是否出現(xiàn)異常;
5. 生成測(cè)試報(bào)告。
主機(jī)掃描模塊用來測(cè)試被測(cè)設(shè)備存活性、開放的端口服務(wù)、操作系統(tǒng)指紋信息、軟件版本信息等,調(diào)度模塊在收到管理平臺(tái)的主機(jī)掃描請(qǐng)求之后,分別執(zhí)行設(shè)備存活性掃描、端口掃描、操作系統(tǒng)指紋信息掃描等步驟,并將測(cè)試結(jié)果和系統(tǒng)內(nèi)置的軟件版本信息比對(duì),最終將測(cè)試結(jié)果返回給調(diào)度模塊。其中,端口掃描功能可以設(shè)置掃描的協(xié)議類型,端口范圍和掃描目標(biāo)IP范圍,操作系統(tǒng)掃描功能可以支持 Windows、Linux、UNIX、VxWorks等操作系統(tǒng)類型。主機(jī)掃描模塊的業(yè)務(wù)數(shù)據(jù)處理流程如下圖所示。
圖3 主機(jī)掃描模塊的業(yè)務(wù)數(shù)據(jù)處理流程Fig.3 Business data processing flow of the host scan module
工業(yè)控制系統(tǒng)的網(wǎng)絡(luò)協(xié)議主要包括 Modbus、Profinet、MMS、GOOSE、DNP3、IEC101、IEC102、IEC104、ARP、ETHER、LLDP、ICMP、IGMP、IP、TCP、UDP等。測(cè)試數(shù)據(jù)發(fā)生引擎根據(jù)需要測(cè)試的協(xié)議類型生成對(duì)應(yīng)的測(cè)試數(shù)據(jù)實(shí)現(xiàn)設(shè)備通信協(xié)議的安全測(cè)試[16,17]。
我們以 ARP語法測(cè)試為例來說明測(cè)試數(shù)據(jù)的生成過程。測(cè)試數(shù)據(jù)的生成需要考慮2種因素,1)數(shù)據(jù)包大?。?)數(shù)據(jù)報(bào)文字段。
ARP的報(bào)文格式有標(biāo)準(zhǔn)的定義,主要包括硬件類型、協(xié)議類型、硬件地址長(zhǎng)度、協(xié)議地址長(zhǎng)度、操作類型、源MAC、源IP、目的MAC、目的IP等字段。根據(jù)ARP協(xié)議,這些字段都有一個(gè)或幾個(gè)標(biāo)準(zhǔn)值,例如操作類型是指表示這個(gè)報(bào)文的類型,ARP請(qǐng)求為1,ARP響應(yīng)為2,RARP請(qǐng)求為3,RARP響應(yīng)為4。在進(jìn)行ARP語法測(cè)試時(shí),主要對(duì)上述的各個(gè)字段進(jìn)行變化,我們會(huì)對(duì)這些字段填充錯(cuò)誤的值,以觀測(cè)被測(cè)設(shè)備的相應(yīng)。另一方面,以太網(wǎng)最小幀為 64B,最大幀長(zhǎng)為 1518B,生成的測(cè)試數(shù)據(jù)包需在以太網(wǎng)數(shù)據(jù)包大小之內(nèi)。最終生成的文件中的數(shù)據(jù)包形式如下圖所示。
圖4 測(cè)試數(shù)據(jù)發(fā)生引擎生成的數(shù)據(jù)包保存模式Fig.4 The packet save mode of the data generation engine
根據(jù) ARP協(xié)議的測(cè)試數(shù)據(jù)生成過程可以推演到其它TCP/IP協(xié)議,從而完成所有TCP/IP協(xié)議的測(cè)試數(shù)據(jù)生成。
設(shè)備監(jiān)視模塊可以通過設(shè)備存活監(jiān)視以及設(shè)備輸出監(jiān)視等方式監(jiān)視測(cè)試過程是否對(duì)被測(cè)設(shè)備的協(xié)議棧、控制邏輯、系統(tǒng)運(yùn)行等造成影響。常見的設(shè)備存活監(jiān)視方式包括 ARP、ICMP、TCP等協(xié)議。邏輯監(jiān)視子模塊通過被測(cè)設(shè)備的邏輯輸出實(shí)現(xiàn)被測(cè)設(shè)備的運(yùn)行監(jiān)視[18-19]。
設(shè)備存活監(jiān)視可通過ARP協(xié)議、ICMP協(xié)議、TCP/UDP協(xié)議實(shí)現(xiàn)。
(1)ARP協(xié)議:測(cè)試設(shè)備發(fā)送ARP廣播包,通過被測(cè)設(shè)備是否回 ARP包來監(jiān)視被測(cè)設(shè)備的運(yùn)行狀態(tài),其數(shù)據(jù)處理流程如下圖所示:
圖5 ARP監(jiān)視器的數(shù)據(jù)處理流程Fig.5 The data processing process for the ARP monitor
(2)ICMP協(xié)議:通過周期性的ICMP掃描來監(jiān)視被測(cè)設(shè)備的運(yùn)行狀態(tài),其數(shù)據(jù)處理流程如下圖所示:
圖6 ICMP監(jiān)視器的數(shù)據(jù)處理流程Fig.6 The Data processing process for the ICMP monitor
(3)TCP/UDP協(xié)議:通過TCP端口以及UDP端口響應(yīng)情況監(jiān)測(cè)被測(cè)設(shè)備的運(yùn)行狀態(tài)[20],其數(shù)據(jù)處理流程如下圖所示:
圖7 端口監(jiān)視器的數(shù)據(jù)處理流程Fig.7 The data processing flow of the port monitor
邏輯監(jiān)視通過對(duì)被測(cè)設(shè)備的輸出進(jìn)行采集,對(duì)比被測(cè)設(shè)備的邏輯輸出判斷被測(cè)設(shè)備是否出現(xiàn)異常[21],其數(shù)據(jù)處理流程如下圖所示:
圖8 邏輯監(jiān)視器數(shù)據(jù)處理流程Fig.8 The data processing process for the logical monitor
本文針對(duì)工業(yè)控制系統(tǒng)通信協(xié)議的網(wǎng)絡(luò)安全問題,設(shè)計(jì)了一種通信協(xié)議安全測(cè)試系統(tǒng),并研究提出了系統(tǒng)各功能模塊的詳細(xì)設(shè)計(jì)。實(shí)驗(yàn)結(jié)果表示:該種協(xié)議測(cè)試方法能有效檢測(cè)設(shè)備通信協(xié)議的健壯性,挖掘工業(yè)控制系統(tǒng)通信協(xié)議的漏洞,對(duì)保障工業(yè)控制系統(tǒng)網(wǎng)絡(luò)通信的安全性具有重要意義。