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