張志源
(晉城職業(yè)技術(shù)學(xué)院,山西 晉城 048000)
2020年,全球突發(fā)新冠肺炎疫情,抗擊疫情成為各國緊迫任務(wù)。在疫情防控相關(guān)工作領(lǐng)域,大量新型互聯(lián)網(wǎng)產(chǎn)品和服務(wù)應(yīng)運(yùn)而生,在助力疫情防控的同時(shí)也進(jìn)一步推進(jìn)社會(huì)數(shù)字化轉(zhuǎn)型。與此同時(shí),安全漏洞、數(shù)據(jù)泄露、網(wǎng)絡(luò)詐騙、勒索病毒等網(wǎng)絡(luò)安全威脅日益凸顯,有組織、有目的的網(wǎng)絡(luò)攻擊形勢(shì)愈加明顯,為網(wǎng)絡(luò)安全防護(hù)工作帶來更多挑戰(zhàn)。2020年我國互聯(lián)網(wǎng)網(wǎng)絡(luò)安全態(tài)勢(shì)報(bào)告[1]指出,2020年我國境內(nèi)目標(biāo)峰值流量超過1Gbps的大流量分布式拒絕服務(wù)攻擊(DDoS攻擊)事件異?;钴S,與2019年相比,攻擊資源向境外遷移趨勢(shì)明顯。DDoS攻擊行為主要集中在OSI參考模型的應(yīng)用層和傳輸層,通過在短時(shí)間內(nèi)與目標(biāo)服務(wù)器建立大量連接,達(dá)到過度消耗目標(biāo)服務(wù)器的計(jì)算資源、存儲(chǔ)資源和帶寬資源,最終導(dǎo)致網(wǎng)站癱瘓,無法為正常用戶提供訪問服務(wù)。因此,近年來針對(duì)應(yīng)用層DDoS攻擊的檢測(cè)方案逐漸成為研究熱點(diǎn),具有一定現(xiàn)實(shí)意義。
DDoS攻擊是指在攻擊主機(jī)的控制下,由分布在不同地理位置的傀儡機(jī)同時(shí)向目標(biāo)服務(wù)器發(fā)起請(qǐng)求,合法請(qǐng)求被“淹沒”在攻擊請(qǐng)求中,目標(biāo)服務(wù)器忙于處理無效請(qǐng)求而無法對(duì)合法用戶提供正常服務(wù),當(dāng)攻擊速率達(dá)到一定程度時(shí),目標(biāo)服務(wù)器就會(huì)宕機(jī)。常見的DDoS攻擊的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示。
圖1 常見DDoS攻擊拓?fù)浣Y(jié)構(gòu)圖
由上述定義可知,DDoS攻擊的完整網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)由攻擊者、受害者和傀儡主機(jī)三部分組成。其中,攻擊者(Attacker)是真正的“幕后指使者”,他操作主控機(jī)向數(shù)量龐大的傀儡機(jī)“發(fā)號(hào)施令”,進(jìn)而達(dá)到攻擊目標(biāo)服務(wù)器的目的。受害者(Victim)通常是指被攻擊的一方,例如:Web服務(wù)器、DNS服務(wù)器、E-mail服務(wù)器等??軝C(jī)(Puppet)也是受攻擊者Attacker控制的一方,大部分情況下是普通PC,而不是Server,表面上看來它好像是整個(gè)DDoS攻擊的發(fā)起者,但實(shí)際上他是在攻擊者Attacker的控制下,接收攻擊者Attacker發(fā)送的指令從而對(duì)受害者Victim發(fā)動(dòng)攻擊。
根據(jù)檢測(cè)策略的不同,針對(duì)DDoS攻擊的檢測(cè)方法分為誤用檢測(cè)、異常檢測(cè)和協(xié)議分析三大類[2]。其中,異常檢測(cè)方法時(shí)按照正常訪問行為和異常訪問行為之間的差異來識(shí)別攻擊行為,它既可以用于檢測(cè)已知攻擊,也可以檢測(cè)新型攻擊行為,這是異常檢測(cè)方法的優(yōu)勢(shì),該方法的不足之處在于誤報(bào)率較高,因?yàn)闊o法描述攻擊特征,進(jìn)而不能建立正常訪問行為模型。
國內(nèi)外學(xué)者在應(yīng)用層DDoS攻擊檢測(cè)方面做了大量工作,主要是基于數(shù)據(jù)挖掘、人工智能、信息熵、統(tǒng)計(jì)學(xué)、模式預(yù)測(cè)等技術(shù)。其中,景泓斐[3]等人提出了基于BP神經(jīng)網(wǎng)絡(luò)的應(yīng)用層DDoS攻擊檢測(cè)方法,該方法對(duì)CC攻擊具有較高的檢測(cè)率;張大衛(wèi)[4]等人提出了一種基于K均值算法的檢測(cè)方案,該方案對(duì)于DNS放大攻擊的檢測(cè)率更高,錯(cuò)誤率更低。
K-Means是一種經(jīng)典的使用廣泛的聚類方法[5],時(shí)至今日仍然有很多基于其的改進(jìn)模型提出。K-Means的思想很簡單,對(duì)于一個(gè)聚類任務(wù)(你需要指明聚成幾個(gè)類,當(dāng)然按照自然想法來說不應(yīng)該需要指明類數(shù),這個(gè)問題也是當(dāng)前聚類任務(wù)的一個(gè)值得研究的課題),首先隨機(jī)選擇K個(gè)簇中心,然后反復(fù)計(jì)算下面的過程直至所有簇中心不再改變(準(zhǔn)則函數(shù)收斂),準(zhǔn)則函數(shù)如公式(1)所示。
其中,mi表示簇Ci的中心,m表示聚類對(duì)象中的某個(gè)對(duì)象。
本文在K-Means算法的基礎(chǔ)上,利用粒子群算法全局搜索能力較強(qiáng)的特點(diǎn)來優(yōu)化K-Means算法的初始聚類值,克服了K-Means算法易陷入局部極值的缺點(diǎn),進(jìn)而提高異常檢測(cè)方法的檢測(cè)性能。
本文主要提出了一種基于粒子群優(yōu)化的K-Means的異常檢測(cè)方法,該方法如圖2所示。從圖中可以看出,首先從Web服務(wù)器端采集正常的用戶訪問網(wǎng)絡(luò)流量,經(jīng)過聚類學(xué)習(xí)后形成聚類檢測(cè)模型,然后輸入混合網(wǎng)絡(luò)流量,即:攻擊流量+正常流量,提取流量特征后作為聚類檢測(cè)模型的輸入,根據(jù)距離進(jìn)行檢測(cè),如果歸入正常聚類簇,則說明是正常流量,否則就是攻擊流量,以此作為檢測(cè)結(jié)果的輸出。
圖2 異常檢測(cè)方法示意圖
數(shù)據(jù)預(yù)處理完成的主要工作是從網(wǎng)絡(luò)流量中獲取HTTP請(qǐng)求信息,然后以固定的時(shí)間窗口(T=1s)為單位提取出4個(gè)屬性,包括CN、源IP地址空間、URL長度、HTTP請(qǐng)求速率,組成流量特征向量,作為聚類學(xué)習(xí)和聚類檢測(cè)的輸入,這些流量特征屬性包括:
(1)CN:單位時(shí)間內(nèi)捕獲到的HTTP請(qǐng)求數(shù)。
(2)源IP地址熵值H(SIP):計(jì)算HTTP請(qǐng)求中的源IP地址熵值。當(dāng)出現(xiàn)DDoS攻擊時(shí),H(SIP)值會(huì)顯著增大,如圖3所示。
在接受經(jīng)陰道二維腔內(nèi)超聲檢查后有10例對(duì)象被診斷為恥骨直腸肌損傷,而接受經(jīng)陰道三維超聲檢查后顯示有12例對(duì)象存在恥骨直腸肌損傷,相關(guān)數(shù)據(jù)對(duì)比后χ2為0.202,P=0.653>0.05,差異不存在統(tǒng)計(jì)學(xué)意義。與此同時(shí),有20例對(duì)象出現(xiàn)了肛門括約肌損傷。
(3)URL的熵值H(URL):計(jì)算HTTP請(qǐng)求中的URL熵值。當(dāng)出現(xiàn)Single-URL攻擊時(shí),熵值顯著變??;當(dāng)出現(xiàn)Random-URL攻擊時(shí),熵值顯著變大,如圖3所示。
圖3 H(SIP)和H(URL)變化圖
(4)HTTP請(qǐng)求速率ANRC[6]:目標(biāo)服務(wù)器在單位時(shí)間內(nèi)收到的平均請(qǐng)求次數(shù)。當(dāng)出現(xiàn)攻擊時(shí),該值會(huì)明顯增大。
在上述流量特征屬性中,信息熵[7]H(SIP)和H(URL)的計(jì)算是通過公式(2)計(jì)算出來的。
其中,x為源IP地址/URL的狀態(tài)空間,Pi為每個(gè)IP/URL出現(xiàn)的概率,且滿足。
本階段完成的主要工作是以3.1節(jié)中提取的流量特征向量作為輸入,利用粒子群算法優(yōu)化的K-Means算法進(jìn)行聚類學(xué)習(xí),并產(chǎn)生正常聚類結(jié)果,后計(jì)算待檢測(cè)流量特征向量與各個(gè)正常聚類之間的距離,如果此距離在所有正常聚類范圍之外,那么該特征向量被判定為異常,即:識(shí)別到了一次攻擊行為。
粒子群優(yōu)化的K-Means聚類算法的主要流程如下:
(1)對(duì)聚類數(shù)k值進(jìn)行編碼。蘇守寶[8]等人已證明聚類最優(yōu)時(shí)k的最大值為(n為樣本總數(shù)),因此k的取值范圍是。
(2)初始化粒子群化。隨機(jī)產(chǎn)生包含40個(gè)粒子的種群,設(shè)置學(xué)習(xí)因子c1=c2=1.2,慣性權(quán)重因子ω=0.8,迭代次數(shù)T=100。
(4)對(duì)粒子進(jìn)行適應(yīng)度計(jì)算。
(5)對(duì)每個(gè)粒子的速度和位置進(jìn)行更新。根據(jù)公式(3)和公式(4)對(duì)粒子進(jìn)行調(diào)整,其中,vid(t)表示粒子當(dāng)前的速度,ω表示粒子飛翔的慣性系數(shù),rand()為隨機(jī)函數(shù),xid(t)為粒子當(dāng)前的位置。
結(jié)束條件:如果種群中的準(zhǔn)則函數(shù)MSE收斂,則停止循環(huán),MSE由2.3節(jié)的公式(1)計(jì)算;否則重復(fù)過程(3)~(5)。
接下來,輸入待檢測(cè)流量特征向量,通過計(jì)算其與各聚類的距離來判斷是正常還是異常,并給出檢測(cè)結(jié)果。
本實(shí)驗(yàn)搭建了一個(gè)小型局域網(wǎng),局域網(wǎng)中被攻擊的服務(wù)器稱作victim,Operating System為Linux,內(nèi)存大小為4G,服務(wù)器軟件版本為Apache-2.4.3。本文利用ddos simulator軟件來模擬應(yīng)用層DDoS攻擊,攻擊類型包括有效請(qǐng)求的HTTPGet和無效請(qǐng)求的HTTP-Get,攻擊原理是通過控制僵尸主機(jī)在短時(shí)間內(nèi)向victim發(fā)送大量HTTP-Get數(shù)據(jù)包。
本文首先采集校園網(wǎng)某WEB服務(wù)器近一個(gè)月的HTTP請(qǐng)求作為正常數(shù)據(jù),通過tcpwrite軟件任選24小時(shí)數(shù)據(jù)重現(xiàn)給victim。其中,前16小時(shí)的HTTP請(qǐng)求用來建立檢測(cè)模型,后8小時(shí)的HTTP請(qǐng)求用來檢測(cè)攻擊行為。為了檢驗(yàn)這種檢測(cè)方法的效率如何,在實(shí)驗(yàn)的后8小時(shí)內(nèi),通過局域網(wǎng)內(nèi)多臺(tái)僵尸PC對(duì)victim發(fā)動(dòng)8次DDoS攻擊,攻擊速率(單位是packets/s)分 別 為(50,200,500,1000,2000,3000,4000,5000),相鄰兩次攻擊時(shí)間間隔為2分鐘,并記錄每次攻擊。
首先利用數(shù)據(jù)包捕獲工具Wireshark從victim服務(wù)器鏡像端獲取24小時(shí)的HTTP請(qǐng)求數(shù)據(jù)包,這些數(shù)據(jù)經(jīng)過3.1節(jié)的數(shù)據(jù)預(yù)處理后,以10s為單位提取網(wǎng)絡(luò)流量特征,經(jīng)過處理后的流量特征向量如表1所示。
表1 流量特征向量
接下來,本實(shí)驗(yàn)將預(yù)處理過的前16小時(shí)數(shù)據(jù)進(jìn)行訓(xùn)練學(xué)習(xí),訓(xùn)練集大小為5760條記錄。然后,將剩下的8小時(shí)數(shù)據(jù)作為8組測(cè)試數(shù)據(jù)集對(duì)待,并記錄輸出結(jié)果(檢測(cè)率),即:DDoS攻擊數(shù)據(jù)記錄為432條。
通常情況下,一個(gè)算法性能的好壞主要由檢測(cè)率評(píng)價(jià)。接下來,利用4.1節(jié)獲取到的8組測(cè)試數(shù)據(jù)來分別驗(yàn)證KMeans算法和粒子群優(yōu)化的K-Means算法的性能,如圖4所示,由圖可知,粒子群優(yōu)化的K-Means算法運(yùn)行到第11次的時(shí)候,MSE已經(jīng)收斂,而K-Means算法運(yùn)行到82次的時(shí)候才開始收斂,并且沒有收斂到最優(yōu)效果,由此可見,相同條件下,粒子群優(yōu)化的K-Means算法的學(xué)習(xí)性能優(yōu)于K-Means算法。然后計(jì)算檢測(cè)率TPR(True Positive Rate),檢測(cè)率的計(jì)算方法為:被檢測(cè)為攻擊樣本數(shù)與攻擊樣本總數(shù)的比值。
圖4 K-Means和粒子群優(yōu)化的K-Means算法性能比較
由K-Means算法和粒子群優(yōu)化的K-Means算法分別建立的聚類檢測(cè)方法的檢測(cè)率對(duì)比情況如圖5所示,通過圖示可知,在相同攻擊速率下,粒子群優(yōu)化的K-Means算法的檢測(cè)率高于K-Means算法,且檢測(cè)率隨著攻擊速率的增大而增大。當(dāng)攻擊速率較低時(shí),由于攻擊行為接近于正常的用戶瀏覽網(wǎng)頁,因此檢測(cè)方法可能把它當(dāng)作正常數(shù)據(jù)處理,導(dǎo)致檢測(cè)率較低,考慮到低速率的DDoS攻擊行為基本不影響Web服務(wù)器提供正常服務(wù),所以檢測(cè)率較低可以接受的。而隨著攻擊速率的增大,攻擊行為的流量特征屬性值變化越發(fā)明顯,攻擊行為明顯不同于正常行為,某些屬性值的差別較大,聚類檢測(cè)方法的檢測(cè)率越高,越能有效識(shí)別出攻擊事件。
圖5 兩種檢測(cè)方法的TPR比較結(jié)果
本文提出了一種針對(duì)應(yīng)用層分布式拒絕服務(wù)攻擊的檢測(cè)方法,首先在Web服務(wù)器端收集網(wǎng)絡(luò)流量,網(wǎng)絡(luò)流量經(jīng)過數(shù)據(jù)預(yù)處理后生成流量特征向量,后利用粒子群優(yōu)化的KMeans算法建立檢測(cè)模型,對(duì)正常網(wǎng)絡(luò)流量產(chǎn)生聚類結(jié)果,攻擊流量同樣經(jīng)過數(shù)據(jù)預(yù)處理后生成流量特征向量,并計(jì)算待檢測(cè)流量特征向量與各個(gè)聚類之間的距離,如果該距離不在所有正常聚類范圍內(nèi),則認(rèn)為出現(xiàn)了攻擊行為。實(shí)驗(yàn)結(jié)果表明本方法可以有效地檢測(cè)到DDoS攻擊行為,并且與KMeans算法建立的檢測(cè)方法相比,本方法具有較高的檢測(cè)率。