无心插柳还是有意为之:TCP反射DDoS攻击手法深入分析2.0

栏目: 编程工具 · 发布时间: 6年前

内容简介:作者:[宙斯盾团队] 暴雪我们常听说UDP反射攻击,那你听说过TCP反射攻击吗?我们对TCP三次握手谙熟于心,但你确定服务器收到SYN包之后一定返回SYN/ACK吗?

作者:[宙斯盾团队] 暴雪

我们常听说UDP反射攻击,那你听说过TCP反射攻击吗? 

我们对TCP三次握手谙熟于心,但你确定服务器收到SYN包之后一定返回SYN/ACK吗? 

现网的DDoS对抗中,基于TCP协议的反射攻击手法已经悄然兴起,而且出现了多次手法变种,对DDoS防护方带来严峻的挑战。新场景下的技术对抗如约而至...

0x00 引言 

笔者之前曾撰写过一篇关于利用TCP协议发起的反射攻击的文章 《小隐隐于野:基于TCP反射DDoS攻击分析》 。分享的是一种新型的攻击手法 —— TCP反射攻击:黑客伪造目的服务器IP向公网的TCP服务器发起连接请求(SYN),以使得被攻击服务器收到大量SYN/ACK报文,最终造成拒绝服务的手法。而由于这种反射攻击存在协议栈行为,传统的TCP防护算法难以凑效,这也使得这种攻击手法有愈演愈烈之势。 

无心插柳还是有意为之:TCP反射DDoS攻击手法深入分析2.0 经过我们团队研究人员长期的跟踪分析,发现这种攻击手法出现了两个新的特征: 

1)黑客逐渐趋向利用CDN厂商的服务器资源发起TCP发射攻击,因为通过扫描CDN厂商网段,可以快速、高效地获得丰富的TCP服务器资源; 

2)TCP反射攻击流量从SYN/ACK转变成ACK,防护难度进一步增大。 

0x01 TCP反射的新特征研究 

特征一:黑客逐渐趋向于利用CDN厂商的服务器资源发起TCP发射攻击 

我们在整理分析现网的TCP反射攻击时,发现会经常出现攻击源几乎全部来源海外CDN厂商的情况。如图2、图3所示,某次TCP反射攻击事件中有99.88%的IP来源美国,而且88.39%属于某个著名CDN厂商。

无心插柳还是有意为之:TCP反射DDoS攻击手法深入分析2.0 无心插柳还是有意为之:TCP反射DDoS攻击手法深入分析2.0

显而易见这是黑客开始倾向于扫描CDN厂商的IP网段,以获取大批量反射源的思路。由于CDN厂商的IP资源主要用于为用户提供加速服务,不可避免地会开放TCP端口,黑客便可以通过这种方式快速地获取到有效的TCP反射源。例如笔者随机探测一个CDN厂商的C段IP,结果为:整个C段所有IP全部均有开放TCP端口。 

无心插柳还是有意为之:TCP反射DDoS攻击手法深入分析2.0

这种方法为黑客提供大量可用的TCP反射源,能够让攻击者的资源实现最大化,而且TCP反射攻击由于具备协议栈行为,传统策略难以防护,所以不难推测后面这种攻击手法将越来越盛行,为DDoS防护方带来不小的挑战。 

特征二:反射流量从SYN/ACK报文转变为ACK报文,防护难度进一步增大 

这里给人的第一反应可能就是颠覆了我们TCP三次握手的印象,一个服务器(反射源)收到一个SYN请求,不应该是返回SYN/ACK吗?怎么会返回ACK包?为了解答这个问题,容笔者从黑客伪造SYN请求的过程说起... 

首先如上文描述TCP反射的原理,黑客会控制肉鸡伪造成被攻击服务器的IP对公网的TCP服务器发起SYN请求,而公网TCP服务器的端口都是固定的,所以为了实现反射,SYN请求中的目的端口也同样固定。与此同时,为了达到更好的攻击效果,黑客需要使反射出来的报文的目的端口为被攻击服务器的业务端口(绕过安全设备将非业务端口的流量直接拦截的策略),也就是说SYN请求报文中的源端口也是固定的。就是基于这些原因,攻击者伪造SYN请求报文的五元组通常都会出现集聚,这个结论其实很重要,因为它就是引发服务器反弹ACK的前提条件。 

举例如图5所示:黑客需要攻击的服务器IP为183.*.*.45,其业务端口为80,而黑客掌握的TCP反射服务器的IP是104.*.*.35,开放的端口是8080,那么攻击时构造SYN包的五元组就会集聚在Protocol: TCP、DST_IP: 104.*.*.35、SRC_IP: 183.*.*.45、DST_PORT: 8080、SRC_PORT: 80。 

无心插柳还是有意为之:TCP反射DDoS攻击手法深入分析2.0

而我们都知道五元组决定了一个会话,所以当黑客短时时间构造大量相同五元组的SYN包发送到同一台TCP服务器时,就会造成大量的“会话冲突”。也就是说从TCP服务器的角度来看,接收到第一个SYN包后,服务器返回SYN/ACK等待ACK以建立TCP连接,而此时又再接收到同一个会话的SYN。那TCP服务器会怎么处理呢?再次返回SYN/ACK?RST?还是其他?

其实在这个情况下,TCP服务器具体怎么处理决定因素在于SYN包的seq号和服务器的window size!假设第一个SYN包的seq号为SEQ1,TCP服务器的windows size为WND,而第二个SYN的seq号为SEQ2,那么: 

一、如果SEQ2==SEQ1,此时TCP服务器会认为这个是SYN包重传,则再次返回SYN/ACK(其实是在重传SYN/ACK),如图6所示。这个攻击场景从被攻击服务器的视角来看,就是在短时间内接收到大量的SYN/ACK报文,造成拒绝服务,这也是现网最为常见的场景之一。 

无心插柳还是有意为之:TCP反射DDoS攻击手法深入分析2.0 二、如果SEQ2>SEQ1+WND或者SEQ2 无心插柳还是有意为之:TCP反射DDoS攻击手法深入分析2.0

图7 RFC: 793 page69 

所以当黑客伪造SYN报文的SEQ随机变化时,就很容易命中上述情况,TCP服务器就会返回ACK报文,如图8、图9所示。

无心插柳还是有意为之:TCP反射DDoS攻击手法深入分析2.0

图8 TCP反射,反弹ACK场景(SEQ2>SEQ1+WND)

无心插柳还是有意为之:TCP反射DDoS攻击手法深入分析2.0

图9 TCP反射,反弹ACK场景(SEQ2

这个场景中,被攻击服务器会接收到少量SYN/ACK以及大量的ACK报文,这是现网最越来越常见的场景。如图10为现网中一次真实TCP反射攻击的抓包采样,表面上看跟普通的ACKFLOOD攻击没有太大区别,而实际上这些流量是具有协议栈行为,所以传统策略难以有效防护。

无心插柳还是有意为之:TCP反射DDoS攻击手法深入分析2.0

图10 现网TCP反射攻击采样

三、如果SEQ1

<=seq1+wnd,这种场景下tcp服务器会认为会话出现异常,并返回rst断开会话,如图11所示。此时被攻击服务器会收到大量syn ack+rst的混合流量(当前现网中这种情况很少,而rst的防护难度较小,这里不做详细阐述)。=""

无心插柳还是有意为之:TCP反射DDoS攻击手法深入分析2.0

图11 TCP反射,反弹RST场景 

综上所述,黑客为了实现TCP反射攻击,而且尽可能绕过防护策略,所以伪造的SYN报文的五元组会出现集聚,造成严重的会话冲突。而不同的SEQ号会触发TCP服务器不同的应答场景(情况汇总见图12),所以现网中的TCP反射除了会出现大量的SYN/ACK流量以外,还有可能出现少量SYN/ACK+大量ACK的混合流量,而且后者的流量成份更为复杂,防护难度更大。

无心插柳还是有意为之:TCP反射DDoS攻击手法深入分析2.0

0x02 新型的TCP反射防护算法

笔者整理总结了TCP反射防护的主要难点:

1、TCP反射流量具有协议栈行为,传统的防护算法难以识别和防护; 

2、专业的抗D设备通常旁路部署,所以无法获得服务器出流量,这也意味着无法通过双向会话检查的方式进行防护; 

3、TCP反射通常为SYN/ACK和ACK的混合流量,而且在成份占比和行为上跟正常业务流量几乎没有太大区别,所以传统的成份分析、限速等方式也难以凑效。

那既然TCP反射攻击防护难度这么大,当前有成熟有效的方案了吗?这个问题问得好!答案是有的,我们自研的 腾讯宙斯盾DDoS防护平台 已经具备防护能力,防护算法的核心思路是:对被攻击IP的入方向流量做会话跟踪,并分析每个会话的行为动作,以准确地区分出TCP反射攻击的会话和正常流量会话,最终对反射攻击源做拦截,实现有效防护。 

防护算法具有以下特点: 

1、秒级检测和精准防护:对TCP反射流量包括SYN/ACK、RST、ACK均能有效识别和清洗,保证业务稳定; 

2、对正常业务流量无影响:防护算法对用户透明,用户完全不会有感知,确保用户的最佳体验; 

3、可以自动适配:防护算法可以默认适配绝大部分业务场景,用户不需要额外配置定制策略,大大减轻防护门槛以及运维人力投入。 

当前新算法已经完成研发和验证,当你看到本文的时候就已经上线,为腾讯自营及部分投后业务提供防护,另外还会依托大禹DDoS防护系统为腾讯云用户提供服务。 

0x03 团队介绍 

腾讯TEG安全平台部宙斯盾项目基于十余年的防护技术积累,持续为QQ、微信、王者荣耀、英雄联盟等自研业务提供专业、可靠的DDoS攻击防护解决方案。与腾讯云安全团队合作,推出“大禹”高防产品,并提供高防包、高防 IP、棋牌盾等多种 DDoS 防护方案,为腾讯云用户一站式解决DDoS攻击问题。 

宙斯盾团队一直招聘各路英才,如果你对DDoS防护有浓厚兴趣,而且愿意在海量流量防护场景下一展身手,欢迎加入我们!当前热招岗位有: 

《高级安全运营工程师》 

岗位职责 :

A、负责网络安全产品的运营指标监控及分析,为产品规划提供决策依据,通过运营数据驱动产品优化,并推动闭环

B、大数据分析挖掘,对网络攻击安全风险隐患、现状、趋势做深入分析,有效刻画威胁风险并形成有效结论体现安全价值

岗位要求 :

A、本科及以上学历,计算机相关专业,3年以上安全运营工作经验

B、熟悉常用的大数据分析方法,较强的数据敏感性,能够通过数据分析发现、分析和推进风险问题的解决

C、对网络安全场景、黑产、情报、行业有一定了解,理解针对安全事件如何刻画安全风险和价值

D、有安全攻防运营相关经验者优先

《高级网络安全工程师》 

岗位职责 :

A、负责对网络攻防安全技术进行跟踪研究,对现网威胁进行溯源挖掘,优化现有安全算法和安全体系,提升安全产品能力

岗位要求 :

A、本科及以上学历,计算机相关专业,三年以上工作经验

B、熟悉TCP/IP协议,路由交换原理,熟悉DDoS攻击检测与防护基础原理

C、熟悉业界主流DDoS安全防护产品解决方案,掌握僵尸网络运作模式和技术原理

D、熟练使用python/perl/shell脚本中的至少1种语言

E、有安全攻防相关经验者优先 

有意向请将简历投递至: security@tencent.com

最后特别致谢我的同事JS大神,感谢他在撰写本文时提供的给力帮助。 


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming PHP

Programming PHP

Rasmus Lerdorf、Kevin Tatroe、Peter MacIntyre / O'Reilly Media / 2006-5-5 / USD 39.99

Programming PHP, 2nd Edition, is the authoritative guide to PHP 5 and is filled with the unique knowledge of the creator of PHP (Rasmus Lerdorf) and other PHP experts. When it comes to creating websit......一起来看看 《Programming PHP》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码