ddos中的tcp反射攻击技术分析
我们常听说UDP反射攻击,那你听说过TCP反射攻击吗?
我们对TCP三次握手谙熟于心,但你确定服务器收到SYN包之后一定返回SYN/ACK吗?
现网的DDoS对抗中,基于TCP协议的反射攻击手法已经悄然兴起,而且出现了多次手法变种,对DDoS防护方带来严峻的挑战。新场景下的技术对抗如约而至。
0×00 引言
笔者之前曾撰写过一篇关于利用TCP协议发起的反射攻击的文章《小隐隐于野:基于TCP反射DDoS攻击分析》。分享的是一种新型的攻击手法 ——TCP反射攻击:黑客伪造目的服务器IP向公网的TCP服务器发起连接请求(SYN),以使得被攻击服务器收到大量SYN/ACK报文,最终造成拒绝服务的手法。而由于这种反射攻击存在协议栈行为,传统的TCP防护算法难以凑效,这也使得这种攻击手法有愈演愈烈之势。
经过我们团队研究人员长期的跟踪分析,发现这种攻击手法出现了两个新的特征:
黑客逐渐趋向利用CDN厂商的服务器资源发起TCP发射攻击,因为通过扫描CDN厂商网段,可以快速、高效地获得丰富的TCP服务器资源;
TCP反射攻击流量从SYN/ACK转变成ACK,防护难度进一步增大。
0×01 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<SEQ1,那么这种情况属于out-of-windows:对于不在接收窗口内的报文,需要回复一个ACK,让对方发送正确SEQ号的包过来,协议描述可以参考RFC: 793 page69(见图7)。
图7 RFC: 793 page69
所以当黑客伪造SYN报文的SEQ随机变化时,就很容易命中上述情况,TCP服务器就会返回ACK报文,如图8、图9所示。
图8 TCP反射,反弹ACK场景(SEQ2>SEQ1+WND)
图9 TCP反射,反弹ACK场景(SEQ2<SEQ1)
这个场景中,被攻击服务器会接收到少量SYN/ACK以及大量的ACK报文,这是现网最越来越常见的场景。如图10为现网中一次真实TCP反射攻击的抓包采样,表面上看跟普通的ACKFLOOD攻击没有太大区别,而实际上这些流量是具有协议栈行为,所以传统策略难以有效防护。
图10 现网TCP反射攻击采样
三、如果SEQ1<SEQ2<=SEQ1+WND,这种场景下TCP服务器会认为会话出现异常,并返回RST断开会话,如图11所示。此时被攻击服务器会收到大量SYN/ACK+RST的混合流量(当前现网中这种情况很少,而RST的防护难度较小,这里不做详细阐述)。
图11 TCP反射,反弹RST场景
综上所述,黑客为了实现TCP反射攻击,而且尽可能绕过防护策略,所以伪造的SYN报文的五元组会出现集聚,造成严重的会话冲突。而不同的SEQ号会触发TCP服务器不同的应答场景(情况汇总见图12),所以现网中的TCP反射除了会出现大量的SYN/ACK流量以外,还有可能出现少量SYN/ACK+大量ACK的混合流量,而且后者的流量成份更为复杂,防护难度更大。
0×02 新型的 TCP 反射防护算法
笔者整理总结了TCP反射防护的主要难点:
1、TCP反射流量具有协议栈行为,传统的防护算法难以识别和防护;
2、专业的抗D设备通常旁路部署,所以无法获得服务器出流量,这也意味着无法通过双向会话检查的方式进行防护;
3、TCP反射通常为SYN/ACK和ACK的混合流量,而且在成份占比和行为上跟正常业务流量几乎没有太大区别,所以传统的成份分析、限速等方式也难以凑效。
ddos中的tcp反射攻击技术分析相关推荐
- 网络钓鱼攻击技术分析及防范
网络钓鱼攻击技术分析及防范 网络钓鱼攻击技术分析及防范 Author: rayh4c [80sec] EMail: rayh4c#80sec.com Site: http://www.80sec.co ...
- ARP病毒攻击技术分析与防御(补充知识)
ARP病毒攻击技术分析与防御 -- ARP病毒攻击技术分析与防御 一.ARP Spoofing攻击原理分析 在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的.ARP协议 ...
- 基于tp240dvr服务的新型反射攻击深度分析
0x00概述 2022年2月Cloudflare首次披露黑客利用tp240dvr(又称TP-240驱动程序)服务发起的新型反射放大攻击,放大倍数超过40亿,之后国内外多个安全团队针对此类攻击进行过解读 ...
- 关于移动安全攻击技术分析笔记
移动攻击技术主要分为,伪基站钓鱼.sim卡克隆.app应用克隆.电话/短信轰炸.手机远控软件等. 1.伪基站钓鱼攻击 伪基站,又称假基站.假基地台,是一种利用GSM单向认证缺陷的非法无线电通信设备,主 ...
- rebound(反弹)攻击技术分析
rebound攻击技术由Florian Mendel等在2009年提出. rebound攻击技术是运用碰撞攻击中的可用自由度来降低追踪差分的概率.rebound攻击技术主要应用在基于分组密码,置换结构 ...
- 正大国际期货:外盘期货交易中常见的五类技术分析方法
外盘期货交易中,技术分析是必不可少的,技术分析是指以市场行为为研究对象,以判断市场趋势并跟随趋势的周期性变化来进行一切金融衍生物交易决策的方法的总和.常用的技术方法大体上可以分五大类:指标类.切线类. ...
- 高级威胁:Ramsay恶意软件针对隔离网络的攻击技术分析
一.背景 近期,国外安全公司ESET发布了恶意软件Ramsay针对物理隔离网络的攻击报告(见参考链接1).所谓物理隔离网络,是指采用物理方法将内网与外网隔离,从而避免入侵或信息泄露的风险的技术手段.物 ...
- 小隐隐于野:基于TCP反射DDoS攻击分析
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯DDoS安全专家.腾讯云游戏安全专家 陈国 0x00 引言 近期,腾讯云防护了一次针对云上某游戏业务的混合DDoS攻击.攻击持续了 ...
- DDoS攻击愈演愈烈,反射攻击举足轻重
0x00概述 全球DDoS网络攻击次数不断增长,反射攻击次数也是逐年上升,笔者在之前撰写的文章<史上最大DDoS攻击"之争">中提到的几次"最大"攻 ...
最新文章
- android 怎么换行,android textview 怎么换行?
- geojson在线生成工具_logofree详解:LOGO设计在线生成
- Faste R-CNN的安装及测试
- linux单网卡主路由做路由器,利用SuSE做路由器,单网卡配置nat
- Opencv之以亚像素精度获取图片的ROI--cv.getRectSubPix
- Hadoop环境搭建 MYSQL环境配置
- js 获取浏览器高度、浏览器宽度
- Beetl页面模板文档
- 天玑720可以升级鸿蒙系统吗,华为高管:来岁年初就能用上鸿蒙体系,55部华为产物可升级鸿蒙...
- ANDROID webview解决视频无法播放问题
- 教你如何免费下载浏览器上收费的音乐和视频
- 【已解决】Python安装TensorFlow报错“Consider adding this directory to PATH or, if you prefer to suppress this
- 复旦大学python教学视频_B站资源推荐:复旦大学机器学习、深度学习公开课,附PDF课件下载...
- 心流:提升幸福的奥秘
- C语言之strncpy函数
- PreTranslateMessage()
- FL Studio教程之扫弦器命令
- java获取周一0点
- 企业在线ERP系统与内控控制因素管理
- 利用matlab进行爬虫