一、如果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的混合流量,而且在成份占比和行为上跟正常业务流量几乎没有太大区别,所以传统的成份分析、限速等方式也难以凑效 。
*本文作者:暴雪@腾讯安全平台部,转载请注明来自FreeBuf.COM
【新的DDoS攻击手法来袭:TCP反射攻击技术分析】
推荐阅读
- 做梦梦到一只羊攻击我 梦见羊攻击我
- 规则频道里哪个栏目会发布淘宝规则最新的变更公告
- 多吃牛肉使人更聪明
- 反复被DDoS攻击 你一定没花时间看这篇教程
- 帝国CMS7.5后台文章关键字和系统TAGS自动同步更新的方法
- 有效预防黑客DDoS攻击的技巧
- 梦见被海龟攻击 梦见乌龟攻击自己
- 防御DDoS攻击需要双向解决方案
- 什么是地下害虫,地下害虫咋防治 披萨攻击2
- 剖析 GSM 加密机制以及位置更新的过程