DoS/DDoS***与防范

一、实验目的

通过本实验对DoS/DDoS***的深入介绍和实验操作,了解DoS/DDoS***的原理和危害,并且具体掌握利用TCPUDPICMP等协议的DoS/DDoS***原理。了解针对DoS/DDoS***的防范措施和手段。

实验具体目的如下:

1.了解SYN-FLOOD***的原理、特点

2.了解UDP-FLOOD***的原理、特点

3.了解DDoS***的原理、特点

4.了解针对DoS/DDoS***的防御手段

二、实验准备

1.要求实验室内网络是连通的,组内每台计算机均可以访问另外一台计算机。

2.下载相关工具和软件包 

3.在计算机中安装相应的软件。

三、实验涉及到的相关软件下载:

a.wireshark这是一款网络封包分析软件,撷取网络封包,并尽可能显示出最为详细的网络封包资料。

b.SuperDDoS这是一款简单的SYN***器,能对设定好的目标发送大量非法的SYN数据包。

c.UDPFLOOD这是一款功能较为完善的UDP***器,可以设置***时间、***速度等,***方式是向目标机发送大量UDP数据包。

d.独裁者DDoS这是一款功能齐全的DDoS***器,除了能够联合肉鸡发动***,还具有控制***时间,启动信使服务等众多功能,并且有四种***方式可供选择。

e.Tomcat这是一款功能较为常用的服务器

f.java_jdk这是java运行环境,运行tomcat服务器必须安装jdk

四、实验原理

1DoS***:

DoSDenial of Service的简称,即拒绝服务,目的是使计算机或网络无法提供正常的服务。其***方式众多,常见的有SYN-FLOODUDP-FLOOD。 

2A.SYN-FLOOD***:

标准的TCP连接要经过三次握手的过程,首先客户端向服务器发送一个SYN消息,服务器收到SYN后,会向客户端返回一个SYN-ACK消息表示确认,当客户端受到SYN-ACK后,再向服务器发送一个ACK消息,这样就建立了一次TCP连接。

SYN-FLOOD则是利用TCP协议实现上的一个缺陷,SYN-FLOOD***器向服务器发送洪水一样大量的请求,当服务器受到SYN消息后,回送一个SYN-ACK消息,但是由于客户端SYN-FLOOD***器采用源地址欺骗等手段,即发送请求的源地址都是伪造的,所以服务器就无法受到客户端的ACK回应,这样一来,服务端会在一段时间内处于等待客户端ACK消息的状态,而对于每台服务器而言,可用的TCP连接队列空间是有限的,当SYN-FLOOD***器不断的发送大量的SYN请求包时,服务端的TCP连接队列就会被占满,从而使系统可用资源急剧减少,网络可用带宽迅速缩小,导致服务器无法为其他合法用户提供正常的服务。

3B.UDP-FLOOD***:

UDP-FLOOD***也是DDoS***的一种常见方式。UDP协议是一种无连接的服务,它不需要用某个程序建立连接来传输数据UDP-FLOOD***是通过开放的UDP端口针对相关的服务进行***。UDP-FLOOD***器会向被***主机发送大量伪造源地址的小UDP包,冲击DNS服务器或者Radius认证服务器、流媒体视频服务器,甚至导致整个网段瘫痪。

4DDoS***:

DDoSDistributed Denial of Service的简称,即分布式拒绝服务。DDoS***是在DoS***的基础上产生的,它不再像DoS那样采用一对一的***方式,而是利用控制的大量肉鸡共同发起***,肉鸡数量越多,***力越大。

一个严格和完善的DDoS***一般由四个部分组成:***端,控制端,代理端,受害者。 

五、实验步骤

实验内容一:SYN-FLOOD***演示和分析

1.本次实验需要两台网络连通,可以互相访问的计算机,分别记作AB。首先在AB上分别关闭防火墙和杀毒软件,并在A上启动Tomcat服务器(把A作为服务器)。

图一.Tomcat服务器启动

2. B上打开Supper DDoS,输入Aip和一个开放服务的端口,我这里因为Tomcat开放的端口是80,所以端口就填80,而Protocol(协议)默认是TCP,点击Attack

3.打开安装在A上的wireshark,在Options-->Capture Filter框中填入tcp,表明所要抓的包是tcp包,点击Start,开始抓包,并保存抓到的结果。

从这张在被***服务器上的抓包图中我们可以看到大量的TCP数据包,这些数据包的源IP是由Super DDoSIP欺诈等手段伪造的,这些IP实际是不存在的。我们还可以看出大量的SYN包没有ACK回应。

4. 打开A的命令行窗口输入netstat -an或者netstat -n -p tcp命令,可以看到有大量的ip和本机建立了SYN-RECEIVED状态的TCP二次握手连接,这些ip地址都是随机的,是Supper DDos伪造的。

大量IP与服务器停留在半连接状态,一旦这种连接数量超过服务器的半连接队列数,服务器的资源就会被耗竭,从而无法再处理其他合法用户的请求了。

实验内容二:防御和抵制SYN-FLOOD***的措施

1.根据SYNdrome-FLOOD***的原理可知SYN-FlOOD***效果取决于服务器上设置的SYN半连接数(半连接数=SYN***频度 * SYN Timeout),所以通过缩短从接收到SYN报文到确定这个报文无效并丢弃改连接的时间,会使得SYN半连接数减少(但是也不能把SYN Timeout设置得过低,这是为什么大家可以思考一下),从而降低服务器的负荷。

2.给每一个请求连接的IP地址分配一个Cookie,如果短时间内连续受到某个IP的重复SYN报文,就认定是受到了***,以后从这个IP地址来的包会被丢弃。

3.利用网关型防火墙,让客户机与服务器之间并没有真正的TCP连接,所有数据交换都是通过防火墙代理,外部的DNS解析也同样指向防火墙,使***转向防火墙,只要防火墙的性能足够高,就能抵挡相当强度的SYNFLOOD***。

1.本次实验需要两台网络连通并可以互相访问的电脑,记作AB,这里用的工具是UDP FLOOD***器。与SYN-FLOOD***一样,我们首先要关闭AB两台电脑的防火墙和杀毒软件,并且在A上打开Tomcat服务器。

2.然后我们在B上打开UDP FLOOD***器,在这个***器上填上AIP和一个开放的端口(可以通过在命令行下输入netstat -an查看开放的端口)。

这个***器可以设定***的时间(Max duration secs))和发送的最大UDP包数(Max packets )以及发送UDP包的速度(Speed),还可以选择发送包的数据大小和类型(Data

3.点击Go开始***,我们在AB两台机上分别抓包来观察分析。

这是在服务器A上捕捉到的两幅图,我们可以发现udp包在8080端口一侧大量出现,并且每个udp包的大小基本相同,这里看到的两个都为83bytes

这是在B上对ICMP的抓包结果,当受害系统接收到一个UDP 数据包的时候,它会确定目的端口正在等待中的应用程序。当它发现该端口中并不存在正在等待的应用程序,它就会产生一个目的地址无法连接的 ICMP 数据包发送给该伪造的源地址。这里可以明显的看出AB回送了很多ICMP包,但是端口却是unreachable

实验内容三:防御和抵制UDP-FLOOD***的措施

我们都知道UDP协议是一种无连接的服务,所以对UDP-FLOOD***的防御和抵制比较困难。一般我们通过分析受到***时捕获的非法数据包特征,定义特征库,过滤那些接收到的具有相关特征的数据包。例如针对UDP-FLOOD***,我们可以根据UDP最大包长设置UDP最大包大小以过滤异常流量。在极端的情况下,我们可以尝试丢弃所有UDP数据包。

1.本次实验需要三台网络连通,可以互相访问的计算机,假设分别记作A(作为服务器和被***主机)B(作为被控制主机)C(作为***主机)。首先在ABC上分别关闭防火墙和杀毒软件,并在A上启动Tomcat服务器。

2.接着要将B变成C控制的肉鸡,并把独裁者DDoSServer.exe(服务端),MSWINSCK.OCXRICHTX32.OCX这三个文件植入B中,并运行Server.exe。这里要用到radminpstools等工具以及一些net的控制命令(当然也可以用其他的方法),这块内容在实验一中有详细的讲解,在此不再赘述。

我们可以在C上来验证独裁者DDoS的服务端是否在B上成功运行,在C中打开IE浏览器,在地址栏中输入Http://BIP地址:8535/,若回车看到如下图所示,则说明就说明独裁者DDoS的服务端在肉鸡B上成功运行了。

3.接着我们来通过C控制BA发动DDoS***,我们在打开C中打开DDoS客户端Client.exe(界面如下)。首先我们先要添加主机,这里的主机是指你控制被植入独裁者服务端的肉鸡,这里即B,添加时输入BIP就行了。

4.添加完后最好按检查状态来检测添加的主机是否有效,如图192.168.1.103这段IP是无效的,设置好***目标的IP和开放的端口,伪造的源IP和端口可以自己设置也可以由***器随机设置,有四种***方式供我们选择,这里我选择我们熟悉的SYN***,检查文件按钮可以检测服务端文件的情况,信使服务可以向被***机发送文字信息。

5. 点击开始***,C就控制B开始向A发动SYN***.可想而知这种***的效果和SYN—FLOOD的***效果是一致的,在这个实验里并没有很好的体现DDoS的***效果,因为只控制了一台肉鸡,所以这样的***相当于一对一的DoS***,***效果较差。并且这是一种简易的DDoS***,因为这里只有***端、被控制端、受害者,而一个完整的DDoS***应该是***端、控制端、代理端和受害者组成的。所以现在的***就存在一个弊端,就是***者的隐蔽性不高,容易被受害者查到***源。而完整的DDoS***是由控制端对代理端发出***命令的,这样一来就很好地隐蔽了***端,也就是使得真正的***者身份很难被发现。

实验内容四:防御和抵制DDoS***的措施

DDoS***的类型和DoS***相近,只是***的方式有很大的改进,因此防御和抵制DDoS***的措施也和DoS***相似。这里介绍一种新的方法:一般发动DoS***或者DDoS***,都是针对一个确定的IP,而且在***过程中,不会改变***的对象。利用DoSDDoS***的这一缺陷,我们如果在发现服务器受到***时,迅速更换自己的IP地址,那么***者就在对一个空的IP地址进行***,服务器不会受到任何影响。作为防御方只要将DNS解析更改到新的IP地址就能在很短时间内恢复用户通过域名进行正常访问。

六、思考题

考题一:

DoS***和DDoS***一般是针对服务器发动***,而对PC机***没有多大意义,你知道这是为什么吗?

思考题二:

Timeout越小越有利于抵御SYN-FLOOD***,但这个值却不能太小,你知道这是什么原因吗? 

思考题三:

你知道为什么在收到UDP***后,受害主机会回送一个ICMP包? 

思考题四:

在用独裁者DDoS***器进行***时,在我们把三个文件植入肉鸡后,我们已经可以通过浏览器控制肉鸡发动***了,为什么还要用***机上的独裁者客户端来发动***?