孔令源,段濱雪,梁尚福
(西南石油大學計算機科學學院,四川 成都 610500)
當前,我國已將工業控制系統(以下簡稱“工控系統”)大規模應用于石油、化工和交通等重要領域,以提高生產效率并達到產業信息化。由于大部分工控系統是通過公共網絡連接傳遞信息,其系統安全將時刻面臨被非法入侵的威脅,因此,做好網絡資產探測和分析尤為重要。根據ISO 13335-1:2004《IT安全管理指南》中的定義,資產作為網絡安全管理的對象,包括信息、硬件、軟件、服務等。網絡資產探測是指追蹤、掌握網絡資產情況的過程,通常包括操作系統識別、服務識別等,能夠為網絡安全監控、威脅態勢感知提供系統認知基礎[1-4]。
本文主要探討IP、操作系統、網絡設備等工控環境中的網絡資產,并對傳統的資產探測系統進行問題分析,最終結合實際應用場景提出一種基于規則引擎的工控資產分析系統,顯著提升了工控環境中網絡資產的監控和探測水平,為工控安全的維護提供有力幫助。
新型資產探測技術主要分為主動和被動兩大類。基于主動的資產探測盡管適用于全網與內網,然而該方法噪聲大,從而易觸發報警,對資產分析的準確性不高;并且僅能了解當前探測的狀態,對安全設備保護的網絡資產探測的難度大,而現在大多數工控系統都有安全設備的保護,因此不適合在實際情況下使用[5]。基于被動的資產探測技術無額外網絡流量插入,對目標網絡運行的影響小;對受安全設備保護的網絡資產也具備一定的探測能力;支持歷史數據的積累。因此,非常適合于工控集群中的資產分析[6]。
通過以上分析,本文以流量分析和統計分析為基礎,通過被動方式對工控集群內部的網絡流量進行采集監控,運用機器學習的方法對工業網絡流量進行細粒度分析,得到工控資產信息,最終構建一個基于B/S架構工控資產分析系統。通過被動式探測來實現對網絡空間資產的測繪摸底,便于理清網絡資產邊界,及時發現隱形資產。該系統使用了基于規則引擎的流量分析技術,對網絡無入侵且無需要人工干預,使用場景較為廣泛。并且,創新性地引入面向流量特征的機器學習模型,用于識別資產類型,如個人主機、服務器或其他工控設備等。除此之外,通過可視化全景展示資產流量規律和網絡通信關系,進一步提升網絡資產可見性。
網絡資產分析系統(見圖1)分為數據采集模塊、分析模塊、存儲模塊和展示模塊[7]。

圖1 網絡資產分析系統模塊
Suricata是一個完整的系統,通過利用Suricata進行數據包采集。
流量分析模塊:通過Suricata.yaml配置出最后Json輸出的信息,從而得到需要的資產各種信息。由于Suricata輸出的流量日志中已經按照事件類型及字段進行存儲,因此在對其進行處理時,本系統分類的方式是對日志數據進行分析、拆分、存儲。考慮到要提取的屬性差異性較大,所以在不同類型字段進行了分表分類存儲。資產數據提取的過程如圖2所示。

注:A類:臨時數據;B類:直接存儲數據。
考慮到拆分之后得到的數據比較松散,因此通過IP地址建立不同屬性之間的邏輯關系,從而聚合形成資產信息。通過“分類拆分、邏輯聚合”的方式,實現從日志信息到資產信息的提取過程。
機器學習模塊:機器學習模塊首先從數據庫中獲取得到相應的流信息和端口,包括pkt_toserver(發送包數量)、pkt_toclient(接收包數量)、to_server(發送字節大小)、to_client(接收字節大小)以及flow_bytes(接收發送字節大小);接著形成Dataframe格式對數據進行預處理,由于該特征屬性數量少,因此沒有進行相關的降維處理;然后利用Scikit_learn的Cluster模塊中的Kmeans對資產進行聚合得到資產類型,最后將資產類型存入數據庫中。機器學習模塊整個流程如圖3所示。

圖3 機器學習模塊流程圖
經過對機器學習模型的輪廓系數的計算,整個機器學習模型的輪廓系數為0.88,取得了較好的效果。
存儲模塊由臨時數據、直接存儲數據、分析結果數據組成。其中,tb_asset_osmsg、tb_asset_mac、tb_record用于臨時存儲獲取的屬性數據,便于之后的聚合;tb_stats、tb_asset_flow用于保存可以直接存儲的數據;tb_asset、tb_service、tb_host用于保存聚合之后的資產信息,值得注意的是,tb_asset和tb_service兩表中存在一對多的關系。表之間的ER關系如圖4所示。

圖4 數據庫ER圖
本系統使用了SpringMVC、Mybatis-Plus、Spring、Thymeleaf、AdminLTE、Drools等技術來構建Web端系統,實現對資產的展示。Web端包括4個模塊,分別為導航模塊、詳情模塊、通信關系模塊和搜索模塊。
為了保證專供瀝青車輛隨到隨裝,崔曉波和運輸車隊的司機師傅們互加微信好友,打開位置共享就能時刻掌握車輛位置信息,精準把握提貨單開具時間。同時,崔曉波還在裝車現場密切關注每輛罐車的裝車進度,提前與其他罐車師傅協調,確保專供瀝青運輸車輛隨到隨裝,裝不完就加班裝。
導航模塊使用Morris Charts實現對資產總體流量情況的可視化展示,用戶能夠通過該界面獲取資產數量、服務數、未知設備數的統計信息,對工控環境中的網絡資產進行全局了解,如圖5所示。

圖5 導航模塊
資產詳情模塊使用Flot Charts實現對單個資產近期流量的展示,用戶能夠通過該界面獲取單個資產面臨的惡意流量的威脅信息,為工控安全的維護提供幫助,如圖6所示。

圖6 資產詳情模塊
通信模塊使用Cytoscape實現對資產通信關系的展示,通過可視化展示使用戶清楚了解多個資產之間的通信關系,從而有利于用戶確定與威脅相關的網絡資產,如圖7所示。

圖7 通信模塊
搜索模塊能夠對指定的資產進行查詢,并將查詢結果進行展示,用戶能夠通過輸入查詢條件對主機信息進行查詢,并通過點擊特定主機內容框獲取主機詳細信息,包括更新時間、應用層服務等,為工控環境中的網絡安全監控提供信息基礎,如圖8所示。

圖8 搜索模塊
本系統測試環境基于阿里云應用主機,主要配置如下。操作系統:Centos7.3。CPU/內存:1核/2 GB。硬盤:40 GB。帶寬:1 Mbps。
軟件環境如下。JDK:OpenJDK 1.8.0。數據庫:MySQL5.7.2。緩存中間件:Redis 5.0.2。流量解析工具:Zeek 4.0.2。瀏覽器版本:Firefox Version68。

圖9 系統首頁測試
由于目前系統中并沒有數據,因此先通過數據上傳模塊,對數據進行上傳分析,測試系統上傳模塊的功能如圖10所示。

圖10 文件上傳測試
文件通過上傳模塊上傳到服務器之后,服務器將會對數據根據配置好的規則進行解析,如圖11所示。從圖中可以看出,由于192.168.0.106以及192.168.0.100符合工控資產的規則(位于192.168.0.X),因此在規則引擎執行完之后,isAsset會從“false”被標記為“true”。資產識別的規則如圖12所示。

圖11 后臺日志部分信息

圖12 資產識別規則圖
在文件上傳模塊將數據上傳之后,后臺會自動對數據進行分析識別,得到資產信息。通過訪問首頁能夠查看識別出來的資產匯總信息,如圖13所示。系統一共識別出了9個資產信息,總服務數位7 836,未知設備數以及惡意設備數都為0。

圖13 系統首頁測試
對搜索模塊進行訪問,查看數據概覽信息,如圖14所示。資產信息主要是以192.168.0.X網段為主。通過專業的開源包分析工具Wireshark對test2.pcapng進行分析,可以得出該pcap是以192.168.0.X網段的包,如圖15所示。

圖14 搜索模塊測試

圖15 Wireshark分析
在搜索模塊,選擇任意一個資產,進入查看其詳情信息(以192.168.0.109為例),如圖16所示。

圖16 資產詳情信息測試
進一步查看資產通信關系,如圖17所示。測試數據集中的資產主要與192.168.0.1進行通信,原因就是192.168.0.1是一個路由器,所有節點需要通過路由器與互聯網的其他主機通信,測試結果符合樣本實際。

圖17 資產關系測試
本文就當前工控網絡安全現狀,提出使用基于規則引擎的流量分析技術對工控資產進行高效分析的工控資產分析系統的設計方案,對網絡無入侵性且無需人工干預,使用場景較為廣泛。除此之外,通過可視化全景展示資產流量規律和網絡通信關系,進一步提升網絡可見性,并通過被動式探測來實現對網絡空間資產的測繪摸底,便于理清網絡資產邊界,及時發現隱形資產。