1、毕业设计DDOS攻击防范技术研究DDOS攻击防范技术研究02级信息安全1班 林飞 指导老师:冷鸿摘要 DDOS是目前最难防御的网络攻击之一,它可以瞬间使被攻击的网络丧失正常的服务功能,本文通过此研究,力求使更多的网民认识其危害,加强网络防范意识,降低受害率,更进一步保证国家信息安全。关键词 DDOS攻击、DDOS攻击防范、研究ABSTRACT KEY WORDS 目录1.前 言 42.DDOS攻击概述 42.1 DOS攻击概述 42.2 DDOS攻击概述 53.DDOS攻击的表现形式和攻击方式 63.1 DDOS表现形式 63.2 DDOS攻击方式 63.2.1 SYN/ACK Flood攻击
2、 63.2.2 TCP全连接攻击 73.2.3 刷Script脚本攻击 74.DDOS攻击的监测 84.1 流量攻击的检测 84.2 资源耗尽攻击的检测 84.3 攻击检测 84.3.1 根据异常情况分析 94.3.2使用DDOS检测工具 95.DDOS攻击使用的常用工具 95.1 Trinoo 95.2 TFN 105.3 TFN2K 105.4 Stacheldraht 106.DDOS攻击的实例分析 106.1搜集了解目标的情况 106.2占领傀儡机 116.3 实际攻击 126.4 SYN Flood实例分析 147.DDOS攻击防范策略 177.1 采用高性能的网络设备 177.2
3、尽量避免NAT的使用 177.3 充足的网络带宽保证 177.4 升级主机服务器硬件 187.5 把网站做成静态页面 187.6 增强操作系统的TCP/IP栈 187.7 安装专业抗DDOS防火墙 187.8 其他防御措施 198.结论 19致谢 19参考文献 201.前 言DDOS攻击可以瞬间破坏正常的网络服务,自出现DDOS攻击以来,国内外都非常重视,陆续出现了一些防DDOS攻击的软硬件设备,如天网防洪堤等,随着对DDOS攻击的深入研究,防御的手段将会越来越多,技术将会越来越强大,但是目前国内外还没有一种技术或者产品可以彻底防御DDOS攻击。本文通过对DDOS攻击的深入了解和分析,进而找出
4、一种防御DDOS攻击的最优化的方法,进一步使更多的网民认识其危害,加强网络防范意识,降低受害率,保证网络服务正常运作,减少国家经济损失。2.DDOS攻击概述2.1 DOS攻击概述在了解DDOS之前,首先我们来看看DOS,DOS的英文全称是Denial of Service,也就是“拒绝服务”的意思。从网络攻击的各种方法和所产生的破坏情况来看,DOS算是一种很简单但又很有效的进攻方式。它的目的就是拒绝你的服务访问,破坏组织的正常运行,最终它会使你的部分Internet连接和网络系统失效。DOS的攻击方式有很多种,最基本的DOS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到
5、服务。DOS攻击的原理如图1所示。图1 DOS攻击原理从图1我们可以看出DOS攻击的基本过程:首先攻击者向服务器发送众多的带有虚假地址的请求,服务器发送回复信息后等待回传信息,由于地址是伪造的,所以服务器一直等不到回传的消息,分配给这次请求的资源就始终没有被释放。当服务器等待一定的时间后,连接会因超时而被切断,攻击者会再度传送新的一批请求,在这种反复发送伪地址请求的情况下,服务器资源最终会被耗尽。2.2 DDOS攻击概述DDOS(分布式拒绝服务),它的英文全称为Distributed Denial of Service,它是一种基于DOS的特殊形式的拒绝服务攻击,是一种分布、协作的大规模攻击方
6、式,主要瞄准比较大的站点,像商业公司,搜索引擎和政府部门的站点。从图1我们可以看出DOS攻击只要一台单机和一个modem就可实现,与之不同的是DDOS攻击是利用一批受控制的机器向一台机器发起攻击,这样来势迅猛的攻击令人难以防备,因此具有较大的破坏性。DDOS的攻击原理如图2所示。图2 DDOS攻击原理从图2可以看出,DDOS攻击分为3层:攻击者、主控端、代理端,三者在攻击中扮演着不同的角色。1、攻击者:攻击者所用的计算机是攻击主控台,可以是网络上的任何一台主机,甚至可以是一个活动的便携机。攻击者操纵整个攻击过程,它向主控端发送攻击命令。2、主控端:主控端是攻击者非法侵入并控制的一些主机,这些主
7、机还分别控制大量的代理主机。在主控端主机上安装了特定的程序,因此它们可以接受攻击者发来的特殊指令,并且可以把这些命令发送到代理主机上。3、代理端:代理端同样也是攻击者侵入并控制的一批主机,它们上面运行攻击器程序,接受和运行主控端发来的命令。代理端主机是攻击的执行者,真正向受害者主机发起攻击。攻击者发起DDOS攻击的第一步,就是寻找在Internet上有漏洞的主机,进入系统后在其上面安装后门程序,攻击者入侵的主机越多,他的攻击队伍就越壮大。第二步在入侵主机上安装攻击程序,其中一部分主机充当攻击的主控端,一部分主机充当攻击的代理端。最后各部分主机各施其职,在攻击者的调遣下对攻击对象发起攻击。由于攻
8、击者在幕后操纵,所以在攻击时不会受到监控系统的跟踪,身份不容易被发现。3.DDOS攻击的表现形式和攻击方式3.1 DDOS表现形式DDOS攻击的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或CPU被内核及应用程序占完而造成无法提供网络服务。3.2 DDOS攻击方式3.2.1 SYN/ACK Flood攻击这种攻击方法是经典最有效的DDOS方法,适用于各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的
9、SYN或ACK包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伪造的,所以追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机支持。少量的这种攻击会导致主机服务器无法访问,但却可以Ping通,在服务器上用Netstat -na命令会观察到存在大量的SYN_RECEIVED状态,大量的这种攻击会导致Ping失败、TCP/IP栈失效,并会出现系统凝固现象,即不响应键盘和鼠标。3.2.2 TCP全连接攻击这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过滤TearDrop、Land等DOS攻击的能力,但对于正常的TCP连接是放过的,殊不知很
10、多网络服务程序(如:IIS、Apache等Web服务器)能接受的TCP连接数是有限的,一旦有大量的TCP连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的TCP连接,直到服务器的内存等资源被耗尽而被拖跨,从而造成拒绝服务,这种攻击的特点是可绕过一般防火墙的防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的IP是暴露的,因此容易被追踪。3.2.3 刷Script脚本攻击这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,并调用MSSQLServer、MySQLServer、Oracle等数据库的网站
11、系统而设计的,特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。一般来说,提交一个GET或POST指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是很大的,常见的数据库服务器很少能支持数百个查询指令同时执行,而这对于客户端来说却是轻而易举的,因此攻击者只需通过Proxy代理向主机服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而导致拒绝服务,常见的现象就是网站慢如蜗牛、ASP程序失效、PHP连接数据库失败、数据库主程序占用CPU偏高。
12、这种攻击的特点是可以完全绕过普通的防火墙防护,轻松找一些Proxy代理就可实施攻击,缺点是对付只有静态页面的网站效果会大打折扣,并且有些Proxy会暴露攻击者的IP地址。4.DDOS攻击的监测4.1 流量攻击的检测对于流量攻击,可通过Ping命令来测试,若发现Ping超时或丢包严重(假定平时是正常的),则可能遭受了流量攻击,此时若发现和你的主机接在同一交换机上的服务器也访问不了了,基本可以确定是遭受了流量攻击。当然,这样测试的前提是你到服务器主机之间的ICMP协议没有被路由器和防火墙等设备屏蔽,否则可采取Telnet主机服务器的网络服务端口来测试,效果是一样的。不过有一点可以肯定,假如平时Pi
13、ng你的主机服务器和接在同一交换机上的主机服务器都是正常的,突然都Ping不通了或者是严重丢包,那么假如可以排除网络故障因素的话则肯定是遭受了流量攻击,再一个流量攻击的典型现象是,一旦遭受流量攻击,会发现用远程终端连接网站服务器会失败。4.2 资源耗尽攻击的检测对于资源耗尽攻击,我们假设平时Ping网站主机和访问网站都是正常的,发现突然网站访问非常缓慢或无法访问了,而Ping还可以Ping通,则很可能遭受了资源耗尽攻击,此时若在服务器上用Netstat -na命令观察到有大量的SYN_RECEIVED、TIME_WAIT、FIN_WAIT_1等状态存在,而ESTABLISHED很少,则可判定肯
14、定是遭受了资源耗尽攻击。还有一种现象,Ping自己的网站主机Ping不通或者是丢包严重,而Ping与自己的主机在同一交换机上的服务器则正常,造成这种原因是网站主机遭受攻击后导致系统内核或某些应用程序CPU利用率达到100%无法回应Ping命令,其实带宽还是有的,否则就Ping不通接在同一交换机上的主机了。4.3 攻击检测4.3.1 根据异常情况分析当网络的通讯量突然急剧增长,超过平常的极限值时,此时一定要提高警惕,检测此时的通讯;当网站的某一特定服务总是失败时,也要多加注意;当发现有特大型的ICP和UDP数据包通过或数据包内容可疑时都要留神。总之,当主机出现异常情况时,你最好分析这些情况,防患
15、于未然。4.3.2使用DDOS检测工具当攻击者想使其攻击阴谋得逞时,他们首先要扫描系统漏洞,我们可以利用一些网络入侵检测系统,可以杜绝攻击者的扫描行为。另外,一些扫描器工具甚至可以发现攻击者植入系统的代理程序,并可以把它从系统中删除。5.DDOS攻击使用的常用工具 DDOS攻击实施起来有一定的难度,它要求攻击者必须具备入侵他人计算机的能力。但是很不幸的是一些傻瓜式的黑客程序的出现,这些程序可以在几秒钟内完成入侵和攻击程序的安装,使发动DDOS攻击变成一件轻而易举的事情。5.1 TrinooTrinoo的攻击方法是向被攻击目标主机的随机端口发出全零的4字节UDP包,在处理这些超出其处理能力的垃圾
16、数据包的过程中,被攻击主机的网络性能不断下降,直到不能提供正常服务,乃至崩溃。它对IP地址不做假,采用的通讯端口是:攻击者主机到主控端主机:27665/TCP主控端主机到代理端主机:27444/UDP代理端主机到主服务器主机:31335/UDP5.2 TFNTFN由主控端程序和代理端程序两部分组成,它主要采取的攻击方法为:SYN风暴、Ping风暴、UDP炸弹和SMURF,具有伪造数据包的能力。5.3 TFN2KTFN2K是由TFN发展而来的,在TFN所具有的特性上,TFN2K又新增一些特性,它的主控端和代理端的网络通讯是经过加密的,中间还可能混杂了许多虚假数据包,而TFN对ICMP的通讯没有加
17、密。攻击方法增加了Mix和Targa3。并且TFN2K可配置的代理端进程端口。5.4 StacheldrahtStacheldraht也是从TFN派生出来的,因此它具有TFN的特性。此外它增加了主控端与代理端的加密通讯能力,它对命令源作假,可以防范一些路由器的RFC2267过滤。Stacheldrah中有一个内嵌的代理升级模块,可以自动下载并安装最新的代理程序。6.DDOS攻击的实例分析6.1搜集了解目标的情况下列情况是黑客非常关心的情报:被攻击目标主机数目、地址情况 目标主机的配置、性能 目标的带宽对于DDOS攻击者来说,攻击互联网上的某个站点,如http:/www.WWW.com,有一个重
18、点就是确定到底有多少台主机在支持这个站点,一个大的网站可能有很多台主机利用负载均衡技术提供同一个网站的www服务。假设以下地址向http:/www.WWW.com提供服务: 66.218.71.8766.218.71.8866.218.71.8966.218.71.8066.218.71.8166.218.71.8366.218.71.8466.218.71.86 如果要进行DDOS攻击的话,应该攻击哪一个地址呢?使66.218.71.87这台机器瘫掉,但其他的主机还是能向外提供www服务,所以想让别人访问不到http:/www.WWW.com的话,要所有这些IP地址的机器都瘫掉才行。在实际的
19、应用中,一个IP地址往往还代表着数台机器:网站维护者使用了四层或七层交换机来做负载均衡,把对一个IP地址的访问以特定的算法分配到下属的每个主机上去。这时对于DDOS攻击者来说情况就更复杂了,他面对的任务可能是让几十台主机的服务都不正常。 所以说事先搜集情报对DDOS攻击者来说是非常重要的,这关系到使用多少台傀儡机才能达到效果的问题。简单地考虑一下,在相同的条件下,攻击同一站点的2台主机需要2台傀儡机的话,攻击5台主机可能就需要5台以上的傀儡机。有人说做攻击的傀儡机越多越好,不管你有多少台主机我都用尽量多的傀儡机来攻就是了,反正傀儡机超过了时候效果更好。但在实际过程中,有很多黑客并不进行情报的搜
20、集而直接进行DDOS的攻击,这时候攻击的盲目性就很大了,效果如何也要靠运气。其实做黑客也像网管员一样,是不能偷懒的。一件事做得好与坏,态度最重要,水平还在其次。 6.2占领傀儡机黑客最感兴趣的是有下列情况的主机: 链路状态好的主机 性能好的主机 安全管理水平差的主机这一部分实际上是使用了另一大类的攻击手段:利用形攻击。这是和DDOS并列的攻击方式。简单地说,就是占领和控制被攻击的主机:取得最高的管理权限,或者至少得到一个有权限完成DDOS攻击任务的帐号。对于一个DDOS攻击者来说,准备好一定数量的傀儡机是一个必要的条件,下面说一下他是如何攻击并占领它们的。 首先,黑客做的工作一般是扫描,随机地
21、或者是有针对性地利用扫描器去发现互联网上那些有漏洞的机器,像程序的溢出漏洞、cgi、Unicode、ftp、数据库漏洞,都是黑客希望看到的扫描结果,其次就是尝试入侵了。假设黑客现在占领了一台傀儡机,他会把DDOS攻击用的程序上载过去,一般是利用ftp。在攻击机上,会有一个DDOS的发包程序,黑客就是利用它来向受害目标发送恶意攻击包的。 6.3 实际攻击经过前2个阶段的精心准备之后,黑客就开始瞄准目标准备攻击了。前面的准备做得好的话,实际攻击过程反而是比较简单的。就像图3所示,黑客登录到做为控制台的傀儡机,向所有的攻击机发出命令:预备 ,瞄准,开火!。这时候埋伏在攻击机中的DDOS攻击程序就会响
22、应控制台的命令,一起向受害主机以高速度发送大量的数据包,导致它死机或是无法响应正常的请求。黑客一般会以远远超出受害方处理能力的速度进行攻击,绝对不会手软。一些攻击者还会一边攻击,一边用各种手段来监视攻击的效果,在需要的时候进行一些调整。简单些就是开个窗口不断地ping目标主机,在能接到回应的时候就再加大一些流量或是再命令更多的傀儡机来加入攻击。 下面我们以SYN-Flood为例体验DDOS攻击的整个过程。SYN-Flood是目前最流行的DDOS攻击手段,早期的DOS的手段在向分布式这一阶段发展的时候也经历了浪里淘沙的过程。SYN-Flood的攻击效果最好,应该是多数黑客不约而同选择它的原因吧。
23、那么我们一起来看看SYN-Flood的详细情况。SYN Flood利用了TCP/IP协议的固有漏洞。面向连接的TCP三次握手是SYN Flood存在的基础。 图4 TCP三次握手如图4,在第一步中,客户端向服务端提出连接请求,这时TCP分段(SYN标志置位),客户端告诉服务端序列号区域合法,需要检查,客户端在TCP报头的序列号区中插入自己的ISN。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),加上确认收到客户端的第一个TCP分段(ACK标志置位)发给客户端。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传
24、输过程。 图5 SYN Flood恶意地不完成三次握手假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源数以万计的半连接,即使是简单
25、的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而没时间处理客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称做:服务器端受到了SYN Flood攻击(SYN洪水攻击)。6.4 SYN Flood实例分析这一个局域网环境,只有一台攻击机(P4 2.4G/256M DDR)pc01,被攻击的是一台(P4 2.0/256 M DDR)pc02的主
26、机,网络设备是Cisco的百兆交换机。这是在攻击还没有进行之前,在pc02上进行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 b
27、ytes ? - (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes192.168.0.66 - 192.168.0.255 NBT Datagram Service Type=17 Source=GU0192.168.0.210 - 192.168.0.255 NBT Datagram Service Type=17 Source=ROOTDC20192.168.0.247 - 192.168.0.255 NBT Datagram Service Type=17 Source=TSC0 ? - (broadcast) ETHER
28、Type=886F (Unknown), size = 1510 bytes192.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 bytes192.168.0.66 - 192.168.0.255 NBT Datagram Service Type=17 Source=GU01
29、92.168.0.66 - 192.168.0.255 NBT Datagram Service Type=17 Source=GU0192.168.0.210 - 192.168.0.255 NBT Datagram Service Type=17 Source=ROOTDC20 ? - (multicast) ETHER Type=0000 (LLC/802.3), size = 52 bytes ? - (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes ? - (broadcast) ETHER Type=886F (Unk
30、nown), size = 1510 bytes接着,攻击机开始发包,DDOS开始了,突然间pc02主机上的snoop窗口开始飞速地翻屏,显示出接到数量巨大的SYN请求。这是在SYN Flood攻击时的snoop输出结果:127.0.0.178 - AUTH C port=1352 127.0.0.178 - TCP D=114 S=1352 SYN Seq=674711609 Len=0 Win=65535127.0.0.178 - TCP D=115 S=1352 SYN Seq=674711609 Len=0 Win=65535127.0.0.178 - UUCP-PATH C port
31、=1352 127.0.0.178 - TCP D=118 S=1352 SYN Seq=674711609 Len=0 Win=65535127.0.0.178 - NNTP C port=1352 127.0.0.178 - TCP D=121 S=1352 SYN Seq=674711609 Len=0 Win=65535127.0.0.178 - TCP D=122 S=1352 SYN Seq=674711609 Len=0 Win=65535127.0.0.178 - TCP D=124 S=1352 SYN Seq=674711609 Len=0 Win=65535127.0.0.178 - TCP D=125
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1