“拒绝服务”这个词来源于英文Denial of Service(简称dos),它是一种简单的破坏性攻击,通常攻击者利用TCP/IP协议中的某个弱点,或者系统存在的某些漏洞,对目标系统发起大规模的进攻,致使攻击目标无法对合法的用户提供正常的服务,简单的说,拒绝服务攻击就是让攻击目的瘫痪的一种损人不利己的攻击手段。
拒绝服务只是攻击的目的,要完成拒绝服务攻击可以有很多途径,对Windows系统的OOB攻击,igmp攻击以及利用设备名的攻击都属于拒绝服务攻击之列,他们的共同点是使被攻击的目标无法提供正常的服务。
当然,这些攻击方式只是拒绝服务攻击大家族中很少一部分,造成拒绝服务攻击的最多的种类是TCP/IP协议设计上的缺陷,例如曾经一度非常流行甚至于让网络管理员闻之色变的Land攻击,就是利用了IP协议中源地址容易被欺骗的弱点发动的攻击,所以它并不针对某一特殊系统,而是对凡是运行与TCP/IP协议之上的所有系统均可造成拒绝服务攻击,这也是这种攻击如此普遍的原因之一。
和安全攻破一个系统比较起来,造成系统的拒绝服务要更加容易一些,因此,许多黑客新手都会以这种相对容易的方法来攻击网站从而获得一种刺激和快感。
这种纯粹为了造成对方网络瘫痪而进行的拒绝服务,是为真正的黑客高手不屑一顾的。真正的高手也许只是去发现这种攻击漏洞,并将他们公布出来,一般是不会亲自去为了攻击而攻击的,因为黑客精神中重要的一条就是永远追求更新的技术,而不是停留在做重复的事情上。
虽然真正的黑客很少单纯是为了攻击而去攻击,但这并不是说他们就不使用拒绝服务攻击,高手们所使用的拒绝服务通常是为了完成其他的攻击而必须做的,例如:
1.在目标机上放了木马,需要让目标机重新启动。
2.为了完成IP欺骗攻击,需要冒充的主机却瘫痪了。
3.在正式进攻之前,需要使目标的日志记录系统无法正常工作。
拒绝服务攻击的目的就是让被攻击目标无法正常的工作,从攻击方的角度去看,目标的连接速度减慢或完全瘫痪,那么攻击的目的也就达到了,而在被攻击的一方看来,当遭到攻击的时候,系统会出现一些异常的现象,例如系统会出现蓝屏,CPU占用率达到100%等,这时候就要考虑自己很可能已经遭到拒绝服务攻击了。
二、常见的拒绝服务攻击
1.SYN flood
SYN flood也是一种较常见的拒绝服务攻击手段,他对Windows NT系统的攻击效果尤为明显,其原理是:正常完成一个TCP连接的初始化要求连接双方进行三个动作,即所谓的三次握手,其过程是这样的:
请求连接的客户机首先将一个带SYN标志位的包发送给服务器,服务器受到这个包后随即产生一个自己的SYN标志,并把收到的SYN+1作为ACK标志的等待确认包返还给客户机,最后,客户机在受到这个包之后发送一个ACK=SYN+1的确认包给服务器,此事,连接正式建立,双方可以使用TCP协议传输数据了。
在服务器发出等待确认包之后,它就会等待客户机发回ACK确认包,这时,这个连接就被加到未完成连接队列中了,直到受到ACK应答后才能该队列中删除,单大多数系统的未完成队列的数目是有限制的,如果超过这个数据,服务器就丢弃后来收到的TCP SYN包,
因此,攻击者可以伪造许多SYN包,在连接到被攻击方的一个或多个端口,被攻击的服务器就会向假IP地址发送等待确认包,然后等待回答,当然,那个假IP是不会响应的,这是,被攻击的服务器就会一直等待,知道超时后才从未完成队列中删除这个包,这个过程叫做“半开连接”,如果攻击者伪造的SYN包的数量巨大,造成未完成连接队列被填满的时候,正常用户发送的TCP连接就被丢弃了,这样就造成了拒绝服务。
2.smurf攻击
Smurf攻击的威胁性在于,它是一种具有放大效果的攻击方式,这种方法效果的原理是这样的:攻击者冒充被攻击者,向某个往楼上的广播设备发送请求,然后广播设备将请求转发给该网络上的大量设备,于是所有的这些设备将请求都向被攻击者进行回应,这样就达到了使用很小的代价来进行大量攻击的目的。
例如,攻击者冒充被攻击者的IP,使用ping来对一个C类网络的广播地址进行发送ICMP包,这样,该网络上的254台主机都会对被攻击者的IP发送ICMP回应包,那么,攻击者每发一个包就会给被攻击者带来254个包的攻击效果,当然,普通的ping命令是不允许对广播地址发包的,但是攻击者完全可以使用编程的方法来达到这种效果。
不仅是ICMP包可以用来进行这种攻击,现在还有一种称为Fraggle的攻击工具利用UDP包对某一网络的广播地址发送对7号端口(echo)包的攻击方式,这样开放7号端口的主机会回应UDP包,而没有开放7号端口的主机也会发送ICMP不可达消息包,同样可以达到很好的攻击效果。
3.Land攻击
Land也是因特网上最常见的拒绝服务攻击类型之一,它是由著名黑客组织ROOTSHELL发现的,原理很简单:利用向目标机发送大量的源地址和目标地址相同的包,造成目标机解析Land包时占用大量的系统资源,从而使用网络功能完全瘫痪。
4.死亡之ping
死亡之ping攻击是通过向目标端口发送大量的超大尺寸的ICMP包来实现的,当目标收到这些ICMP碎片包后,会在缓冲区里重新组合他们,由于这些包的尺寸实在太大以至于造成缓冲区溢出从而导致系统奔溃。
这种攻击实现起来非常简单,不需要任何其他的程序,只要在Windows 9X,windows NT或者LINUX的命令行上输入如下命令即可完成攻击。
图片3.png
三、新型拒绝服务攻击方式——DOOS
1.DDOS原理
在最近的攻击事件中,黑客使用一种称为“分布式拒绝服务”的攻击方式,“分布式拒绝服务”的英文是Distributed Denial OF Service,简称DDOS。
要理解DDOS的原理,首先应该搞清楚分布式的意思,“分布”是在计算机科学里经常用到第一个词语,按照一般的理解,“分布”是指把较大的计算量或者工作量由多个处理器或者多个节点共同协作完成。理解了“分布”的概念,“分布式拒绝服务”攻击的含义就不难理解了,所谓“分布式拒绝服务”攻击,就是攻击者在客户端控制大量的攻击源,并且同时向攻击目标发起的一种拒绝服务攻击。
一个典型的分布式拒绝服务攻击结构如图1所示
图片4.png
攻击者在自己的电脑上就能操纵整个攻击过程,攻击者首先控制多个主控端,主控端是一台已经被黑客入侵并完全控制的运行特定攻击程序的系统主机,然后再由主控端去控制多个攻击端,每个冬季段也是一台已经被入侵并运行特定程序的系统主机,攻击端的程序由主控端的攻击程序来控制,当攻击者向主控端发出攻击命令后,主控端再往每个攻击端发送,再由攻击端向被攻击目标送出发动拒绝服务攻击的数据包。
为了提高分布式拒绝服务攻击的成功率,攻击者一般需要先控制大量的主机来作为主控端和攻击端,按照现在的DDOS攻击程序的运行平台,这些主机一般需要是UNIX主机,当然这些攻击工具也能够移植到其他平台上运行,但是要麻烦一些了,这些攻击工具入侵主机和安装程序的过程都是自动化的,这些过程可分为以下几个步骤:
1.入侵并控制大量主机从而获取控制权
2.在这些被入侵的主机中安装DDOS攻击程序
3.利用这些被控制的主机对工具目标发起DDOS攻击
由于整个过程都是自动化的,攻击者能够在5秒钟之内入侵一台主机并安装攻击工具,可想而知,在短短的一个小时之内,就可以入侵数千台主机。
2.分布式拒绝服务攻击攻击
现在最常见的分布式拒绝服务攻击程序主要有Trinoo、TFN和Stacheldraht等几种,他们使用的最主要的攻击方法是利用TCP/IP谢馨仪中的漏洞,如允许碎片包,大数据包,IP路由选择,半公开TCP连接,数据包Flood等等,这些都会降低系统性能,甚至使系统奔溃。
每个已知的拒绝服务漏洞一般都会有相应的攻击程序公布出来,每个攻击程序都是独立的,一个特定的漏洞攻击程序往往只影响某一版本的TCP/IP协议,发动DDOS的工具就是用各种语言将多种拒绝服务攻击程序组合起来。
这类工具的有点事允许一个攻击者使用多种攻击方法同时攻击单个IP地址,这大大增加了攻击的成功率,但是也意味着必须将所有编译好的攻击程序打包好,以便于传输和进行攻击。
同时,这类工具在允许使用多种拒绝服务攻击方法的情况下,还应该是一个单一的,更易于保存的,传输和使用的已编译好的程序。
但是,这类分布式拒绝服务攻击的组合工具、一般只允许一个攻击者在统一时间内攻击一个P地址。
为了增加攻击的效率,多个攻击者可以通过IRC或者电话保持联系,并且每个人负责攻击不同的系统,实现团体攻击,这种方法在探测漏洞,入侵系统,安装后门和Rootkit的行动中经常被使用。
虽然存在一些使用上的限制,但是这类工具仍然在不断的增加各种攻击程序,并且形成了一个名为拒绝服务集群的软件包,trinoo便是其中最常见的一个,还有一个是有一个名叫Mixter的黑客编写的类似的工具——Tribe flood Nerwork(简称TFN)
与trinoo只实现UDP攻击相比,TFN支持ICMP flood,UDP flood,SYN flood和sRNURF攻击等等,这些攻击通过发送ICMP_ECHOREPLY包来进行控制。TFN也使用了与 TRIOON一样的BLOWfish加密算法。
可以肯定的是,这些分布式拒绝服务工具包将会得到进一步的发展和完善,功能也更加强大,隐蔽性能也更加的强大,关键字符串,控制命令,口令将使用更强大的加密算法,或在被非攻击者自己使用时自行销毁,使用加密通信通道,使用像ICMO这种令防火墙更难检测或者防御的协议进行数据包传输等等。
下面我们就详细介绍一下最常见的一种DDOS攻击程序——TFN2000
3.TFN2000
TFN2000是一个通过主控端利用大量攻击端主机的资源,对一个或者多个目标进行协同攻击的软件,大多数的UNIX和LINUX平台的主机都能被用于此类的攻击,而且可以非常容易的将这个工具一直到其他系统平台上。
TFN2000主要由两个部分组成:主控端上的客户端和攻击端上的守护进程,主控端向其攻击端发送攻击指定的目标主机的列表,攻击端据此对目标进行拒绝服务攻击,由一个主控端控制的多个攻击端的主机,能够在攻击过程中相互协调,保证攻击的连续性,主控端和攻击端的网络通信是经过加密的,还可可能混杂了许多虚假数据包,整个TFN网络可以使用不同的TCP、UDP、或者ICMP包进行通信,而且主控端还能伪造其IP地址,所有这些特性致使发展防御T
FN2000攻击的谋略和技术变得非常苦难或效率低下。
1.TFN2000主要由以下的特征:
①主控端通过TCP、UDP、ICMP或者随即使用其中之一的数据包向代理端的主机发送命令,对目标采用的攻击方法包括TCO/SYN、DUP、ICMP/PING或者BROADCAST PING数据包Flood等等。
②主控端与嗲里端之间数据包的头信息也是随机的,除了icmp总是使用icmp_ech_oreply类型的数据包,
③与上一代版本的TFN不同,TFN2000的守护程序是完全沉默的,他对接收到的命令不会有任何的回应,客户端将每一个命令重复发送20次,并且认为守护程序至少应该能接到其中的一个。
④这些命令数据包可能混杂了许多发送到随即IP地址的伪造数据包。
⑤TFN2000命令采用了选项格式,其中-x是代表某个特定命令的数值,command则是该命令的参数
⑥所有命令都经过了CAST-256算法的加密,加密关键字在编译程序时定义,并作为TFN2000客户端程序的口令
⑦所有加密数据在发送前都被编码成可打印的ASCII字符,TFN2000守护程序接受数据包并解密数据。
⑧守护进程为每一个攻击产生子进程。
2.安装
在一般的LINUX环境中,只要解开压缩包后直接用make命令编译即可,在其他UNIX环境中,需要在SRC子目录下的Makefile文件中选择所处平台的编译选项,开始编译的时候,会要求你输入一个服务器密码,这个密码至少是8个字符。
TFN服务器必须ROOT身份安装,由于他不会自动改变任何的系统设置,所以当系统重启后,你需要重新运行它。一旦TFN服务器运行起来,你就可以向服务器列表中加入主机名字,之后就可以在自己的计算机中用如下命令与TPN服务器进行联系了。
3.使用
如果户使用任何选项和参数,tfn的默认命令将是停止攻击并关闭TFN服务器上的所有子程序,你 通常可以视同-C
①从服务器上发出的DOS攻击通常会伪装IP源地址,通过这个选项,你可以控制服务器上的伪源地址。
②漠然的ICMP/8,SMURF和UDP攻击使用的是最小的攻击包,但是这个选项允许改变发送的包的大小。
③这是一个BINDSBELL后门,当连接特定端口后,会直接进入一个ROOTshell。
④使用UDP洪水攻击
⑤使用SYN洪水攻击
⑥使用ICMP回应攻击
⑦使用SMURF攻击
⑧使用MIX攻击
⑨使用TARGA3攻击
⑩对安装了TFN服务器程序的远程主机执行SHell命令,当使用这个选项时候,需要同时使用-I在加上要执行的命令,然后用-I<攻击慕白1@攻击目标2@攻击目标3......>来发动进攻即可。
还有一些其他的可选项,说明如下:
-P PROTOCOL:选择与服务器进行联系的协议可以选用ICMP、TCP和UDP协议
-D N:发送N个伪造的数据包
-S Host/IP:伪造源IP地址
4.攻击实例
下面是一次利用TFN2000进行攻击的实例,暴扣从软件安装到发动攻击的全部过程。
假设我们已经控制了一台名为SAinple.edu的主机,现在我们把TFN2000软件包拷贝到那台主机的/TMP目录下,然后我们直接输入MAKE命令,来编译安装它,他会需求你输入一个8-12位的密码
在编译完成后,会产生两个可执行文件:TD和TFN,其中TD是TFN服务器程序,TFN是客户端程序我们直接运行命令来启动TFN服务器,并把TFN拷回到自己的机器中。
接下来,回到自己的机器上,用如下命令向www.*****.com发动一次标准的UDP洪水攻击:
到这里,攻击包就已经发出去了!
在这个例子中,如果只是用了一个TFN服务器程序进行攻击,如果攻击目标不是特别脆弱的话,一般是不会造成太大的损害的,但是,如果同时控制1000台安装过TFN服务器程序的主机,然后把这些主机的名字添加到一个名叫hosts的文件里,然后用如下命令攻击:
可以想象,攻击目标将同时遭受到1000台追的猛烈攻击,那么他必须无疑。
四、预防分布式拒绝服务攻击
要想完全抵挡住分布式拒绝服务攻击是比较苦难的,因为这种攻击方法往往是利用了网络协议的一些正常特性来进行攻击的,要彻底抵抗DOS攻击就是必要对现有的网络协议本身进行搞糟,这对于现在而言是不太现实的,虽然没有简单和专门的方法免受到这些攻击,但是却可以应用各种安全和保护来尽量减少因受到攻击所造成的损害。
1.个人用户防范
对于个人用户来说,应使用如下策略尽量避免遭受攻击:
①用户应该试讲留意自己的网络通信量,这对于个人用户和小型网络尤为重要,在这些环境中,对正常的出战通信量是什么样子用户已经有了一定的认识,如果你的电缆调制解调器正常情况下每分钟都会闪烁几次,但是忽然有一天传输指示灯突然亮了起来而且不熄灭,这就是发生了一个不正常事件的信号
②访问MICROSOFT的安全公告站点,下载所有尚未安装的合适的修补程序,这样可以有效防止被黑客入侵并作为发动拒绝服务攻击的傀儡,同时也可以避免被某些有系统漏洞而导致的拒绝服务攻击方式攻击。
2.网络系统防范
对于搜友面临分布式拒绝服务攻击威胁的网络系统来说,下面也给出了一些简单且快速的安全策略。
①得到因特网服务供应商的协助和合作,这一点是非常重要的,分布式拒绝服务攻击主要是耗用带宽,如果单凭自己管理网络是无法对付这些攻击的,与你的ISP协商,确保他们同意帮助你实施正确的路由访问控制策略以保护带宽和内部网络,最理想的情况是,当发生攻击时你的ISP愿意监视或允许你访问他们的路由器
②优化路由和网络结构,如果管理的不仅仅是一台主机,而是一个网络,就需要调整路由表已将拒绝服务攻击的影响减到最小,为了防止SYN flood攻击,应设置TCP监听功能详细资料请参阅相关的路由器的技术文档。
③对所有可能成为目标的主机都进行优化,禁止不必要的服务。另外,拥有多IP地址的主机也会增加攻击者的难度,建议在多台主机中使用多个IP地址技术,而这些主机的首页只会自动转向真正的WEB服务器
④正在遭到攻击时候,必须立刻采取对应策略,尽可能循序的阻止攻击数据包时非常重要的,同时,如果发现这些数据包来自某些ISP时候应尽快和他们取得联系,千万不要依赖数据包中的源地址,因为正如我们在上一节看到的,他们往往都是随机伪造的。
⑤必须周期性的审核系统,按照我们的经验,虽然许多主机已经被黑客成功入侵,但是管理员还是毫无察觉,所以,应该充分了解系统和服务器软件是如何工作的,经常检查系统的配置和安全策略,还要时刻留意一些安全站点公布的与自己管理的操作系统及软件有关的最新安全漏洞和问题。
⑥反向传输路径转发可以阻止SMURF攻击和其他基于 IP地址伪装的攻击,这能够保护网络和客户免受到来自因特网其他地方的侵扰,使用Unicast RPF需要打开路由器的CEF switching或CEF DIStrbuted switding选项,不需要将输入接口配置为CEF交换,只要该路由器打开了CEF功能,所有独立的网络接口都可以配置为其他交换模式,反向传输路径转发属于在一个网络接口或者子接口上激活的输入端功能,他负责处理路由器接受的数据包,在路由器上打开CEF功能是非常钟涛的,因为ROF必须依靠CEF。Unicast RPF包含在支持CEF的CISco IOS 12.0及以上版本中