文/滕建 趙英 陳駿君
隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)應(yīng)用的不斷擴(kuò)展,網(wǎng)絡(luò)在日常工作生活中已變得不可或缺。與此同時,針對網(wǎng)絡(luò)的攻擊也在呈幾何幅度增長,給國家安全和社會經(jīng)濟(jì)造成了巨大的損害。面對日益頻繁與多樣化的網(wǎng)絡(luò)攻擊手段,如何及時、高效地發(fā)現(xiàn)與阻止該攻擊的發(fā)生是目前亟需網(wǎng)絡(luò)服務(wù)提供商和網(wǎng)絡(luò)管理人員解決的問題。
目前針對網(wǎng)絡(luò)異常檢測的研究主要集中在機(jī)器學(xué)習(xí)方法和概率統(tǒng)計方法上。文獻(xiàn)[1]提出一種基于改進(jìn)支持向量機(jī)算法進(jìn)行網(wǎng)絡(luò)入侵檢測,文獻(xiàn)[2]采用一種改進(jìn)的極限學(xué)習(xí)機(jī)方法進(jìn)行檢測。此類機(jī)器學(xué)習(xí)方法不僅需要大量有標(biāo)記的數(shù)據(jù)作為訓(xùn)練樣本,而且訓(xùn)練計算開銷很大。而基于馬爾科夫模型[3]的統(tǒng)計方法也對數(shù)據(jù)集有較高要求。
針對以上問題,本文提出一種基于時間衰減閉合頻繁模式的網(wǎng)絡(luò)異常行為檢測方法。該方法通過對出口流量進(jìn)行深度包檢測(Deep Packet Inspection,DPI),利用計費(fèi)系統(tǒng)認(rèn)證信息識別流量所屬用戶,挖掘流量數(shù)據(jù)中的基于時間衰減的閉合頻繁模式,利用該頻繁模式來構(gòu)建用戶網(wǎng)絡(luò)行為模型和進(jìn)行網(wǎng)絡(luò)異常檢測。
本文提出了網(wǎng)絡(luò)異常行為檢測方法的整體流程如圖1所示。該流程共分為網(wǎng)絡(luò)流量捕獲、深度包檢測、用戶與流量關(guān)聯(lián)、閉合頻繁模式挖掘、用戶行為模型建立更新、異常檢測、預(yù)警組成。
其中網(wǎng)絡(luò)流量捕獲通過對出口交換機(jī)作端口鏡像,直接連入服務(wù)器進(jìn)行數(shù)據(jù)處理。
圖1 工作流程
Redis是一個開源的基于內(nèi)存亦可持久化高性能非關(guān)系型數(shù)據(jù)庫,具有數(shù)據(jù)結(jié)構(gòu)豐富、低延時、高吞吐、純內(nèi)存等特點(diǎn),適用于聯(lián)機(jī)實時事務(wù)處理過程。為了加速處理速度,實現(xiàn)異常檢測,中間數(shù)據(jù)及最終結(jié)果均采用Redis進(jìn)行存儲。
深度包檢測基于nDPI[4],并對一些具體協(xié)議進(jìn)行歸類。此外在檢測過程中集成IP地址與計費(fèi)系統(tǒng)認(rèn)證信息的關(guān)聯(lián),可以在檢測過程中識別出流量所屬用戶。nDPI是一款跨平臺的開源深度包檢測庫,具有識別速度快、準(zhǔn)確率高等特點(diǎn),被廣泛用于網(wǎng)絡(luò)流量分類和構(gòu)建實驗樣本基準(zhǔn)。nDPI可識別FTP、SMTP、DNS、MySQL、QQ、Skype等將近200種網(wǎng)絡(luò)應(yīng)用協(xié)議類型。
通過深度包檢測為每個用戶生成可供挖掘閉合頻繁模式的事務(wù)集合,利用頻繁模式構(gòu)建、更新用戶行為模型或者與已存在的用戶行為模型進(jìn)行匹配,判斷是否存在異常流量。
為了進(jìn)行異常流量檢測,必須先構(gòu)建正常的用戶網(wǎng)絡(luò)行為模型。此外由于用戶的網(wǎng)絡(luò)行為習(xí)慣是隨時間變化的,在構(gòu)建模型時必須考慮到用戶行為習(xí)慣的漂移。因此,本文采用一種基于時間衰減的閉合頻繁模式來構(gòu)建正常的用戶網(wǎng)絡(luò)行為模型。建模完成后,對于待檢測的流量,通過深度包檢測等預(yù)處理后,發(fā)掘其閉合頻繁項,與先前建立的用戶行為模型匹配,從而判斷用戶流量是否正常。
閉合頻繁模式
頻繁模式,也稱頻繁項集,表示一個數(shù)據(jù)集中頻繁出現(xiàn)、具有代表性的模式[5]。對于用戶網(wǎng)絡(luò)流量數(shù)據(jù),一條頻繁模式可以表示用戶的一條網(wǎng)絡(luò)行為習(xí)慣,通過對頻繁模式的挖掘與分析,可以建立用戶的網(wǎng)絡(luò)行為模型。
通過網(wǎng)絡(luò)流量數(shù)據(jù)的集中挖掘會產(chǎn)生大量的頻繁模式,尤其是數(shù)據(jù)項之間存在強(qiáng)關(guān)聯(lián)的時候。因此需要減少模式的數(shù)量,去除其中無用的、表示性弱的模式,對模式進(jìn)行壓縮。常見的壓縮方法包括閉合頻繁模式、最大頻繁模式、top-k頻繁模式,其中最大頻繁模式與top-k頻繁模式壓縮效果好于閉合頻繁模式,但是其會損失部分有用信息,而閉合頻繁模式則去除冗余信息后包含所有模式信息,因此本文采用閉合頻繁模式作為模式壓縮方法。
下面給出相關(guān)概念的定義:
給定一個事務(wù)集合D ,D中包含 N 條事務(wù),每個事務(wù)用t來表示, t∈D。 I為所有項的集合{a1,a2am},其中每個事務(wù)t是由I中不同的項組成的非空子集:{i1,i2, im},其中ij∈I,1≤j≤m。
定義1. 支持度計數(shù):模式P的支持度計數(shù)定義為事務(wù)集合D中包含模式P的事務(wù)數(shù)據(jù)個數(shù),記為freq(P)。
定義2. 頻繁模式:如果模式P滿足support(P)≥θ, 其中,support(P)為P的支持度,則稱P為頻繁模式。其中θ為最小支持度閾值,0≤θ≤1。
定義3. 閉合算子[6,7]:設(shè)T是事務(wù)集合D的子集,Y是I的子集,定義函數(shù)f和g:
其中函數(shù)f的輸入?yún)?shù)是事務(wù)集合T,輸出是T中所有事務(wù)都包含的一個項集。函數(shù)g的輸入是項集Y,輸出是包含Y的事務(wù)集。函數(shù)C = f·g = f(g)稱為閉合算子。
定義4. 閉合頻繁模式:如果項集P滿足P= C(P),且其支持度不小于最小支持度,則稱P為閉合頻繁模式。
基于時間衰減的閉合頻繁模式挖掘算法
用戶的行為會隨時間變化而不斷進(jìn)行改變,因此對于網(wǎng)絡(luò)流量異常檢測,當(dāng)前的網(wǎng)絡(luò)流量的重要性要大于過去時刻的網(wǎng)絡(luò)流量,需要為當(dāng)前時刻的用戶行為賦予更高的權(quán)值。而對于一些小流量的異常,在某個時間段內(nèi)并不會產(chǎn)生明顯的異常特征,但隨著時間的流逝,其積累效應(yīng)會損害網(wǎng)絡(luò)正常運(yùn)行,因此需要考慮用戶過往行為對網(wǎng)絡(luò)的持續(xù)影響。針對以上情況,本文在CloStream[8]的基礎(chǔ)上提出一種基于時間衰減的閉合頻繁模式挖掘算法TDCloStream,通過引進(jìn)時間衰減概念,既考慮了當(dāng)前流量的重要性,也考慮了過往流量的累積效應(yīng)的影響。
TDCloStream包含三個數(shù)據(jù)結(jié)構(gòu)表,分別為ClosedTable、CidList和TransTable。ClosedTable負(fù)責(zé)存儲閉合頻繁模式的信息,其中每一條記錄表示一個閉合頻繁模式。ClosedTable包含三個字段:Cid,CP和SC。CP為頻繁模式,Cid為CP的唯一標(biāo)識,SC為CP的支持?jǐn)?shù)。CidList用于存儲數(shù)據(jù)中的項Item和其所屬Cid的集合,該結(jié)構(gòu)包含兩個字段:Item和CidSet。TransTable存儲新事務(wù)NewTran到達(dá)后需要更新的閉合模式。TransTable包含兩個字段:TempItem和Cid,其中TempItem存儲滿足{Ti∩NewTran,Ti∈ClosedTable}條件的項集,Cid為Ti在ClosedTable所對應(yīng)的標(biāo)識。
為了考慮時間對頻繁模式的影響,引入時間衰減因子f對ClosedTable表里的頻繁模式的支持?jǐn)?shù)進(jìn)行更新,更新公式為:
其中P_i為ClosedTable中頻繁模式,T_m為新到達(dá)事務(wù)。此外用戶行為模型也通過公式(3)、(4)進(jìn)行更新。
具體算法描述如下:
算法1. TDCloStream()
輸入:事務(wù)集合D, 衰減因子f, 最小支持度閾值θ。
輸出:閉合模式表ClosedTable。
1.Algorithm TDCloStream()
2.for tnewin D do
3.TransTable ← (tnew,0)
4.SET({t}new}) = CidSet(i1) ∪ ... ∪ CidSet(ik)
5.for each Cid i∈ SET({t}new}) do
6.S←NULL
7. S←tnew∩ ClosedTable[i].CP
8.If (S ∈ TransTable) then
9.If (ClosedTable[i].SC> ClosedTable[t].SC) then
10. Replace (S,i) with (S,t) in TransTable
11. else
12. TransTable ← TransTable ∪ (S,i)
13. end for
14. for each (X,c) in TransTable do
15. if (X==ClosedTable[i].CP) then
16. ClosedTable[c].SC =ClosedTable[c].SC×f+r
17. else
18. tmpfreq = ClosedTable[c].SC×f+r
19. if tmpfreq≥θ×N
20. j←j+1
21. ClosedTable← ClosedTable∪(j,X,tmpfreq)
22. for each i_i∈t_new do
23. CidSet(i_i)← CidSet(i_i)∪ j
24. end for
25. end if
26. end for
27. end for
28. end Algorithm
異常檢測算法
對于某個用戶其閉合頻繁模式為{f1, f2,...,fn},記為F,頻繁模式支持度分別為{sf1,sf2, ...,fn}。其用戶行為模型為{m1,m2,..,mt},記為M,頻繁模式支持度分別為{sm1, sm2,..smt}。設(shè)置臨時變量{t1,t2,..,tt} }。異常檢測算法流程如下:
設(shè)定異常閾值?。
對于F中每一個fj,判斷是否屬于mi,1≤i≤t。如果屬于,則Ti= Ti+ sfj。
計算相似度。
如果S≥?,報警。
數(shù)據(jù)來源
為檢測本文所提方法的有效性,抓取某大學(xué)圖書館和某實驗樓各一條線路3天的流量進(jìn)行實驗,其中取2天數(shù)據(jù)用于構(gòu)建用戶行為模型,1天數(shù)據(jù)用于異常檢測。流量具體信息見表1。
本文利用頻繁模式構(gòu)建用戶網(wǎng)絡(luò)行為模型,需要把原始網(wǎng)絡(luò)流量轉(zhuǎn)換為事務(wù)集合進(jìn)行分析,為此采用深度包檢測工具nDPI對流量進(jìn)行處理。nDPI對具有相同五元組[9]{源IP、目的IP、源端口、目的端口、協(xié)議}的原始網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行分流(Flow),識別出該流所屬應(yīng)用類型和其中所包含Packet的數(shù)目與大小。此外為了把網(wǎng)絡(luò)流量與用戶相關(guān)聯(lián),需要讀取網(wǎng)絡(luò)計費(fèi)系統(tǒng)的認(rèn)證信息,通過原始流量IP地址與用戶建立聯(lián)系(注:此處用戶包含在校師生及校內(nèi)服務(wù)器)。通過上述處理,可以為每一個用戶建立可供閉合頻繁模式挖掘的事務(wù)集合,事務(wù)集合特征見表2。由于本文所提算法的輸入均為標(biāo)量類型,所以對Pkts和Bytes進(jìn)行離散化處理,以適應(yīng)算法需求。
表1 流量信息
表2 事務(wù)集合特征
DDoS檢測
分布式拒絕服務(wù)(DDoS:Distributed Denial of Service)攻擊是一種傳統(tǒng)的網(wǎng)絡(luò)攻擊方式。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,DDoS攻擊的規(guī)模也逐步地增大,其破壞力也在進(jìn)一步地增強(qiáng)。本文使用Scapy來模擬DDoS攻擊驗證所提方法的有效性。Scapy是一款基于python的控制網(wǎng)絡(luò)報文的交互程序,它可以偽造、解析多種協(xié)議的報文,還具有發(fā)送、捕獲、匹配請求和響應(yīng)的功能。
分別在圖書館和實驗樓選取1臺提供Web服務(wù)的服務(wù)器,對其進(jìn)行10分鐘的SynFlood攻擊測試。為方便統(tǒng)計,攻擊源地址在10.47.0.1 ~ 10.69.255.254范圍內(nèi)隨機(jī)生成,攻擊源端口隨機(jī)生成。經(jīng)計算兩臺服務(wù)器的平均網(wǎng)絡(luò)流速為9.3M/s和0.5M/s,峰值流速分別為34M/s和2M/s。本文分別模式10M/s、20M/s、50M/s的攻擊速率來進(jìn)行檢測。實驗進(jìn)行5次,平均攻擊流量識別準(zhǔn)確率如圖2所示,平均攻擊流量識別的召回率如圖3所示。通過實驗結(jié)果,可以看到在三種不同攻擊速率下,本文所提方法對攻擊流量的識別的準(zhǔn)確率均在91%以上,具有優(yōu)秀的識別效果。此外對于攻擊流量識別的召回率可以達(dá)到96%,說明該方法對攻擊流量判斷錯誤的概率很低,具有實用價值。
圖2 DDoS攻擊識別準(zhǔn)確率
圖3 DDoS攻擊識別召回率
表3 用戶行為異常檢測結(jié)果
通過分析可知,由于DDoS攻擊會產(chǎn)生大量隨機(jī)源IP地址、隨機(jī)端口的Flow,且每個Flow基本上只包含1至5個數(shù)據(jù)包,會產(chǎn)生支持度很高的小包數(shù)、高速率、目的端口為80的模式,所以會產(chǎn)生良好的檢測效果。
此外該方法對其他形式的DDoS攻擊如AckFlood、HTTP GET和網(wǎng)絡(luò)端口掃面也有較好的檢測效果。
用戶異常行為檢測
除去網(wǎng)絡(luò)安全層次的異常檢測,本文所提方法對使用層次上的異常行為也有較好的檢測效果。經(jīng)統(tǒng)計表明,短期內(nèi)用戶在使用網(wǎng)絡(luò)時的行為不會發(fā)生較大幅度改變?;诖私Y(jié)論,本文方法檢測用戶使用層次上的異??捎糜跈z測賬戶盜用和惡意程序的網(wǎng)絡(luò)行為。
為了驗證使用層次上異常檢測的有效性,在圖書館和實驗樓中分別隨機(jī)選取150名個人用戶及其用戶行為模型進(jìn)行實驗。在實驗前,手動把圖書館人員的行為模型依據(jù)實驗樓人員工號設(shè)為實驗樓人員用戶行為模型,實驗樓行為模型做相反處理。實驗結(jié)果見表3。結(jié)果表明該模型對于用戶使用上的異常有較好的檢測效果。
本文提出了一種基于時間衰減的閉合頻繁模式的網(wǎng)絡(luò)異常行為檢測方法,該方法通過對原始網(wǎng)絡(luò)流量進(jìn)行深度包檢測,隨后關(guān)聯(lián)計費(fèi)系統(tǒng)的認(rèn)證數(shù)據(jù)生成事務(wù)集合,通過挖掘網(wǎng)絡(luò)事務(wù)集合中閉合頻繁模式,構(gòu)建用戶行為模型和進(jìn)行網(wǎng)絡(luò)異常檢測。本文所提方法不但對DDoS、端口掃描等網(wǎng)絡(luò)攻擊具有良好的檢測效果,還能識別用戶使用層次上的異常,例如賬戶盜用等,該方法具有較高的實用價值。通過用戶行為模型的建立,不但可以用于異常檢測,也可以為學(xué)校決策支持平臺提供依據(jù),如用戶上網(wǎng)習(xí)慣安排網(wǎng)絡(luò)出口線路、與用戶成績相關(guān)聯(lián)進(jìn)行學(xué)業(yè)預(yù)警等。該研究內(nèi)容和方法具有很強(qiáng)的使用價值和廣泛的應(yīng)用前景。
[1]Kuang F, Zhang S, Jin Z, et al. A novel SVM by combining kernel principal component analysis and improved chaotic particle swarm optimization for intrusion detection[J]. Soft Computing, 2015, 19(5): 1187-1199..
[2]Singh R, Kumar H, Singla R K. An intrusion detection system using network traffic profiling and online sequential extreme learning machine[J]. Expert Systems with Applications, 2015, 42(22): 8609-8624.
[3]Xie Y, Yu S Z. A large-scale hidden semi-Markov model for anomaly detection on user browsing behaviors[J]. IEEE/ACM Transactions on Networking (TON), 2009, 17(1): 54-65.
[4]Deri L, Martinelli M, Bujlow T, et al. ndpi: Open-source high-speed deep packet inspection[C]//Wireless Communications and Mobile Computing Conference (IWCMC), 2014 International. IEEE, 2014:617-622.
[5]Aggarwal, Charu C., and Jiawei Han, eds. Frequent pattern mining. Springer, 2014.
[6]Yen S J, Wu C W, Lee Y S, et al. A fast algorithm for mining frequent closed itemsets over stream sliding window[C]//Fuzzy Systems (FUZZ), 2011 IEEE International Conference on. IEEE, 2011: 996-1002.
[7]韓萌, 王志海, 原繼東. 一種基于時間衰減模型的數(shù)據(jù)流閉合模式挖掘方法[J]. 計算機(jī)學(xué)報,2015(7):1473-1483.
[8]Yen S J, Lee Y S, Wu C W, et al. An efficient algorithm for maintaining frequent closed itemsets over data stream[J]. Next-Generation Applied Intelligence, 2009: 767-776.
[9]Zhao Y, Chen J, You G, et al. Network Traffic Classification Model Based on MDL Criterion[M]//Advanced Multimedia and Ubiquitous Engineering. Springer Singapore, 2016: 1-8.