原创

UDP之Flood攻击

1.介绍:

UDP Flood 属于带宽类攻击,黑客们通过僵尸网络向目标服务器发起大量的 UDP 报文,这种 UDP 报文通常为大包,且速率非常快,通常会造成以下危害:

  • 消耗网络带宽资源,严重时造成链路拥塞。
  • 大量变源变端口的 UDP Flood 会导致依靠会话转发的网络设备,性能降低甚至会话耗尽,从而导致网络瘫痪。

2.防御方案

2.1 限流

防火墙对 UDP Flood 的防御并不能像 SYN Flood 一样,进行源探测,因为它不建立连接。那应该怎么防御呢?最初防火墙对 UDP Flood 的防御方式就是限流,通过限流将链路中的 UDP 报文控制在合理的带宽范围之内。 防火墙上针对 UDP Flood 的限流有三种:

  • 基于目的 IP 地址的限流:即以某个 IP 地址作为统计对象,对到达这个 IP 地址的 UDP 流量进行统计并限流,超过部分丢弃。
  • 基于目的安全区域的限流:即以某个安全区域作为统计对象,对到达这个安全区域的 UDP 流量进行统计并限流,超过部分丢弃。
  • 基于会话的限流:即对每条 UDP 会话上的报文速率进行统计,如果会话上的 UDP 报文速率达到了告警阈值,这条会话就会被锁定,后续命中这条会话的 UDP 报文都被丢弃。当这条会话连续 3 秒或者 3 秒以上没有流量时,防火墙会解锁此会话,后续命中此会话的报文可以继续通过。

限流虽然可以有效缓解链路带宽的压力,但是这种方式简单粗暴,容易对正常业务造成误判。

2.2 指纹学习

为了解决限流算法对正常业务的误判,防火墙又进一步推出了针对 UDP Flood 的指纹学习功能。

指纹学习
指纹学习

仔细分析,不难发现,UDP Flood 攻击报文具有一定的特点,这些攻击报文通常都拥有相同的特征字段,比如都包含某一个字符串,或整个报文内容一致。这些字段来自于 DDoS 工具自带的默认字符串,所以防火墙是通过收集这些字符串来检测 UDP Flood。这种防御算法现在使用很多,主要因为黑客为了加大攻击频率,快速、长时间挤占攻击目标所在网络带宽,在使用攻击工具实现时直接在内存存放一段内容,然后高频发送到攻击目标,所以攻击报文具有很高的相似性。而正常业务的 UDP 报文一般每个报文负载内容都是不一样的,这样可以减少误判。

从下面的抓包中可以看出,到达相同目的 IP 地址的两个 UDP 报文的载荷是完全一样的,如果防火墙收到大量的类似这样的 UDP 报文,那么就有可能是发生了 UDP Flood 攻击。

UDP-Flood攻击-报文1
UDP-Flood攻击-报文1
UDP-Flood攻击-报文2
UDP-Flood攻击-报文2

指纹学习是通过分析客户端向服务器发送的 UDP 报文载荷是否有大量的一致内容,来判定这个 UDP 报文是否异常。防火墙对到达指定目的地的 UDP 报文进行统计,当 UDP 报文达到告警阈值时,开始对 UDP 报文的指纹进行学习。如果相同的特征频繁出现,就会被学习成指纹,后续命中指纹的报文判定这是攻击报文,作为攻击特征进行过滤。

总结:

防火墙防御 UDP Flood 攻击主要有两种方式:限流和指纹学习,两种方式各有利弊。

限流方式属于暴力型,可以很快将 UDP 流量限制在一个合理的范围内,但是不分青红皂白,超过就丢,可能会丢弃一些正常报文;

而指纹学习属于理智型,不会随意丢弃报文,但是发生攻击后需要有个指纹学习的过程。目前,指纹学习功能是针对 UDP Flood 攻击的主流防御手段。

转至博客

正文到此结束