close

摘 要:

電力工控系統是關係到電網安全穩定運行的重要領域。目前國網黑龍江電力有限公司已經建立起「安全分區、網絡專用、橫向隔離、縱向認證」的邊界安全防護體系。但在工控系統核心位置保護方面,還需考慮以下兩個問題:電力工控系統具有閉源特性,內部函數邏輯調用非開源;攻擊數據樣本極少,難以構建特徵庫引擎。針對以上問題,從系統底層數據提取、運行狀態學習等方面開展研究,設計了涵蓋廠站、主站兩側的安全防禦體系架構,為閉源電力工控系統安全防禦問題提供技術解決路線。

內容目錄:
1 閉源電力工控系統安全防禦架構
2 廠站底層數據提取模塊
2.1 軟件關鍵模塊定位技術
2.2 函數執行軌跡特徵提取
3 主站安全防禦模型
3.1 網絡結構設計
3.2 反向傳播算法設計
4 安全防禦模型構建及架構示例
5 結 語

電力工控系統,特指應用於電力生產和供應過程的工業控制系統,如調度側的智能電網調度技術支持系統、變電站側的綜合自動化系統以及發電廠側的分散控制系統等,是關係到電網安全穩定運行的重要領域。電力工控系統一般不公開其內部函數邏輯調用關係及私有化通信協議,具有閉源特性。同時,由於缺少攻擊數據樣本,難以實現殺毒引擎的構建,導致傳統基於特徵庫匹配的網絡安全技術不適用於電力工控系統。

數據採集與監視控制系統(Supervisory Control And Data Acquisition,SCADA)作為下發遙控指令的核心組件,是攻擊者的主要目標。2010 年,受「震網」病毒影響的系統包括 SCADA 和可編程邏輯控制器(Programmable Logic Controller,PLC)。文獻 [2] 和文獻 [3] 介紹了 SCADA 和能量管理系統已有的具體漏洞。文獻 [4] 演示了一個攻擊示例,攻擊者可以通過修改 GOOSE 數據包來實現跳閘操作,觸發一系列級聯事件,從 而 導 致 災 難 性 的 電 網 事 故。文 獻 [5] 針 對SCADA 系統的入侵防護,提出了基於異常行為檢測的 SCADA 系統防護方法。Morris 等人對遠程終端單元(Remote Terminal Unit,RTU)攻擊類型進行分析,提取了通信協議的異常行為檢測特徵。文獻 [7] 面對電力系統自動化領域唯一的全球通用標準——IEC61850 協議,開展了分析研究,並給出了 IEC61850 靜態及動態特徵檢測方法。

在安全防護異常檢測方面,文獻 [8] 研究了工控系統異常行為發現方法。文獻 [9] 給出了一種面向工業控制網絡的異常流量檢測方法,該方法採用自回歸移動平均模型(Autoregressive Integrated Moving Average Model,ARIMA)對正常流量進行建模分析,並以此模型對網絡正常流量進行預測,從而檢測異常流量。密西西比州立大學針對電力系統,提出了基於 K-means 聚類的無監督學習異常檢測方法。羅耀峰等人在模糊聚類算法中引入了異常檢測方法,面向差異化多層網絡,研究了深度異常檢測方法。

考慮工控系統網絡的複雜性,單一的異常檢測方法難以滿足實際環境下的檢測精度要求。對此,有研究者為提高工控系統異常行為檢測能力,嘗試將多種檢測方法進行複合或加權組合。Aburomman 等 人 提 出 了 一 種 SVM-KNN-PSO組合方法,利用粒子群優化算法(Particle Swarm Optimization,PSO)進行權重優化,並結合支持向量機(Support Vector Machine,SVM)和 K 近鄰法(K-Nearest Neighbor,KNN)的分類優勢,用以開展系統異常檢測,結果表明,與單一方法相比,組合方法的檢測精度有一定程度的提高。

本文基於國家電網公司建立的「安全分區、網絡專用、橫向隔離、縱向認證」安全防護體系,重點考慮工控系統底層數據及運行機制的封閉性(閉源性)特點,利用逆向分析技術,從系統底層運行狀態學習方法、安全防禦模型構建等方面,設計構造不依賴特徵庫比對的工控系統安全防禦體系架構,解決未知惡意行為和惡意代碼潛伏問題,為閉源電力工控系統安全防禦問題提供技術解決路線。

閉源電力工控系統安全防禦架構


電力工控系統是一個有機整體,分析其安全防禦模型,首先需要分析電力工控系統各業務場景及應用模式。充分考慮在系統封閉、代碼非開源、協議私有化等閉源條件下,進行安全防護的技術難點。最終確定適用於電力工控系統安全防禦業務的應用模式。本文所設計的安全防禦架構如圖 1 所示。

圖 1 閉源電力工控系統安全防禦體系架構

從站端監測、主站管控、雲端分析 3 個方面增強安全防禦體系。其中,站端監測是通過數據採集模塊,採集工控系統的底層數據,感知閉源系統在多個階段產生的數據信息,解析系統底層運行機理。主站管控是通過部署在網絡安全管理平台的防禦模型,對站端監測到的數據進行異常判斷,並依據該判斷結果進行告警及威脅處置。雲端分析是利用調控雲平台中的模型訓練模塊,增加算力並計算異常判斷依據,訓練完畢的結果反向下發至主站防禦模型中。

如圖 1 所示,底層數據提取模塊部署在廠站閉源電力工控系統中,實現系統程序進程中各模塊、函數之間調用狀態的實時採集,實現函數調用關係與關鍵參數提取。採集的底層數據通過 Agent、網絡安全監測裝置,發送給網絡安全管理平台防禦模型。

主站安全防禦模型採用機器學習的方法對數據進行智能分析,生成模型判斷依據的參數,形成安全穩定運行基線,實現對廠站終端底層信息的實時監測和告警。

模型訓練模塊部署在調控雲平台中,目的是為構建防禦模型提供充足的計算資源,並實時分析、驗證,不斷完善防禦模型。完成階段性學習後,防禦模型向廠站下發指令,實現對終端底層信息的實時監測和告警等處置方法。

廠站底層數據提取模塊


系統底層數據提取模塊主要用於提取閉源電力工控系統底層運行數據,主要涉及內部函數調用邏輯及參數逆向技術。系統內部函數調用邏輯及參數逆向是用來分析閉源軟件的技術,目的是獲取一些難以獲得的軟件信息、算法、被隱藏的許可密碼或是文件採用的加密方式等有用信息。具體包含兩部分,即軟件關鍵模塊定位技術和函數執行軌跡特徵提取技術。軟件關鍵模塊的獲取可以使用動態插樁的方法,定位關鍵模塊可有效減少冗餘的函數執行軌跡,更利於分析計算。函數執行軌跡特徵提取則針對關鍵模塊實施動態鏈接庫劫持,記錄關鍵模塊函數調用信息。

2.1 軟件關鍵模塊定位技術

可執行程序在完成其功能的過程中,需要執行多個相應的程序代碼,並且執行過程具有一定順序,這種順序即程序執行軌跡。依據不同的分析粒度,軟件執行軌跡主要分為模塊級執行軌跡和函數級執行軌跡(如圖 2、圖 3 所示)。

圖 2 模塊級執行軌跡

圖 3 函數級執行軌跡

本文採用函數級執行軌跡覆蓋度的方法進行關鍵模塊定位。主要流程為:(1)確定所要分析的應用程序具體功能;(2)採集該功能在正常運行過程中的函數執行軌跡,採集執行過程中各個函數的調用次數和函數所屬模塊;(3)按模塊逐一統計函數調用總量次數,得到各個模塊的函數執行軌跡覆蓋度;(4)根據覆蓋度數值,從高到低選擇部分模塊,作為關鍵模塊。

2.2 函數執行軌跡特徵提取

函數執行軌跡特徵提取是關鍵模塊定位的前提條件。其過程主要包含函數棧幀分析和動態連接庫劫持兩個部分。

(1)函數棧幀分析。首先,需要對函數棧幀進行初步分析,確定相關函數參數。之後根據參數在相應函數中傳遞過程、計算量等信息,初步判斷各參數在相應函數中的作用,進而判斷相應函數的具體類型。其次,需要進行函數棧幀監控(可以使用具體的插樁工具開展)。通過監控,可以確定所分配的函數參數和變量大小,也可以通過識別 push ebp/mov ebp, esp 的使用情況,確定幀指針的使用情況以及棧幀參數和變量的內存引用情況。用 WinCC50.dll 舉例說明,該 DLL 文件中的函數(CCGetWinCCIniPath)棧幀如圖 4 所示。從圖 4 中可知,黑色框線內的函數中包含 arg_0 和 arg_4 兩個參數,對應的是 ebp+8h 和 ebp+0Ch 位 置, 其 中,arg_0 上 面的相關參數為相應的局部變量。

圖 4 CCGetWinCCIniPath 函數棧幀

(2)動態連接庫劫持。關鍵模塊定位之後,為了獲取模塊相關函數調用過程,需要採用動態鏈接庫劫持技術(又稱為動態鏈接庫Hooking)。動態鏈接庫劫持技術可以有選擇性地劫持動態鏈接庫內用戶自定義的函數。其過程如圖 5 所示,在軟件和目標 DLL 文件之間,設置同名的偽裝 DLL 文件。每當程序調用關鍵 DLL 文件中的具體函數時,會被偽裝的同名DLL 文件劫持,由於該偽裝 DLL 文件是被修改過的,因此可以將程序調用的具體函數記錄下來,進而截獲相關函數調用過程。

圖 5 動態鏈接庫 Hooking 過程

主站安全防禦模型


安全防禦模型構建過程可分為數據集構建和卷積神經網絡(Convolutional Neural Network,CNN)訓練過程。原始數據主要從廠站工控系統或裝置中採集提取,並對每條數據標記時間戳,對採集到的原始數據進行數據處理,生成機器學習可識別的訓練數據。訓練數據應包含正常樣例和異常樣例,但是異常樣例難以獲取,因此需要採用主動觸發設備異常的方式生成數據。數據收集完成後採用隨機抽樣的方法將訓練數據劃分為訓練集和測試集,訓練集用於調整模型,測試集用於測試模型效果。

主站安全防禦模型可採用 CNN 構建。CNN主要包含網絡結構設計和反向傳播算法設計兩個部分。

3.1 網絡結構設計

CNN 主要由卷積層、池化層和全連接層構成,分別設計各層,然後將各層疊加,即可構建完整的 CNN。

(1)卷積層。卷積層是 CNN 的核心層,大部分計算工作是在該層完成。在卷積層,處理後的訓練數據經過相關卷積計算,利用激活函數將輸入數據映射到輸出端,即可得到相應的輸出特徵,多個輸出特徵再次進行卷積,即可得到多個特徵的組合值,定義為第l卷積層的第個特徵輸出值:

其中,f () down 為激活函數,是在 CNN 神經元上運行的函數,負責將神經元的輸入映射到輸出端。為第 l層第 i個輸出的激活值,其是將上層特徵輸出值與核矩陣的卷積結果進行累加,再疊加特徵偏置量得到的,如式(2)所示:

(2)池化層。在連續的卷積層之間,需插入一個池化層,以有效控制過擬合情況的發生,並且可以降低數據空間的大小,減少網絡參數數量,降低計算資源消耗,定義為池化層第 l層第個輸出的激活值,如式(3)所示:

其中, down() 定義為池化函數,將上層特徵值輸出值 劃分為多個 n×n 塊,取該 n×n塊中的平均特徵值作為輸出,即有效降低了數據空間維度。β 為權重係數,為特徵偏置量。

(3)全連接層。全連接層在 CNN 中起着「分類器」的作用,將學習到的所有特徵值映射到「分類器」上。該全連接層的權重 w 是一個巨大的矩陣,除特定塊外,其他部分都是零。在該層,二維特徵值將會轉化為一維特徵值並作為該層的輸入。對輸入進行加權求和,經過激活後得到第 l 卷積層的輸出為:

其中,為權重係數,為特徵偏置量。

對 於「 分 類 器」 的 多 分 類 問 題, 可 將 輸出期望與實際輸出做負對數似然,得到訓練總誤差:

其中,為樣本 n 的真值,為網絡輸出值。

3.2 反向傳播算法設計

反向傳播算法主要用於計算梯度下降,是訓練神經網絡的常用算法。其思想是:訓練數據經神經網絡輸出側輸出結果,是前向傳播過程,計算前向傳播輸出結果與實際結果誤差,並將該誤差從輸出側向輸入側反向傳播,在反向傳播過程中,根據誤差,調整各參數值,不斷迭代直至收斂。

定義為卷積層l的靈敏度,其表示總誤差E 隨第l層激活值變化的程度:

卷積層靈敏度大於池化層靈敏度,因此為計算第 l層的靈敏度,需要利用上採樣方法,對l+1 池化層靈敏度進行提升,以達到和第 l卷積層靈敏度同量級的程度,通過鏈式求導可得第 l層第 j 個通道靈敏度為:

其 中,,up() 表示一個上採樣操作,將每個特徵值在二維方向上進行 n 次複製 n×n,即可提升 l+1 層靈敏度。

總誤差 E 對偏移量的偏導,可通過累加 l層所有節點靈敏度得到:

總誤差 E 對卷積核參數的偏導,可通過累加所有特徵元素得到:

其中,是在計算時,與逐元素相乘的元素。

其中,全連接層的權重w是一個巨大的矩陣,在 l 層,定義 η 為學習率,若其過小,則 CNN整體訓練速度會過慢;若其過大,則系統運行將不可收斂。通過調整學習率,調整整體訓練時間;通過調整 CNN 各項參數,不斷迭代直至收斂後,可以得到 CNN 運行收斂的具體參數。

整個訓練過程是:對數據進行上述處理,產生的特徵向量作為輸入數據對 CNN 進行訓練。在 CNN 訓練過程中採用若干個卷積核對特徵向量拼接成的矩陣進行掃描、池化和全連接。訓練過程則是使用 BP 算法修改神經網絡中每條鏈接的權值。訓練的過程實際上是對模型的極大似然估計,即最大化,其中,X 為樣本,y 是樣本標籤,θ 為模型參數,因此訓練過程就是已知 X 和 y 的情況下,通過優化 θ,使得 L 最大化。

安全防禦模型構建及架構示例


在安全防禦模型構建中,訓練數據應包含正常樣例和異常樣例,但是異常樣例難以獲取,因此做出如下定義:正常運行是指通過軟件提供的修改方法正常修改變量數據;非正常運行則是指除正常運行外任何可能的行為。

模型訓練過程可視為將模型擬合數據的過程,定義為機器學習模型,其中,x 為輸入數據,θ 為模型參數,為模型對輸入數據 x 的預測結果。定義損失函數表示模型預測的誤差,其中 y 為樣本標籤,即當 x 為正常數據時,y=0;當 x 為異常數據時,y=1。模型的訓練過程:通過尋找合適的模型參數 θ,使得預測誤差最小。因此訓練過程是解決優化問題,如式(11)所示:

本 文 采 用 卷 積 神 經 網 絡 模 型, 損 失 函 數可導,可利用隨機梯度下降技術解決該優化問題,完成對神經網絡模型的訓練。在訓練結束後,模型參數 θ 可作為工控系統是否存在異常的依據,從而獲得安全穩定運行基線。在訓練過程中,從訓練集中隨機抽取部分數據,定期檢驗預測正確率,驗證訓練階段性成果。當訓練成果達到預期時,停止訓練,使用測試集測試,當測試效果達到預期時,結束模型構建過程。

本文提出的安全防禦模型構建流程如圖 6所示。

圖 6 安全防禦模型構建流程

選取數據庫中 124 個正常修改樣例和 154個非正常修改樣例,以 6∶4 的比例構建訓練集和測試集,計算召回率,最終結果如表 1 所示。

表 1 不同核函數下召回率實驗結果

對於正常修改樣例的檢測結果而言,各種核函數都具有優秀的表現,尤其是多項式核函數的召回率達到了 100%;對於非正常樣例的檢測結果而言,各種核函數差異較大,其中,多項式核函數的召回率最低,其次是徑向基核函數;線性核函數的召回率最高。在特徵數遠大於樣本數的情況下,通常選用線性核函數的經驗知識。在正常修改狀態下,線性核函數召回率達到了 98.3%,非正常修改狀態下的召回率也達到了 93.5%。

結 語


本文以提高電力工控系統安全穩定運行為目的,面向當前電力工控系統閉源性及攻擊樣本少的特點,設計了面向閉源電力工控系統的安全防禦體系架構,為閉源電力工控系統安全防禦問題提供了技術解決路線。針對閉源特性問題,分析並給出了用於提取閉源電力工控系統底層運行數據的函數調用邏輯及參數逆向技術;針對攻擊樣本少,無法構建特徵庫的問題,提出了基於卷積神經網絡的主站安全防禦模型構建方法,給出了不依賴特徵庫的系統安全運行訓練方法;最後以示例的方式,給出了安全防禦流程架構。

引用本文:王寧 , 王振邦 , 田石剛 , 等 . 面向閉源電力工控系統的安全防禦體系架構設計 [J]. 信息安全與通信保密 ,2022(4):18-26.

作者簡介 >>>
王  寧, 男, 碩士,高級工程師,主要研究方向為電力系統運行控制、新能源運行管理;
王振邦,男,博士,高級工程師,主要研究方向為電力監控系統網絡安全;
田石剛,男,碩士,高級工程師,主要研究方向為電力系統及其自動化;
李冶天,男,碩士,高級工程師,主要研究方向為電力系統及其自動化;
孫 迪,男,碩士,高級工程師,主要研究方向為電力系統運行控制、計算機技術;
李 兵,男,碩士,高級工程師,主要研究方向為電力系統及其自動化。

選自《信息安全與通信保密》2022年第4期(為便於排版,已省去參考文獻)

商務合作|開白轉載|媒體交流|理事服務
請聯繫:15710013727(微信同號)
《信息安全與通信保密》雜誌投稿
聯繫電話:13391516229(微信同號)
郵箱:xxaqtgxt@163.com
《通信技術》雜誌投稿
聯繫電話:15198220331(微信同號)
郵箱:txjstgyx@163.com

謝謝您的「分享|點讚|在看 」一鍵三連
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()