第6章拒绝服务攻击与防御技术张玉清国家计算机网络入侵防范中心2019/11/10网络入侵与防范讲义2本章内容安排6.1拒绝服务攻击概述6.2典型拒绝服务攻击技术6.3分布式拒绝服务攻击6.4拒绝服务攻击的防御6.5分布式拒绝服务攻击的防御6.6小结2019/11/10网络入侵与防范讲义36.1拒绝服务攻击概述6.1.1拒绝服务攻击的概念6.1.2拒绝服务攻击的类型2019/11/10网络入侵与防范讲义46.1.1拒绝服务攻击的概念拒绝服务(DenialofService,简称DoS),是一种简单的破坏性攻击,通常是利用传输协议中的某个弱点、系统存在的漏洞、或服务的漏洞,对目标系统发起大规模的进攻,用超出目标处理能力的海量数据包消耗可用系统资源、带宽资源等,或造成程序缓冲区溢出错误,致使其无法处理合法用户的正常请求,无法提供正常服务,最终致使网络服务瘫痪,甚至系统死机。简单的说,拒绝服务攻击就是让攻击目标瘫痪的一种“损人不利己”的攻击手段。2019/11/10网络入侵与防范讲义56.1.1拒绝服务攻击的概念历史上最著名的拒绝服务攻击服务恐怕要数Morris蠕虫事件,1988年11月,全球众多连在因特网上的计算机在数小时内无法正常工作,这次事件中遭受攻击的包括5个计算机中心和12个地区结点,连接着政府、大学、研究所和拥有政府合同的25万台计算机。这次病毒事件,使计算机系统直接经济损失达9600万美元。许多知名网站如Yahoo、eBay、CNN、百度、新浪等都曾遭受过DoS攻击。2019/11/10网络入侵与防范讲义66.1.1拒绝服务攻击的概念拒绝服务攻击可能是蓄意的,也可能是偶然的。当未被授权的用户过量使用资源时,攻击是蓄意的;当合法用户无意地操作而使得资源不可用时,则是偶然的。应该对两种拒绝服务攻击都采取预防措施。但是拒绝服务攻击问题也一直得不到合理的解决,究其原因是因为这是由于网络协议本身的安全缺陷造成的。2019/11/10网络入侵与防范讲义76.1.2拒绝服务攻击的类型最常见的DoS攻击是利用合理的服务请求来占用过多的服务资源,致使服务超载,无法响应其他的请求。这些服务资源包括网络带宽、文件系统空间容量、开放的进程、向内的连接等。这种攻击会导致资源的匮乏,无论计算机的处理速度多么快,内存容量多么大,互联网带宽多么大都无法避免这种攻击带来的后果。2019/11/10网络入侵与防范讲义86.1.2拒绝服务攻击的类型从实施DoS攻击所用的思路来看,DoS攻击可以分为:滥用合理的服务请求过度地请求系统的正常服务,占用过多服务资源,致使系统超载。这些服务资源通常包括网络带宽、文件系统空间容量、开放的进程或者连接数等制造高流量无用数据恶意地制造和发送大量各种随机无用的数据包,用这种高流量的无用数据占据网络带宽,造成网络拥塞利用传输协议缺陷构造畸形的数据包并发送,导致目标主机无法处理,出现错误或崩溃,而拒绝服务利用服务程序的漏洞针对主机上的服务程序的特定漏洞,发送一些有针对性的特殊格式的数据,导致服务处理错误而拒绝服务2019/11/10网络入侵与防范讲义96.1.2拒绝服务攻击的类型按漏洞利用方式分类,DoS攻击可以分为:特定资源消耗类主要利用TCP/IP协议栈、操作系统或应用程序设计上的缺陷,通过构造并发送特定类型的数据包,使目标系统的协议栈空间饱和、操作系统或应用程序资源耗尽或崩溃,从而达到DoS的目的。暴力攻击类依靠发送大量的数据包占据目标系统有限的网络带宽或应用程序处理能力来达到攻击的目的。通常暴力攻击需要比特定资源消耗攻击使用更大的数据流量才能达到目的。2019/11/10网络入侵与防范讲义106.1.2拒绝服务攻击的类型按攻击数据包发送速率变化方式,DoS攻击可分为:固定速率可变速率根据数据包发送速率变化模式,又可以分为震荡变化型和持续增加型。震荡变化型变速率发送方式间歇性地发送数据包,使入侵检测系统难以发现持续的异常。持续增加型变速率发送方式可以使攻击目标的性能缓慢下降,并可以误导基于学习的检测系统产生错误的检测规则。2019/11/10网络入侵与防范讲义116.1.2拒绝服务攻击的类型按攻击可能产生的影响,DoS攻击可以分为:系统或程序崩溃类根据可恢复的程度,系统或程序崩溃类又可以分为:自我恢复类、人工恢复类、不可恢复类等。自我恢复类是指当攻击停止后系统功能可自动恢复正常。人工恢复类是指系统或服务程序需要人工重新启动才能恢复。不可恢复类是指攻击给目标系统的硬件设备、文件系统等造成了不可修复性的损坏。服务降级类系统对外提供服务的服务下降2019/11/10网络入侵与防范讲义12典型案例:百度遭受大规模SYNFlooding攻击2006年9月12日下午,百度遭受有史以来最大规模的不明身份黑客攻击,导致百度搜索服务在全国各地出现了近30分钟的故障,黑客所使用的手段是SynFlooding分布式拒绝服务攻击。新华网报道:下页是新闻的部分截图。2019/11/10网络入侵与防范讲义132019/11/10网络入侵与防范讲义146.2典型拒绝服务攻击技术6.2.1PingofDeath6.2.2泪滴(Teardrop)6.2.3IP欺骗DoS攻击6.2.4UDP洪水6.2.5SYN洪水6.2.6Land攻击6.2.7Smurf攻击6.2.8Fraggle攻击6.2.9电子邮件炸弹6.2.10畸形消息攻击6.2.11Slashdoteffect6.2.12WinNuke攻击2019/11/10网络入侵与防范讲义156.2.1PingofDeathPing是一个非常著名的程序,这个程序的目的是为了测试另一台主机是否可达。现在所有的操作系统上几乎都有这个程序,它已经成为系统的一部分。Ping程序的目的是为了查看网络上的主机是否处于活动状态。通过发送一份ICMP回显请求报文给目的主机,并等待返回ICMP回显应答,根据回显应答的内容判断目的主机的状况。2019/11/10网络入侵与防范讲义166.2.1PingofDeathPing之所以会造成伤害是源于早期操作系统在处理ICMP协议数据包存在漏洞。ICMP协议的报文长度是固定的,大小为64KB,早期很多操作系统在接收ICMP数据报文的时候,只开辟64KB的缓存区用于存放接收到的数据包。一旦发送过来的ICMP数据包的实际尺寸超过64KB(65536B),操作系统将收到的数据报文向缓存区填写时,报文长度大于64KB,就会产生一个缓存溢出,结果将导致TCP/IP协议堆栈的崩溃,造成主机的重启动或是死机。2019/11/10网络入侵与防范讲义176.2.1PingofDeathPing程序有一个“-l”参数可指定发送数据包的尺寸,因此,使用Ping这个常用小程序就可以简单地实现这种攻击。例如通过这样一个命令:Ping-l65540192.168.1.140如果对方主机存在这样一个漏洞,就会形成一次拒绝服务攻击。这种攻击被称为“死亡之Ping”。2019/11/10网络入侵与防范讲义186.2.1PingofDeath现在的操作系统都已对这一漏洞进行了修补。对可发送的数据包大小进行了限制。在Windowsxpsp2操作系统中输入这样的命令:Ping-l65535192.168.1.140系统返回这样的信息:Badvalueforoption-l,validrangeisfrom0to65500.2019/11/10网络入侵与防范讲义196.2.1PingofDeathPingOfDeath攻击的攻击特征、检测方法和反攻击方法总结如下:攻击特征:该攻击数据包大于65535个字节。由于部分操作系统接收到长度大于65535字节的数据包时,就会造成内存溢出、系统崩溃、重启、内核失败等后果,从而达到攻击的目的。检测方法:判断数据包的大小是否大于65535个字节。反攻击方法:使用新的补丁程序,当收到大于65535个字节的数据包时,丢弃该数据包,并进行系统审计。2019/11/10网络入侵与防范讲义206.2.2泪滴(Teardrop)“泪滴”也被称为分片攻击,它是一种典型的利用TCP/IP协议的问题进行拒绝服务攻击的方式,由于第一个实现这种攻击的程序名称为Teardrop,所以这种攻击也被称为“泪滴”。2019/11/10网络入侵与防范讲义216.2.2泪滴(Teardrop)两台计算机在进行通信时,如果传输的数据量较大,无法在一个数据报文中传输完成,就会将数据拆分成多个分片,传送到目的计算机后再到堆栈中进行重组,这一过程称为“分片”。为了能在到达目标主机后进行数据重组,IP包的TCP首部中包含有信息(分片识别号、偏移量、数据长度、标志位)说明该分段是原数据的哪一段,这样,目标主机在收到数据后,就能根据首部中的信息将各分片重新组合还原为数据。2019/11/10网络入侵与防范讲义22例子PSH1:1025……PSH1000:2049……PSH2049:3073……132456PSH1:1025……PSH2049:3073……PSH1025:2049……PSH……ACK……试图重组时主机崩溃2019/11/10网络入侵与防范讲义23例子(2)如上图所示,从客户机向服务器发送一个数据报文无法发送完成的数据,这些数据会被分片发送。报文1、2、3是TCP连接的三次握手过程,接着4、5、6客户机向服务器发送三个报文,在这三个数据报文首部信息中,有每个报文的分片信息。2019/11/10网络入侵与防范讲义24例子(3)这就是报文重组的信息:PSH1:1025(1024)ack1,win4096PSH1025:2049(1024)ack1,win4096PSH2049:3073(1024)ack1,win4096在这个报文中,可以看到在第4、5、6这三个报文中,第4个发送的数据报文中是原数据的第1~1025字节内容,第5个发送的报文包含的是第1025~2048字节,第6个数据报文是第2049~3073个字节,接着后面是继续发送的分片和服务器的确认。当这些分片数据被发送到目标主机后,目标主机就能够根据报文中的信息将分片重组,还原出数据。2019/11/10网络入侵与防范讲义25例子(4)如果入侵者伪造数据报文,向服务器发送含有重叠偏移信息的分段包到目标主机,例如如下所列的分片信息:PSH1:1025(1024)ack1,win4096PSH1000:2049(1024)ack1,win4096PSH2049:3073(1024)ack1,win4096这样的信息被目的主机收到后,在堆栈中重组时,由于畸形分片的存在,会导致重组出错,这个错误并不仅仅是影响到重组的数据,由于协议重组算法,会导致内存错误,引起协议栈的崩溃。2019/11/10网络入侵与防范讲义266.2.2泪滴(teardrop)泪滴攻击的攻击特征、检测方法和反攻击方法总结如下:攻击特征:Teardrop工作原理是向被攻击者发送多个分片的IP包,某些操作系统收到含有重叠偏移的伪造分片数据包时将会出现系统崩溃、重启等现象。检测方法:对接收到的分片数据包进行分析,计算数据包的片偏移量(Offset)是否有误。反攻击方法:添加系统补丁程序,丢弃收到的病态分片数据包并对这种攻击进行审计。2019/11/10网络入侵与防范讲义276.2.3IP欺骗DoS攻击这种攻击利用RST位来实现。假设现在有一个合法用户(61.61.61.61)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为61.61.61.61,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为61.61.61.61发送的连接有错误,就会清空缓