通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 原创精华 >> 文章正文
恶意攻击者的利器:DoS攻击
责任编辑:古典辣M°   更新日期:2005-11-16
 

 TCP/IP漏洞是指利用主机协议栈处理及协议本身机制的缺陷造成的安全漏洞,这类安全漏洞很容易造成系统缓冲区溢出,不识别IP欺骗,而要是在处理大量异常连接,畸形消息时更容易导致拒绝服务。这类漏洞从PoD到DRDoS,每一种攻击都是黑客技术的杰作,而且越来越可怕,越来越难对付。我就在这里给大家详细介绍一下各种各样的TCP/IP网络拒绝服务攻击及其大体防范方法。

    死亡之Ping(ping of death)


   1.原理

     不用我多说了,大名鼎鼎的Ping早已经家喻户晓了。早期的Ping之所以能称为死亡之Ping,那是因为在早期阶段路由器对包的最大尺寸都有限制,很多操作系统对TCP/IP栈的实现在ICMP包上都是规定为64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息为有效载荷生成缓冲区。当产生畸形的包——加载尺寸超过64KB上限的包时,就会出现内存分配错误,从而导致TCP/IP堆栈崩溃,使系统死机。理论上Ping发出的ICMP数据包最大为65507字节,如果超过这个限度,就会导致目标系统缓冲区溢出,TCP/IP堆栈崩溃而死机。
 
    2.攻击

     Ping命令的-l参数可以定制包的大小,-t参数可以循环发送无数包,但是仅有这些是不够的,黑客们通常使用自己的Ping工具,甚至可以调动众多肉鸡进行分布式攻击。
Tosser是一款很实用的网络测试工具,提供了Ping和Trace功能,如图1所示。


图1


    3.防御

    现在所有标准的TCP/IP都已经具备对付超大尺寸包的能力了,各种操作系统(Windows 98之后的Windows NT,Linux,Unix和Mac OS)都能抵抗一般的死亡之Ping,并且大多数防火墙都能够自动过滤这些攻击,所以现在的普通Ping是很难形成Death之势了。针对Ping攻击只需利用路由器,防火墙对ICMP进行有效的筛选即可。

    古老的Smurf
  
    1.原理

    Smurf是一种很古老的DoS攻击。这种方法使用了广播地址,广播地址的尾数通常为0,比如:192.168.1.0。在一个有N台计算机的网络中,当其中一台主机向广播地址发送了1KB大小的ICMP Echo Requst时,那么它将收到N KB大小的ICMP Reply,如果N足够大它将淹没该主机,最终导致该网络的所有主机都对此ICMP Echo Requst作出答复,使网络阻塞!利用此攻击时,假冒受害主机的IP,那么它就会收到应答,形成一次拒绝服务攻击。Smurf攻击的流量比Ping of death洪水的流量高出一两个数量级,而且更加隐蔽。

    2.攻击

     Smurf2K是一个强大的攻击工具,它通过一个储存广播列表地址的文件,记录下Internet上可用的主机,然后利用这些主机发起进攻。如图2所示:


 
图2


     3.防御

     为了防止黑客利用你的网络进行Smurf攻击,关闭外部路由器或防火墙的广播地址特性;为了防止被攻击,在防火墙上设置规则丢弃掉ICMP包。


    Fraggle攻击

     1.原理

     Fraggle攻击与Smurf攻击类似,只是利用UDP协议;虽然标准的端口是7,但是大多数使用Fraggle攻击的程序允许你指定其它的端口。Fraggle攻击是这样实现的:攻击者掌握着大量的广播地址,并向这些地址发送假冒的UDP包,通常这些包是直接到目标主机的7号端口——也就是Echo端口,而另一些情况下它却到了Chargen端口,攻击者可以制造一个在这两个端口之间的循环来产生网络阻塞。

     2.攻击

    编写Fraggle攻击程序时只要把Smurf攻击程序的代码作一下修改就可以了。

    3.防御

     最好的防止系统受到Smurf和Fraggle攻击的方法是在防火墙上过滤掉ICMP报文,或者在服务器上禁止Ping,并且只在必要时才打开Ping服务

    原子弹——OOB Nuke

     1.原理

    OOB Nuke又名Windows nuke,是在1997年5月被发现的,这种攻击将导致Windows 95/98蓝屏,在当时的IRC聊天用户中很流行。OOB Nuke攻击的实现是由于Windows 95/98不能正确的处理带外数据。在TCP协议中提供了“紧急方式”,是传输的一端告诉另一端有些具有某种方式的“紧急数据”已经放到普通的数据流中,如何处理由接受方决定。通过设置TCP首部中的两个字段发出这种通知,URG比特被设置为1,并且一个16比特的紧急指针被设置为一个正的偏移量,某些实现将TCP的紧急方式称之为带外数据。问题在于Windows  95/98不知道如何处理带外数据。OOB Nuke一般使用139端口。

    2.攻击

   仅提供一款工具:WindowsNuke2,如下图3所示:


 
图3


    3.防御

    打相关的补丁或者将你的Windows 95/98升级到2000或更高,不过连微软都已经放弃了Windows 95/98,估计现在还在使用它的人少之又少了。


    Land攻击

     1.原理
Land攻击是由著名的黑客组织RootShell发现的,于1997年11月20日公布的,原理比较简单,就是利用TCP连接三握手中的缺陷,向目标主机发送源地址与目标地址一样的数据包,造成目标主机解析Land包占用太多的资源,从而使网络功能完全瘫痪。具体说应该是,Land攻击打造一个特别的SYN包,其源地址和目标地址被设置成同一个计算机的地址,这时将导致该计算机向它自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每个这样的连接都将保留直到超时。

 

    2.攻击

     Land攻击对Windows 95很有效,但实际上,很多基于BSD的操作系统都有这个漏洞。不同的操作系统对Land攻击反应不同,很多Unix将崩溃,而Windows NT会变得非常缓慢,而且对Linux,路由器,其它大量的Unix都具有相当的攻击力。这里提供Land程序的源代码(请见光盘)。

   3.防御

   打最新的相关的安全补丁,在防火墙上进行配置,将那些在外部接口上进入的含有内部源地址的包过滤掉,包括10域,127域,192.168域,172.16到172.31域。由于Land攻击主要是构造IP包,使源IP和目标IP相同,源端口和目的端口相同,所以如果使用Tcpdump,可记录到攻击特征为:
23:45:13 815705 192.168.0.111 23>192.168.0.111 23:S 3868:3868(0) Windows 2048


   泪滴——Teardrop攻击

    1.原理

    Teardrop攻击利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。IP分段含有指示该分段所包含的是原包的那一段的信息,某些TCP/IP在收到含有重叠偏移的伪造分段时将崩溃。具体的讲是这样的,物理层通常给所能传输的帧加上一个尺寸上限,IP层将数据报的大小与物理层帧的上限相比较,如果需要就进行分段。在IP报头中设置了一些域用于分段:标志域为发送者传输的每一个报文保留一个独立的值,这个特定的值被拷贝到每个特定报文的每个分段,标志域中有一位作为“更多分段”位,除了最后一段之外,该位在组成一个数据报的所有分段中被置位;分段偏移域含有该分段自初始数据报开始位置的位移。对于存在Teardrop漏洞的操作系统,如果接受到畸形数据分段,则在某些情况下会破坏整个IP协议栈,因此,必须重启计算机才能恢复。

    2.攻击

     在早期的由BSD实现的网络协议中,在处理数据包分段时存在漏洞,后来的一些操作系统都沿用了BSD的代码,所以这个漏洞在Linux,Windows 98和Windows NT中都是存在的。网上有一个Linux上运行的Teardrop程序——Teardrop.c,它就是实现这样的攻击的。下载地址是:http://www.computec.ch/software/denial_of_service/teardrop/teardrop.c

    3.防御:
安装最新的服务包,设置防火墙时对分段进行重组,而不是转发它们。


    UDP Flood

    1.原理

     做个简单的实验,用Telnet连接到对方TCP chargen 19号端口,看看返回了什么?很吃惊的是,返回了大量的回应数据,如果能加以利用的话就能够发动DoS攻击了。先介绍一下Chargen服务, RFC0864中定义了这种服务,其UDP/TCP均使用了19号端口。UDP chargen server若收到一个封包,就会随一个封包回去;而TCP chargen server若发现与Client的连线存在,就会不断的发送封包给Client,所以TCP chargen可以直接诱发DoS攻击。不过常用的还是UDP chargen,它常被用来作为DDoS中放大网络流量之用,一般要结合Echo服务。Echo服务用的是UDP的7号端口,如果它收到一个包,就会把包中的负载按原样返回,而如果你向UDP的19号端口Chargen发送一个任意字符,它将返回一个假的随机字符串。UDP Flood攻击就是通过伪造与某一台主机的Chargen服务之间的UDP连接,回复地址指向开着Echo服务的一台主机,这就能在两台主机之间产生无用的数据流,如果数据流足够多就会导致DoS。
UDP Flood图解(如图4所示):


 

    图4


    2.攻击
一个典型的UDP Flood攻击工具——UDP Flooder,如图5所示:


 

   图5


    3.防御

    关掉一些不必要的TCP/IP服务,或者对防火墙进行配置,阻断来自Internet的请求这些服务的UDP请求。


   SYN Flood


    1.原理
先讲一下TCP的三次握手,如图6所示。


图6

   首先请求端发送一个包含SYN标志的同步的TCP报文给服务器,服务器收到这个包后产生一个自己的SYN标志,并且把收到的包的SYN加1作为ACK标志返回给请求端,请求端收到该包后又会发送一个ACK=SYN+1的包给服务器,经过这三次握手,连接才正式建立。而在服务器向请求端发返回包时,它会等待请求端的ACK确认包并会重试,这时这个连接被加到未完成的连接队列中,直到收到ACK应答后或超时(这段时间长度我们称为SYN Timeout,一般说来它是分钟的数量级,大约为30到120秒不等)才从队列中删除。而攻击者就是利用了这种等待,他会大量的模拟这种等待,服务器就会为了维护一个非常大的半连接列表而消耗非常多的资源(如此多的半连接,即使是简单的保存并遍历也会消耗大量的CPU处理时间和内存空间,何况还要不断的对这个列表中的IP地址进行“SYN+ACK”的重试)。如果服务器的TCP/IP栈不够强大的话,则会导致堆栈溢出崩溃,如果足够强大,那么也会忙于这些虚假请求而无暇顾及正常的请求。
SYN Flood图解,如图7所示:


图7

    2.攻击

    实现SYN Flood是非常简单的,网上有很多源程序可以下载。介绍一个国产的SYN Flood工具:SYN潜伏攻击者,如图8所示:

图8

    3.防御

    在防火墙上过滤掉来自同一主机的后续连接,但是在出现DoS这种全新的攻击方式后,SYN Flood将会特别令人担忧,很难防守,这在下面会提到。


    分布式拒绝服务——DDoS

    1.原理

    大名鼎鼎的DDoS在2000年的“电子珍珠港事件”中名声大震,我也没必要说很多。从名字中我们就能得知,它是利用很多台机器一起发动攻击。攻击手法可能只是简单的Ping,也可能是SYN Flood或其它,但是由于它调用了很多台机器,所以规模很大,火力更猛,而且因为它利用了TCP/IP网络协议的缺陷,所以很难防御这种进攻。

   2.攻击

    2001年用来攻击Yahoo等网站的程序——TFN,Trinoo,TFN2K等都堪称是黑客技术的杰作,而且网上都有它们的源代码。

   3.防御

   主要谈一下防御。要阻止这种进攻关键是网络出口反欺骗过滤器的功能是否强大,也就是说如果你的WEB服务器收到的数据包的源IP地址是伪造的话,你的边界路由器或防火墙必须能够识别出来并将其丢弃,最快速的方法是和ISP联手通过丢包等方法一起来阻挡这种庞大的进攻。另外针对DDoS进攻是集中于某一个IP地址的特点,使用移动IP地址技术也是一种不错的选择。大多数的DDoS攻击代码是公开的,分析源代码我们也可以根据其特点设计出有效的反击方法,或者使用工具检测这种进攻。现在已经出现了名为Ngrep的工具,它使用DNS来跟踪TFN2K驻留程序。

    分布式反射拒绝服务——DRDoS

    1.原理

    一种比DDoS更可怕的攻击方式已经出现了!它就是DRDoS——分布式反射拒绝服务(Distributed Reflection Denial of Service)。DRDoS不同于以往的拒绝服务方式,它对DDoS作了改进,它是通过对正常的服务器进行网络连接请求来达到攻击目的的。从TCP的三次握手中我们知道了任何合法的TCP连接请求都会得到返回数据包,而这种攻击方法就是将这个返回包直接返回到被攻击的主机上,这里涉及到数据包内的源IP地址问题,就是利用数据包的IP地址欺骗方法,欺骗被利用的网络服务器提供TCP服务,让此服务器认为TCP请求连接都是被攻击主机上发送的,接着它就会发送“SYN+ACK”数据包给被攻击主机,恶意的数据包就从被利用的服务器“反射”到了被害主机上,形成洪水攻击。
DRDoS图解(如图9所示):


 
图9


   3.攻击

    DRDoS很好地隐蔽了攻击者的真实地址,利用时我们也可以使用威力更大的方式。DRDoS攻击体系如图10所示:


 
图10


这里提供一款命令行攻击工具——DRDoS(安全焦点有下载),使用很简单,但是威力很大。慎用!

    3.防御

    防御这种攻击需要相当高的专业技巧,一般来说应该让网络安全事件响应小组来取证分析,并请信息安全服务商来解决。

 

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 爱国者安全网2007年度优秀版主评选
    普通文章 瑞星公司01月11日发布 每日计算机病毒及木马播报
    普通文章 破解博彩神助(专注彩票) V2.8.01
    推荐文章 推荐:跨站脚本执行漏洞代码的六点思路
    普通文章 Windows系统下的远程堆栈溢出 实战篇
    普通文章 Windows系统下的远程堆栈溢出 原理篇
    普通文章 MsSQLServer是如何加密口令的
    普通文章 浅谈国内的渗透评估过程
    普通文章 Dvbbs8.1 0DAY(通杀Access和mssql版本)
    普通文章 微软:我们的代码比赛门铁克更安全
    热门文章
    普通文章REAL蛀虫利用播放器漏洞下载恶意程序
    普通文章李彦宏:中国要在互联网领域逐渐超越美国
    普通文章马云:阿里巴巴的成功是一个生态链的成功
    普通文章Ingres用户认证非授权访问漏洞
    普通文章TCPreen FD_SET()函数远程栈溢出漏洞
    普通文章Winace UUE文件解压堆溢出漏洞
    普通文章Pclxav木马猎手第一代特征码引擎源代码
    普通文章IE收藏夹管理小精灵算法分析
    普通文章Extra Drive Pro算法分析历程
    普通文章雨过天晴自我注册
    精彩专题