我们常听说UDP反射攻击,那你听说过TCP反射攻击吗?
我们对TCP三次握手谙熟于心,但你确定服务器收到SYN包之后一定返回SYN/ACK吗?
现网的DDoS对抗中,基于TCP协议的反射攻击手法已经悄然兴起,而且出现了多次手法变种,对DDoS防护方带来严峻的挑战 。新场景下的技术对抗如约而至 。
0×00 引言
今天分享的是一种新型的攻击手法 ——TCP反射攻击:黑客伪造目的服务器IP向公网的TCP服务器发起连接请求(SYN),以使得被攻击服务器收到大量SYN/ACK报文,最终造成拒绝服务的手法 。而由于这种反射攻击存在协议栈行为,传统的TCP防护算法难以凑效,这也使得这种攻击手法有愈演愈烈之势 。
文章插图
经过我们团队研究人员长期的跟踪分析,发现这种攻击手法出现了两个新的特征:
黑客逐渐趋向利用CDN厂商的服务器资源发起TCP发射攻击,因为通过扫描CDN厂商网段,可以快速、高效地获得丰富的TCP服务器资源;0×01 TCP反射的新特征研究
TCP反射攻击流量从SYN/ACK转变成ACK,防护难度进一步增大 。
特征一:黑客逐渐趋向于利用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,那么:
推荐阅读
- 做梦梦到一只羊攻击我 梦见羊攻击我
- 规则频道里哪个栏目会发布淘宝规则最新的变更公告
- 多吃牛肉使人更聪明
- 反复被DDoS攻击 你一定没花时间看这篇教程
- 帝国CMS7.5后台文章关键字和系统TAGS自动同步更新的方法
- 有效预防黑客DDoS攻击的技巧
- 梦见被海龟攻击 梦见乌龟攻击自己
- 防御DDoS攻击需要双向解决方案
- 什么是地下害虫,地下害虫咋防治 披萨攻击2
- 剖析 GSM 加密机制以及位置更新的过程