摘要:傳統的系統防御方法是基于特征庫的被動防御,它們無法實時發現零日攻擊。本文基于隱馬爾科夫模型建立描述系統CPU行為的模型。該方法根據系統用戶的行為習慣動態調整模型參數,利用觀測序列相對于代表正常行為輪廓的模型的似然概率衡量系統CPU行為的正常度。由于該方法不需要特征庫,可以更有效地應用于未知主機威脅的早期檢測。
關鍵詞:HMM模型CPU性能異常檢測
隨著科技的不斷發展,計算機已經成為人們日常生活和工作必備的、不可或缺的主要工具。計算機的運行速度越來越快,處理的信息量越來越大,用戶對計算機的性能也提出更高的要求。CPU作為計算機的核心,是進行數據處理運算和指令操作的中樞,容易受到工作負荷、病毒等外來因素的影響,使計算機的性能嚴重下降。目前使用的主流殺毒軟件、防火墻和系統監控程序僅僅依靠病毒庫中存在的病毒進行識別和需要人工參與,不能自動識別系統的異常,保證不了系統的安全。本論文所闡述的基于HMM的CPU行為模型主動防御異常檢測技術,實現了CPU 性能異常行為的早期預測。
1 隱式馬爾科夫模型
隱式馬爾科夫模型(Hidden Markov Models,簡稱HMM)可以表示為:
λ=(N,M,π,A,B)
上述參數:N為Markov鏈的狀態數目;M為每個狀態θ對應的可能出現的觀測值數目;π為初始狀態概率矢量;A為狀態轉移概率矩陣;B為觀察值概率矩陣。
應用HMM 可以解決以下三個方面的問題:
①評估問題:對于給定的模型λ和觀察值序列O,求這個觀察值序列O的概率P(0|λ)。常用算法是前向算法和后向算法。②解碼問題:對于給定的觀察值序列和模型λ,求出現可能性最大的狀態序列。常用算法是Viterbi 算法。③訓練問題:對于給定的觀察值序列O,調整參數λ,使觀察值出現概率(0|λ)最大。常用算法Baum-Welch算法。
2 CPU性能異常檢測系統模型
CPU性能異常檢測系統模型如圖1所示,該模型主要由兩部分組成:
2.1 數據收集與處理:利用Windows 系統提供的性能監控器收集CPU的性能計數器日志數據,通過圖形幫助顯示性能監視數據。
2.2 HMM 模型部分:
HMM 模型主要由HMM 訓練與異常檢測兩部分組成。
①正常狀態下的HMM 訓練。通過導入處理過的、多個或大量正常狀態下的性能日志數據,訓練CPU正常狀態下的參考模型,運用到Baum-Welch算法和前向-后向算法確定λ=(N,M,π,A,B)與正常狀態閾值。②異常檢測部分。往參考模型導入檢測的CPU性能日志數據,利用前向-后向算法計算P(0|λ)值,并與閾值比較,判斷該日志數據的狀態。
3 基于HMM模型的CPU性能異常檢測實驗
本實驗主要運用基于一維HMM的異常檢測,必須選擇具有最佳的異常檢測效果的計數器。由于Processor time 顯示的是CPU 處于用戶模式和特權模式之下,執行非閑置線程總的百分比;經過數據記錄分析證明,Processor Time的計數值等于Privileged Time和User Time的計數值之和。因此,Processor Time 的數據能夠反映出Processor Time和User Time的數據特征。考慮Processor Time是由CPU的工作狀態所決定,我們進一步用“輕負荷”、“中度負荷”, “高度負荷”來描述CPU的三種工作狀態,并假設CPU的工作狀態符合Markov鏈特性。即狀態的跳轉代表CPU工作狀態的變化。由于CPU的真實工作狀態并不可見,只能通過可觀測過程Processor Time來估計,因此,我們可以通過隱馬爾科夫模型來描述CPU的工作過程。
3.1 CPU 性能日志數據收集和處理
首先,有目的性地進行CPU 性能日志數據收集,即Processor time在正常狀態和異常狀態下收集兩種并分別標記,以便于HMM 可行性的判斷。
在正常狀態下,CPU 一般處于低占用率的過程之中,CPU 還有大量的空閑資源沒有使用;而在異常狀態下,異常進程無節制占用CPU 的資源,導致占用率一直處于較大的過程,這是CPU 性能降低的征兆。
實驗中采集了100份實驗樣本,將Processor time 的計數值作為觀察值,將日志數據進行離散化處理,確定觀察值O,可得到離散化處理后的正常狀態和異常狀態下觀察值概率分布如表1所示:
正常狀態下觀察值主要處于1、2、3 之中,分布比較集中;而在異常狀態下,觀察值大部分集中于10、11、12,也有高于10%的一部分分布比較分散。正常狀態,觀察值較小;異常狀態,觀察值較大。
將性能計數器的計數值分段作為觀察值,確定狀態值Q,根據狀態值,將Processor time 的計數值分為“輕負荷”、“中度負荷”, “高度負荷”三個部分。
3.2 正常狀態下基于HMM 訓練CPU 性能檢測
將CPU的行為看成HMM過程,在MATLAB 7.1的操作平臺中,將開始的時候每一種情況的狀態認為都處于“低負荷”狀態之中,即初始狀態概率默認為π=[1 0 0]。A作為狀態轉移矩陣,是狀態Q“低負荷”、“中度負荷”和“高度負荷”三種狀態之間轉移概率的集合;B作為觀察值概率矩陣,是在狀態Q的前提下出現特定觀察值O 的概率集合,即:
通過隨機分布確定出A0矩陣,根據狀態的分布變換,歸納、分析獲得B0矩陣,從而可以得到參考模型的初始參數λ0=(π0,A0,B0)。
3.2.1 正常狀態與異常狀態下的P(0|λ)的分析
將正常狀態驗證樣本和異常狀態樣本驗證樣本的日志數據分別平均分成n組數據,然后將數據組導入訓練好的HMM之中,統計出各組數據的Pn(0|λ)。本實驗得到正常樣本和異常樣本的平均對數或然概率log(Pn(0|λ))/1,并經四舍五入后的分布如表2所示:
由實驗數據可以得出,CPU異常狀態下異常序列的或然概率P(O|λ)小于正常時的概率,其分布主要位于更小的區間之中。
3.2.2 基于HMM的CPU 性能異常檢測
檢測率[1](簡稱DR)與誤報率[2](簡稱FPR)是異常檢測系統的兩個重要性能衡量標準。根據異常狀況的判斷標志 ,正常閾值pF是整個異常檢測系統的核心。若pF過小,容易造成誤檢;若pF過大,則容易漏檢。表3為實驗取閾值pF=-30~40后的或然概率、檢測率和誤報率,可見當閾值取-34.5時,檢測率DR 為97%,誤報率FPR 為2%。因此,對于正常狀態下的CPU 性能特性HMM,正常閾值pF=-34.5,則或然概率大于或等于-34.5 的CPU 行為特性是屬于正常狀態,這時候系統的DR=97%,FPR=2%。
3.2.3 從正常狀態樣本和異常狀態樣本中選取多份樣本,根據觀察值序列得到的平均或然概率,我們對正常狀態樣本的平均或然概率小于正常閾值pmin進行統計,DR=95%。異常狀態樣本中多份異常狀態的或然概率都大于正常閾值pmin,誤報率恰恰為0.01,因此異常檢測的效果十分明顯。
4 結束語
通過Windows系統性能監視器進行記錄CPU的行為日志數據,依靠HMM實現行為特征的分析與辨識,從而達到主機的初期監控,具有簡單性、直觀性、擴展性、普遍性的特點。本試驗中也存在:使用的性能監視器比較簡陋,得到的日志數據僅僅是最原始的計數值;訓練模型所得的觀察值概率矩陣B存在零值,需要作微小量的添加處理,導致誤差不斷疊加;CPU 的狀態設定只有“正常”和“異常”兩種,設定的狀態類型太少等缺陷,還待有進一步的改進,這里就不在贅述。
參考文獻:
[1]謝逸,余順爭.基于Web用戶瀏覽行為的通緝異常檢測[N].軟件學報,2007年6月.
[2]牛霜霞,韓麗明,崔貴良,任永杰.Windows 服務器性能檢測方法[J].河南電力,2010,第四期:55-60.
作者簡介:雷曙光,男,1973年出生,陜西興平市,講師/碩士研究生,多媒體信號處理方向研究。