对DDoS攻击实例之SYN Flood攻击的详细内容讲述

 此文章主要介绍的是DDoS攻击实例  SYN Flood攻击,我们大家都知道SYN-Flood是目前使用最广泛的DDoS攻击手段,早先的DoS的手段在向分布式这一阶段发展的时候也经历了千军万马过独木桥的过程。

SYN-Flood的攻击效果最好,应该是众黑客不约而同选择它的原因吧。那么我们一起来看看SYN-Flood的详细情况。

SYN-Flood是目前最流行的DDoS攻击手段,早先的DoS的手段在向分布式这一阶段发展的时候也经历了浪里淘沙的过程。SYN-Flood的攻击效果最好,应该是众黑客不约而同选择它的原因吧。那么我们一起来看看SYN-Flood的详细情况。

 

Syn Flood原理 - 三次握手

Syn Flood利用了TCP/IP协议的固有漏洞。面向连接的TCP三次握手是Syn Flood存在的基础。

TCP连接的三次握手

如图二,在第一步中,客户端向服务端提出连接请求。这时TCP SYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头的序列号区中插入自己的ISN。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。

Syn Flood攻击者不会完成三次握手

假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);

一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。

实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称做:服务器端受到了SYN Flood攻击(SYN洪水攻击)。

下面是我在实验室中模拟的一次Syn Flood攻击的实际过程

这一个局域网环境,只有一台攻击机(PIII667/128/mandrake),被攻击的是一台Solaris 8.0 (spark)的主机,网络设备是Cisco的百兆交换机。这是在攻击并未进行之前,在Solaris上进行snoop的记录,snoop与tcpdump等网络监听工具一样,也是一个很好的网络抓包与分析的工具。可以看到攻击之前,目标主机上接到的基本上都是一些普通的网络包。 …

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

? -> (multicast) ETHER Type=0000 (LLC/802.3), size = 52 bytes

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

192.168.0.66 -> 192.168.0.255 NBT Datagram Service Type=17 Source=GU[0]

192.168.0.210 -> 192.168.0.255 NBT Datagram Service Type=17 Source=ROOTDC[20]

192.168.0.247 -> 192.168.0.255 NBT Datagram Service Type=17 Source=TSC[0]

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

192.168.0.200 -> (broadcast) ARP C Who is 192.168.0.102, 192.168.0.102 ?

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

192.168.0.66 -> 192.168.0.255 NBT Datagram Service Type=17 Source=GU[0]

192.168.0.66 -> 192.168.0.255 NBT Datagram Service Type=17 Source=GU[0]

192.168.0.210 -> 192.168.0.255 NBT Datagram Service Type=17 Source=ROOTDC[20]

? -> (multicast) ETHER Type=0000 (LLC/802.3), size = 52 bytes

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

接着,攻击机开始发包,DDoS开始了…,突然间sun主机上的snoop窗口开始飞速地翻屏,显示出接到数量巨大的Syn请求。这时的屏幕就好象是时速300公里的列车上的一扇车窗。这是在Syn Flood攻击时的snoop输出结果: …

 

127.0.0.178 -> lab183.lab.net AUTH C port=1352

127.0.0.178 -> lab183.lab.net TCP D=114 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=115 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net UUCP-PATH C port=1352

127.0.0.178 -> lab183.lab.net TCP D=118 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net NNTP C port=1352

127.0.0.178 -> lab183.lab.net TCP D=121 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=122 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=124 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=125 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=126 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=128 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=130 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=131 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=133 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=135 S=1352 Syn Seq=674711609 Len=0 Win=65535

这时候内容完全不同了,再也收不到刚才那些正常的网络包,只有DDoS包。大家注意一下,这里所有的Syn Flood攻击包的源地址都是伪造的,给追查工作带来很大困难。这时在被攻击主机上积累了多少Syn的半连接呢?我们用netstat来看一下:

# netstat -an | grep SYN

192.168.0.183.9 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.13 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.19 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.21 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.22 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.23 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.25 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.37 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.53 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

其中SYN_RCVD表示当前未完成的TCP SYN队列,统计一下:

# netstat -an | grep SYN | wc -l

5273

# netstat -an | grep SYN | wc -l

5154

# netstat -an | grep SYN | wc -l

5267

…..

共有五千多个Syn的半连接存储在内存中。这时候被攻击机已经不能响应新的服务请求了,系统运行非常慢,也无法ping通。

上述的相关内容就是对对DDoS攻击实例之SYN Flood攻击的详细内容讲述的描述,希望会给你带来一些帮助在此方面。

文章转自 ddos教程 http://www.blddos.com/gonggao/2012/1016/9.html

 

时间: 2025-01-30 09:18:43

对DDoS攻击实例之SYN Flood攻击的详细内容讲述的相关文章

synflood源码-新手。想用java实现syn flood攻击。有没有大神有源代码了解下。

问题描述 新手.想用java实现syn flood攻击.有没有大神有源代码了解下. synflood求大神给源代码看看学习学习.这种编程不怎么会 解决方案 http://www.cs.colostate.edu/~massey/Teaching/cs356/RestrictedAccess/Projects/Project2.html 解决方案二: 主要是利用raw socket RockSaw Raw Socket Library for Javahttps://www.savarese.co

TCP洪水攻击(SYN Flood)的诊断和处理

TCP洪水攻击(SYN Flood)的诊断和处理 Posted by  海涛  on 2013 年 7 月 11 日 Tweet1 ​1. SYN Flood介绍 前段时间网站被攻击多次,其中最猛烈的就是TCP洪水攻击,即SYN Flood. SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,常用假冒的IP或IP号段发来海量的请求连接的第一个握手包(SYN包),被攻击服务器回应第二个握手包(

扯谈网络编程之Tcp SYN flood洪水攻击

简介 TCP协议要经过三次握手才能建立连接: (from wiki) 于是出现了对于握手过程进行的攻击.攻击者发送大量的SYN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+ACK)是否发送成功,默认情况下会重试5次(tcp_syn_retries).这样的话,对于服务器的内存,带宽都有很大的消耗.攻击者如果处于公网,可以伪造IP的话,对于服务器就很难根据IP来判断攻击者,给防护带来很大的困难. 攻与防 攻击者角度 从攻击者的角度来看,有两个地方可以

防火墙防止DDOS SYN Flood原理

DoS(Denial of Service拒绝服务)和DDoS(Distributed Denial of Service分布式拒绝服务)攻击是大型网站和网络服务器的安全威胁之一.2000年2月,Yahoo.亚马逊.CNN被攻击等事例,曾被刻在重大安全事件的历史中.SYN Flood由于其攻击效果好,已经成为目前最流行的DoS和DDoS攻击手段. SYN Flood利用TCP协议缺陷,发送了大量伪造的TCP连接请求,使得被攻击方资源耗尽,无法及时回应或处理正常的服务请求.一个正常的TCP连接需要

mysql-关于PHP-MYSQL注入攻击实例

问题描述 关于PHP-MYSQL注入攻击实例 请问能实例一个基于PHP MYSQL类的注入攻击吗? PHP VERSION 5.6.3 在尝试进行模拟注入攻击时失败.打印了SQL语句,直接复制脚本到Mysql Workbench是可以成功DROP掉数据库的,但是在本地运行的时候始终报语法错误,求问错误在哪里,如何实例化这样一次的攻击. error_reporting(E_ALL^E_NOTICE^E_WARNING^E_DEPRECATED); $data = $_GET['sql']; $da

Front page server溢出攻击实例 《转》

Front page server溢出攻击实例<<原创>>          下    载:http://www.nsfocus.com/proof/fpse2000ex.c 哈哈~大家好!!~(一上来就骂人??!)危卵~真实越来越"厉害"了,全一段时间的.printer硝烟未尽,现在又出来一个frontpage server fp30reg.dll溢出漏洞~不过便宜新手们了--(嘿嘿~!)关于该漏洞的资料看本站上面的公告!(Bytes~!废话好多!)     

php预防XSS攻击,ajax跨域攻击的方法

对网站发动XSS攻击的方式有很多种,仅仅使用php的一些内置过滤函数是对付不了的,即使你将filter_var,mysql_real_escape_string,htmlentities,htmlspecialchars,strip_tags这些函数都使用上了也不一定能保证绝对的安全. 现在有很多php开发框架都提供关于防XSS攻击的过滤方法,下面和大家分享一个预防XSS攻击和ajax跨域攻击的函数,摘自某开发框架,相比于仅仅使用内置函数应该还是够强了的吧. function xss_clean

SYN Flood DOS Attack with C Source Code

TCP/IP 3-way handshake is done to establish a connection between a client and a server. The process is : 1. Client –SYN Packet–> Server 2. Server –SYN/ACK Packet –> Client 3. Client –ACK Packet –> Server The above 3 steps are followed to establis

无人驾驶汽车或成黑客攻击目标 福特丰田遭攻击

无人驾驶汽车或成黑客攻击目标 福特丰田遭攻击1月29日,据businessinsider网站报道,高级安全专家埃迪·施瓦茨(Eddie Schwartz)最近警告称,无人驾驶汽车一旦上路,就必将成为黑客的攻击目标.施瓦茨表示,网络安全行业还远远没有成熟,21世纪的头50年仍将看到大量的黑客攻击事件.施瓦茨解释道:"所有的大型汽车公司都在研发无人驾驶汽车.对无人驾驶汽车而言,这些汽车必须能够相互交流安全事宜,因此这种汽车必须拥有识别功能.要想进行识别,就意味着这些无人驾驶汽车必须配置一些证书或类似