SYN DRDoS攻击突然密集出现

    “基于TCP SYN的反射DDoS”(TCP SYN Distributed Reflection Denial of Service)的攻击早在2001年就被研究者发现,但是在真实的网络环境中,包括我们的DDoS网络监测系统中并不常见。但自从5月月份以来,这种攻击突然密集出现,如下图所示。

图1:DDoS网络监测系统每月SYN DRDoS统计

扫描检测系统检测到异常

    5月9日17点之后的2个多小时内我们的扫描检测系统突然开始收到了多出以往几个数量级的TCP SYN包,如图2所示:

图2:TCP SYN包数量异常

    首先看异常时间点前后一段时间内SYN包源IP(如图3中红色部分所示)和目的端口变化情况(图4),可以看出SYN包数量暴涨源IP数目并没有明显增加(图3红色部分),而目标端口却非常集中(图4),超过90%的SYN包目的端口为22、23和80。

图3:TCP SYN包数量和源IP数量

图4:异常发生后TCP SYN包的目的端口分布

    因为报文数量极大,我们怀疑我们的检测系统是否受到了SYN Flood攻击,但统计9号16点到19点这段时间内TOP 8的SYN包源IP发现单183.60.110.239这个源IP就出现了1302227次,其对应的SYN包占这段时间内SYN包总数的96.02%(如图5红色部分)。如果不考虑它,系统收到的SYN包其实还是维持在之前的水平,并无大的波动。
图5:异常发生后2小时内SYN包源IP TOP 8

    单个源IP发送了数量巨大的SYN包,这种情况有点像SYN flood攻击,但当我们统计了183.60.110.239的SYN包源端口后却很快排除了SYN flood攻击的可能性,因为所有SYN包均使用同一个源端口:80,不符合我们之前看到的SYN flood攻击特点。众所周知,目前的SYN flood DDoS攻击通常由botnet发起,后者的规模从几个到几十上百个不等。由botnet发起的SYN flood攻击一般有如下特点:

  • 不管在SYN flood攻击中是否开启了spoofed 源IP选项,受害者端看到的SYN包的源IP数量不太可能是1个。
  • 为了使SYN看上去像合法的TCP 连接请求而增加防御难度,SYN flood攻击中的SYN包源端口值一般会大于1024,而且会不停变换。使用固定的、小于1024(这里是80)源端口的可能性几乎不存在。

在我们进行分析的同时,系统不断收到新的异常告警,而它们与9号的报警均存在相同的模式:

  • SYN包源IP和源端口非常集中,多数情况下为单个IP和单个端口的情况。
  • SYN包的目的端口也比较集中,我们看到的均为22、23和80。

通过DDOSMon查询这些IP,无一例外的均显示它们受到了SYN-ACK类型的DDoS攻击。

    下图显示了今年4月1日到5月30日期间系统每小时收到的TCP SYN包数量。可以看到在5月9日的那个异常点(如图6)之前,SYN包数量一直保持在一个相对稳定的区间内,在几万上下波动,没有大的spike。实际上过去两年系统一直维持这种平缓的变化趋势。但5月9日17点以后,大的数量波动开始频繁出现,多次从几万暴增到几百万。

图6:TCP SYN包数量

过去1个月内看到的SYN DRDoS攻击统计

    从5月9号以后,我们的系统不断接收到类似的告警,利用前面总结的流量模式检测后发现它们均为SYN DRDoS攻击。为了方便统计,我们定制了专门的事件检测策略,从5月9号到6月6号的所有告警中检测出2527次SYN DRDoS攻击,1662个攻击目标(源IP+源端口),1644个unique源IP。

图7:过去一个月看到的SYN DRDoS攻击统计

    目前我们还不清楚攻击者具体使用了何种SYN DRDoS攻击工具,但在我们的DDoS botnet指令跟踪系统中,相当比例的SYN DRDoS攻击在指令跟踪系统中也有检测,下面是简单的汇总情况:

  • 1397次攻击在部分Elknot/BillGates botnet中有指令。
  • 358次攻击在部分XOR.DDOS botnet中有攻击指令。

上述发现说明攻击者同时用使用了多种手段/工具对同一受害者进行攻击。

结语

    跟我们熟悉的那些UDP反射放大DDoS攻击(比如NTP/SSDP/DNS)相比,SYN DRDoS攻击虽然早在2001年便已出现,但是在真实的网络环境中并不常见。考虑到这种不常见的攻击方式在短时间内突然爆发被频繁使用且攻击的危害性并不比那些常见的UDP反射放大攻击小。我们认为这个现象值得关注。