下载本文示例代码
推荐:应用程序安全的魔道之争 声明:本文所提供的资料仅仅限于技术交流和学习,请不要用于其他非法目的,维护网络安全是我们的共同责任。 下载本文源代码和例程 一、 什么是洪水攻击 洪水之猛、势不可挡。如果将洪水比作对计算机的攻击,那大家可以想象得出,攻击是多的猛烈。 在安全领域所指的洪水攻击是指向目标机器发送大量无用的数据包,使得目标机器忙于处理这些无用的数据包,而无法处理正常的数据包。在攻击过程中,目标机器的CPU的使用率将高于正常值,有时甚至会达到100%。这样将使目标机器的性能急剧下降。这有些象我们在日常生活中的电话,如果要使某个电话瘫痪,就不停地拨这个电话的号码,那么其它的电话就无法拨通这个电话,当然,要想不接到骚扰电话,唯一的方法是将电话线拔了。同样,要想计算机完全避免洪水攻击的唯一方法,就是不让这台计算机上网,更直接的就是将网线拔了。 二、 洪水攻击的原理 洪水攻击也称为拒绝服务攻击。可以有很多种方式进行这种攻击,本文主要讨论比较常用的利用TCP三次握手的漏洞来耗尽计算机资源的方式来进行攻击。 那么什么是TCP的三次握手呢?其实原理很简单。这要从TCP的连接过程说起。我们一般使用Socket API来进行TCP连接。要做的只是将IP或计算机名以及端口号传入connect函数,如果参数正确,目标机器的服务可用的话,这个TCP连接就会成功。之所以连接这么方便,是因为Socket API已经将一些底层的操作隐藏了起来。那么这里面究竟发生了什么呢? 我们由网络7层可知,在TCP所在的传输层下面是网络层,在这一层最有代表性的协议就是IP协议。而TCP数据包就是通过IP协议传输的。这就是我们为什么经常说TCP/IP协议的缘故。TCP在底层的连接并不是这么简单。在真正建立连接之前,必须先通过ICMP(Internet Control Message Protcol)协议对连接进行验证。那么如何验证呢? 假设有两台机器A和B。A使用TCP协议连接B,在建立连接之前,A先发一个ICMP报文(就是一个数据包)给B,B在接收到这个数据包后,利用ICMP报文中的源地址(也就是A的IP)再给A发一个ICMP报文,A在接到这个ICMP报文后,又给B发了一个ICMP报文,B如果成功接到这个报文后,就正式和A建立TCP连接。过程示意如图1所示:
图1 TCP连接的三次握手 问题就出在第二次握手上。如果是ICMP的报文的话,ICMP的源地址应该是A的IP,但如果是一个非法的ICMP报文的话,ICMP的源地址可能并不是A的IP,也许就是一个并不存在的IP。如果是这样,那在第二次握手时,B也就无法找到A了,这当然就不可能发生第三次握手。因为,B找不到A,而A又迟迟得不到B的回信,这样TCP就无法连接。但攻击者的目的并不是要建立TCP连接,而是要耗尽B的资源。由于B找不到A,B也就无法得到A的回信,如果这种情况发生,B并不会将在第一次握手中建立的资源马上释放,而会有一个超时,假设这个时间是10秒。如果A在这10秒内向B发送10000个这样的连接数据包,就意味着B要维护这10000个连接资源。如果过了10秒,B释放了这些资源,A在下一个10称还会发10000个连接包。如果A不断地发这样数据包,就意味着B将永远要维护这10000个连接,因此,B的CPU和内存将被耗尽,至少也得被占用大部分。所以B就无法响应其它机器的请求,或者是响应迟缓。第1页:什么是洪水攻击
第2页:洪水攻击的实现
第3页:初始化Raw Socket
推荐:应用程序安全的魔道之争 声明:本文所提供的资料仅仅限于技术交流和学习,请不要用于其他非法目的,维护网络安全是我们的共同责任。 下载本文源代码和例程 一、 什么是洪水攻击 洪水之猛、势不可挡。如果将洪水比作对计算机的攻击,那大家可以想象得出,攻击是多的猛烈。 在安全领域所指的洪水攻击是指向目标机器发送大量无用的数据包,使得目标机器忙于处理这些无用的数据包,而无法处理正常的数据包。在攻击过程中,目标机器的CPU的使用率将高于正常值,有时甚至会达到100%。这样将使目标机器的性能急剧下降。这有些象我们在日常生活中的电话,如果要使某个电话瘫痪,就不停地拨这个电话的号码,那么其它的电话就无法拨通这个电话,当然,要想不接到骚扰电话,唯一的方法是将电话线拔了。同样,要想计算机完全避免洪水攻击的唯一方法,就是不让这台计算机上网,更直接的就是将网线拔了。 二、 洪水攻击的原理 洪水攻击也称为拒绝服务攻击。可以有很多种方式进行这种攻击,本文主要讨论比较常用的利用TCP三次握手的漏洞来耗尽计算机资源的方式来进行攻击。 那么什么是TCP的三次握手呢?其实原理很简单。这要从TCP的连接过程说起。我们一般使用Socket API来进行TCP连接。要做的只是将IP或计算机名以及端口号传入connect函数,如果参数正确,目标机器的服务可用的话,这个TCP连接就会成功。之所以连接这么方便,是因为Socket API已经将一些底层的操作隐藏了起来。那么这里面究竟发生了什么呢? 我们由网络7层可知,在TCP所在的传输层下面是网络层,在这一层最有代表性的协议就是IP协议。而TCP数据包就是通过IP协议传输的。这就是我们为什么经常说TCP/IP协议的缘故。TCP在底层的连接并不是这么简单。在真正建立连接之前,必须先通过ICMP(Internet Control Message Protcol)协议对连接进行验证。那么如何验证呢? 假设有两台机器A和B。A使用TCP协议连接B,在建立连接之前,A先发一个ICMP报文(就是一个数据包)给B,B在接收到这个数据包后,利用ICMP报文中的源地址(也就是A的IP)再给A发一个ICMP报文,A在接到这个ICMP报文后,又给B发了一个ICMP报文,B如果成功接到这个报文后,就正式和A建立TCP连接。过程示意如图1所示:
图1 TCP连接的三次握手 问题就出在第二次握手上。如果是ICMP的报文的话,ICMP的源地址应该是A的IP,但如果是一个非法的ICMP报文的话,ICMP的源地址可能并不是A的IP,也许就是一个并不存在的IP。如果是这样,那在第二次握手时,B也就无法找到A了,这当然就不可能发生第三次握手。因为,B找不到A,而A又迟迟得不到B的回信,这样TCP就无法连接。但攻击者的目的并不是要建立TCP连接,而是要耗尽B的资源。由于B找不到A,B也就无法得到A的回信,如果这种情况发生,B并不会将在第一次握手中建立的资源马上释放,而会有一个超时,假设这个时间是10秒。如果A在这10秒内向B发送10000个这样的连接数据包,就意味着B要维护这10000个连接资源。如果过了10秒,B释放了这些资源,A在下一个10称还会发10000个连接包。如果A不断地发这样数据包,就意味着B将永远要维护这10000个连接,因此,B的CPU和内存将被耗尽,至少也得被占用大部分。所以B就无法响应其它机器的请求,或者是响应迟缓。第1页:什么是洪水攻击
第2页:洪水攻击的实现
第3页:初始化Raw Socket
下载本文示例代码
洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)洪水攻击原理及代码实现全攻略(附源代码)
阅读(407) | 评论(0) | 转发(0) |