曾紀鈞,吳勤勤,吳一陽
(1. 廣東電網有限責任公司信息中心,廣東 廣州 510000;2. 中國南方電網公司信息化評測重點實驗室,廣東 廣州 510000;3. 廣州粵能信息技術有限公司,廣東 廣州 510000)
目前,網絡安全已經成為了國家、企業以及公眾關注的焦點。2012年,黨的十八大提出建設網絡強國的戰略目標,將網絡安全納入國家安全的組成部分;2016年4月19日,習近平總書記在網絡安全和信息化工作座談會上要求加快構建關鍵信息基礎設施安全保障體系[1]。2016年11月7日,全國人大審議通過《中華人民共和國網絡安全法》,以法律形式明確規定了關鍵信息基礎設施運營者應當履行網絡安全的責任和義務[2]。關鍵信息基礎設施是指面向公眾提供網絡信息服務或支撐能源、通信、金融、交通、公用事業等重要行業運行的信息系統或工業控制系統,包括網站類、平臺類、生產業務類等[3,4]。
在過去很長一段時間內,工業控制系統的網絡安全一直被外界所忽視,行業普遍認為工業控制系統部署在內網環境,可讓其免于網絡攻擊,然而隨著智能制造、智能控制技術的不斷發展,越來越多的開放通用協議被引入至工業控制系統,傳統獨立分散的網絡已融合為深度關聯、高度依賴的整體[5]。
工業控制系統的網絡安全風險正在呈現愈發嚴重之勢。典型的工業控制系統網絡安全事件包括:2010年,震網病毒利用西門子工控軟件漏洞攻擊伊朗核設施,導致核電站設施大范圍損毀,第一次讓公眾認識到工業控制系統網絡安全的脆弱性[6];2016年,Black Energy病毒入侵烏克蘭國家電網,導致伊萬諾-弗蘭科夫斯克地區大面積停電6小時[7]。
網絡通信協議是工業控制系統的重要組成部分,其網絡安全也是工業控制系統安全生產的重要內容。本文開展了工業控制設備網絡通信協議安全測試技術的研究。通信協議安全測試技術是一種自動化的漏洞挖掘技術,其測試思想在于向目標設備發送異常非預期的數據,并通過監視設備的異常結果來達到挖掘設備漏洞的目的[8,9]。目前,該技術已經被廣泛應用于挖掘文件格式、網絡協議和第三方插件的漏洞[10,11]。
本文重點研究了工業控制系統通信協議的安全測試技術,論文首先提出了工控設備通信協議安全測試的框架,其次給出了系統各功能模塊的詳細設計。實踐結果表明,該種測試方法能有效檢測設備通信協議的健壯性,挖掘工業控制系統通信協議的漏洞。
通信協議安全測試系統分為管理平臺模塊、端口掃描模塊、測試數據生成模塊、監視模塊等4大模塊[13],系統的總體架構如下圖所示:

圖1 協議安全測試系統總體架構Fig.1 The architecture of the communication protocol security testing system
管理平臺模塊負責接收用戶的指令,負責對測試平臺進行配置以及管理;主機掃描模塊用來測試被測設備存活性、開放的端口服務、操作系統指紋信息等;測試數據發生引擎負責生成通信協議測試數據;設備監視模塊負責對被測設備進行運行監視。
通信協議安全測試系統支持2種方式的測試模式,如下圖2所示。

圖2 通信協議安全測試系統測試模式Fig.2 The test mode of the communication protocol security testing system
(1)直連模式:測試系統與被測設備直連進行測試,根據被測設備開發的通信端口,進行對應的通信協議測試;
(2)橋接模式:測試系統橋接到被測設備和上位機之間,充當上位機與被測設備的通信中繼,自動進行通信協議測試[14]。
在測試流程上,通信協議安全測試的流程包括5大步驟[15]
1. 獲取被測電網嵌入式設備IP地址;
2. 對被測設備進行主機掃描,發現設備的操作系統版本、端口號、軟件版本等指紋信息;
3. 根據設備的操作系統及軟件版本,生成測試數據,并發送給被測設備;
4. 監視被測設備在測試過程中是否出現異常;
5. 生成測試報告。
主機掃描模塊用來測試被測設備存活性、開放的端口服務、操作系統指紋信息、軟件版本信息等,調度模塊在收到管理平臺的主機掃描請求之后,分別執行設備存活性掃描、端口掃描、操作系統指紋信息掃描等步驟,并將測試結果和系統內置的軟件版本信息比對,最終將測試結果返回給調度模塊。其中,端口掃描功能可以設置掃描的協議類型,端口范圍和掃描目標IP范圍,操作系統掃描功能可以支持 Windows、Linux、UNIX、VxWorks等操作系統類型。主機掃描模塊的業務數據處理流程如下圖所示。

圖3 主機掃描模塊的業務數據處理流程Fig.3 Business data processing flow of the host scan module
工業控制系統的網絡協議主要包括 Modbus、Profinet、MMS、GOOSE、DNP3、IEC101、IEC102、IEC104、ARP、ETHER、LLDP、ICMP、IGMP、IP、TCP、UDP等。測試數據發生引擎根據需要測試的協議類型生成對應的測試數據實現設備通信協議的安全測試[16,17]。
我們以 ARP語法測試為例來說明測試數據的生成過程。測試數據的生成需要考慮2種因素,1)數據包大小;2)數據報文字段。
ARP的報文格式有標準的定義,主要包括硬件類型、協議類型、硬件地址長度、協議地址長度、操作類型、源MAC、源IP、目的MAC、目的IP等字段。根據ARP協議,這些字段都有一個或幾個標準值,例如操作類型是指表示這個報文的類型,ARP請求為1,ARP響應為2,RARP請求為3,RARP響應為4。在進行ARP語法測試時,主要對上述的各個字段進行變化,我們會對這些字段填充錯誤的值,以觀測被測設備的相應。另一方面,以太網最小幀為 64B,最大幀長為 1518B,生成的測試數據包需在以太網數據包大小之內。最終生成的文件中的數據包形式如下圖所示。

圖4 測試數據發生引擎生成的數據包保存模式Fig.4 The packet save mode of the data generation engine
根據 ARP協議的測試數據生成過程可以推演到其它TCP/IP協議,從而完成所有TCP/IP協議的測試數據生成。
設備監視模塊可以通過設備存活監視以及設備輸出監視等方式監視測試過程是否對被測設備的協議棧、控制邏輯、系統運行等造成影響。常見的設備存活監視方式包括 ARP、ICMP、TCP等協議。邏輯監視子模塊通過被測設備的邏輯輸出實現被測設備的運行監視[18-19]。
設備存活監視可通過ARP協議、ICMP協議、TCP/UDP協議實現。
(1)ARP協議:測試設備發送ARP廣播包,通過被測設備是否回 ARP包來監視被測設備的運行狀態,其數據處理流程如下圖所示:

圖5 ARP監視器的數據處理流程Fig.5 The data processing process for the ARP monitor
(2)ICMP協議:通過周期性的ICMP掃描來監視被測設備的運行狀態,其數據處理流程如下圖所示:

圖6 ICMP監視器的數據處理流程Fig.6 The Data processing process for the ICMP monitor
(3)TCP/UDP協議:通過TCP端口以及UDP端口響應情況監測被測設備的運行狀態[20],其數據處理流程如下圖所示:

圖7 端口監視器的數據處理流程Fig.7 The data processing flow of the port monitor
邏輯監視通過對被測設備的輸出進行采集,對比被測設備的邏輯輸出判斷被測設備是否出現異常[21],其數據處理流程如下圖所示:

圖8 邏輯監視器數據處理流程Fig.8 The data processing process for the logical monitor
本文針對工業控制系統通信協議的網絡安全問題,設計了一種通信協議安全測試系統,并研究提出了系統各功能模塊的詳細設計。實驗結果表示:該種協議測試方法能有效檢測設備通信協議的健壯性,挖掘工業控制系統通信協議的漏洞,對保障工業控制系統網絡通信的安全性具有重要意義。