陳 旖,張美璟,許發(fā)見(jiàn)
(1.福建警察學(xué)院計(jì)算機(jī)與信息安全管理系,福州 350007;2.福建警察學(xué)院網(wǎng)絡(luò)安全與電子物證研究所,福州 350007)
(*通信作者電子郵箱cy2007126@163.com)
針對(duì)HTTP 協(xié)議的慢速拒絕服務(wù)攻擊(Slow HTTP Denial of Service,SHDoS)是近年出現(xiàn)的新型攻擊手段,原理是攻擊者利用HTTP 協(xié)議自身的某些缺陷,通過(guò)構(gòu)造畸形報(bào)文或低速收發(fā)報(bào)文,來(lái)長(zhǎng)期占據(jù)服務(wù)器連接,達(dá)到耗盡服務(wù)器連接資源的目的[1-2],最終將導(dǎo)致服務(wù)器無(wú)法響應(yīng)正常用戶的連接請(qǐng)求,從而實(shí)現(xiàn)拒絕服務(wù)(Denial of Service,DoS)攻擊的效果。
傳統(tǒng)的DoS攻擊往往需要大量主機(jī)和帶寬資源來(lái)快速地訪問(wèn)服務(wù)器,從而耗盡服務(wù)器的帶寬及運(yùn)算資源。而新型的SHDoS 攻擊僅需要少量的主機(jī),以較低的寬帶速率占用服務(wù)器的連接資源,即可達(dá)到攻擊目的。SHDoS 還可以通過(guò)分布式方式發(fā)起攻擊,僅幾臺(tái)主機(jī)就能對(duì)小型服務(wù)器產(chǎn)生顯著的攻擊效果[3-4]。由于SHDoS 具有實(shí)施成本低且效果顯著的特點(diǎn),近年來(lái)被頻繁用于攻擊互聯(lián)網(wǎng)站點(diǎn),對(duì)網(wǎng)絡(luò)安全造成了極大的隱患。因此,如何有效地防御SHDoS 攻擊是具有實(shí)際應(yīng)用價(jià)值的研究課題。
近年來(lái),隨著機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,越來(lái)越多的研究者開(kāi)始將機(jī)器學(xué)習(xí)方法應(yīng)用于惡意流量檢測(cè)問(wèn)題,其中就包含對(duì)DoS流量的檢測(cè)。
文獻(xiàn)[5]中提出一種基于XGBoost(eXtreme Gradient Boosting)算法的檢測(cè)模型,并在入侵檢測(cè)數(shù)據(jù)集KDD-CUP99上進(jìn)行訓(xùn)練和驗(yàn)證,與決策樹(shù)、邏輯回歸、K最近鄰(K-Nearest Neighbor,KNN)等算法相比,具有較高的準(zhǔn)確率和召回率。文獻(xiàn)[6]中提出一種基于粗糙集屬性約簡(jiǎn)的在線序貫極限學(xué)習(xí)機(jī)(Online Sequential Extreme Learning Machine based on Attributes Reduction,AR-OSELM)方法,該方法先從KDDCUP99 數(shù)據(jù)集中篩選出無(wú)冗余屬性的特征集合,再使用AROSELM 算法進(jìn)行分類,具有較好的泛化能力,誤報(bào)率較低。文獻(xiàn)[7]在完整的網(wǎng)絡(luò)環(huán)境中針對(duì)最新的攻擊工具及良性訪問(wèn)采集了樣本,生成了數(shù)據(jù)集CICIDS2017,并設(shè)計(jì)了一種針對(duì)數(shù)據(jù)流的特征分析工具CICFlowMeter。該工具可以從抓包文件中計(jì)算出數(shù)據(jù)流的特征值,其中包含報(bào)文發(fā)送頻率、流傳輸速率、報(bào)文平均長(zhǎng)度等數(shù)十種量化特征,供分類模型處理。文獻(xiàn)[8]在文獻(xiàn)[7]的基礎(chǔ)上,提出一種基于集成學(xué)習(xí)的DoS流量檢測(cè)方法,該方法先對(duì)CICFlowMeter 提供的數(shù)據(jù)流特征進(jìn)行篩選,再通過(guò)隨機(jī)森林算法構(gòu)建模型,最后使用CICIDS2017 中的DoS 樣本進(jìn)行訓(xùn)練,取得了較好的效果。文獻(xiàn)[9]中提出了一種基于改進(jìn)遺傳算法和模擬退火算法的混合優(yōu)化框架,用于高效地構(gòu)建出基于深度神經(jīng)網(wǎng)絡(luò)的入侵檢測(cè)系統(tǒng)。該系統(tǒng)使用CICIDS2017 等數(shù)據(jù)集進(jìn)行模擬和驗(yàn)證,具有較高的檢測(cè)精度和較低的誤報(bào)率。
上述研究成果各具優(yōu)勢(shì),但也存在一定局限性。主要存在以下問(wèn)題:1)部分檢測(cè)方法在SHDoS 攻擊頻率變化時(shí)出現(xiàn)準(zhǔn)確率降低的問(wèn)題。出現(xiàn)該問(wèn)題有兩方面的原因:首先,模型對(duì)攻擊頻率變化的數(shù)據(jù)流的泛化能力較弱,無(wú)法通過(guò)對(duì)已有樣本的學(xué)習(xí)來(lái)對(duì)未見(jiàn)過(guò)的攻擊頻率樣本進(jìn)行檢測(cè);另外,數(shù)據(jù)集中SHDoS 數(shù)據(jù)流的攻擊頻率是基本固定的,導(dǎo)致訓(xùn)練樣本的代表性較弱;2)部分檢測(cè)方法未清洗無(wú)效數(shù)據(jù)流,導(dǎo)致實(shí)際檢測(cè)中發(fā)生誤判。由于SHDoS 攻擊可使服務(wù)器進(jìn)入拒絕服務(wù)的狀態(tài),這將導(dǎo)致大量的良性和攻擊數(shù)據(jù)流都處于握手或等待的狀態(tài)。這些數(shù)據(jù)流是攻擊生效后產(chǎn)生的無(wú)效數(shù)據(jù)流。若未過(guò)濾這類樣本,將導(dǎo)致模型在實(shí)際檢測(cè)中易對(duì)良性主機(jī)作出誤判;3)部分方法中未對(duì)大量高度相似的樣本進(jìn)行去重,導(dǎo)致模型可能出現(xiàn)過(guò)擬合。部分方法中使用了數(shù)據(jù)流的時(shí)間及傳輸速率特征。然而,由于報(bào)文的采樣時(shí)間存在誤差,即使完全相同的兩個(gè)數(shù)據(jù)流,時(shí)間和速率特征也不完全相同。這使得這類方法的訓(xùn)練集和測(cè)試集中存在大量高度相似的樣本,導(dǎo)致測(cè)試集無(wú)法準(zhǔn)確評(píng)估模型的過(guò)擬合情況。
例如文獻(xiàn)[5-6]使用KDD-CUP99 數(shù)據(jù)集及文獻(xiàn)[7]采集的CICIDS2017 數(shù)據(jù)集都存在樣本在攻擊頻率方面代表性較弱的問(wèn)題;文獻(xiàn)[8-9]中都未對(duì)無(wú)效數(shù)據(jù)流進(jìn)行清洗,且都未對(duì)高度相似的樣本去重;在實(shí)驗(yàn)中發(fā)現(xiàn),文獻(xiàn)[8]模型對(duì)未見(jiàn)過(guò)的攻擊頻率樣本的檢測(cè)能力較弱。
在上述研究與分析的基礎(chǔ)上,本文提出一種基于一維卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[10-11]的SHDoS 攻擊流量檢測(cè)方法,以解決當(dāng)前研究中存在的問(wèn)題。該方法在多種合理的攻擊頻率下對(duì)三種類型的攻擊流量進(jìn)行采樣,并從樣本中清洗掉無(wú)效的數(shù)據(jù)流;之后,設(shè)計(jì)了一種數(shù)據(jù)流轉(zhuǎn)換算法,可將樣本轉(zhuǎn)換為一維序列,并進(jìn)行去重處理;最后,使用一維CNN 構(gòu)建檢測(cè)模型,并使用序列樣本進(jìn)行訓(xùn)練。
首先,本文方法借助CNN 算法中卷積計(jì)算的特性,使模型能夠?qū)τ?xùn)練集中未出現(xiàn)過(guò)的攻擊頻率的樣本具有較好的檢測(cè)能力;并且通過(guò)對(duì)采樣環(huán)節(jié)的設(shè)計(jì),保證了數(shù)據(jù)樣本在不同攻擊頻率上具有代表性,從而解決了問(wèn)題1)中攻擊頻率變化導(dǎo)致的準(zhǔn)確率降低的問(wèn)題。此外,本文方法通過(guò)對(duì)數(shù)據(jù)流的處理流程設(shè)計(jì),能夠有效地清洗無(wú)效數(shù)據(jù)流,并剔除大量高度相似的樣本,避免了問(wèn)題2)和問(wèn)題3)導(dǎo)致的樣本誤判和模型過(guò)擬合的問(wèn)題。在獨(dú)立驗(yàn)證集上的實(shí)驗(yàn)結(jié)果表明,本文方法可解決攻擊頻率變化導(dǎo)致的檢測(cè)準(zhǔn)確率降低的問(wèn)題。
2.1.1 應(yīng)用場(chǎng)景
本文方法典型的應(yīng)用場(chǎng)景如圖1 所示,HTTP 服務(wù)器一般部署在內(nèi)網(wǎng)中,通過(guò)出口網(wǎng)關(guān)和互聯(lián)網(wǎng)連接。網(wǎng)關(guān)配置鏡像端口與防火墻連接,將出入內(nèi)網(wǎng)的雙向報(bào)文鏡像同步給防火墻。防火墻以旁路部署模式工作。SHDoS防御組件作為防火墻中的功能組件,實(shí)時(shí)監(jiān)聽(tīng)HTTP 數(shù)據(jù),當(dāng)發(fā)現(xiàn)SHDoS 攻擊時(shí),將設(shè)置網(wǎng)關(guān)轉(zhuǎn)發(fā)規(guī)則并發(fā)送傳輸控制協(xié)議(Transmission Control Protocol,TCP)的RST(ReSeT)報(bào)文,來(lái)主動(dòng)屏蔽惡意主機(jī)連接,避免攻擊占用服務(wù)器的連接資源。
圖1 典型應(yīng)用場(chǎng)景Fig.1 Typical application scenario
如圖1 所示,SHDoS 防御組件可分為四個(gè)子模塊。其中,數(shù)據(jù)流提取模塊用于從鏡像的IP 報(bào)文中提取TCP 數(shù)據(jù)流;攻擊流量檢測(cè)模塊基于本文方法設(shè)計(jì)的模型構(gòu)建,用于對(duì)數(shù)據(jù)流進(jìn)行SHDoS 攻擊檢測(cè);攻擊阻斷模塊用于對(duì)檢出的攻擊流和惡意主機(jī)進(jìn)行屏蔽;動(dòng)態(tài)參數(shù)模塊根據(jù)連接負(fù)載情況,動(dòng)態(tài)調(diào)節(jié)檢測(cè)及濾波參數(shù)。
2.1.2 模型訓(xùn)練與應(yīng)用的過(guò)程
本文方法可分為模型訓(xùn)練和模型應(yīng)用兩部分,過(guò)程如圖2所示。
在本文模型訓(xùn)練的過(guò)程中,首先需要搭建網(wǎng)絡(luò)測(cè)試環(huán)境,對(duì)攻擊報(bào)文進(jìn)行采樣,再?gòu)牟蓸訄?bào)文中提取出完整的數(shù)據(jù)流并清洗掉無(wú)效數(shù)據(jù);之后,使用本文方法設(shè)計(jì)的轉(zhuǎn)換算法,將數(shù)據(jù)流轉(zhuǎn)換為一維序列數(shù)據(jù),并進(jìn)行去重;最后,在一維CNN算法構(gòu)建的模型上,使用序列數(shù)據(jù)進(jìn)行訓(xùn)練和驗(yàn)證,最終生成針對(duì)SHDoS數(shù)據(jù)流的檢測(cè)模型。
在模型應(yīng)用的過(guò)程中,SHDoS 防御組件通過(guò)旁路監(jiān)聽(tīng)獲取原始報(bào)文,再?gòu)膱?bào)文中動(dòng)態(tài)提取數(shù)據(jù)流,并轉(zhuǎn)換為一維序列后加入緩沖隊(duì)列。攻擊檢測(cè)模型從緩沖隊(duì)列中周期性讀取序列并進(jìn)行攻擊檢測(cè),進(jìn)而檢測(cè)出攻擊數(shù)據(jù)流和惡意主機(jī)。
圖2 模型訓(xùn)練與應(yīng)用的過(guò)程Fig.2 Model training and application process
2.2.1 樣本標(biāo)簽類別設(shè)計(jì)
SHDoS攻擊通過(guò)長(zhǎng)期占用服務(wù)器的可用連接資源來(lái)達(dá)到攻擊目的,主要包含以下三種攻擊方式:1)慢速頭部(Slow Header),通過(guò)循環(huán)發(fā)送請(qǐng)求頭而不發(fā)送結(jié)束空行來(lái)占用連接;2)慢速發(fā)送(Slow Post),通過(guò)極低的速率上傳數(shù)據(jù)來(lái)占用連接;3)慢速讀取(Slow Read),通過(guò)設(shè)置極小的滑動(dòng)窗口來(lái)限制數(shù)據(jù)下載速度,從而占用連接。
這三種攻擊方式的原理不同,報(bào)文結(jié)構(gòu)存在顯著的差異,對(duì)應(yīng)的阻斷措施也不盡相同。因此,本文方法根據(jù)攻擊方式的不同,將攻擊樣本使用三類標(biāo)簽進(jìn)行標(biāo)記。
2.2.2 數(shù)據(jù)流提取與清洗
在采樣結(jié)束后,還需要從抓包文件中提取出獨(dú)立的數(shù)據(jù)流。本文方法使用Python 語(yǔ)言和Scapy 庫(kù)實(shí)現(xiàn)了數(shù)據(jù)流提取模塊。該模塊根據(jù)TCP協(xié)議的三次握手、連接釋放、端口分配及系統(tǒng)端口重用等規(guī)則,將每個(gè)獨(dú)立的數(shù)據(jù)流從抓包文件中提取出來(lái),形成以“IP-端口號(hào)-時(shí)間戳”為唯一標(biāo)識(shí)的數(shù)據(jù)流樣本文件。
在提取數(shù)據(jù)流完成后,還需要對(duì)無(wú)效的數(shù)據(jù)流進(jìn)行清洗。在SHDoS 攻擊過(guò)程中,由于HTTP 服務(wù)器可能因攻擊而進(jìn)入拒絕服務(wù)的狀態(tài),導(dǎo)致大量的數(shù)據(jù)流處于握手或等待的狀態(tài),之后又因超時(shí)被斷開(kāi)。這類數(shù)據(jù)流是攻擊成功后產(chǎn)生的副產(chǎn)品,一般長(zhǎng)度較短,無(wú)法反映出正常攻擊數(shù)據(jù)流的特征,需要被過(guò)濾掉。
本文方法在清洗數(shù)據(jù)流時(shí),將從數(shù)據(jù)流抓包文件中讀取IP 報(bào)文并進(jìn)行分析,只有同時(shí)滿足以下三個(gè)條件的數(shù)據(jù)流才被認(rèn)為是有效的:1)IP報(bào)文中包含合法的TCP三次握手過(guò)程;2)至少存在一個(gè)由客戶端發(fā)出的HTTP 請(qǐng)求報(bào)文;3)在服務(wù)器收到請(qǐng)求報(bào)文后,至少發(fā)出一個(gè)確認(rèn)請(qǐng)求報(bào)文已收到的帶有ACK(ACKnowledgment)標(biāo)志的TCP 報(bào)文。該清洗策略有效的原因是,SHDoS 是通過(guò)長(zhǎng)期占用服務(wù)器TCP 連接來(lái)達(dá)成攻擊目的,因此必然存在與服務(wù)器握手和雙向交互的過(guò)程。而無(wú)效數(shù)據(jù)流處于握手或等待響應(yīng)報(bào)文的狀態(tài),不能滿足上述條件,因此可以根據(jù)上述規(guī)則來(lái)清洗無(wú)效數(shù)據(jù)流。
2.2.3 數(shù)據(jù)流轉(zhuǎn)換為序列
清洗后得到的有效數(shù)據(jù)流樣本保存在PCAP 格式的抓包文件中,還需要進(jìn)一步轉(zhuǎn)換為模型能夠處理的一維序列數(shù)據(jù)。本文方法根據(jù)攻擊報(bào)文的特征分析及實(shí)驗(yàn)驗(yàn)證的結(jié)果,選取了報(bào)文方向、負(fù)載類型、TCP 報(bào)文標(biāo)志位、報(bào)文時(shí)間間隔等參數(shù),將PCAP格式的數(shù)據(jù)流轉(zhuǎn)換為一維序列。
開(kāi)始轉(zhuǎn)換時(shí),待輸出的序列為空,算法將依次讀取數(shù)據(jù)流的每一個(gè)TCP 報(bào)文:1)算法首先過(guò)濾掉握手、揮手等無(wú)關(guān)報(bào)文,并選取數(shù)據(jù)流中前t秒的報(bào)文進(jìn)行下一步處理;2)算法處理負(fù)載非空的報(bào)文,根據(jù)報(bào)文的收發(fā)方向、負(fù)載內(nèi)容為HTTP頭部或數(shù)據(jù),生成負(fù)載報(bào)文元素加入到序列中;3)算法檢查ACK 報(bào)文的標(biāo)志位,根據(jù)其滑動(dòng)窗口是否耗盡來(lái)生成控制報(bào)文元素加入序列;4)算法將在報(bào)文元素間插入時(shí)間間隔元素,時(shí)間間隔元素的數(shù)量為報(bào)文元素以秒為單位取整的時(shí)間差;5)將序列長(zhǎng)度處理為固定值h,對(duì)超出的部分截?cái)啵瑢?duì)不足的部分補(bǔ)空值。
由于入侵防御系統(tǒng)中,往往存在針對(duì)惡意攻擊的檢測(cè)時(shí)間指標(biāo)要求。因此,不同于其他方法使用完整數(shù)據(jù)流分析,本文方法僅截取數(shù)據(jù)流固定的前t秒來(lái)生成樣本序列。另外,由于檢測(cè)模型的限制,生成的樣本序列的長(zhǎng)度需為定值h,若h過(guò)大則將大大增加模型訓(xùn)練和檢測(cè)的開(kāi)銷,若h過(guò)小則會(huì)損失過(guò)多的樣本特征。在觀察樣本結(jié)構(gòu)且權(quán)衡限制因素的基礎(chǔ)上,本文方法選取t為240 s,選取h為300。采樣數(shù)據(jù)流的前240 s樣本中僅有9.6%的序列長(zhǎng)度超過(guò)300。
圖3 舉例展示了若干個(gè)數(shù)據(jù)流樣本經(jīng)過(guò)算法處理后生成的序列結(jié)構(gòu)。對(duì)其中的負(fù)載報(bào)文而言,R和S指報(bào)文的收發(fā)方向?yàn)榻邮栈虬l(fā)送,H 和D 指負(fù)載內(nèi)容為HTTP 頭部或數(shù)據(jù);對(duì)控制報(bào)文而言,A 指普通響應(yīng)報(bào)文,Z 指通告滑動(dòng)窗口耗盡的響應(yīng)報(bào)文;另外,P 指1 s 的時(shí)間間隔,N 指序列尾部填充空值。
圖3 數(shù)據(jù)流樣本序列示例Fig.3 Examples of data stream sample sequences
2.2.4 樣本序列去重
將數(shù)據(jù)流樣本轉(zhuǎn)換為序列之后,還需要對(duì)各類別中相同的樣本序列進(jìn)行去重。原始的數(shù)據(jù)流樣本中存在大量高度相似的數(shù)據(jù)流。這類數(shù)據(jù)流一般由相同的工具生成,報(bào)文結(jié)構(gòu)相似,僅在抓包時(shí)間上存在微小的差異。傳統(tǒng)基于流速率特征的檢測(cè)方法難以直接根據(jù)速率來(lái)對(duì)這類相似的數(shù)據(jù)流進(jìn)行去重。本文方法在數(shù)據(jù)流序列化的過(guò)程中將時(shí)間值處理為以秒為單位的時(shí)間片間隔,可直接通過(guò)對(duì)序列去重,來(lái)實(shí)現(xiàn)對(duì)相似數(shù)據(jù)流的剔除,避免大量相似數(shù)據(jù)流樣本對(duì)模型的泛化能力產(chǎn)生的影響。
2.2.5 數(shù)據(jù)流轉(zhuǎn)換序列的一般性處理方法
在本文模型訓(xùn)練階段,對(duì)數(shù)據(jù)流轉(zhuǎn)換序列的過(guò)程主要有以下步驟:1)采集攻擊樣本;2)提取數(shù)據(jù)流;3)清洗無(wú)效數(shù)據(jù)流;4)轉(zhuǎn)換為一維序列;5)樣本序列去重;6)生成訓(xùn)練數(shù)據(jù)集。在本文模型應(yīng)用階段,本文方法對(duì)數(shù)據(jù)流的一般性處理過(guò)程和訓(xùn)練階段相比,在以下步驟中存在差異:步驟1)中,應(yīng)用階段直接從網(wǎng)卡中實(shí)時(shí)抓取報(bào)文;步驟5)中,應(yīng)用階段無(wú)需對(duì)樣本去重;步驟6)中,應(yīng)用階段將直接使用模型檢測(cè)生成的樣本。
2.3.1 檢測(cè)算法的分析與設(shè)計(jì)
本文方法將樣本數(shù)據(jù)流處理為序列后,還需要構(gòu)建模型來(lái)學(xué)習(xí)攻擊數(shù)據(jù)流的序列特征。目前可對(duì)一維序列數(shù)據(jù)進(jìn)行分類的常見(jiàn)模型有一維CNN、循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[12]、長(zhǎng)短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)[13]、雙向長(zhǎng)短期記憶(Bidirectional LSTM,Bi-LSTM)網(wǎng)絡(luò)[14]等。
在傳統(tǒng)的密集連接型神經(jīng)網(wǎng)絡(luò)中,網(wǎng)絡(luò)節(jié)點(diǎn)在輸入和輸出之間不保存任何狀態(tài),這導(dǎo)致該結(jié)構(gòu)在處理自然語(yǔ)言等一維序列時(shí)效果不佳。而RNN 則通過(guò)在節(jié)點(diǎn)中引入內(nèi)部循環(huán)的方式,使得模型對(duì)序列元素的前后順序狀態(tài)信息具有一定的記憶能力,增強(qiáng)了模型對(duì)序列處理的能力。LSTM網(wǎng)絡(luò)則在RNN 的基礎(chǔ)上增加了將狀態(tài)信息跨越多個(gè)元素的方法,解決了RNN 中梯度消失的問(wèn)題。Bi-LSTM 網(wǎng)絡(luò)在LSTM 網(wǎng)絡(luò)的基礎(chǔ)上,通過(guò)從正序和逆序兩個(gè)方向?qū)π蛄羞M(jìn)行學(xué)習(xí),進(jìn)一步提高了模型的性能。
不同于RNN這類網(wǎng)絡(luò),一維CNN是通過(guò)序列的局部模式特征來(lái)識(shí)別序列。它通過(guò)一維卷積核來(lái)提取序列的局部片段,進(jìn)而從片段中學(xué)習(xí)序列的局部模式[15]。一維CNN 模型從一個(gè)片段學(xué)習(xí)到的局部模式還可以在其他位置的片段中再被使用,這使得模型在處理序列時(shí)具有平移不變性,即局部模式在序列整體中的位置發(fā)生平移時(shí),并不影響模型的處理結(jié)果。
在SHDoS 檢測(cè)問(wèn)題中,惡意數(shù)據(jù)流的攻擊頻率的可選值眾多,但采樣工作僅能覆蓋部分典型的攻擊頻率。這就要求模型能夠從少數(shù)幾種攻擊頻率的樣本中學(xué)習(xí)到攻擊序列的特征,從而對(duì)其他攻擊頻率的樣本也具備檢測(cè)能力。對(duì)于RNN這類網(wǎng)絡(luò)而言,模型的記憶能力僅能記住訓(xùn)練樣本中出現(xiàn)過(guò)的幾種攻擊頻率的特征,而無(wú)法拓展到對(duì)其他攻擊頻率樣本的檢測(cè)。然而,對(duì)于一維CNN 而言,未知攻擊頻率的樣本序列可以看作是訓(xùn)練集中典型頻率樣本序列的拓展和平移,這是因?yàn)檫@兩類樣本雖然攻擊頻率不同但局部模式依然是相似的。由于一維CNN 具有的平移不變性,使得模型對(duì)未知攻擊頻率的SHDoS 樣本依然具有較好的檢測(cè)能力。因此,本文方法選取一維CNN算法來(lái)構(gòu)建檢測(cè)模型。
2.3.2 一維CNN模型結(jié)構(gòu)
本文方法使用一維CNN 算法來(lái)構(gòu)造檢測(cè)模型,結(jié)構(gòu)如圖4所示。
圖4 檢測(cè)模型結(jié)構(gòu)Fig.4 Detection model structure
本文模型包含一個(gè)詞嵌入層、卷積層C1和C2、池化層P1和P2以及一個(gè)全連接輸出層。其中,本文模型要求輸入數(shù)據(jù)是一維序列w,w即是數(shù)據(jù)流生成的序列樣本,序列中包含可反映通信過(guò)程的報(bào)文元素。
由于神經(jīng)網(wǎng)絡(luò)模型只能處理數(shù)值張量,因此樣本輸入模型時(shí),需要先使用詞嵌入層對(duì)w進(jìn)行向量化。本文模型的詞嵌入層用于將序列中的每個(gè)元素轉(zhuǎn)換成長(zhǎng)度固定的詞向量。詞嵌入層相當(dāng)于是一個(gè)字典,它可在訓(xùn)練中動(dòng)態(tài)地學(xué)習(xí)元素的權(quán)重值,從而將一個(gè)離散元素映射為一組連續(xù)值組成的詞向量。w經(jīng)過(guò)詞嵌入層的轉(zhuǎn)換,可生成一個(gè)由詞向量組成的矩陣d∈Rhg,其中h為樣本序列的長(zhǎng)度,g為詞向量的維度。
一維卷積層可以對(duì)序列中的局部特征進(jìn)行學(xué)習(xí)。如圖4所示,卷積層工作時(shí),將使用卷積窗口以固定的步長(zhǎng)遍歷序列,窗口內(nèi)的元素將與多個(gè)卷積核進(jìn)行點(diǎn)積運(yùn)算。每個(gè)卷積核與整個(gè)序列完成運(yùn)算后,將生成一個(gè)新序列,其值反映出輸入數(shù)據(jù)在該卷積核下表現(xiàn)出的特征。數(shù)學(xué)模型可描述為:
其中:Wc∈Rgp是卷積層C1中n個(gè)長(zhǎng)度為p的卷積核中的第c個(gè)卷積核;di:i+p∈Rpg表示從d的第i行到第(i+p)行之前的每一行數(shù)據(jù)所組成的子矩陣;b∈R 表示偏置值;f為激活函數(shù);sci是卷積核Wc和第i個(gè)子矩陣進(jìn)行點(diǎn)積的結(jié)果。記d中子矩陣的個(gè)數(shù)為e。將n個(gè)卷積核和e個(gè)子矩陣運(yùn)算后,可得到由sci組成的矩陣s∈Ren。
池化層可用于對(duì)數(shù)據(jù)進(jìn)行下采樣,它使用一個(gè)長(zhǎng)度為q的窗口掃描數(shù)據(jù),用窗口內(nèi)元素的最大值或平均值來(lái)代替整個(gè)窗口的數(shù)據(jù),從而縮短數(shù)據(jù)的長(zhǎng)度。這使得位于下層的卷積層能夠從更寬的跨度上觀察數(shù)據(jù)的特征。池化層P1使用最大值池化算法,數(shù)學(xué)模型可描述為:
其中:sjq:(j+1)q∈Rqn表示從s的第jq行到第(j+1)q行之前的每一行數(shù)據(jù)所組成的子矩陣,max 函數(shù)用于計(jì)算子矩陣中每一列的最大值,uj是由子矩陣每一列的最大值所組成的向量。記s中子矩陣的個(gè)數(shù)為l。將所有子矩陣進(jìn)行最大池化運(yùn)算后,可得到由uj組成的矩陣r∈Rln。
卷積層C2重復(fù)了卷積層C1的操作。它以矩陣r為輸入數(shù)據(jù),目的是從更高的跨度上學(xué)習(xí)序列的特征。使用n個(gè)長(zhǎng)度為p的卷積核對(duì)矩陣r進(jìn)行卷積運(yùn)算之后,得到矩陣a。池化層P2和P1的運(yùn)算過(guò)程相似,使用全局最大池化算法,以矩陣每一列的最大值來(lái)代表整個(gè)列,即在式(2)的基礎(chǔ)上,設(shè)置窗口長(zhǎng)度q的值等于矩陣的行數(shù)。矩陣a經(jīng)過(guò)全局最大池化操作后生成全連接層可處理的一維向量z∈Rn,包含了原始輸入數(shù)據(jù)的高階特征。
全連接輸出層用于學(xué)習(xí)向量z和k種報(bào)文類別之間的映射關(guān)系。數(shù)學(xué)模型如式(3)所示,其中v∈Rnk為權(quán)重矩陣;B∈Rk為偏置向量,f為激活函數(shù)。運(yùn)算將輸出向量y∈Rk,表示原始輸入樣本歸為某種數(shù)據(jù)流類別的概率。
本文模型使用交叉熵?fù)p失作為損失函數(shù),使用均方根傳遞(Root Mean Square prop,RMSprop)算法作為優(yōu)化器。本文模型開(kāi)始訓(xùn)練前,神經(jīng)網(wǎng)絡(luò)各層節(jié)點(diǎn)的權(quán)重值都是隨機(jī)的。本文模型訓(xùn)練時(shí),使用反向傳播算法和小批量梯度下降算法來(lái)逐步更新網(wǎng)絡(luò)的權(quán)重值,經(jīng)過(guò)多輪的訓(xùn)練與測(cè)試后,選取最優(yōu)的權(quán)重值作為模型的網(wǎng)絡(luò)參數(shù)輸出。
本文方法在設(shè)計(jì)中有效地解決了當(dāng)前研究中存在的三個(gè)問(wèn)題:1)本文方法使用一維CNN 算法構(gòu)建的模型,能夠有效地學(xué)習(xí)到樣本序列的局部特征,對(duì)局部特征發(fā)生平移的樣本也具有較好的檢測(cè)能力。因此,相較于RNN 等網(wǎng)絡(luò)模型,本文模型在對(duì)未知攻擊頻率樣本的檢測(cè)方面更具優(yōu)勢(shì),可解決攻擊頻率變化導(dǎo)致的準(zhǔn)確率降低的問(wèn)題。2)本文方法根據(jù)協(xié)議規(guī)則分析,通過(guò)報(bào)文特征來(lái)有效地清洗掉無(wú)效數(shù)據(jù)流。相較于聚類、離群點(diǎn)等異常值檢測(cè)手段,該方法在計(jì)算速度和準(zhǔn)確性方面存在明顯優(yōu)勢(shì),可避免無(wú)效數(shù)據(jù)流導(dǎo)致的誤判問(wèn)題。3)本文方法在數(shù)據(jù)流序列化的過(guò)程中,通過(guò)對(duì)時(shí)間值的單位量化處理,可將高度相似的數(shù)據(jù)流處理為完全相同的序列,進(jìn)而有效地剔除重復(fù)數(shù)據(jù)。相較于選取數(shù)據(jù)流的多種特征進(jìn)行相似性判斷的方法,該方法的運(yùn)算量更小且具有較好的去重效果,可避免大量高度相似的樣本導(dǎo)致的過(guò)擬合問(wèn)題。
3.1.1 實(shí)驗(yàn)環(huán)境搭建與采樣
在樣本采集環(huán)境中,存在一臺(tái)運(yùn)行Ubuntu Server 系統(tǒng)的服務(wù)器作為靶機(jī),一臺(tái)運(yùn)行Kali 系統(tǒng)的通用計(jì)算機(jī)作為攻擊機(jī)。其中,靶機(jī)運(yùn)行Apache 作為HTTP 服務(wù)器,使用DWVA(Damn Vulnerable Web App)作為被攻擊頁(yè)面,使用TCPDump工具生成抓包文件;攻擊機(jī)上選取SlowHTTPTest 等工具進(jìn)行攻擊。
進(jìn)行采樣時(shí),在攻擊模式上,測(cè)試環(huán)境中分別使用了慢速頭部、慢速發(fā)送、慢速讀取三種不同的攻擊模式;在攻擊報(bào)文的發(fā)送周期上,由于過(guò)長(zhǎng)的通信周期將導(dǎo)致服務(wù)器主動(dòng)關(guān)閉超時(shí)連接,故在60 s 的范圍內(nèi)分別使用了6 種不同時(shí)間值作為報(bào)文發(fā)送或讀取的周期進(jìn)行采樣;在報(bào)文負(fù)載上,使用隨機(jī)值作為攻擊報(bào)文的負(fù)載長(zhǎng)度。對(duì)每種攻擊模式和攻擊周期值的組合采樣1 h。另外,使用CICIDS2017 中的正常HTTP 數(shù)據(jù)流作為良性樣本數(shù)據(jù)。本文方法在不同的攻擊模式和頻率下進(jìn)行采樣,可保證樣本在不同攻擊頻率上具有代表性。
3.1.2 樣本處理與統(tǒng)計(jì)
采集的樣本還需要進(jìn)行一系列的處理,其中包含:數(shù)據(jù)流提取、清洗無(wú)效數(shù)據(jù)流、轉(zhuǎn)換為一維序列、樣本序列去重,進(jìn)而生成數(shù)據(jù)集。其中,樣本數(shù)量的統(tǒng)計(jì)情況如表1所示。
表1 數(shù)據(jù)集樣本類別統(tǒng)計(jì)情況Tab.1 Statistics of dataset sample categories
從表1 可以看出,從原始樣本中提取的數(shù)據(jù)流中包含大量的無(wú)效數(shù)據(jù)流,平均占比達(dá)到55.2%。而有效數(shù)據(jù)流中也包含大量高度相似的數(shù)據(jù)流,平均重復(fù)占比約為83.5%。從樣本統(tǒng)計(jì)情況中可以看出,本文方法可有效地清洗無(wú)效數(shù)據(jù)流并對(duì)高度相似樣本進(jìn)行去重,從而避免了無(wú)效和重復(fù)數(shù)據(jù)導(dǎo)致的樣本誤判和模型過(guò)擬合的問(wèn)題。
實(shí)驗(yàn)使用準(zhǔn)確率acc(accuracy)和精確率pre(precision)作為模型的評(píng)估指標(biāo)。各類模型對(duì)x標(biāo)簽類別的分類準(zhǔn)確率和精確率的計(jì)算公式為:
其中:TP(True Positive)指將x類樣本正確分類為x類的樣本數(shù)量;TN(True Negative)指將非x類樣本正確分類為非x類的樣本數(shù)量;FN(False Negative)指將x類樣本漏判,誤分類為非x類的樣本數(shù)量;FP(False Positive)指將非x類樣本誤判,誤分類為x類別的樣本數(shù)量。實(shí)驗(yàn)中,使用宏平均(macro-average)的方法來(lái)評(píng)估多分類器的性能,即迭代地將各類樣本視為x類,逐個(gè)類別計(jì)算準(zhǔn)確率或精確率后,取均值作為該分類器的性能。
準(zhǔn)確率是模型分類正確的樣本數(shù)在總樣本數(shù)中的占比,可反映出模型對(duì)各類數(shù)據(jù)流總體的檢測(cè)能力;精確率是在所有被檢測(cè)為x類的樣本中,實(shí)際確實(shí)為x類樣本的占比,可反映出模型對(duì)樣本的誤判情況。在本場(chǎng)景中,較高的精確率意味著較少出現(xiàn)良性數(shù)據(jù)流被誤判為攻擊的情況,可減少誤報(bào)對(duì)網(wǎng)絡(luò)正常功能的影響。因此,精確率在本場(chǎng)景中也具有一定的參考價(jià)值。另外,實(shí)驗(yàn)還使用誤報(bào)率和漏報(bào)率來(lái)評(píng)估模型對(duì)樣本誤判的情況,其中誤報(bào)率(False Positive Rate,F(xiàn)PR)和漏報(bào)率(False Negative Rate,F(xiàn)NR)的計(jì)算公式如式(6)~(7)所示:
3.3.1 參數(shù)設(shè)定
通過(guò)多輪的參數(shù)設(shè)計(jì)和對(duì)比實(shí)驗(yàn),本文方法設(shè)計(jì)的模型結(jié)構(gòu)如表2 所示。其中,本文模型的輸入為數(shù)據(jù)流生成的一維序列,長(zhǎng)度為300;輸出是樣本屬于某種數(shù)據(jù)流的概率,存在4種類型。
表2 一維CNN模型參數(shù)設(shè)定Tab.2 Setting of one-dimensional CNN model parameters
3.3.2 模型結(jié)構(gòu)設(shè)計(jì)
在一維CNN 模型結(jié)構(gòu)中,卷積與池化層的組數(shù)、卷積核的長(zhǎng)度及卷積核的個(gè)數(shù),都對(duì)模型的檢測(cè)能力有著較大的影響。為了提高本文模型的性能,設(shè)計(jì)了三組實(shí)驗(yàn)來(lái)選取最佳的模型結(jié)構(gòu)。實(shí)驗(yàn)使用本文采樣并轉(zhuǎn)換后生成的一維序列樣本數(shù)據(jù)集,其中包含2 073 個(gè)慢速頭部樣本、3 176 個(gè)慢速發(fā)送樣本、2 473個(gè)慢速讀取樣本及14 341個(gè)良性樣本,共4種標(biāo)簽類型。攻擊樣本按3 種攻擊類型和6 種攻擊頻率分成18 組,良性樣本單列一組,從每組隨機(jī)抽取90%的樣本合并成訓(xùn)練集,其余部分作為測(cè)試集。
第一組實(shí)驗(yàn)用于選取卷積與池化層的組數(shù),實(shí)驗(yàn)分別將組數(shù)設(shè)置為1~3 組后訓(xùn)練本文模型,通過(guò)比較各組模型的性能來(lái)選取最佳的組數(shù)配置,結(jié)果如表3 所示。其中,組數(shù)為2的模型在準(zhǔn)確率和精確率上都要高于其他兩組模型,故本文方法使用兩組卷積與池化層來(lái)構(gòu)建模型。
表3 不同卷積與池化層層數(shù)下本文模型的準(zhǔn)確率和精確率對(duì)比Tab.3 Accuracy and precision comparison of proposed model with different convolution and pooling layers
第二組實(shí)驗(yàn)用于選取一維卷積核的長(zhǎng)度。分析序列樣本的生成規(guī)則可知,一次報(bào)文交互往往包含一對(duì)載荷、響應(yīng)報(bào)文,進(jìn)而生成5~6個(gè)序列元素。根據(jù)卷積計(jì)算的特性,預(yù)計(jì)卷積核的長(zhǎng)度與一次報(bào)文交互生成的元素長(zhǎng)度相近時(shí),模型能更好地學(xué)習(xí)到報(bào)文序列的特征。因此,實(shí)驗(yàn)分別將卷積核長(zhǎng)度設(shè)置為1~10 后訓(xùn)練本文模型,結(jié)果如圖5 所示。從圖5 中可以看出,當(dāng)卷積核長(zhǎng)度為6 或8 時(shí),模型的準(zhǔn)確率和精確率指標(biāo)都處于較高的水平??紤]到較短的卷積核長(zhǎng)度能降低模型的訓(xùn)練開(kāi)銷,故本文方法使用長(zhǎng)度為6 的卷積核構(gòu)建模型。
圖5 不同卷積核長(zhǎng)度下本文模型的準(zhǔn)確率和精確率對(duì)比Fig.5 Accuracy and precision comparison of proposed model with different convolution kernel lengths
第三組實(shí)驗(yàn)用于選取一維卷積核的數(shù)量。一般來(lái)說(shuō),卷積核的數(shù)量越多則模型的學(xué)習(xí)能力越強(qiáng),但數(shù)量過(guò)多時(shí)易導(dǎo)致過(guò)擬合,且增加了模型的訓(xùn)練開(kāi)銷。因此,實(shí)驗(yàn)分別將卷積核的數(shù)量設(shè)置為2~60 內(nèi)的偶數(shù)來(lái)訓(xùn)練模型,性能變化的擬合曲線如圖6 所示。從曲線的變化趨勢(shì)可以看出,在橫軸值為34 的點(diǎn)之前,模型的性能基本隨著卷積核數(shù)量的增加而上升;在該點(diǎn)之后,模型的性能基本不再明顯上升;在該點(diǎn)上,模型的準(zhǔn)確率和精確率都達(dá)到了較高的水平,故本文方法將卷積核數(shù)量設(shè)置為34來(lái)構(gòu)建模型。
圖6 不同卷積核數(shù)量下本文模型的準(zhǔn)確率和精確率對(duì)比Fig.6 Accuracy and precision comparison of proposed model with different numbers of convolution kernels
為檢驗(yàn)本文模型的檢測(cè)性能,設(shè)計(jì)了實(shí)驗(yàn)將其與RNN、LSTM、Bi-LSTM等幾種常見(jiàn)的序列分類模型進(jìn)行對(duì)比。
實(shí)驗(yàn)使用本文采樣并轉(zhuǎn)換后生成的一維序列樣本數(shù)據(jù)集。使用10折交叉驗(yàn)證法生成10組訓(xùn)練和測(cè)試集,即將數(shù)據(jù)集分為10 組,每次取9 組作為訓(xùn)練集,取1 組作為測(cè)試集,共對(duì)模型測(cè)試10 次。測(cè)試時(shí),每次訓(xùn)練最大迭代次數(shù)為20 輪,訓(xùn)練批量大小為128。從20輪迭代中選取結(jié)果最優(yōu)的模型數(shù)據(jù)作為本次測(cè)試的性能數(shù)據(jù)。當(dāng)10組測(cè)試都完成后,以10組測(cè)試數(shù)據(jù)的均值來(lái)評(píng)估模型的性能。實(shí)驗(yàn)結(jié)果如表4所示。
表4 不同模型對(duì)各類樣本的檢測(cè)準(zhǔn)確率和精確率對(duì)比 單位:%Tab.4 Detection accuracy and precision comparison of different models for various samples unit:%
結(jié)合表4 的數(shù)據(jù)可以看出,本文模型在檢測(cè)準(zhǔn)確率和精確率上都略高于Bi-LSTM 模型,且明顯優(yōu)于RNN 和LSTM 模型。該結(jié)果說(shuō)明,在SHDoS 攻擊檢測(cè)的場(chǎng)景中,本文模型對(duì)攻擊生成的序列樣本具有較好的檢測(cè)能力,相較于其他方法更具優(yōu)勢(shì)。
為解決攻擊頻率變化導(dǎo)致模型檢測(cè)性能降低的問(wèn)題,本文模型在對(duì)少數(shù)幾種攻擊頻率樣本進(jìn)行學(xué)習(xí)后,應(yīng)能夠?qū)ζ渌粗纛l率的樣本也具有較好的檢測(cè)能力。為評(píng)估本文模型對(duì)未知攻擊頻率樣本的泛化能力,本組實(shí)驗(yàn)采集了獨(dú)立的驗(yàn)證集,并對(duì)本文模型、LSTM及Bi-LSTM模型進(jìn)行了測(cè)試。
在生成驗(yàn)證集時(shí),實(shí)驗(yàn)分別采集了攻擊周期為1~60 s 的60組攻擊數(shù)據(jù)流,每組數(shù)據(jù)流包含3種攻擊模式,每種攻擊模式采樣5 min。為了和實(shí)際檢驗(yàn)過(guò)程保持一致,驗(yàn)證集的數(shù)據(jù)流在生成序列樣本時(shí)不進(jìn)行去重處理。實(shí)驗(yàn)將采集的良性樣本分別與60 組攻擊樣本組合成60 組驗(yàn)證集,每組都包含4 種標(biāo)簽類型。平均每組驗(yàn)證集包含有1 481個(gè)攻擊樣本,并加入了同等數(shù)量的良性樣本。
實(shí)驗(yàn)分別將60 組包含不同攻擊頻率樣本的驗(yàn)證集輸入各模型,并統(tǒng)計(jì)其檢測(cè)性能的變化情況。結(jié)果如圖7 所示,其中橫軸上的每個(gè)點(diǎn)對(duì)應(yīng)一組驗(yàn)證集,圖中的折線反映了各模型在不同驗(yàn)證集上的檢測(cè)準(zhǔn)確率和精確率的變化情況。從圖7 中可以直觀地看出,相較于其他模型,本文模型性能變化的折線更加平穩(wěn),在不同組別的驗(yàn)證集上基本都保持了相近的準(zhǔn)確率和精確率。
表5 統(tǒng)計(jì)了各模型在所有驗(yàn)證集上取得的準(zhǔn)確率和精確率的方差、標(biāo)準(zhǔn)差及平均值。從表5 的標(biāo)準(zhǔn)差和方差值也可以看出,在攻擊頻率變化時(shí),本文模型性能的變化是最小的,平均準(zhǔn)確率和精確率分別達(dá)到了96.76%和94.13%。
實(shí)驗(yàn)使用獨(dú)立驗(yàn)證集來(lái)評(píng)估本文模型在樣本誤報(bào)和漏報(bào)方面的性能,誤報(bào)率和漏報(bào)率分別為2.24%和8.49%,都處于較低的水平。此外,由于SHDoS 攻擊主機(jī)需要同時(shí)維持多條連接才能達(dá)成攻擊目的,因此防御系統(tǒng)還可以通過(guò)統(tǒng)計(jì)被檢出的攻擊數(shù)據(jù)流在固定時(shí)間段內(nèi)是否超過(guò)閾值的策略,進(jìn)一步降低系統(tǒng)對(duì)攻擊主機(jī)的誤判率和漏報(bào)率。
圖7 在驗(yàn)證集上各模型的準(zhǔn)確率和精確率對(duì)比Fig.7 Accuracy and precision comparison of different models on validation sets
表5 不同模型在所有驗(yàn)證集上的準(zhǔn)確率和精確率的方差、標(biāo)準(zhǔn)差及均值 單位:%Tab.5 Variance,standard deviation and mean of accuracy and precision of different models on all validation sets unit:%
實(shí)驗(yàn)結(jié)果表明,本文模型能夠?qū)ζ渌粗纛l率的樣本具有較好的檢測(cè)能力,能夠解決攻擊頻率變化導(dǎo)致模型檢測(cè)性能降低的問(wèn)題。
本文針對(duì)SHDoS 攻擊流量檢測(cè)在攻擊頻率變化時(shí)出現(xiàn)準(zhǔn)確率降低的問(wèn)題,提出了一種基于一維CNN 的SHDoS 攻擊流量檢測(cè)方法。通過(guò)對(duì)SHDoS 攻擊原理和報(bào)文的分析,本文方法在多種攻擊頻率下對(duì)三種模式的攻擊流量進(jìn)行采樣,保證了數(shù)據(jù)樣本在攻擊頻率上具有代表性。之后,本文方法還對(duì)樣本進(jìn)行清洗,避免訪問(wèn)失敗的無(wú)效數(shù)據(jù)流混入樣本,導(dǎo)致模型學(xué)習(xí)到錯(cuò)誤的特征。另外,本文方法通過(guò)數(shù)據(jù)流的序列化算法和序列去重操作,有效地將高度相似數(shù)據(jù)流進(jìn)行去重,避免訓(xùn)練集和測(cè)試集中出現(xiàn)基本相同的樣本,導(dǎo)致模型出現(xiàn)過(guò)擬合的現(xiàn)象。最后,本文方法使用一維CNN 構(gòu)建的分類器有效地學(xué)習(xí)到攻擊流量的序列特征,并對(duì)驗(yàn)證集中未見(jiàn)過(guò)的攻擊頻率樣本具有較好檢測(cè)能力,取得了較高的檢測(cè)準(zhǔn)確率和精確率。通過(guò)以上設(shè)計(jì),本文方法能夠解決攻擊報(bào)文收發(fā)頻率變化導(dǎo)致的檢測(cè)準(zhǔn)確率降低的問(wèn)題,可滿足對(duì)不同攻擊頻率的SHDoS流量進(jìn)行檢測(cè)的需求。