劉東明,李林森,鄒福泰,吳 越
(上海交通大學 網(wǎng)絡空間安全學院,上海 200240)
分布式拒絕服務(Distributed Denial of Service,DDoS)攻擊是一種耗盡被攻擊對象資源的網(wǎng)絡攻擊方式。攻擊者通過大流量攻擊、有針對性的漏洞攻擊等,以耗盡目標主機資源的方式達到拒絕服務的目的。而利用多個服務器以及反射技術(shù)進行DDoS攻擊的攻擊力度遠大于傳統(tǒng)的DDoS攻擊。分布式反射拒絕服務(Distributed Reflection Denial of Service,DRDoS)攻擊已成為當今最流行也最危險的分布式拒絕服務攻擊之一[1]。這種攻擊不需要攻擊者為被攻擊對象安裝木馬,只需花費攻擊者較少的資源,通過發(fā)送帶有被攻擊對象IP地址的數(shù)據(jù)包到開放的Internet服務(如DNS或NTP服務器)發(fā)動攻擊。過去的事件已經(jīng)證明,DRDoS攻擊可以產(chǎn)生數(shù)百吉比特每秒的攻擊流量[2]。
由于DRDoS的IP欺騙特性,真正的攻擊源一直隱藏在背后。因此,受害者并不知道與誰聯(lián)系以阻斷攻擊,也無法對攻擊發(fā)起者提出法律訴訟。更糟糕的是,從受害者的角度來看,作為反射放大的第三方服務器更像是攻擊的來源,從而得到錯誤的歸因結(jié)果。
長期以來,IP追溯和數(shù)據(jù)包標記方案一直是檢測IP欺騙流量來源的主要方法[3-5],但這些設計方案需要分散在世界各地的互聯(lián)網(wǎng)服務運營商之間進行協(xié)調(diào),所以沒有得到大規(guī)模部署,以致不能在全球范圍內(nèi)判斷真正的IP歸屬。Krupp等人提出了一種將反射放大攻擊鏈接到引導服務的理論[6]。本文在該理論之上,提出了一種使用MLPNN進行歸因的技術(shù)方案,并使用Santanna等人在2016年收集的反射放大引導服務攻擊流量進行驗證[7]。結(jié)果顯示,包括DNS和CharGen協(xié)議在內(nèi)的9種引導服務的歸因準確率達到了95%以上。
文章第1部分定義了本文考慮的DRDoS攻擊的威脅模型和道德考慮,第2部分介紹了實驗使用的數(shù)據(jù)集與歸因技術(shù)使用的深度學習網(wǎng)絡,第3部分給出了實驗結(jié)果并進行分析,第4部分討論了攻擊者可能在哪些方面逃避此歸因機制,以及其可行性和歸因方案的局限性,第5部分進行總結(jié)。
本節(jié)將定義本文考慮的威脅模型與道德考慮。
本文考慮的重點是DRDoS攻擊。DRDoS攻擊使用大量流量充斥目標網(wǎng)絡來使系統(tǒng)或網(wǎng)絡無法使用,最終導致網(wǎng)絡癱瘓。攻擊者可以利用各種網(wǎng)絡協(xié)議中的放大矢量,經(jīng)由Internet服務器(例如DNS或NTP)向目標發(fā)送許多數(shù)據(jù)包,達到反射放大的效果。目前,至少有14個協(xié)議存在這樣的設計缺陷,導致大量服務器可以被用作放大器。鑒于UDP的無連接性質(zhì),攻擊者可以簡單修改請求中的源IP地址將服務器響應重定向到受害者。根據(jù)已有調(diào)查[8],反射放大攻擊的放大倍數(shù)為5~4 500倍,即某個以兆比特每秒速率發(fā)送請求的攻擊可能導致吉比特每秒規(guī)模的攻擊流量。
最近提出的一種特殊類型的攻擊者——引導服務,通常在“壓力測試”的掩蓋下提供DDoS攻擊服務,客戶可以使用少量費用訂閱各種類型的攻擊,然后引導服務將使用其基礎設施(放大器)啟動攻擊。因此,威脅模型考慮了4個方面——委托攻擊的客戶、進行實際攻擊的引導服務(攻擊者)、被用來放大網(wǎng)絡流量的服務器(反射放大器)和攻擊的目標(受害者),如圖1所示。
圖1 DRDoS攻擊威脅模型
本文的目的是從受害者或放大器的角度觀察,將攻擊歸因于引導服務。這是一項具有挑戰(zhàn)性的任務,因為從受害者的角度來看,攻擊似乎僅僅來源于放大器。同樣,從放大器的角度來看,由于引導服務使用了修改的源IP地址,請求似乎是受害者的合法請求。雖然追溯DDoS攻擊的最終目標是識別委托攻擊的客戶,但實際上只有引導者、放大器和受害者直接參與整個攻擊流程。由于引導者與客戶有業(yè)務關系,因此查明攻擊背后的引導服務是實現(xiàn)最終目標的重要一步。
另外,攻擊者可能利用僵尸網(wǎng)絡發(fā)動反射放大攻擊,但之前的工作證明絕大多數(shù)反射放大攻擊來自單一來源[7],這與本文的研究結(jié)果一致。下文將假設引導者僅使用單個系統(tǒng)來發(fā)動攻擊。
實驗使用的數(shù)據(jù)集是Santanna等人在2016年收集的,目的是為了其他研究人員能夠深入了解引導服務的工作原理,使用這些攻擊流量來驗證DRDoS歸因方法,并不用作其他有害服務。
在互聯(lián)網(wǎng)上很容易找到各種引導服務,任何用戶都可以通過google檢索輕松找到引導服務的綜合列表,并通過訂閱獲取攻擊服務。但是,出于道德原因,Santanna等人決定匿名化獲取的引導服務名稱,故在本文中也將匿名化所使用的全部引導服務。
實驗使用了Santanna等人在2016年收集的引導服務數(shù)據(jù)集。在總共訂閱的14個引導服務中,有9個引導者按要求執(zhí)行,共計超過250 GB的流量。對該數(shù)據(jù)集進行攻擊特征分析,其中7種是基于DNS的攻擊,2種是涉及CharGen協(xié)議的攻擊。這一結(jié)果顯示,DNS和CharGen是兩種最常見的基于UDP的攻擊類型。
這兩種類型的攻擊(DNS和CharGen)都屬于反射放大攻擊。這些攻擊基于以下原則:攻擊者向服務器發(fā)送較小的請求,使用攻擊目標的欺騙性IP地址(反射)作為請求的源地址,而得到的響應遠大于請求數(shù)據(jù)包(放大)。例如,在基于DNS的情況下,攻擊者發(fā)送相對較小的DNS查詢(40~60 B),將得到4 kB或更大的響應。在CharGen的情況下,RFC 864定義了對服務器的請求應該以大小為512 B的隨機回復來響應。
表1顯示數(shù)據(jù)集中每種攻擊的平均速率、執(zhí)行攻擊時涉及的總放大器數(shù)量、每個放大器的平均數(shù)據(jù)包數(shù)量以及攻擊涉及的協(xié)議類型。
表1 引導服務細節(jié)描述
從表1可以看到,雖然B5擁有最多的放大器數(shù)量,但是攻擊速率是所有引導服務中最低的(6.11 Mb/s),平均每個放大器只發(fā)送了261.8個數(shù)據(jù)包,大小分布在20~900 B,表明攻擊中使用的放大器數(shù)量不一定是攻擊強度的對應指標。實際上,攻擊的大小是使用的放大器數(shù)量,每個放大器發(fā)送的數(shù)據(jù)包數(shù)量和放大系數(shù)的函數(shù)。例如,盡管B3使用的放大器比B7使用的數(shù)量少100多倍,但是產(chǎn)生的攻擊流量卻幾乎相同,這可能是因為發(fā)送的數(shù)據(jù)包數(shù)量的不同造成的。
pcap文件是一種常用的數(shù)據(jù)存儲格式,里面的數(shù)據(jù)按照特定格式存儲,用wireshark等抓包工具可以正常打開或生成這種文件。本文中使用的數(shù)據(jù)集攻擊流量都存儲為pcap文件格式。首先按照五元組(源IP地址,源端口,目的IP地址,目的端口,協(xié)議)將pcap文件轉(zhuǎn)換成flow文件并獲取特征,主要包括數(shù)據(jù)包長度、DNS域名、放大器IP數(shù)量、攻擊端口熵值以及數(shù)據(jù)包存活時間(Time to Live,TTL)等。
多層感知器神經(jīng)網(wǎng)絡(Multilayer Perceptron Neural Network,MLPNN)是最常用的前饋神經(jīng)網(wǎng)絡,操作快速,易于實施,且訓練集要求較小。MLPNN由輸入層、隱層和輸出層3個連續(xù)層組成,如圖2所示。隱層處理輸入信息并將其傳輸?shù)捷敵鰧?。隱層中神經(jīng)元數(shù)量不足或者過多,可能會導致不良泛化和過度擬合的問題。但是,現(xiàn)在并沒有用于確定隱層中神經(jīng)元數(shù)量的分析方法,因此只能通過反復試驗得到。本文根據(jù)數(shù)據(jù)集的特征,使用的MLPNN模型包含4個隱層,每層神經(jīng)元個數(shù)遞減,分別為1 280、960、480和320。
圖2 實驗使用的MLPNN模型結(jié)構(gòu)
隱層中的每個神經(jīng)元j的權(quán)重wji乘以它們的輸入信號并加上一個偏移量求和,輸出如下:
其中f是對輸入加權(quán)求和的激活函數(shù),主要作用是提供網(wǎng)絡的非線性建模能力。激活函數(shù)可以是簡單的閾值函數(shù),如sigmoid函數(shù)、relu函數(shù)或者雙曲正切函數(shù),本文使用relu函數(shù)作為激活函數(shù)。
實驗使用Santanna等人[7]提供的pcap文件,根據(jù)流量的五元組將其轉(zhuǎn)換為flow文件,并提取各類統(tǒng)計特征用作MLPNN模型的輸入。用MLPNN模型對實驗樣本進行實驗,為了防止模型過擬合,使用重復隨機子采樣交叉驗證。該驗證方法隨機選取數(shù)據(jù)集合進行訓練、測試和驗證。利用訓練數(shù)據(jù)對模型進行訓練,利用驗證數(shù)據(jù)計算模型的預測精度。當預測精度開始下降時,停止訓練,達到最佳的模型方案。
共進行3類實驗,首先分別對DNS協(xié)議的7種引導服務和CharGen協(xié)議的2種引導服務進行多次訓練,最后在同樣的網(wǎng)絡參數(shù)下得到較好的分類結(jié)果,如圖3和圖4所示。
圖3 DNS協(xié)議分類結(jié)果混淆矩陣
圖4 CharGen協(xié)議分類結(jié)果混淆矩陣
可以看出,針對CharGen協(xié)議,由于引導服務種類較少,分類準確率相對較高,可以達到96%以上。而對于DNS協(xié)議的分類,booter1~booter4以及booter6都能得到幾乎完美的分類結(jié)果,而booter5和booter7的分類準確率卻較低。對這兩種booter service進行分類,了解到這兩種攻擊流量來自相關聯(lián)的兩個引導服務,所以在提取流量特征后,這兩種攻擊有一定的相似性。
最后,在同樣的網(wǎng)絡參數(shù)條件下,對所有的9種引導服務進行實驗。9種引導服務的多分類歸因結(jié)果的混淆矩陣如圖5所示,總分類準確率達到95%以上,也說明本方案具有可擴展性,即使新的攻擊流量協(xié)議不相同,也能在此網(wǎng)絡模型中得到較高的分類準確率。
圖5 混合協(xié)議分類結(jié)果混淆矩陣
描述一些不法分子試圖逃避此歸因機制可能使用的方法,并討論歸因方法的局限性。
提出的歸因方法已經(jīng)被證明可以良好運行,但是依然會在一定程度被不法分子逃避。攻擊者可以通過遵循一定的方法歸因于其他引導服務,即學習其他引導者的攻擊配置并復制其行為。例如,攻擊者可以使用與其他引導服務相同的一組放大器進行攻擊。然而,本文對引導服務的歸因方法并不只考慮攻擊者所使用的放大器集合,其他維度的攻擊配置如攻擊數(shù)據(jù)包生存時間等很難被復制,因為它們對引導服務的位置進行了編碼。雖然這種模仿攻擊有可能存在,但考慮到復雜性和攻擊開銷,并不認為大部分攻擊者會在實踐中試圖觸發(fā)這種虛假歸屬的攻擊方式。
另外,由于攻擊者可以完全控制它們產(chǎn)生的流量,因此他們可以在攻擊流量中增加噪聲。例如,攻擊者隨機化攻擊中使用的放大器,或者在可行的范圍內(nèi)發(fā)送異于正常攻擊的流量。雖然目前還沒有收集到這種逃避方法的數(shù)據(jù)流量,但有可能可以增加額外的功能來豐富分類標準,如IP數(shù)據(jù)包ID、DNS事務ID等。此外,選擇性響應掃描請求的蜜罐也可以在這種隨機化攻擊過程中正確捕獲引導服務攻擊流量,即使攻擊者隨機化了一組放大器,任何放大器集合仍然是掃描器映射的子集。最后,隨機化攻擊流量也會給攻擊者帶來性能開銷,因為他們無法重復使用預先生成的數(shù)據(jù)包。
歸因源覆蓋范圍。本文方案在真實環(huán)境中將受到一定的限制,即歸因源的覆蓋范圍。目前,攻擊歸因范圍僅限于已知的反射放大攻擊,實驗主要針對的是目前的兩個主要協(xié)議DNS和CharGen。但是,該方案具有良好的可擴展性,將來收集到的新的放大攻擊數(shù)據(jù)集可以繼續(xù)添加到模型中,并不斷擴大歸因源覆蓋范圍。
多源歸因。之前假設了攻擊都是由單一來源即引導者發(fā)起的。如果反射放大攻擊是通過僵尸網(wǎng)絡發(fā)起的,歸因功能將變得不穩(wěn)定。本文所使用的數(shù)據(jù)集中只有不到5%的攻擊出現(xiàn)了超過2個的TTL值,即絕大部分攻擊都是來自于單一源,在實驗環(huán)境中也刪除了多源反射放大攻擊的實驗數(shù)據(jù)。
其他攻擊類型。其他類型的DDoS攻擊如TCP泛洪或基于應用層的DDoS攻擊,并不使用反射放大器,因此無法使用本文提出的方案進行歸因。但是,反射放大攻擊是最常見的DDoS攻擊之一,可產(chǎn)生的攻擊流量大且所需要的攻擊資源小,幾乎所有的引導服務都大力宣傳反射放大攻擊,而其他攻擊類型并不受歡迎也證明了這一事實。
krupp等人[6]首次提出了將反射放大DDoS攻擊歸因于引導服務,并針對自攻擊流量提出了兩種簡易技術(shù)進行有效性驗證。本文的工作在krupp等人的基礎上做了一定擴展,使用Santanna等人[7]提供的更大的數(shù)據(jù)集提取800多項特征,對之前的工作進行進一步完善,并首次使用深度神經(jīng)網(wǎng)絡對實驗數(shù)據(jù)進行訓練、測試及驗證。結(jié)果顯示,本文的歸因技術(shù)準確率達到95%以上。從受害者的角度提取網(wǎng)絡流量與特征,并對引導服務進行歸因。運用此技術(shù),受害者可以了解他們遭受的攻擊的真正來源,甚至可以比較兩次攻擊以確定它們是否是由同一引導程序發(fā)起的。