葉水勇
(國網安徽省電力有限公司黃山供電公司,安徽 黃山 245000)
電力系統的安全穩定運行是關系社會穩定和經濟發展的共性問題[1],2015年12月23日,烏克蘭電網因遭受黑客攻擊而導致大面積停電,這次事件進一步提高了國網公司對電力工控系統信息安全問題的關注。隨著“大云物移”等新技術在電力系統的應用和智能電網的發展,電力工控側的信息安全問題將更加突出[2]。為適應“互聯網+”和能源互聯網的發展,保障電力工控側的信息安全,亟需針對電力工控系統研究開發信息安全風險評估的標準和工具。
對于網絡協議指紋的選擇,即對n維特征屬性的選擇,是網絡協議識別面臨的主要問題。原則上選擇可以基于任何可獲得信息,包括基于單個數據包的信息與基于整個數據包集合的信息等,然而不同的特征選取對識別算法的準確性、時間復雜度和空間復雜度有很大影響。網絡協議指紋的屬性可以從以下幾個方面進行研究,如圖1所示。

圖1 網絡指紋分析的研究流程圖
1.1.1 端口分析
TCP/IP網絡模型中,傳輸層協議根據端口對應用層協議進行復用和解復用,故數據包中的傳輸層端口指明了其所屬應用層協議類別[3-4]。互聯網數字分配機構(Internet Assigned Numbers Authority,IANA)定義了標準應用層協議所使用的約定端口號,如DNS協議使用TCP 53端口、UDP 53端口,FTP控制協議使用TCP 21端口等。
端口的使用并無強制規定,IANA給出的只是建議端口,協議在具體實現過程中可自行選擇所用端口。由于實現簡單,早期的用戶自定義協議中多數使用固定端口技術,但是隨著網絡安全日益嚴峻和ISP對特定協議流量的管控,網絡協議開始采用動態端口技術,如各種P2P軟件為躲避檢測允許使用者自行指定通信端口或者雙方協商使用端口。在更進一步的實現中,某些新的網絡協議開始使用特定應用層協議作為承載層,在其上構造自己的網絡協議,以更加隱蔽的方式進行傳輸。
對使用固定端口的協議,以端口作為協議特征也不一定準確,因為無法保證不同協議使用不同端口,如QQ文字聊天協議使用UDP 8000端口,迅雷下載服務同樣使用UDP 8000端口。對使用動態端口的協議,提取其中協商好的數據流會話端口,利用此端口識別后續的多媒體數據流會話,但是這種方法依賴于對控制會話協議的完全理解,對沒有協議規范的用戶自定義協議則無法使用。利用標準應用層協議作為承載層的協議,基于端口的識別會產生較多的無用結果。
在準確性方面,基于端口的特征識別方法是比較低的,但是其對作為網絡基礎服務的應用層協議可以使用。因為它們需要提供公共服務,所以選擇端口需要嚴格遵守約定,其他應用也極少會占用這些協議所用端口,對于這些協議的識別,使用端口特征識別準確性仍然較高,典型協議有SMTP、DNS協議。
1.1.2 應用層載荷內容
網絡協議包括語法、語義和時序三個要素[5]。語法定義了數據包的格式,語義定義了對所交換數據的理解和需要采取的行為,時序定義了數據交換的順序,三者共同構成數據通信中雙方交互的過程與內容。這些內容在多個通信過程中基本相同,即雙方需要表達的語義信息具有一定的穩定性,由此保證了協議數據中某些內容的取值較為固定。
多數情況下,考慮到后續的擴展升級等工作,協議在設計時多會預留某些空間,稱為保留域,現有版本實現中并不使用,被設置為隨機值或者固定值。當這些保留域被設置為固定值時,表現為協議數據中某些內容的取值固定不變。
這種協議特征的提取多由人工完成,識別結果的準確性最高,常被用作其他識別技術研究中識別效果的對照,并且更新簡單,僅需添加新的特征串即可。但該特征需要查看具體載荷內容,涉及用戶隱私信息,同時該特征無法應用于加密協議。
1.1.3 基于流量的統計
不同協議的網絡數據包在其傳輸過程中表現出一些較為固定的外在特征[6-7]。例如,VoIP協議的數據包時間間隔維持在一個固定值附近,且數據包較小,長度接近,明顯區分于塊傳輸類協議;塊傳輸類協議數據包時間間隔不固定,為充分利用網絡帶寬,減少包頭等附加信息對帶寬的占用,傳輸采用盡可能大的數據包進行。流量統計特征的存在一部分依賴于應用層協議的行為,一部分依賴于具體網絡環境,基于統計的識別方式可以剔除某些網絡環境所引起的影響,利用這些特征構建識別模型進行協議識別。
1.1.4 傳輸層行為
更大范圍內的協議特征。采用P2P網絡架構的協議自然地表現出某些不同于采用主從式網絡架構的協議的特征,如與特定主機上某一端口進行通信的遠端端口的分布情況。其主要應用于P2P流量的識別,通過綜合多個屬于同一協議的會話信息定義協議的行為特征,現已提出的行為特征有同時使用TCP和UDP進行會話,如P2P協議[8]。
IP地址和端口的數量比。P2P主機在一個隨機選定的端口上接受其他P2P主機的連接,其他P2P主機同樣隨機選擇連接時所使用的端口,隨機選擇的端口號相同的概率極低,故P2P流量中,與同一
相對于以上所提出的各種特征,行為特征的準確性低,不能用作通用的協議識別特征。例如,特征一在多媒體協議和網絡游戲中較為常見,而在方案實際識別時,是通過端口或者其他輔助手段排除協議干擾的。另外,特征受具體網絡環境的影響也較大。例如,由于NAT的存在,多個IP可能被聚合成一個NAT 地址,從而導致對特征二的統計失敗。
綜上,行為特征較為簡單,但不能作為通用協議識別特征?,F有研究中僅被作為P2P類協議的識別特征,實現時需要統計較多信息,借助其他技術剔除較嚴重的誤識別情況,無法滿足多種網絡協議識別的要求。
1.2.1 基于應用層載荷特征的協議識別
基于應用層載荷特征來對網絡流量進行分類[9],是指通過檢測在網絡流數據包的載荷內容中是否出現特定字節串,或者數據包的載荷內容是否匹配特定字節正則表達式,來判定該網絡流所屬的網絡應用的類型。
1.2.2 基于網絡流統計特征的協議識別
網絡流統計特征是指可以有效區分不同網絡應用的網絡流屬性統計值[10-11],包括網絡流傳輸的數據包數、網絡流的持續時間、網絡流傳輸的數據包的長度平均值和網絡流中數據包的時間間隔的平均值等。
使用模式識別的方法可以將網絡流量分類的問題抽象為給定網絡流的M種屬性的統計值,任意一個網絡流可以使用向量(y1,y2, …,yM)∈RM表示。給定網絡應用的類型集合{c1,c2, …,cK},同時給定訓練集T,訓練集中的點由yi∈RM和cj兩部分構成,其中:yi表示網絡流的屬性向量,cj表示網絡應用類型。需要根據給定的訓練集T,得到一個映射G:RM→ {c1,c2, …,cK},來對網絡流量進行分類。
使用基于網絡流統計特征的方法進行網絡流量分類,有兩點需要考慮:分類算法的選取和網絡流屬性的選取。下面簡要地介紹使用Na?ve Bayes算法對網絡流量進行分類的過程。
Na?ve Bayes算法通過條件概率p(cj|yi)的大小來判斷網絡流yi是否屬于網絡應用類型cj。p(cj|yi)由式(1)計算得出:
(1)
其中:p(cj)表示網絡應用類型cj在網絡流中出現的先驗概率;f(yi|cj)是向量yi在網絡應用類型cj中出現的概率。
Na?ve Bayes算法假設各個網絡流屬性之間獨立,且各個網絡流屬性均滿足高斯分布。為表述簡單且不失一般性,只針對1個網絡流屬性(y1)和2種網絡應用類型(c1和c2)進行分析。假設在訓練集T中網絡應用類型c1出現n1次,網絡應用類型c2出現n2次,且n1+n2=n,則p(c1)和p(c2)有式(2)估計:
(2)
如上所述,各個網絡流屬性均滿足高斯分布,則網絡流屬性yi在網絡應用類型c1上的正態分布概率密度函數為:
μ1和σ1可由式(3)來估計:


(3)
對于網絡應用類型c2,也可用同樣的方法進行計算。綜上,可以得出概率p(cj|yi)的估計式:
選取合適的網絡流屬性,剔除其中的無關屬性和冗余屬性,對分類算法的準確率會有很大影響。無關屬性是指不包含網絡應用類型信息的網絡流屬性,冗余屬性是指與已考慮過的某一屬性有很大關聯性的網絡流屬性。使用無關屬性對網絡流量分類不起任何作用,使用冗余屬性則會在一定程度上加重相關聯的屬性在分類時的權重,影響分類的結果。存在兩種從網絡流屬性中選取合適屬性的方法:filter方法和wrapper方法。filter方法使用訓練集T來判斷某一網絡流屬性與網絡流量分類的相關性,此相關性可以使用該網絡流屬性在不同網絡應用類型上的區分度來度量。wrapper方法通過對比使用不同的網絡流屬性組合進行分類的結果,來判斷網絡流屬性與網絡流量分類的相關性,通過不斷迭代,可以得到最優的網絡流屬性組合。filter方法是前向選擇,而wrapper算法是后向選擇。經過判斷網絡流屬性的相關性和剔除冗余屬性這兩個步驟后,就可以得到合適的網絡流屬性。
1.2.3 基于傳輸層行為特征的協議識別
與基于應用層載荷特征的流量分類方法和基于網絡流統計特征的流量分類方法不同,基于主機行為特征的流量分類方法不只關注單個網絡流的特征,而是將主機的網絡行為同網絡應用類型關聯起來,然后判斷主機產生的網絡流對應的網絡應用類型。
基于協議指紋,對網絡流量進行實時分析,其流程如圖2所示。主要分為預處理、協議識別和深度分析三部分。

圖2 網絡流量實時分析與預警圖
1.3.1 預處理部分
主要分為數據包頭處理、應用層端口映射、連接信息管理和外網IP映射[12]。數據包頭處理完成網絡數據包的網絡層和傳輸層的包頭信息的提取,如源/目的IP地址、源/目的端口、傳輸層協議、IP數據包大小、源/目的以太網地址等。端口映射、外網IP映射主要用于識別具有固定端口、固定服務器IP地址的協議。連接信息管理主要用于跟蹤TCP會話、UDP會話,只要識別出一個會話中的某個數據包的協議類型,就可以判定該會話的協議類型。
1.3.2 協議識別部分
主要是利用協議的指紋特征庫對網絡數據包的內容進行特征匹配,主要分三種情況:簡單指紋匹配、正則式匹配和自定義特征匹配。簡單指紋匹配是指將數據包載荷中的前N字節(例如前32字節)與協議特征庫中的特征做匹配,來判斷數據包的協議類型。正則式匹配是指將數據包的整個載荷與協議正則式特征庫中的正則式特征做匹配,來判斷數據包的協議類型。自定義特征匹配是指利用一些復雜特征,如包長序列,來識別會話的協議類型。最后對識別的協議流量進行分類和統計,完成各個會話的信息統計,如該會話的帶寬、持續時間、已通過的字節數、已通過的包數等。
1.3.3 安全檢測部分
主要是對網絡流量的內容進行深度分析,以發現和定位其中可能的網絡入侵行為。首先,根據協議指紋等信息,對網絡流量的多層協議信息進行信息提??;其次,綜合分析多個連接會話信息,對網絡協議背后的行為信息進行分析;最后,發現和定位其中可能存在的網絡入侵行為,并向系統管理人員發出警報。
電力工控系統眾多,網絡協議非常復雜,包括SCADA系統、電能量采集系統、地區調度數據網、配網SCADA等“大運行”支撐系統,以及機房環境監控、門禁、視頻監控、生產實時管控、負荷預測等輔助系統。同時,調度數據網設備類型復雜,除了一般的路由器、交換機等網絡設備,還包括隔離裝置、加密裝置、遠動機等設備[13]。
通過建立協議過濾的防火墻規則,發現其中可能存在的惡意入侵行為,即在工控系統受到攻擊時能夠及時發現攻擊網絡數據流,從而實現對網絡入侵行為的檢測和預警。
通過對電力工業控制系統中的設備信息、網絡通信等進行收集[14],分析工控系統中的網絡數據流量,定義初步規則進行篩選,將協議數據包劃分為完整的通信數據流并進行相互之間的區分。通過對通信數據包協議的分析,總結出其常規特征,并研究協議指紋的模型及其形式化描述方法。結合已有工控協議標準和設計思想,研究分析協議格式以及協議規則。
根據協議指紋特征,對變電站控制系統網絡中的流量進行實時分析與識別[15]。例如,在防火墻上配置協議過濾規則,就可以及時發現各類惡意入侵的行為,當工控系統受到攻擊時,可以在第一時間發現網絡被攻擊的數據流,從而保證工控系統的網絡安全。
基于以上方法和技術的研究,開發網絡通信流量實時分析原型系統,通過對網絡通信流量進行實時分析,及時發現并定位網絡中存在的各類入侵行為,將告警信息第一時間發送給系統管理人員。
公司自主研發的基于指紋的協議識別系統分別在黃山110 kV上宅變電站和黃山35 kV鳧峰變電站開展核心功能實地試驗。其中,上宅變電站試驗結果如下:
1)試驗發現上宅變電站的站控層網絡有8個網段,活動設備有61臺,開放端口有2個,具體如表1所示。涉及的嵌入式設備有:armorlink(芯發威達)、EST(EST株式會社)、Inspur(浪潮)、Jetway(捷波IPC)。

表1 網絡流量分析
2)分析結果通過拓撲圖進行可視化展示,如圖3所示。

圖3 分析結果展示圖
通過拓撲展示可以清晰地看出原IP地址和目的IP地址設備的詳細參數、連接所使用的IEC61850協議、連接次數等信息。部分分析結果如圖4所示。
3)系統使用過程中各階段信息如圖5所示。

圖5 系統使用過程中各階段截圖
針對電力工控側的信息安全防護問題,黃山公司在調度數據網中建立了工控網絡指紋庫,并基于該庫對網絡中傳輸的數據進行協議識別、對流量進行實時分析、對發現的潛在風險進行預警;通過建立工控安全監測手段、增強工控安全防護體系、開展電網工控系統信息安全和事故反措工作,提升電網工控系統安全防護水平。