陳治昊
(四川大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,成都 610065)
DNS隧道攻擊是指利用DNS請求建立起隧道,繞過防火墻、入侵檢測系統(tǒng)等網(wǎng)絡(luò)安全策略,實(shí)現(xiàn)信息竊取、遠(yuǎn)程命令執(zhí)行等網(wǎng)絡(luò)攻擊行為。攻擊者搭建一個(gè)含有惡意軟件的DNS權(quán)威服務(wù)器并注冊一個(gè)域名后,內(nèi)網(wǎng)中的受控主機(jī)能通過該域名將編碼后DNS請求發(fā)往攻擊者的服務(wù)器建立隧道并進(jìn)行交互,建立隧道后服務(wù)器能夠?qū)?nèi)網(wǎng)主機(jī)發(fā)送的DNS請求數(shù)據(jù)包進(jìn)行解碼獲取傳輸數(shù)據(jù),同時(shí)也能夠向受控主機(jī)發(fā)送編碼后的控制指令,達(dá)到遠(yuǎn)程命令執(zhí)行的目的。根據(jù)RFC1034[1]和RFC1035[2]中定義的DNS格式,DNS除了通常解析域名所使用的A類型請求,還存在MX、TXT、CNAME等類型,允許填充任意類型的字符信息,這就使得攻擊者能夠使用DNS隧道進(jìn)行信息竊取以及遠(yuǎn)程命令執(zhí)行等攻擊。同時(shí)由于DNS協(xié)議受到的監(jiān)控力度較小,許多木馬、僵尸網(wǎng)絡(luò)和APT攻擊也使用了DNS隧道進(jìn)行控制通信,保持攻擊服務(wù)器與內(nèi)網(wǎng)受控主機(jī)之間的連接。在2016年5月,在Palo Alto公開的一起APT攻擊事件中[3],攻擊團(tuán)隊(duì)利用DNS請求應(yīng)答機(jī)制作為攻擊滲透的命令控制通道。
目前對于DNS隧道攻擊的檢測方法主要有兩類:基于載荷分析與基于行為檢測。
基于載荷是指將DNS請求與響應(yīng)數(shù)據(jù)包中的有效載荷進(jìn)行分析。章航等通過請求載荷的域名長度、字符占比、隨機(jī)性特征和語義特征來檢測DNS隧道攻擊[4];Homem I等人分析了DNS隧道攻擊的內(nèi)部數(shù)據(jù)包結(jié)構(gòu),使用數(shù)據(jù)包內(nèi)容信息熵進(jìn)行檢測[5];Lai C M等人使用每個(gè)DNS數(shù)據(jù)包的前512個(gè)字節(jié)進(jìn)行檢測[6];Liu C等人將DNS數(shù)據(jù)包的內(nèi)容壓縮為一個(gè)字節(jié)大小的數(shù)據(jù),使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練學(xué)習(xí)[7]。但是基于載荷分析的DNS隧道攻擊檢測方法有著很大的局限性,一些經(jīng)過URL Encoding編碼的合法域名長度較長并且不符合常規(guī)的語言習(xí)慣,容易產(chǎn)生誤報(bào)。
基于行為的檢測方法主要是針對網(wǎng)絡(luò)中DNS流量的變化情況與整體特征。羅友強(qiáng)等對DNS會(huì)話進(jìn)行重組,提取了7種DNS隧道攻擊行為特征組成特征向量進(jìn)行檢測[8];單康康等人混合了三種常用分類算法并加權(quán)求優(yōu),構(gòu)建了基于通信行為的檢測模型[9];Liu J等人提取了時(shí)間間隔、請求數(shù)據(jù)包大小、DNS類型和子域名熵四種行為特征進(jìn)行檢測[10];Ishikura N等人提出根據(jù)DNS請求命中緩存的情況來判斷是否為隧道攻擊[11];Pomorova等人使用了域名長度、與域名相關(guān)的IP數(shù)量、TTL值、DNS查詢成功標(biāo)志等多種行為特征來檢測隧道攻擊行為[12]。多種行為特征組成特征向量,能很好地表現(xiàn)出攻擊流量與正常流量之間的差異性,降低基于載荷方法中因編碼導(dǎo)致的誤報(bào)情況,但是正常網(wǎng)絡(luò)通信環(huán)境中,DNS隧道攻擊流量出現(xiàn)頻率會(huì)遠(yuǎn)小于正常流量出現(xiàn)的頻率,若對每個(gè)DNS會(huì)話進(jìn)行重組、計(jì)算特征與檢測,會(huì)消耗大量的計(jì)算資源,從而導(dǎo)致檢測效率不高。
針對DNS隧道攻擊特征提取,分析了現(xiàn)有研究在特征提取與選擇上存在的問題,提出了DNS流量行為的粗粒度特征與細(xì)粒度特征,并且使用兩種特征相結(jié)合對DNS流量進(jìn)行分類判斷。粗粒度與細(xì)粒度特征相結(jié)合的方式如圖1所示,首先將通信流量按時(shí)間片劃分,使用粗粒度特征判斷存在DNS隧道攻擊的時(shí)間片,再將可疑時(shí)間片中的DNS會(huì)話進(jìn)行重組,通過細(xì)粒度特征檢測出DNS隧道會(huì)話流量。
圖1 粗細(xì)粒度結(jié)合方式
由于對每條DNS會(huì)話進(jìn)行重組、計(jì)算特征與檢測會(huì)導(dǎo)致檢測效率低下,因此提出了粗細(xì)粒度相結(jié)合的檢測方法。粗粒度特征針對一段時(shí)間片內(nèi)所有的DNS流量,用于判斷當(dāng)前時(shí)間片內(nèi)的DNS流量是否存在異常,而無需重組并定位具體的DNS會(huì)話流量。針對時(shí)間片內(nèi)DNS流量,本文選取了7種粗粒度特征,如表1所示。
表1 粗粒度特征
(1)熵值計(jì)算方法
以源IP地址熵為例,源IP地址熵是使用時(shí)間片中不同源IP的數(shù)量占總的網(wǎng)絡(luò)流數(shù)量比值來計(jì)算信息熵,采用向量X=(x1,x2,…,xn)表示單位時(shí)間片中的數(shù)據(jù)流有n個(gè)不同的源IP地址,針對其中任一取值xi,設(shè)時(shí)間片中存在ki條網(wǎng)絡(luò)流的源IP地址為xi,主機(jī)在該時(shí)間窗口中的源IP地址熵H(X)計(jì)算公式為式1所示。其中S對應(yīng)不同源IP地址出現(xiàn)個(gè)數(shù),如式2所示。
(1)
(2)
(2)源IP地址熵
正常內(nèi)網(wǎng)環(huán)境中,大部分DNS會(huì)話數(shù)據(jù)包數(shù)量較少,每臺(tái)主機(jī)在正常網(wǎng)絡(luò)連接中都會(huì)產(chǎn)生一些長度相似DNS會(huì)話,因此時(shí)間片內(nèi)源IP地址熵值會(huì)較高?;赨DP的DNS協(xié)議限制載荷最大為512字節(jié),因此DNS隧道攻擊發(fā)送的數(shù)據(jù)會(huì)被切分為很多DNS請求數(shù)據(jù)包,因此當(dāng)有主機(jī)與DNS隧道攻擊服務(wù)器進(jìn)行交互時(shí),單位時(shí)間內(nèi)該主機(jī)產(chǎn)生的DNS請求數(shù)量會(huì)遠(yuǎn)大于其他主機(jī),因此時(shí)間片內(nèi)源IP地址熵值會(huì)降低。
(3)目的IP地址熵
選取此特征原因類似于源IP地址熵,在內(nèi)網(wǎng)各個(gè)主機(jī)沒有制定相同的DNS服務(wù)器地址時(shí),對存在攻擊行為的時(shí)間片會(huì)有較好的檢測效果。
(4)DNS類型熵
正常網(wǎng)絡(luò)環(huán)境中DNS協(xié)議是用于域名解析,大部分DNS請求與響應(yīng)數(shù)據(jù)包都是A類型(解析為IPv4地址)與AAAA類型(解析為IPv6地址),因此時(shí)間片內(nèi)DNS類型熵值較小。若時(shí)間片內(nèi)存在攻擊流量,有大量其他類型的DNS請求時(shí),DNS類型熵值會(huì)提高。
(5)A、AAAA、PTR比例
正常DNS請求多為A、AAAA、PTR三種類型,用于返回解析后的IP地址信息,因其載荷小而不適應(yīng)于作為DNS隧道攻擊的類型,DNS隧道攻擊使用這三種協(xié)議會(huì)導(dǎo)致分片過多影響傳輸速度且容易被偵測到,因此當(dāng)內(nèi)網(wǎng)中有主機(jī)與DNS隧道攻擊服務(wù)器進(jìn)行交互,該時(shí)間片內(nèi)此比例較低。
(6)MX、TXT、CNAME比例
MX、TXT、CNAME為DNS隧道攻擊常用的類型,因其載荷較大且可以存儲(chǔ)任意字符而易于傳輸隱蔽數(shù)據(jù)信息,因此內(nèi)網(wǎng)中如果有主機(jī)與DNS隧道攻擊服務(wù)器進(jìn)行交互,大量的MX、TXT、CNAME類型DNS流量會(huì)使得時(shí)間片內(nèi)此比例較高。
(7)平均請求域名長度
DNS隧道攻擊會(huì)將通信的內(nèi)容編碼后作為請求域名的子域名進(jìn)行傳輸,因此與DNS隧道攻擊服務(wù)器進(jìn)行交互時(shí)發(fā)出的DNS請求中域名長度較長。內(nèi)網(wǎng)中如果有主機(jī)與DNS隧道攻擊服務(wù)器進(jìn)行交互,在通信時(shí)間片內(nèi)會(huì)產(chǎn)生大量長域名請求,從而導(dǎo)致平均請求域名長度會(huì)大于正常網(wǎng)絡(luò)請求時(shí)間片。
(8)平均響應(yīng)數(shù)據(jù)長度
進(jìn)行DNS隧道攻擊時(shí),DNS隧道攻擊服務(wù)器會(huì)將響應(yīng)控制信息編碼進(jìn)行回傳,而正常DNS相應(yīng)多為解析域名后返回的IP地址信息,因此DNS隧道攻擊的響應(yīng)數(shù)據(jù)包會(huì)大于正常DNS服務(wù)器響應(yīng)數(shù)據(jù)包。
細(xì)粒度特征用于粗粒度特征之后,用來定位具體的隧道攻擊會(huì)話。將時(shí)間片內(nèi)的DNS會(huì)話進(jìn)行重組后,為了保證能夠準(zhǔn)確定位具體的DNS隧道攻擊會(huì)話,因此針對每一條DNS會(huì)話,本文提取了17種細(xì)粒度特征,如表2所示。
表2 細(xì)粒度特征
(1)DNS會(huì)話時(shí)長與會(huì)話中數(shù)據(jù)包總數(shù)
不同于基于TCP協(xié)議的會(huì)話在通信過程中存在三次握手與四次揮手行為,DNS基于無連接的UDP協(xié)議,因此DNS沒有嚴(yán)格意義上會(huì)話時(shí)長的定義。本文將在一次會(huì)話中最后一條DNS報(bào)文與第一條DNS報(bào)文時(shí)間的差值作為會(huì)話時(shí)長的定義。正常情況下的DNS請求,是由請求域名解析的主機(jī)在本地開啟一個(gè)任意端口,向域名服務(wù)器的53端口發(fā)出請求,服務(wù)器響應(yīng)之后DNS解析過程就結(jié)束了,客戶機(jī)創(chuàng)建的套接字也會(huì)在一段時(shí)間內(nèi)關(guān)閉。因此DNS隧道攻擊會(huì)話與正常DNS請求相比,會(huì)話時(shí)長更長,會(huì)話中數(shù)據(jù)包總數(shù)更大。
(2)最大包長與平均包長
在DNS隧道攻擊流程中,會(huì)存在內(nèi)網(wǎng)主機(jī)向外部攻擊服務(wù)器發(fā)送信息以及外部攻擊服務(wù)器向內(nèi)網(wǎng)主機(jī)發(fā)送指令信息的情況,在傳輸信息或指令時(shí),通常是將其編碼再由DNS協(xié)議作為載體傳輸,因此此時(shí)的DNS會(huì)話的UDP數(shù)據(jù)包會(huì)較長。
(3)請求數(shù)據(jù)長度、響應(yīng)數(shù)據(jù)長度與上傳下載載荷比
對于會(huì)話中請求數(shù)據(jù)長度與響應(yīng)數(shù)據(jù)長度,分別計(jì)算了其最大值、平均值與總大小。若DNS隧道用于內(nèi)網(wǎng)信息竊取,則請求數(shù)據(jù)的長度相比于正常DNS會(huì)話會(huì)較長;若DNS隧道用于外部遠(yuǎn)程命令執(zhí)行攻擊,則響應(yīng)數(shù)據(jù)的長度相比于正常DNS會(huì)話會(huì)較長。這種情況下,上傳下載載荷比也會(huì)與正常DNS會(huì)話不同。
(4)可疑flag與常用flag占比
正常DNS請求主要是A、AAAA、PTR類型的DNS報(bào)文,而DNS隧道攻擊為了提高傳輸效率,會(huì)更多使用TXT、MX、CNAME類型的DNS報(bào)文。
(5)域名信息熵
與正常DNS請求的域名信息不同,DNS隧道攻擊會(huì)采用多種編碼方式對傳輸數(shù)據(jù)進(jìn)行編碼,因此請求的域名信息熵值會(huì)偏高,整個(gè)DNS隧道攻擊會(huì)話中最大與平均域名信息熵會(huì)比正常DNS會(huì)話要高。
基于第1.2小節(jié)分析的粗細(xì)粒度的特征,可以從DNS會(huì)話中提取出兩類特征構(gòu)建兩種評估向量。為了減少會(huì)話重組與提取過多特征并聚類導(dǎo)致的計(jì)算資源消耗,提高檢測效率,本文提出了一種多粒度DNS隧道攻擊檢測方法,使用粗粒度與細(xì)粒度特征相結(jié)合,在保證檢測準(zhǔn)確率的同時(shí)能夠提升特征提取與檢測效率。同時(shí)根據(jù)DNS隧道攻擊檢測的特性,選擇了基于層次的聚類算法BIRCH算法進(jìn)行聚類分析。
本文提出的多粒度DNS隧道攻擊檢測方法的基本流程如圖2所示。
圖2 基于網(wǎng)絡(luò)行為的多粒度DNS隧道檢測方法的基本流程
與其他直接重組所有DNS會(huì)話,并同時(shí)提取所有特征進(jìn)行檢測的方法不同,本方法整體流程分主要分為粗粒度檢測與細(xì)粒度檢測兩部分。如圖2所示,傳入待檢測的數(shù)據(jù)包后,首先進(jìn)入粗粒度檢測階段,此階段不會(huì)進(jìn)行重組DNS會(huì)話這一耗費(fèi)大量計(jì)算資源的行為,而是先將數(shù)據(jù)包按時(shí)間片切分,對切分后的每一時(shí)間片內(nèi)的數(shù)據(jù)提取粗粒度特征構(gòu)建特征向量,使用BIRCH算法對異常時(shí)間片進(jìn)行檢測,正常時(shí)間片內(nèi)的數(shù)據(jù)包放行,不做下一步檢測,若發(fā)現(xiàn)異常時(shí)間片,記錄異常時(shí)間片內(nèi)的數(shù)據(jù)包進(jìn)行下一檢測階段,因此在粗粒度檢測階段需要保證較低的漏報(bào)率,確保異常時(shí)間片都能進(jìn)入下一檢測階段;進(jìn)入細(xì)粒度的檢測階段后,先對異常時(shí)間片內(nèi)的各個(gè)DNS會(huì)話進(jìn)行重組,提取更多的細(xì)粒度特征構(gòu)建向量,進(jìn)而更準(zhǔn)確地定位DNS隧道攻擊會(huì)話。由于通常網(wǎng)絡(luò)環(huán)境中,正常DNS會(huì)話數(shù)量遠(yuǎn)大于DNS隧道攻擊數(shù)量,因此采用了多粒度檢測方法后,絕大多數(shù)DNS數(shù)據(jù)包在粗粒度階段判斷為正常被放行,減少了大量重組會(huì)話與提取特征并聚類的時(shí)間;同時(shí)相較于其他行為檢測方法,能夠?qū)崿F(xiàn)細(xì)粒度階段提取更多特征而不降低檢測效率的效果,為較好地集成到實(shí)時(shí)入侵檢測系統(tǒng)提供了可能。
根據(jù)處理的先后順序以及對數(shù)據(jù)包的處理方法,整個(gè)流程分為粗粒度與細(xì)粒度兩個(gè)模塊。
2.2.1 粗粒度檢測模塊
粗粒度檢測模塊輸入為從網(wǎng)絡(luò)環(huán)境中獲取的數(shù)據(jù)包文件,輸出為存在DNS隧道攻擊的時(shí)間片信息。具體實(shí)現(xiàn)步驟如下:
①提取pcap格式數(shù)據(jù)包中所需的數(shù)據(jù)。此步驟僅從輸入的pcap數(shù)據(jù)包中按條提取出所需要的基本數(shù)據(jù)并記錄,例如數(shù)據(jù)包時(shí)間戳、源目的地址與端口、數(shù)據(jù)包長度、分片標(biāo)志位、遞歸標(biāo)志位和TTL值等數(shù)據(jù),特征的計(jì)算過程交由后續(xù)步驟處理以縮短時(shí)間;
②劃分時(shí)間片并計(jì)算粗粒度特征。根據(jù)預(yù)設(shè)的時(shí)間窗口大小與數(shù)據(jù)包的時(shí)間戳,將數(shù)據(jù)包數(shù)據(jù)按照切分成多個(gè)時(shí)間片,對于每一個(gè)時(shí)間片計(jì)算出2.1小節(jié)中選取的粗粒度特征,提取出所有時(shí)間片的粗粒度特征后進(jìn)行歸一化處理并進(jìn)入下一步驟;
③選取適合的算法進(jìn)行檢測并記錄異常時(shí)間片。此步驟選取了BIRCH算法進(jìn)行聚類,將少數(shù)存在攻擊行為的異常時(shí)間片作為異常點(diǎn)進(jìn)行檢測,標(biāo)記異常時(shí)間片并將其基本數(shù)據(jù)送入細(xì)粒度檢測模塊進(jìn)行下一步檢測。
2.2.2 細(xì)粒度檢測模塊
細(xì)粒度檢測模塊輸入為異常時(shí)間片中數(shù)據(jù)包的基本信息,輸出為DNS隧道攻擊信息。具體實(shí)現(xiàn)步驟如下:
①將時(shí)間片中的數(shù)據(jù)包按會(huì)話進(jìn)行重組。根據(jù)預(yù)設(shè)的會(huì)話延時(shí)時(shí)間與四元組信息,將時(shí)間片內(nèi)的數(shù)據(jù)包重組成多組會(huì)話,每組會(huì)話中包含多條數(shù)據(jù)包的信息,每個(gè)時(shí)間片以三維矩陣的形式記錄;
②計(jì)算細(xì)粒度特征。對于時(shí)間片中的每一組會(huì)話計(jì)算出2.2小節(jié)中選取的細(xì)粒度特征,提取出所有會(huì)話的細(xì)粒度特征后進(jìn)行歸一化處理并進(jìn)入下一步驟;
③選取適合的算法進(jìn)行檢測并記錄DNS隧道攻擊信息。此步驟同樣選取了BIRCH算法進(jìn)行聚類,將少數(shù)DNS隧道攻擊會(huì)話作為異常點(diǎn)進(jìn)行檢測,記錄下其信息完成DNS隧道攻擊檢測。
2.2.3 算法選擇
對于上述模塊第三步中算法的選擇,分析了本方法的整個(gè)檢測流程后,總結(jié)出了以下幾個(gè)特點(diǎn):
①正常DNS請求行為單一,提取特征聚類輪廓近似球形;
②只抓取了DNS流量,噪聲數(shù)據(jù)或突發(fā)情況較少;
③提升粗細(xì)粒度檢測速度,算法效率盡可能高;
④正常樣本與DNS隧道數(shù)量差別過大,可以將正常樣本聚類成簇、將隧道樣本作為異常點(diǎn)進(jìn)行檢測。
針對以上特點(diǎn),本文選取了BIRCH算法作為檢測算法,BIRCH算法雖然抗干擾性不佳,但其有著聚類形狀為球形、算法效率高、能夠?qū)崿F(xiàn)無監(jiān)督異常點(diǎn)檢測的特點(diǎn),能夠較好地滿足本方法的要求。
BIRCH算法是一種基于層次的聚類算法,其使用了一個(gè)樹型結(jié)構(gòu)來快速聚類,這個(gè)樹型結(jié)構(gòu)類似于B+樹,稱為聚類特征樹,樹的每一個(gè)節(jié)點(diǎn)都是若干個(gè)聚類特征(CF),內(nèi)部節(jié)點(diǎn)的CF的指針指向其孩子節(jié)點(diǎn),所有的葉子節(jié)點(diǎn)用一個(gè)雙向鏈表鏈接起來。其構(gòu)建過程也類似于B+樹的構(gòu)建,每個(gè)節(jié)點(diǎn)中CF數(shù)需設(shè)定上限,達(dá)到上限該節(jié)點(diǎn)進(jìn)行分裂,因此BIRCH算法的訓(xùn)練過程就是建立聚類特征樹的過程[14]。
BIRCH算法的CF是一個(gè)三元組,用(N,LS,SS)表示,其中N代表了這個(gè)CF中擁有樣本點(diǎn)的數(shù)量,LS代表了這個(gè)CF中擁有的樣本點(diǎn)各特征維度的和向量,SS代表了這個(gè)CF中擁有的樣本點(diǎn)各特征維度的平方和。若聚類特征中有N個(gè)D維數(shù)據(jù)點(diǎn)如式(3)所示,則LS與SS的計(jì)算方法分別為式(4)和式(5)。
(3)
(4)
(5)
可以發(fā)現(xiàn)CF滿足線性關(guān)系,從而在聚類特征樹中,父節(jié)點(diǎn)CF是由其所有子節(jié)點(diǎn)CF線性相加所得到的,因此BIRCH算法能夠很好地表示成一個(gè)層次樹型結(jié)構(gòu)。
在構(gòu)建BIRCH算法模型時(shí)我們需要調(diào)整的參數(shù)為內(nèi)部節(jié)點(diǎn)的最大CF數(shù)B、葉子節(jié)點(diǎn)的最大CF數(shù)L、葉節(jié)點(diǎn)每個(gè)CF的最大樣本半徑閾值T,讀入讓樣本點(diǎn)時(shí)根據(jù)T值決定是否聚為同一個(gè)CF,再根據(jù)B與L值決定該節(jié)點(diǎn)是否分裂。
從BIRCH的定義我們就能看出此算法的特性:聚類速度快,只需要一遍掃描訓(xùn)練集就可以建立CF Tree,CF Tree的增刪改都很快;聚類結(jié)果分布簇為超球體;BIRCH除了聚類還可以做一些異常點(diǎn)檢測和數(shù)據(jù)初步按類別規(guī)約的預(yù)處理[15]。因此能夠較好的滿足本方法的要求。
為驗(yàn)證此方法能夠有效地檢測出DNS隧道攻擊會(huì)話,以及驗(yàn)證使用粗細(xì)粒度相結(jié)合的方法后能夠提高檢測效率,設(shè)計(jì)了兩組實(shí)驗(yàn)來對本文提出方法的有效性與檢測效率進(jìn)行試驗(yàn)。第一組實(shí)驗(yàn)為使用多種聚類算法來驗(yàn)證本方法的有效性,并驗(yàn)證BRICH算法為最適用于此類情景的算法;第二組實(shí)驗(yàn)對比了重組所有DNS會(huì)話并同時(shí)提取特征與使用多粒度模型進(jìn)行檢測的時(shí)間消耗,驗(yàn)證使用多粒度模型對檢測效率提升的效果。
本次實(shí)現(xiàn)所使用的DNS數(shù)據(jù)為四川大學(xué)某實(shí)驗(yàn)室內(nèi)部網(wǎng)絡(luò)拓?fù)湎碌氖占膶?shí)驗(yàn)數(shù)據(jù)。在實(shí)驗(yàn)室內(nèi)部網(wǎng)絡(luò)中的兩臺(tái)主機(jī)上分別使用dns2tcp、iodine搭建環(huán)境,不定期與搭建在外部阿里云服務(wù)器上的DNS隧道攻擊服務(wù)器進(jìn)行交互,期間實(shí)驗(yàn)室內(nèi)網(wǎng)絡(luò)通信正常使用,使用Tcpdump在出口網(wǎng)關(guān)上抓取流出與流入的所有數(shù)據(jù)包,過濾其余協(xié)議只保留DNS協(xié)議數(shù)據(jù)包,最后收集了包含隧道攻擊流量的DNS數(shù)據(jù)包共計(jì)1,007,883條。
為了驗(yàn)證該方法在具有較好檢測效果的同時(shí)能夠提高檢測效率,將召回率、誤報(bào)率以及檢測時(shí)長作為衡量實(shí)驗(yàn)結(jié)果的指標(biāo)。召回率、誤報(bào)率具體計(jì)算公式如式(6)與式(7)所示。檢測時(shí)長為從劃分時(shí)間片開始到輸出結(jié)果的總時(shí)長。
(6)
(7)
在實(shí)驗(yàn)中由于DNS隧道攻擊流量為檢測主體部分,所以隧道攻擊流量為正樣本,正常流量為負(fù)樣本。因此召回率能夠很好地反映從大量正常DNS會(huì)話中檢測出少量隧道會(huì)話的能力。
本文實(shí)驗(yàn)采用Python sklearn模塊對數(shù)據(jù)集進(jìn)行聚類分析,設(shè)定粗粒度時(shí)間片間隔為300秒,分別使用BIRCH算法、DBSCAN算法、K-means算法進(jìn)行聚類,驗(yàn)證其召回率、誤報(bào)率與處理時(shí)間;同時(shí)采用BIRCH算法,比較使用多粒度模型與不使用多粒度模型的召回率、誤報(bào)率與處理時(shí)間對差異。
將含有DNS隧道流量的數(shù)據(jù)包按日期分成五份,使用多粒度模型,BIRCH算法、DBSCAN算法、K-means算法的召回率、誤報(bào)率與處理時(shí)長如表3所示。其中時(shí)長為劃分時(shí)間片、重組DNS回話以及檢測的總時(shí)長,單位為秒。
表3 三種算法檢測效果對比
因?yàn)镈BSCAN算法與K-means算法在粗粒度檢測階段誤報(bào)率略高,因此更多的時(shí)間片被用于細(xì)粒度檢測,導(dǎo)致檢測時(shí)長增加。
為了更好地對比,其召回率、誤報(bào)率與時(shí)長如圖3、圖4與圖5所示。
圖3 三種算法召回率對比
圖4 三種算法誤報(bào)率對比
圖5 三種算法檢測時(shí)長對比
對于BIRCH算法,不使用多粒度模型對每個(gè)DNS會(huì)話進(jìn)行檢測,與使用多粒度模型進(jìn)行檢測的實(shí)驗(yàn)結(jié)果如表4所示。其中時(shí)長為劃分時(shí)間片、重組DNS回話以及檢測的總時(shí)長,單位為秒。
表4 使用與不使用多粒度識(shí)別效果對比
為了更好地對比,其檢測時(shí)長如圖6所示。
圖6 使用與不使用多粒度模型檢測時(shí)間對比
通過表3的實(shí)驗(yàn)結(jié)果可以看出,對于從大量正常DNS會(huì)話中檢測出少量隧道攻擊流量,使用多粒度模型進(jìn)行檢測能夠取得較高的召回率以及較低的誤報(bào)率,并且對于DNS這一種單一類別的協(xié)議進(jìn)行檢測,BIRCH算法在檢測時(shí)長上較有優(yōu)勢,與之前分析相符。
同時(shí)從圖6可以發(fā)現(xiàn),采用了多粒度模型后,能夠減少大量DNS會(huì)話重組與細(xì)粒度特征提取的次數(shù),節(jié)省計(jì)算資源,能夠在不降低檢測準(zhǔn)確率的情況下,極大提高檢測速度。
本文提出的方法在保持良好的檢出率的情況下,檢測效率有了很大的提升,為較好地集成到實(shí)時(shí)入侵檢測系統(tǒng)提供了可能。進(jìn)一步挖掘可用于DNS隧道檢測的新特征、改進(jìn)算法性能、應(yīng)用于實(shí)時(shí)入侵檢測系統(tǒng)將是下一步的研究重點(diǎn)。