賈 麗,王 冕
(1. 桂林信息科技學院信息工程系,廣西 桂林 541004;2. 桂林電子科技大學,廣西 桂林 541004)
互聯網時代下,客戶端軟件類型逐漸增多,在給人們帶來便捷性的同時,網絡安全問題也成為制約其發展的因素。其中,病毒數量的劇增導致傳統病毒防御方法無法及時檢測和防御,對客戶端的安全造成嚴重威脅。現階段360安全衛士、騰訊管家等提出了一些防御模式。例如,防火墻是最早的防御工具,能夠結合通信需求設計啟發規則,若數據滿足規則要求則允許通過防火墻,反之被阻擋。殺毒軟件是較為主流的防御方法,根據互聯網中存在的病毒基因特性對當前數據進行識別,判斷是否存在病毒,并及時將威脅清除。在流量增多的條件下,上述兩種方法的性能會有所降低,為進一步改善殺毒能力,引入包過濾技術,采用迭代規則對數據包源頭進行分析,判斷每個協議內容,提高殺毒性能。但上述防御策略均屬于被動模式,需等到病毒暴發后才能啟動殺毒軟件,這樣會造成客戶端部分數據遭到破壞,嚴重時數據會丟失,帶來不可估量的損失。
基于此,相關學者進行了大量研究。蘆天亮[1]等人將密碼算法應用在病毒防御中。將病毒加殼、通信加密與加密勒索三種技術相結合,結合經典案例確定加密算法與病毒攻擊流程,針對加密恢復提出對應的防御對策。蔡星浦[2]等人將多階段博弈理論應用至網絡攻擊防御中,對電力網絡中的虛假信息注入攻擊行為進行分析,根據分析結果,設計一種多階段動態防御方法對攻擊方與防御方進行多階段防御。然而上述方法當病毒種類較多時,防御性能受到影響,不能準確判斷出數據包的合法性,存在病毒檢測漏報率與誤報率較高的問題。
隨著人工智能技術的進步,針對機器學習的病毒檢測受到廣泛關注。為此,本文利用一種人工智能算法來實現互聯網客戶端病毒防御。將機器學習方法用在病毒檢測中,能夠精準地發現惡意病毒,因為該方法可從已有的數據中提取關聯模式,再通過這些模式進行相似性查找,及時發現有類似特征的病毒,并對其阻止,提高了客戶端網絡安全。
由于客戶端數據量較大,會生成極大的運算量,因此在進行分類訓練之前需對其進行預處理,也就是特征提取。特征提取的主要作用是確保決策與條件屬性在相互依賴關系[3]不變的情況下,實現決策表約簡,達到特征向量降維的目的。
本文利用Gain-Ratio方法進行特征提取,已知編碼集合S,在信息論中對S的熵可描述為:熵能夠體現出S中某成員分類所需的進制位數。例如P+為1,客戶端可得知樣本為正,因此無需發出消息,這時熵值等于0;若P+為0.5,則需通過二進制位表明樣本為正還是負。因此,S的熵值可通過下述公式表示

(1)
測試當某個特征A減少時,造成的熵減少程度為IG(S,A),通過該值判斷A的信息涵蓋量[4],計算公式如下

(2)
公式中,E代表信息增益,V代表包括特征A的全部可能取值。
如果通過信息增益來判斷屬性的重要程度,選取重要的屬性添加到集合中,則該屬性集合即為決策系統的約簡。
IG體現出特征值具有多樣性,所以屬性集合中的特征向量存在高互異性。為避免此種現象,綜合考慮特征向量存在的信息量GR,得到如下公式

(3)

(4)
式中,Si代表集合S內,特征值為d的特征子集。利用上述方法即可實現數據的降維處理,獲取病毒數據的特征。
貝葉斯分類是人工智能領域的有效手段,可以很好地解決分類問題,根據上述提取的特征向量,通過構建貝葉斯網絡,即可學習特征向量分布,進而實現準確分類。
貝葉斯網絡分類器的實質是對某變量遵循的概率分布特征進行表示。其模型可描述為:假設U={X,C}表示變量有限集合,且X={X1,X2,…,Xn}為屬性變量集合,其中,C指變量,取值區間是{c1,c2,…,cn},xi代表屬性Xi的取值,也是ci的概率,則根據貝葉斯理論能夠得出

=αP(cj)P(x1,x2,…,xn,|cj)
(5)
式中,P(cj)代表類cj的后驗概率[5],P(x1,x2,…,xn|cj)則為類cj有關xi的似然,α屬于正則化因子。結合概率鏈式規則得出
P(cj|x1,x2,…,xn)=αP(cj)P(x1,…,xi-1,xi+1,…,xn,cj)
(6)
已知訓練樣本集合為D={u1,u2,…,uN},分類的最終目的是對該集合進行分析,并找出映射函數[6]f:(x1,x2,…,xn)→C,確保對所有未知類別xi=(x1,x2,…,xn)設定標簽。引入貝葉斯算法中的最大后驗定理,已知某個類別xi=(x1,x2,…,xn),選取后驗概率P(cj|x1,x2,…,xn)最大當作該類別標簽。
通過貝葉斯網絡進行分類的實質就是利用該網絡對式(6)進行求解,為獲取P(x1,…,xi-1,xi+1,…,xn,cj)的值,需明確變量集合的條件概率分布。如果U={X1,X2,…,Xn}是構成貝葉斯網絡的概率分布編碼,其二元組形式描述為B=(G′,Θ),G′為某節點上與變量X1,X2,…,Xn相對應的有向無環圖,有向邊體現著不同變量存在的關聯性;二元組中的Θ表示概率分布集合,其中的任意一個元素均代表在pa(xi)∈Pa(Xi)條件下全部可能出現的概率。Pa(Xi)為Xi在G′內的變量集,pa(xi)是集合Pa(Xi)中的某個元素。則網絡B在U中存在唯一的概率分布

(7)
因此,通過貝葉斯網絡學習可描述為:在已知定義在U上的樣本集合D=(u1,u2,…,uN),找出與D匹配度最高的網絡B。
若將上述貝葉斯網絡模型直接用于病毒檢測中,其特征獨立性的要求有時將無法滿足。為此,本文對其改進,建立一個新的病毒檢測模型。
變體公式[7]確定:如果F′與F′′分別代表不相交的特征子集,結合貝葉斯變體表達式得出


(8)


(9)
以上變體表達式能縮小獨立性假設范圍,且確定F″為限制特征子集合。
規則匹配度[8]:若R={R1,R2,…,Rr}表示規則集合,F={F1,F2,…,Fn}是病毒數據的特征集合。則任意一條規則Ri的特征集合表示為RFi={Fi1,Fi2,…,Fim}。將規則和病毒的匹配程度當作病毒在Ri中存在的特征數量:num(RFi∩F)。因此和病毒匹配性最強的規則Ri符合下述要求

(10)
通過上述的改進,基于貝葉斯分類器的病毒檢測過程如下:
步驟一:選取訓練樣本,對其執行貝葉斯算法,獲得規則集合R;
步驟二:在集合R內找出符合病毒分類的相關規則,并利用此規則完成病毒分類;如果沒有找到規則則進行步驟三;
步驟三:在集合R內找出和待分類病毒相似度最高的規則Rk;
步驟四:確定待分類病毒在規則集合內具有的特征集合F″;
步驟五:將F″包含的樣本當作貝葉斯訓練樣本,再使用式(9)完成病毒檢測。
圖1為客戶端病毒防御架構圖。

圖1 客戶端病毒防御架構圖
結合病毒防御架構圖可知,當完成最為關鍵的病毒檢測程序后[9],如果發現有病毒入侵,防御模塊會及時阻斷入口端口,同時也不會接受任何服務請求。在防御機制的設計中,若攻擊依舊存在,則流表項[10]會有很高的命中率,這是由于每個病毒均會命中流表項。本文通過計算命中率,再將該值和合法數據流的流表項對比,進一步達到防御目的。完整的防御過程如下:
步驟一:遍歷全部合法數據流產生的流表項,利用下述公式獲取平均命中率。

(11)

步驟二:利用下述公式獲取被禁止的流表項命中率

(12)


(13)
式中,λ為設置的合理閾值。
假設入侵者以速度p1傳輸病毒數據包,入侵時間為t1,而合法用戶以p2的速度傳輸數據包,且自病毒入侵后需要時間t2完成端口恢復。結合這一假設,將式(13)變換為式(14)

(14)
再將式(14)進行簡化處理

(15)
通常而言,若客戶端網絡對時間較為敏感,則將λ值設置的較大,以此減少防御時間;若網絡是相對安全敏感的,則該值應設置的較小,最大程度確保網絡安全。
為了使仿真更具說服力,在實驗中引入多種類型病毒,病毒名稱與攻擊原理分別如下。
端口掃描病毒:向客戶端主機的所有端口均發送病毒數據包,判斷端口是否開放,如果處于開放狀態則向其注入病毒。
IP掃描病毒:尋找目標網絡,并向其發送病毒數據包,以此確定哪個目標可以被攻擊。
Smurf病毒:向目標主機發送偽造地址,此時主機需對虛假源主機進行回復,導致不能及時處理合法數據包。
Neptune病毒:向客戶端發送虛假報文,主機需對每個報文進行確認,造成大量端口被非法占用。
Apache2病毒:服務器接收大量請求,降低服務器處理速度,甚至消耗全部資源。
病毒檢測是病毒防御的重中之重,檢測結果直接影響病毒防御效果。在仿真進行到第20分鐘時向客戶端同時注入端口掃描病毒與Apache2病毒。此外,在實驗40、70與90分鐘時,分別注入IP掃描病毒、Smurf病毒以及Neptune病毒。利用密碼算法、多階段博弈理論方法與本文方法進行病毒檢測,得到的檢測結果如圖2所示。

圖2 不同方法病毒檢測結果對比圖
由圖2能夠看出,共向客戶端發送了五種類型病毒,本文方法并沒有檢測出端口掃描病毒,而是在同一時間檢測到了Apache2病毒;密碼算法檢測出了除Apache2病毒之外的所有病毒。但是經過對端口掃描數據包的分析得出,此種病毒每秒只能觸發一個小數據包,不能對客戶端造成實質性危害。相比之下,Apache2病毒的危害性更強,能夠在釋放連接時造成非法信息大量爆發。因此,表明文本方法可以分清主次,對危害性較強的病毒可優先檢測、優先處理。
本文將漏報率與誤報率作為性能評價指標,并使用混淆矩陣來實現性能的可視化描述。該矩陣的每一列表示預測標簽,行代表真實種類標簽,其實質就是對所有類標簽的結果作出統計與分析。本文構建的混淆矩陣如表1所示。

表1 混淆矩陣表
表1中,Positive表示正元組,是某種特定的病毒數據,Negative是負元組,指病毒數據之外的其它樣本數據。此外,TP與TN分別表示被正確分類的正樣本與負樣本;FP指負樣本被分類成正樣本,FN則是正樣本被分類成負樣本。
如果在仿真中對三種不同方法進行相同次數的測試,利用這些數據對測試結果進行分析,并通過誤報率FAR與漏報率MAR兩個指標進行體現,得到的測試結果如圖3和4。其中誤報率是指算法是否能夠讓合法數據包順利執行,漏報率表示該算法能否成功防御所有病毒入侵。

(16)

(17)

圖3 不同方法誤報率測試結果

圖4 不同方法漏報率測試結果
由圖3和4可知,隨著病毒類型的增多,三種方法的誤報率與漏報率均呈現出上升趨勢。而本文算法在多項指標中均表現突出,并沒有出現大幅度上升。這是因為貝葉斯機器學習分類方法通過有效的學習過程,構建了最優分類網絡模型,同時設置合理的規則匹配度,使病毒數據特征與實驗數據能夠很好地匹配,只有提高病毒檢測精度,才能從根本上提高病毒防御能力。
互聯網飛速發展的同時,病毒入侵方式也日新月異,已經嚴重影響客戶端網絡的安全運行。再加上互聯網的開放性與多樣性,網絡安全已經引起人們重視。為此,本文運用人工智能中的貝葉斯機器學習方法對病毒進行防御,同時通過實驗證明該方法能夠全面檢測出病毒類型,有效提高客戶端網絡安全。但實驗中的訓練樣本有限,該算法對病毒的判斷還需進一步提高,在今后研究中增加樣本數量,使分類模型廣泛涵蓋病毒類型,提高算法的推廣性。