内容简介:作者:[宙斯盾团队] 暴雪我们常听说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防护算法难以凑效,这也使得这种攻击手法有愈演愈烈之势。
经过我们团队研究人员长期的跟踪分析,发现这种攻击手法出现了两个新的特征:
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厂商。
显而易见这是黑客开始倾向于扫描CDN厂商的IP网段,以获取大批量反射源的思路。由于CDN厂商的IP资源主要用于为用户提供加速服务,不可避免地会开放TCP端口,黑客便可以通过这种方式快速地获取到有效的TCP反射源。例如笔者随机探测一个CDN厂商的C段IP,结果为:整个C段所有IP全部均有开放TCP端口。
这种方法为黑客提供大量可用的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。
而我们都知道五元组决定了一个会话,所以当黑客短时时间构造大量相同五元组的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报文,造成拒绝服务,这也是现网最为常见的场景之一。
二、如果SEQ2>SEQ1+WND或者SEQ2
图7 RFC: 793 page69
所以当黑客伪造SYN报文的SEQ随机变化时,就很容易命中上述情况,TCP服务器就会返回ACK报文,如图8、图9所示。
图8 TCP反射,反弹ACK场景(SEQ2>SEQ1+WND)
图9 TCP反射,反弹ACK场景(SEQ2
这个场景中,被攻击服务器会接收到少量SYN/ACK以及大量的ACK报文,这是现网最越来越常见的场景。如图10为现网中一次真实TCP反射攻击的抓包采样,表面上看跟普通的ACKFLOOD攻击没有太大区别,而实际上这些流量是具有协议栈行为,所以传统策略难以有效防护。
图10 现网TCP反射攻击采样
<=seq1+wnd,这种场景下tcp服务器会认为会话出现异常,并返回rst断开会话,如图11所示。此时被攻击服务器会收到大量syn ack+rst的混合流量(当前现网中这种情况很少,而rst的防护难度较小,这里不做详细阐述)。=""
图11 TCP反射,反弹RST场景
综上所述,黑客为了实现TCP反射攻击,而且尽可能绕过防护策略,所以伪造的SYN报文的五元组会出现集聚,造成严重的会话冲突。而不同的SEQ号会触发TCP服务器不同的应答场景(情况汇总见图12),所以现网中的TCP反射除了会出现大量的SYN/ACK流量以外,还有可能出现少量SYN/ACK+大量ACK的混合流量,而且后者的流量成份更为复杂,防护难度更大。
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大神,感谢他在撰写本文时提供的给力帮助。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Go语言反射之反射调用
- Go语言反射之类型反射
- Go语言反射之值反射
- 模块讲解----反射 (基于web路由的反射)
- 装饰器与元数据反射(4)元数据反射
- .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据科学家养成手册
高扬 / 电子工业出版社 / 2017-5 / 79
作为认知科学的延伸,数据科学一方面应该越来越引起广大大数据工作者的重视,另一方面也要撩开自己的神秘面纱,以最为亲民的姿态和每位大数据工作者成为亲密无间的战友,为用科学的思维方式进行工作做好理论准备。《数据科学家养成手册》从众多先贤及科学家的轶事讲起,以逐步归纳和递进的脉络总结出科学及数据科学所应关注的要点,然后在生产的各个环节中对这些要点逐一进行讨论与落实,从更高、更广的视角回看科学及数据科学在各......一起来看看 《数据科学家养成手册》 这本书的介绍吧!