王超瑩,陳 智,張 誼,劉朝暉,劉明明
(1.南華大學 計算機學院,衡陽421001;2.中國核動力研究設計院 核反應堆系統設計技術重點實驗室,成都610213)
隨著互聯網技術的快速發展,工業化與信息化不斷融合,針對工業控制系統特別是核電廠控制系統的安全事故時有發生,引起了世界各國政府和社會各界的高度關注,核電領域的信息安全建設也成為研究的熱點。2010年,伊朗布什爾核電站遭受“Stuxnet”[1]病毒的攻擊,讓數千臺離心機超載,給核電廠造成了巨大的物理性破壞。2016年4月,德國Gundremmingen 核電站的計算機系統遭受網絡攻擊,核電站操作員為防不測,關閉了發電廠[2]。種種跡象表明核電廠的信息安全形勢已經非常嚴峻。
核電廠安全級數字化儀表與控制系統DCS(digital control system),是核反應堆的“中樞神經”,能夠提供對核電廠偏離正常運行工況的探測,同時驅動相應的安全功能,以使電廠安全停閉并維持安全狀態,從而保證在事故情況下反應堆、人員和環境的安全。拒絕服務攻擊是一種十分常見又難以解決的入侵性攻擊,是破壞網絡服務可用性的主要手段。一旦安全級DCS 遭受拒絕服務攻擊則可能會導致系統不能被合法用戶訪問,或者系統操作和功能延遲,從而危及核電廠安全。基于上述背景,在此搭建了安全級DCS 試驗平臺并對其進行拒絕服務攻擊測試,并根據系統遭受拒絕服務攻擊的情況研究合適的防御策略。
首先與傳統的模擬技術相比,采用數字化技術的安全級DCS 具有不易老化,便于變更和維護,可對故障自診斷等優點。另外,在部署環境的選擇上,安全級DCS 通常采用與互聯網物理隔離的方式,以便盡可能減少外界不法分子對核電廠的網絡攻擊行為。
按照核電廠安全設計準則的要求,單一故障準則[3]是反應堆保護系統必須滿足的要求,因此,核電廠安全級DCS 平臺中多處采用了冗余設計,為系統的可靠性提供了強力的保障。根據IEC 603-1991[4]的規定“安全系統應在設計基準所列的全部適用條件下完成所承擔的安全功能”,安全級DCS在投入使用前通過進行溫度試驗、濕度試驗、抗震試驗等各種環境鑒定試驗,確保了系統的完整性。安全級DCS 提供了手動操作所需要的人機界面,為操縱員提供了后備操作手段,是系統可操作性的體現。
除此之外,根據不同的應用場景,安全級DCS還具有多樣性和縱深防御、安保性、兼容性、可維護性、可持續性、靈活性、經濟性等關鍵特性[5]。
軟件脆弱性是指軟件在需求分析、設計、編碼和運行階段存在的某些漏洞。當軟件在網絡環境中運行時,攻擊者可以利用該漏洞危害系統的安全[6]。對于核電廠安全級DCS 而言,脆弱性的存在可能會導致系統的可用性、完整性以及機密性受到不同程度的影響,為核電站的安全穩定運行帶來隱患。在此從兩個方面對安全級DCS 的脆弱性進行分析。
1)從安全級DCS 平臺設計漏洞的角度 平臺工程師站的相關軟件在設計之初通常未考慮到對輸入數據中非法字段的檢測,留下了注入攻擊的安全隱患,同時工程師站不限制非授權應用軟件的安裝,可能會引入軟件沖突等未知風險[7]。另外,網關站作為安全級DCS 平臺與其他非安全系統通信的接口,通常會使用Modbus 等公有通信協議,給攻擊者通過解析協議對平臺進行攻擊帶來了可能性。
2)從安全策略配置的角度 安全級DCS 的工程師站通常安裝在Windows 7,Windows XP 等較早版本的操作系統上,操作系統未及時修補的漏洞就給惡意攻擊者帶來了可乘之機。通過對操作系統開啟的服務、端口的非法利用,以及通過預留接口進行移動存儲介質接入,攻擊者也可輕易地侵入工程師站。若工程師站連接的網絡交換機存在預留接口,也會被攻擊者所利用,通過外部設備接入交換機的方式,對系統的安全性構成威脅。
拒絕服務攻擊DoS(Denial-of-Service)是指攻擊者向被攻擊對象(服務器)發送大量數據包,試圖耗盡其網絡帶寬或系統資源,使其無法提供正常服務的一種惡意行為[8]。拒絕服務攻擊的原理如圖1所示。

圖1 拒絕服務攻擊原理Fig.1 Schematic of denial of service attack
根據攻擊發生的網絡層次可以將常見的拒絕服務攻擊劃分為2種形式,基于網絡層/傳輸層的拒絕服務攻擊、基于應用層的拒絕服務攻擊。
此類攻擊通過發送大量TCP,UDP,ICMP,以及DNS 數據包來淹沒被攻擊者的路由器、交換機等基礎設施的方式,達到耗盡被攻擊對象的網絡帶寬,使其無法為合法用戶提供連接服務的目的。典型的攻擊方式有:SYN Flood[9],ACK Flood,UDP Flood[10],等。對于此類攻擊時,攻擊者可以選擇不同的攻擊速率來啟動攻擊,可以是以一個穩定的速率發送流量的恒定速率攻擊法,也可以使用增長速率法。
應用層拒絕服務攻擊通過耗盡服務器有限的可用資源如內存、磁盤、套接字等,來破壞正常用戶對服務器的訪問。與網絡層/傳輸層拒絕服務攻擊的不同是,此類攻擊消耗的帶寬較低,因此很難使用流量分析的方式識別到它。
雖然安全級DCS為了保證可靠性在多處采用冗余設計,但其系統資源仍然有限,應用層拒絕服務攻擊依舊有可能對系統造成威脅,影響系統可用性。此外,在核電廠安全級DCS 的設計中沒有流量控制機制,因此在遭受網絡層/傳輸層拒絕服務攻擊時可能會導致其通信帶寬被大量非法占用,影響系統內部或與其他系統之間的正常通信連接。
在安全級DCS 平臺的設計中,除工程師站和網關站之外都屬于1E 級設備,它們彼此之間使用私有安全協議進行通信,具有較高的安全性。因此,在選擇拒絕服務攻擊的測試點時,僅需考慮使用通用協議的通信鏈路上的設備,包括工程師站與安全級設備進行通信的維護網絡以及與非安全級設備相連接的網關站。
根據美國儀器儀表協會提出的ISA99 參考模型[11],可將ICS(industrial control system)整理為4個層次,如圖2所示。

圖2 工業控制系統分層參考模型Fig.2 Hierarchical reference model of industrial system
在此所討論的安全級DCS,限定于圖2所示第1 層設備與第2 層、第3 層組件的通信。通過分析平臺通信路徑發現,工程師站與安全級設備之間的通信傳輸均經過了網絡交換機與協議轉換模塊2種設備,但是商用交換機的各種安全測試已有相當成熟的研究成果,且本文研究的目的是為安全級DCS研發者對自研產品的安全加固提供指導建議,因此商用交換機的測試及防御策略研究不在本文討論范圍之內。而協議轉換模塊為安全級DCS 平臺的一部分,通常由DCS 平臺的研發人員一同研發,在經過拒絕服務攻擊測試后,相關研發人員能夠對其進行完善和修改。故在維護網絡上,選擇協議轉換模塊作為本次拒絕服務攻擊的測試點。
網關站作為安全級DCS 平臺與其他系統通信進行數據交換的接口,負責將信息從安全級系統發送到非安全級系統的單向通信,對保障安全級設備的信息安全有著至關重要的作用。攻擊者除了通過對Modbus 協議解析對平臺進行攻擊外,還可能通過直接對網關站進行攻擊的方式破壞網關站的功能,并通過網關站發送不安全數據至安全級設備,對安全級設備的運行、狀態信息進行修改。因此有必要將網關站作為拒絕服務攻擊的一個測試點。
選擇某核電廠安全級儀控系統作為此次試驗的被攻擊對象,其工程師站軟件安裝在Windows 7操作系統的PC 上;試驗所需其他軟件為Python 3.7,Kali-Linux 操作系統,hping3。試驗拓撲如圖3所示,圖中A 和B為此次試驗的攻擊測試點。

圖3 拒絕服務攻擊試驗拓撲圖Fig.3 Experimental topology of denial of service attack
此次試驗分別針對平臺網關和協議轉換模塊,進行網絡層/傳輸層拒絕服務攻擊和應用層拒絕服務攻擊。
針對網關的攻擊測試,首先使用Python 編寫攻擊腳本,不斷向網關非安全模塊發送socket 連接,試圖耗盡網關站的連接資源,屬于應用層拒絕服務攻擊;網絡層/傳輸層拒絕服務攻擊則是部署在Kali-Linux系統上的hping3 工具完成,通過hping3 制造SYN Flood,TCP Flood,UDP Flood 三種泛洪攻擊包,試圖耗盡網關站與非安全級系統連接的網絡帶寬。
針對協議轉換模塊的攻擊與網關類似,由部署在Kali-Linux系統上的hping3 工具完成網絡層/傳輸層拒絕服務攻擊,通過編寫Python 腳本,不斷向協議轉換模塊發送socket 連接完成應用層拒絕服務攻擊。
對網關及協議轉換模塊的DoS 攻擊結果見表1。

表1 DoS 攻擊結果Tab.1 DoS attack results
結果評估如下:在多次反復試驗中,協議轉換模塊在2種拒絕服務攻擊下都出現了功能失效的情況,導致工程師站組態軟件下裝失敗,并且在工程師站無法獲取協議轉換模塊的IP 地址。而網關站在分別遭受網絡層/傳輸層拒絕服務攻擊和應用層拒絕服務攻擊的情況下,其單向通信功能均未受到影響。
網關與協議轉換模塊在同樣的攻擊條件下,其結果之間表現出了巨大的差異。其原因分析如下:協議轉換模塊在設計之初,未考慮到遭受安全威脅攻擊的情況,也未進行流量控制的設計,因此在其遭受拒絕服務攻擊時,大量的流量連接包將其淹沒,使其可用性遭到破壞。網關站在設計時考慮到與外部非安全系統的連接,添加了白名單系統,僅能響應白名單內的IP 地址的連接請求,對于hping3 制造的隨機源IP 地址攻擊包進行了攔截。
針對安全級DCS 平臺在試驗過程中表現出不能抵御拒絕服務攻擊的情況,應設計添加有效的防御措施對其進行防御。設置拒絕服務攻擊防御措施的目的,是在系統遭受攻擊后能夠盡快發現攻擊的存在,并且在盡可能靠近攻擊源的位置對攻擊進行阻斷。可根據拒絕服務攻擊的2種不同形式對其現有防御策略研究成果進行分類。
針對基于網絡層/傳輸層拒絕服務攻擊的防御技術可以分為四類:①基于攻擊源的檢測技術,在攻擊源附近部署檢測系統,防止客戶端產生拒絕服務攻擊;②基于網絡的檢測技術;③基于目標的防御技術,在服務器處部署檢測和響應設備,或采用蜜罐技術在服務器端捕獲拒絕服務攻擊流量包;④分布式技術,在來源、目的或中間網絡等多個點部署混合防御系統[12]。
針對基于應用層拒絕服務攻擊的防御技術可以分為兩類:基于服務器端的防御技術;分布式防御技術。
由于安全級DCS 與傳統IT 信息系統的系統構造存在較大差異,主要表現在:在安全級DCS 的設計中,通常將下位機的安全級硬件設備作為服務器端,而工程師站、操作員站等上位機作為客戶端。因此,在IT 信息系統上,適用的拒絕服務攻擊的防御措施,不一定適合于安全級DCS 平臺。
由于協議轉換模塊與網關站均使用硬件平臺,作為實現其安全隔離功能的方式,從減少對系統硬件更改的角度,選擇在工程師站所依賴的PC 端上部署軟件防御系統更為簡單方便。即選擇基于攻擊源檢測技術的拒絕服務攻擊防御策略,在接入到安全級DCS 的每臺PC 上均部署防御系統,在源頭上捕獲并過濾掉拒絕服務攻擊的流量包,能夠對網絡層/傳輸層拒絕服務攻擊起到較好的防御作用,對應用層拒絕服務攻擊起到一定的防御作用。
另外,針對協議轉換模塊受拒絕服務攻擊較嚴重的情況,可以參考平臺網關使用白名單方式控制外部系統與安全級DCS 的連接,在協議轉換模塊上配置白名單IP,只響應來自白名單的主機請求,則可以很好地抵御來自未知IP 地址的DoS 攻擊,對網絡層/傳輸層拒絕服務攻擊有較好的防御能力。
作為信息安全領域巨大的安全威脅,拒絕服務攻擊問題始終沒有得到有效的解決,但是拒絕服務攻擊給信息化系統,特別是工業控制系統,帶來的危害是十分嚴重的。在對拒絕服務攻擊的防御研究上,IT 行業也提出了各種不同的防御策略,由于核電廠安全級DCS 與傳統IT系統的系統架構與內在需求都不同,所以很多方法并不能夠直接應用在核電安全級DCS 上。在此通過對某核電廠安全級DCS 安全特性的分析,找出其易受攻擊的脆弱點。以此為基礎搭建了試驗平臺,采用滲透測試的方式對平臺開展了模擬拒絕服務攻擊研究,證實了理論分析結果。最終,根據平臺受攻擊影響程度,針對性地提出了有效的防御策略。其研究成果將對該DCS 平臺信息安全防范技術的深入研究提供借鑒。