拒绝服务攻击Word格式文档下载.docx
《拒绝服务攻击Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《拒绝服务攻击Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
(3)表现方式
无论是DoS攻击还是DDoS攻击,简单的看,都只是一种破坏网络服务的黑客方式,虽然具体的实现方式千变万化,但都有一个共同点,就是其根本目的是使受害主机或网络无法及时接收并处理外界请求,或无法及时回应外界请求。
其具体表现方式有以下几种:
1,制造大流量无用数据,造成通往被攻击主机的网络拥塞,使被攻击主机无法正常和外界通信。
2,利用被攻击主机提供服务或传输协议上处理重复连接的缺陷,反复高频的发出攻击性的重复服务请求,使被攻击主机无法及时处理其它正常的请求。
3,利用被攻击主机所提供服务程序或传输协议的本身实现缺陷,反复发送畸形的攻击数据引发系统错误的分配大量系统资源,使主机处于挂起状态甚至死机。
(4)攻击流程
要理解dos攻击,首先要理解TCP连接的三次握手过程(Three-wayhandshake)。
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
[1]
第一次握手:
建立连接时,客户端发送SYN包((SYN=i)到服务器,并进入SYNSEND状态,等待服务器确认;
第二次握手:
服务器收到SYN包,必须确认客户的SYN(ACK=i+1),同时自己也发送一个SYN包((SYN=j)}即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:
客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=j+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据。
上述名词概念:
半连接:
收到SYN包而还未收到ACK包时的连接状态称为半连接,即尚未完全完成三次握手的TCP连接。
半连接队列:
在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包(SYN=i)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。
这些条目所标识的连接在服务器处于SYN_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
Backlog参数:
表示半连接队列的最大容纳数目。
SYN-ACK重传次数:
服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息、从半连接队列中删除。
注意,每次重传等待的时间不一定相同。
半连接存活时间:
是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。
有时也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
上面三个参数对系统的TCP连接状况有很大影响。
二、攻击手段
拒绝服务攻击是一种对网络危害巨大的恶意攻击。
今天,DoS具有代表性的攻击手段包括PingofDeath、TearDrop、UDPflood、SYNflood、LandAttack、IPSpoofingDoS等。
2.1死亡之ping
最简单的基于IP的攻击可能要数著名的死亡之ping,这种攻击主要是由于单个包的长度超过了IP协议规范所规定的包长度。
产生这样的包很容易,事实上,许多操作系统都提供了称为ping的网络工具。
在为Windows操作系统中开一个DOS窗口,输入ping-l65500目标ip-t(65500表示数据长度上限,-t表示不停地ping目标地址)就可达到该目的。
UNIX系统也有类似情况。
死亡之ping是如何工作的呢?
首先是因为以太网长度有限,IP包片段被分片。
当一个IP包的长度超过以太网帧的最大尺寸(以太网头部和尾部除外)时,包就会被分片,作为多个帧来发送。
接收端的机器提取各个分片,并重组为一个完整的IP包。
在正常情况下,IP头包含整个IP包的长度。
当一个IP包被分片以后,头只包含各个分片的长度。
分片并不包含整个IP包的长度信息,因此IP包一旦被分片,重组后的整个IP包的总长度只有在所在分片都接受完毕之后才能确定。
在IP协议规范中规定了一个IP包的最大尺寸,而大多数的包处理程序又假设包的长度超过这个最大尺寸这种情况是不会出现的。
因此,包的重组代码所分配的内存区域也最大不超过这个最大尺寸。
这样,超大的包一旦出现,包当中的额外数据就会被写入其他正常区域。
这很容易导致系统进入非稳定状态,是一种典型的缓存溢出(BufferOverflow)攻击。
在防火墙一级对这种攻击进行检测是相当难的,因为每个分片包看起来都很正常。
由于使用ping工具很容易完成这种攻击,以至于它也成了这种攻击的首选武器,这也是这种攻击名字的由来。
当然,还有很多程序都可以做到这一点,因此仅仅阻塞ping的使用并不能完全解决这个漏洞。
预防死亡之ping的最好方法是对操作系统打补丁,使内核将不再对超过规定长度的包进行重组。
2.2泪滴
泪滴攻击(TearDrop)指的是向目标机器发送损坏的IP包,诸如重做的包或过大的包载荷。
借由这些手段,该攻击可以通过TCP/IP协议栈中分片重组代码中的bug来瘫痪各种不同的操作系统
定义:
泪滴攻击是拒绝服务攻击的一种。
泪滴是一个特殊构造的应用程序,通过发送伪造的相互重叠的IP分组数据包,使其难以被接收主机重新组合。
他们通常会导致目标主机内核失措。
泪滴攻击利用IP分组数据包重叠造成TCP/IP分片重组代码不能恰当处理IP包。
泪滴攻击不被认为是一个严重的DOS攻击,不会对主机系统造成重大损失。
在大多数情况下,一次简单的重新启动是最好的解决办法,但重新启动操作系统可能导致正在运行的应用程序中未保存的数据丢失。
2.3UDP泛洪
UDP攻击,又称UDP洪水攻击或UDP淹没攻击(英文:
UDPFloodAttack)是导致基於主机的服务拒绝攻击的一种。
UDP是一种无连接的协议,而且它不需要用任何程序建立连接来传输数据。
当攻击者随机地向受害系统的端口发送UDP数据包的时候,就可能发生了UDP淹没攻击。
UDP是UserDatagramProtocol的简称,中文名是用户
数据包协议,是OSI参考模型中一种无连接的
传输层协议,提供面向事务的简单不可靠信息传送服务。
它是IETFRFC768是UDP的正式规范。
当受害系统接收到一个UDP数据包的时候,它会确定目的端口正在等待中的
应用程序。
当它发现该端口中并不存在正在等待的应用程序,它就会产生一个目的地址无法连接的
ICMP数据包发送给该伪造的源地址。
如果向受害者计算机端口发送了足够多的UDP数据包的时候,整个系统就会瘫痪。
2.4SYNFLOOD
TCPSYN泛洪发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。
攻击者发送TCPSYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。
这样更加会浪费服务器的资源。
攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。
大家都知道一个TCP连接的启动需要经历三次握手的过程。
正常情况下客户端首先向服务端发送SYN报文,随后服务端回以SYN+ACK报文到达客户端,最后客户端向服务端发送ACK报文完成三次握手,后续就是上层业务数据交互,直到某一方断开连接。
那么假如在这“握手”的过程中,客户端程序因为莫名崩溃等原因,收到SYN+ACK报文后不再回以ACK,服务端将如何处置呢?
这时服务端会“优雅地”再等等,会不会是发送的包丢失了呢?
于是重新发送一遍SYN+ACK,再收不到来自客户端的ACK响应的话,就把这次连接丢弃掉。
这个过程大约会“优雅地”持续分钟级,这个持续时间被称作SYNtimeout时间。
如果只有个别这样的异常情况,目标服务端处理起来自是毫不费力;
可如果大量这样的情况出现,对服务端来说就不堪重负了。
这是为什么呢?
如果大量的握手请求涌向TCP服务端,而它们只发出SYN报文而不以ACK响应结束握手,服务端就要为这每一个请求都维持约一分多钟的连接去等待ACK,也就形成所谓的“半连接”。
维护这些半连接是需要消耗很多服务器的网络连接资源的。
如果短时间内这些资源几乎都被半连接占满,那么正常的业务请求在这期间就得不到服务,处于等待状态。
更进一步的,如果这些半连接的握手请求是恶意程序发出,并且持续不断,那么就会导致服务端较长时间内丧失服务功能——这就形成了DoS(DenialofService拒绝服务)攻击。
这种攻击方式就称为SYN泛洪(SYNflood)攻击。
由于正常的TCP三次握手中发出去多少SYN报文,就会收到多少SYN+ACK报文。
攻击方需要将这些消息丢弃,同时为了隐藏自己,于是需要大量伪造泛洪攻击的源地址,随机改成其它地址。
为达到SYN泛洪攻击的效果,这些伪造的源地址最好无法响应SYN+ACK,如这些源地址的主机根本不存在,或者被防火墙等网络设施拦截,等等。
对于SYN泛洪攻击的防范,优化主机系统设置是常用的手段。
如降低SYNtimeout时间,使得主机尽快释放半连接的占用;
又比如采用SYNcookie设置,如果短时间内连续收到某个IP的重复SYN请求,则认为受到了该IP的攻击,丢弃来自该IP的后续请求报文。
此外合理地采用防火墙等外部网络安全设施也可缓解SYN泛洪攻击。
2.5Land(LandAttack)攻击
land攻击是一种使用相同的源和目的主机和端口发送数据包到某台机器的攻击。
结果通常使存在漏洞的机器崩溃。
在Land攻击中,一个特别打造的SYN包中的源地址和目标地址都被设置成某一个服务器地址,这时将导致接受服务器向它自己的地址发送SYN一ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时掉。
对Land攻击反应不同,许多UNIX系统将崩溃,而WindowsNT会变的极其缓慢(大约持续五分钟)。
LAND攻击图示
2.6IP欺骗
IP地址欺骗是指行动产生的IP数据包为伪造的源IP地址,以便冒充其他系统或发件人的身份。
这是一种黑客的攻击形式,黑客使用一台计算机上网,而借用另外一台机器的IP地址,从而冒充另外一台机器与服务器打交道。
指行动产生的IP数据包为伪造的源IP地址,以便冒充其他系统或发件人的身份。
这是一种骇客的攻击形式,骇客使用一台计算机上网,而借用另外一台机器的IP地址,从而冒充另外一台机器与服务器打交道。
防火墙可以识别这种ip欺骗。
按照InternetProtocol(IP)网络互联协议,数据包头包含来源地和目的地信息。
而IP地址欺骗,就是通过伪造数据包包头,使显示的信息源不是实际的来源,就像这个数据包是从另一台计算机上发送的。
IP地址欺骗攻击示意图
应用方法
在网络安全领域,隐藏自己的一种手段就是IP欺骗——伪造自身的IP地址向目标系统发送恶意请求,造成目标系统受到攻击却无法确认攻击源,或者取得目标系统的信任以便获取机密信息。
这两个目的对应着两种场景:
场景一,常用于DDoS攻击(分布式拒绝攻击),在向目标系统发起的恶意攻击请求中,随机生成大批假冒源IP,如果目标防御较为薄弱,对收到的恶意请求也无法分析攻击源的真实性,从而达到攻击者隐藏自身的目的。
这类场景里一种很有意思的特殊情景来自于“反射”式DDoS攻击,它的特点来自于利用目标系统某种服务的协议缺陷,发起针对目标系统输入、输出的不对称性——向目标发起吞吐量相对较小的某种恶意请求,随后目标系统因其协议缺陷返回大量的响应,阻塞网络带宽、占用主机系统资源。
这时如果攻击者的请求使用真实源地址的话,势必要被巨大的响应所吞没,伤及自身。
这样,攻击者采取IP欺骗措施就势在必行了。
三、DDos攻击
分布式拒绝服务(DDoS:
DistributedDenialofService)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。
通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。
代理程序收到指令时就发动攻击。
利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。
首先从一个比方来深入理解什么是DDOS。
一群恶霸试图让对面那家有着竞争关系的商铺无法正常营业,他们会采取什么手段呢?
(只为举例,切勿模仿)恶霸们扮作普通客户一直拥挤在对手的商铺,赖着不走,真正的购物者却无法进入;
或者总是和营业员有一搭没一搭的东扯西扯,让工作人员不能正常服务客户;
也可以为商铺的经营者提供虚假信息,商铺的上上下下忙成一团之后却发现都是一场空,最终跑了真正的大客户,损失惨重。
此外恶霸们完成这些坏事有时凭单干难以完成,需要叫上很多人一起。
嗯,网络安全领域中DoS和DDoS攻击就遵循着这些思路。
在信息安全的三要素——“保密性”、“完整性”和“可用性”中,DoS(DenialofService),即拒绝服务攻击,针对的目标正是“可用性”。
该攻击方式利用目标系统网络服务功能缺陷或者直接消耗其系统资源,使得该目标系统无法提供正常的服务。
DdoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。
单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存小或者网络带宽小等等各项指标不高的性能,它的效果是明显的。
随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度加大了-目标对恶意攻击包的"
消化能力"
加强了不少。
这时候分布式的拒绝服务攻击手段(DDoS)就应运而生了。
DDoS就是利用更多的傀儡机(肉鸡)来发起进攻,以比从前更大的规模来进攻受害者
分布式拒绝服务攻击体系结构
攻击方式
´
DDoS攻击通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。
这种攻击方式可分为以下几种:
通过使网络过载来干扰甚至阻断正常的网络通讯;
通过向服务器提交大量请求,使服务器超负荷;
阻断某一用户访问服务器;
阻断某服务与特定系统或个人的通讯。
四、实验过程
4.1实验所有工具
LOIC、udpflood、kkdos、自制ping攻击程序
4.2实验步骤
实验一
主机IP
虚拟机ip地址
虚拟机ping主机
发动攻击,速度选择倒数第二挡
数据包time时间变大,但是并不明显
最快,单位时间内发送包最多
主机ping虚拟机,攻击时所有请求超时,取消攻击,马上开始回包
实验二
udpflood攻击
采用的是基于udp协议的攻击方式
可以看出攻击的ip是192.168.1.113
通过whilesharp抓包可以看到有大量的udp包来自192.168.1.11
实验三
这个是我们同学自己写的ping攻击程序基于icmp协议给制定ip不断发送指定大小的ping造成网络堵塞
wireshark抓包得到的大量ping包
实验四
这个是基于tcp的synflood攻击效果不是很明显
发送大量synseq=0的数据包导致协议栈堵塞
成功达成拒绝服务,可以看出显示无资源