11.28 「華安解密之DDoS攻防」09 UDP原理篇 UDP Flood

楊哥關注的華為官方的【華安解密之DDoS攻防】非常實用,純純的乾貨,決定每天一篇分享給愛看頭條並且愛學習的條友們。

正文如下:


上一期我們見識了NTP反射放大攻擊的威力,NTP協議是以UDP協議為基礎的,這一期,我們就來聊聊UDP協議相關的攻擊和防禦。

首先我們還是從UDP協議本身入手,先來回顧一下UDP協議的基礎。

0x01 UDP協議基礎知識

UDP協議全稱“用戶數據報協議”,User Datagram Protocol,是一種傳輸層協議。UDP協議是一種無連接的協議,不提供數據報的分組、組裝,不對數據包的傳輸進行確認,當報文發送出去後,發送端不關心報文是否完整的到達對端。這個聽起來像是缺點的特點,卻是UDP協議最大的優點。這種報文處理方式決定了UDP協議資源消耗小,處理速度快,所以通常音頻、視頻和普通數據傳送時使用UDP比較多。就比如音頻或視頻吧,大家在看視頻或者聽音樂的時候,都是追求數據傳輸更快一些,而在傳輸過程中,偶爾丟一兩個數據包,對整體效果並不會產生太大的影響。

相比於之前介紹的DNS和HTTP協議,UDP協議需要關注的點要簡單很多。我們來看看UDP報文結構。

「華安解密之DDoS攻防」09 UDP原理篇 UDP Flood

我們再來看一個現網真實UDP報文的抓包。

「華安解密之DDoS攻防」09 UDP原理篇 UDP Flood

每個UDP報文由UDP報文頭部和UDP數據字段兩部分組成。其中頭部字段由8個字節,4個字段組成,分別是:源端口號、目的端口號、報文長度和校驗和。

l UDP協議使用端口號為不同的應用保留其各自的數據傳輸通道。比如DNS協議目的端口號是53;TFTP協議目的端口號是69。

l 數據報的長度是指包括報頭和數據載荷部分在內的總字節數。因為報頭的長度是固定的,所以該域主要被用來計算可變長度的數據載荷部分。數據載荷的最大長度根據操作環境的不同而各異。從理論上說,包含報頭在內的數據報文的最大長度為65535字節。不過,一些實際應用往往會限制報文的大小。

l UDP協議使用報頭中的校驗值來保證數據的安全。校驗值首先在數據發送方通過特殊的算法計算得出,在傳遞到接收方之後,還需要再重新計算。如果某個數據報在傳輸過程中被第三方人為篡改或者因其他原因遭到了損壞,發送和接收方的校驗計算值將不會相符,由此UDP協議可以檢測報文傳輸過程中是否出錯。雖然UDP提供有錯誤檢測,但檢測到錯誤時,UDP不做錯誤校正,只是簡單地把損壞的報文丟棄,或者給應用程序提供警告信息。

0x02 華為專業Anti-DDoS解決方案怎麼做?

UDP協議與TCP協議不同,是無連接狀態的協議,並且UDP應用協議五花八門,差異極大,因此針對UDP Flood的防護其實非常困難。我們也不能像TCP攻擊那樣進行源認證,所以只能找特徵了。

一般傳統的UDP攻擊都是由攻擊工具打出來的,通常會具有一定的特徵,尤其在數據段會有一些相同或者有規律變化的字段。而對於我們前一節介紹的UDP反射放大攻擊,雖然並不是攻擊工具偽造的UDP報文,而是真實網絡設備發出的UDP報文,在數據段不具備相同的特徵,但是目的端口卻是固定的,所以也可以作為一種特徵。

確定攻擊報文的特徵後,就可以根據特徵進行過濾了。特徵過濾也就是常說的指紋過濾,根據攻擊報文的特徵,自定義過濾屬性。

指紋過濾有兩種方法:

l 靜態指紋過濾

對於已知的攻擊特徵,可以直接配置到過濾器的參數中。Anti-DDoS系統不僅具有TCP、UDP等傳輸層協議的報文解析能力,還具有應用層報文解析能力,可針對應用層頭部信息字段做過濾。配置了靜態指紋過濾後,Anti-DDoS會對收到的報文進行特徵匹配,對匹配到攻擊特徵的報文,再進行丟棄、限流等下一步操作。

「華安解密之DDoS攻防」09 UDP原理篇 UDP Flood

那麼,如何獲知攻擊特徵呢?一種方法是抓包分析,人為識別出攻擊特徵,然後配置到過濾器中。UDP報文的數據段、源IP地址、源端口,目的IP地址、目的端口都可能隱藏著攻擊報文的特徵。比如,UDP反射放大攻擊一般都是基於特定的UDP端口,比如現在比較常見的NTP、DNS、SSDP反射放大攻擊,分別對應的UDP端口是123、53、1900。

此外,Anti-DDoS系統還提供了14種常見UDP反射放大攻擊的過濾器模板。這些攻擊都屬於已知攻擊特徵,Anti-DDoS系統已經預先定義好了攻擊特徵的參數,只需要直接應用即可。

「華安解密之DDoS攻防」09 UDP原理篇 UDP Flood

可能有人要問了,Anti-DDoS系統預置的過濾器模板不夠用,我又不會抓包分析,不知道攻擊特徵怎麼辦啊?放心,這個Anti-DDoS已經替你考慮好了。

l 動態指紋學習

在攻擊特徵未知的情況下,Anti-DDoS系統具有指紋自動學習功能。對於一些攻擊工具發起的UDP攻擊,攻擊報文通常都擁有相同的特徵字段,比如都包含某一個字符串,或整個報文內容一致。指紋學習就是對一些有規律的UDP攻擊報文負載特徵進行識別,並且自動提取出指紋特徵,然後就把這個提取的特徵作為過濾條件,自動應用並進行過濾。

Anti-DDoS系統默認情況下,學習UDP載荷的最後8個字節,當然這個學習的偏移量和學習長度都是可以手動配置的。偏移量是從UDP報文頭結束處開始計算,取值從0字節到1500字節可靈活配置;學習長度從1個字節開始配置,最多可以學習8個字節。

「華安解密之DDoS攻防」09 UDP原理篇 UDP Flood

傳統的UDP flood攻擊是一種消耗對方資源,也消耗自己資源的攻擊方式,你攻擊了一個服務器,其實也在消耗你的系統資源,說白了就是拼資源而已,看誰的帶寬大,看誰能堅持到最後。這種攻擊方式沒有技術含量,現在已經越來越少的黑客使用這種方式了。

取而代之的是UDP反射放大攻擊,近幾年越來越多的被黑客所使用。像前面提到的幾種做成過濾器模板的UDP反射放大攻擊,都是比較常見的。後續對於UDP flood攻擊的防禦重點也應該聚焦在反射放大攻擊上。


上期回顧:



分享到:


相關文章: