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攻击的防御重点也应该聚焦在反射放大攻击上。


上期回顾:



分享到:


相關文章: