目录
0x1 DoS攻击
0x2 TCP协议三次握手
0x3 Syn攻击原理
3.1 SynFlood攻击方法
3.2 SynFlood攻击的防范
0x4 结语
0x1 DoS攻击
DoS(Denial of Service)攻击,即拒绝服务攻击。其攻击手段是通过向攻击对象发送大量恶意数据包的方式,来大量占用目标主机的资源。使得目标主机不得不花费多数的资源来处理这些数据包,导致需要正常访问的数据包得不到及时的处理,从而产生较高的网络延迟甚至导致数据包丢弃而无法响应。
DoS攻击的本质是利用目前网络协议中存在的缺陷,通过各种方式进行肆意的消耗目标主机的资源,目的是为了造成目标主机无法提供正常的服务,崩溃或者宕机。
SYN洪泛(SYNFlood)攻击就是利用TCP/IP协议中,在三次握手进行连接时由于缺乏的认证机制从而进行的DoS攻击。
0x2 TCP协议三次握手
如图1所示,通过TCP协议建立连接时需要进行三次数据包的交换,也就是所谓的“三次握手”。
客户端A主动向服务端B发送SYN包,同时随机生产序列seq=x也发送给服务器。
当服务端B收到A发送来的SYN和seq=x后,进入listen状态,并对收到的数据包进行答复。此时B向A发送 ①SYN表示收到建立连接请求,②ACK表示收到数据包,③随机生产序列seq=y,④ack=x+1用于验证消息。
客户端A收到B发来的四个数据包后进行消息验证,验证通过后对收到的数据包进行回应,此时A向B发送 ①ACK表示收到数据包,②seq=x+1表示数据包序列,③ack=y+1表示下一个数据包的正确的序列。
0x3 Syn攻击原理
在 TCP 连接的三次握手过程中,我们假设发生以下情况:
一个用户向服务器发送了 Syn报文后突然死机或掉线, 则服务器在发出 SYN 和ACK 应答报文后,客户端无法及时答复,导致服务器无法收到客户端的 ACK 报文( 即第三次握手无法完成) 。
这种情况下服务器端一般会重试并等待一段时间后丢弃这个未完成的连接, 称为半连接握手状态。
攻击者只需要向服务端发送大量的TCP请求连接而不进行第三次回应,就会出现大量的这种半握手状态的连接, 在服务器产生很多的请求队列, 最后的结果往往是堆栈溢出崩溃——即使服务器端的系统资源足够充分, 服务器也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求, 此时服务 器失去了对客户端的响应, 从而达到SynFlood攻击的目的。
3.1 SynFlood攻击方法
常见的SynFlood攻击方法有三种:
直接攻击:通过直接发送大量伪造TCP的方式进行攻击。在这种攻击中,由于攻击者不对IP地址进行隐蔽,导致攻击源单一,因此很容易发现并清理攻击者。
IP欺骗攻击:通过IP地址的伪造,增加防御者的溯源难度。IP地址伪造技术的实现形式并不复杂 。首先创建一个具有IP报文格式的结构, 然后在该结构中源地址一项上填写虚假的IP地址, 最后将该报文写入输出设备发向目标主机。
分布式攻击(DDoS):如果攻击者控制大量肉鸡,使用僵尸网络发起攻击,那么攻击的溯源几乎无法进行。甚至有的攻击者还会命令每台设备进行IP地址的伪造,将两种攻击方式进行结合,对被攻击者造成难以抵御的伤害。
3.2 SynFlood攻击的防范
限制半连接流量和缩短SYN Timeout时间:在目标计算机设置检测功能, 即发现不断到针对本机的Syn数据包, 而又不做出应答, 则认为是受到Syn泛洪攻击, 并拒绝与它连接。同时, 由于服务器的应答有一个延迟时间, 可以将延迟时间缩短从而减少对半连接握手状态的等待时间。
Syn cookie:与传统TCP连接不同,服务器再接收到TCP SYN包并返回TCP SYN + ACK包时,并不需要对接下来可能收到的数据包进行资源的预留而是根据这个SYN包计算出一个cookie值。这个cookie作为将要返回的SYN ACK包的初始序列号。当客户端返回一个ACK包时,根据包头信息计算cookie,与返回的确认序列号进行对比,如果相同,则是一个正常连接,然后,分配资源,建立连接。
Cookie具体计算过程参考百度。
0x4 结语
一时兴起,随笔及写,难堪大作,不知所云。文章来源:https://www.toymoban.com/news/detail-441121.html
文章来源地址https://www.toymoban.com/news/detail-441121.html
到了这里,关于DoS攻击之Syn洪泛攻击原理及防御的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!