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