DOS攻击原理以及常见方法介绍

   已经有很多介绍DOS
还是不知道DOS到底是什么
法。因前段时间仔细了解了
了Shaft的文章翻译而得。

Denial of Service,即拒绝
,它到底是怎么实现的。本文主
TCP/IP协议以及RFC文档,有点
要想了解DOS攻击得实现机理,

服务)攻击的文章,但是,多数人
要介绍DOS的机理和常见的实施方
心得。同时,文中有部分内容参考
必须对TCP有一定的了解。

 

  1、什么是DOS攻击                                                       

 

   DOS:即Denial Of S
好象在5·1的时候闹过这样
样,呵呵,你想吃馅饼,就

ervice,拒绝服务的缩写,可不
的笑话。拒绝服务,就相当于必
必须在门口等吧。DOS攻击即让

能认为是微软的dos操作系统了。
胜客在客满的时候不再让人进去一
目标机器停止提供服务或资源访问

 

  2、有关TCP协议的东西                                                   

 

   TCP(transmission
提供可靠的、端到端的字节
RFC 1122中有记录,RFC 13
将数据报正确传送到目的地
的数据片段,将每个数据片
整的字节流,TCP协议必须
一个数据段包括一个固定的
一个数据段的时候,还要启
,其中有一个确认序号,它
达前超时了,发送方会重新

control protocol,传输控制协
流通讯协议,在RFC793中有正式
23则有TCP的功能扩展。我们常
,TCP则从本地机器接受用户的
段作为单独的IP数据包发送出去
保证可靠性。发送和接收方的TC
20字节,加上可选部分,后面再
动计时器,当数据段到达目的地
等于希望收到的下一个数据段的
发送这个数据段。

议),是用来在不可靠的因特网上
定义,还有一些解决错误的东西在
见到的TCP/IP协议中,IP层不保证
数据流,将其分成不超过64K字节
,最后在目的地机器中再组合成完
P传输以数据段的形式交换数据,
跟上数据,TCP协议从发送方传送
后,接收方还要发送回一个数据段
顺序号,如果计时器在确认信息到

 

   上面,我们总体上了解一点TCP协
数据流的传输最重要的就是header里面的
端和服务端的服务响应就是同header里面
的内容实施的,因此,要实现DOS,就必

议,重要的是要熟悉TCP的数据头(header)。因为
东西,至于发送的数据,只是header附带上的。客户
的数据相关,两端的信息交流和交换是根据header中
须对header中的内容非常熟悉。

 

  下面是TCP数据段头格式。RFC793中的                                 

 

  (请大家注意网页显示空格使下面的格式错位了)                               

 

                                                 

 

   0 1 2 3

 

   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4

5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

 

   +-+-+-+-+-+-+-+-+-

+-+-+-+-+-+-+-+-+-+-+-+-+-+-

+-+-+-+-+-+-+-+-+-+

 

   | Source Port | Des

tination Port |

 

   +-+-+-+-+-+-+-+-+-

+-+-+-+-+-+-+-+-+-+-+-+-+-+-

+-+-+-+-+-+-+-+-+-+

 

   | Seque

nce Number |

 

   +-+-+-+-+-+-+-+-+-

+-+-+-+-+-+-+-+-+-+-+-+-+-+-

+-+-+-+-+-+-+-+-+-+

 

   | Acknowledgment Numb

er |

 

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 

   | Data | |U|A

|P|R|S|F| |

 

   | Offset| Reserved

|R|C|S|S|Y|I| Window

|

 

   | | |G|K|H|T|N|N|

|

 

   +-+-+-+-+-+-+-+-+-

+-+-+-+-+-+-+-+-+-+-+-+-+-+-

+-+-+-+-+-+-+-+-+-+

 

   | Checksum

| Urgent Pointer |

 

 

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 

   | Options

| Padding |

 

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 

   | da

ta |

 

   +-+-+-+-+-+-+-+-+-

+-+-+-+-+-+-+-+-+-+-+-+-+-+-

+-+-+-+-+-+-+-+-+-+

 

   TCP Header Format             



  Source Port和 Destination Port :

是本地端口和目标端口

 

  Sequence Number 和 A
的字节号。这都是32位的,

cknowledgment Number :是顺
在TCP流中,每个数据字节都被

序号和确认号,确认号是希望接收
编号。

 

  Data offset :表明TCP头包含多少个
是不定的。

32位字,用来确定头的长度,因为头中可选字段长度

 

  Reserved : 保留的6位,现在没用,都是0                         

 

   接下来是6个1位的标志,这是两个
标志来确定信息流的种类。下面是一些介

计算机数据交流的信息标志。接收和发送断根据这些
绍:

 

   URG:(Urgent Poin
理避免TCP数据流中断

ter field significant)紧急

指针。用到的时候值为1,用来处

 

   ACK:(Acknowledgm
Number)为合法,为0的时

ent field significant)置1时
候表示数据段不包含确认信息,

表示确认号(Acknowledgment
确认号被忽略。

 

   PSH:(Push Function),PUSH标
直接送到应用程序,而不必等到缓冲区满

志的数据,置1时请求的数据段在接收方得到后就可
时才传送。

 

   RST:(Reset the connection)
绝非法数据和请求。如果接收到RST位时

用于复位因某种原因引起出现的错误连接,也用来拒
候,通常发生了某些错误。

 

   SYN:(Synchronize
ACK=0,连接响应时,SYN=1
Accepted。

sequence numbers)用来建立
,ACK=1。即,SYN和ACK来区分C

连接,在连接请求中,SYN=1,
onnection Request和Connection

 

   FIN:(No more dat

a from sender)用来释放连接

,表明发送方已经没有数据发送了

 

   知道这重要的6个指示标志后,我们继续来。                               

 

   16位的WINDOW字段:
包括确认号减1(即已发送

表示确认了字节后还可以发送多
所有数据)在内的所有数据段。

少字节。可以为0,表示已经收到

 

   接下来是16位的Checksum字段,用来确保可靠性的。               

 

   16位的Urgent Point

er,和下面的字段我们这里不解

释了。不然太多了。呵呵,偷懒啊

 

   我们进入比较重要的一部分:TCP连接握手过程。这个过程简单地分为三步。

 

   在没有连接中,接受
送连接请求。

方(我们针对服务器),服务器

处于LISTEN状态,等待其他机器发

 

  第一步:客户端发送一个带SYN位的
序号为10,那么则为:SYN=10,ACK=0,

请求,向服务器表示需要连接,比如发送包假设请求
然后等待服务器的响应。

 

  第二步:服务器接收到
RST=1应答,拒绝建立连接
,假设为100,ACK位则是客
用这样的数据发送给客户端

这样的请求后,查看是否在LIST
。如果接收连接,那么服务器发
户端的请求序号加1,本例中发
。向客户端表示,服务器连接已

EN的是指定的端口,不然,就发送
送确认,SYN为服务器的一个内码
送的数据是:SYN=100,ACK=11,
经准备好了,等待客户端的确认

 

   这时客户端接收到消息后,分析得到的信息,准备发送确认连接信号到服务器   

 

  第三步:客户端发送确
位,ACK位是服务器发送的S

认建立连接的消息给服务器。确
YN位加1。即:SYN=11,ACK=101

认信息的SYN位是服务器发送的ACK

 

   这时,连接已经建立起来了。然后发送数据,。这是一个基本的请求和连接过程。需要注意的是这些标志位的关系,比如SYN、ACK。

 

  3、服务器的缓冲区队列(Backlog Queue)                       

 

   服务器不会在每次接收到SYN请求
空间,建立会话,并放到一个等待队列中
不在为新的连接分配任何东西,直接丢弃
务了。

就立刻同客户端建立连接,而是为连接请求分配内存
。如果,这个等待的队列已经满了,那么,服务器就
新的请求。如果到了这样的地步,服务器就是拒绝服

 

   如果服务器接收到一
端IP,把这样的连接在缓冲

RST位信息,那么就认为这是
区队列中清除掉。这对IP欺骗有

一个有错误的数据段,会根据客户
影响,也能被利用来做DOS攻击。

 

  上面的介绍,我们了解TCP协议
质上的方式就是有两个:

,以及连接过程。要对SERVER实施拒绝服务攻击,实

 

                                                                           

 

  一, 迫使服务器的缓冲区满,不接收新的请求。                             

 

                                                                           

 

  二, 使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接   

 

                                                                           

 

  这就是DOS攻击实施的基本思想。具体实现有这样的方法:                   

 

                                                                           

 

  1、SYN FLOOD                                                   

 

                                                                           

 

  利用服务器的连接
,向服务器端不断地成倍发
有建立起来的连接请求,于

缓冲区(Backlog Queue),利
送只有SYN标志的TCP连接请求。
是为这些请求建立会话,排到缓

用特殊的程序,设置TCP的Header
当服务器接收的时候,都认为是没
冲区队列中。

 

                                                                           

 

  如果你的SYN请求
收新的请求了。其他合法用
都是你的只有SYN标记的请

超过了服务器能容纳的限度,缓
户的连接都被拒绝掉。可以持续
求。

冲区队列满,那么服务器就不再接
你的SYN请求发送,直到缓冲区中

 

                                                                           

 

  现在有很多实施SYN FLOOD的工具,呵呵,自己找去吧。               

 

                                                                           

 

  2、IP欺骗DOS攻击                                                   

 

  这种攻击利用RST位来实现。假
了正常的连接,攻击者构造攻击的TCP数
带有RST位的TCP数据段。服务器接收到这
会清空缓冲区中建立好的连接。这时,如
没有这样的连接了,该用户就必须从新开

设现在有一个合法用户(1.1.1.1)已经同服务器建立
据,伪装自己的IP为1.1.1.1,并向服务器发送一个
样的数据后,认为从1.1.1.1发送的连接有错误,就
果合法用户1.1.1.1再发送合法数据,服务器就已经
始建立连接。

 

                                                                           

 

  攻击时,伪造大量

IP地址,向目标发送RST数据

,使服务器不对合法用户服务。

 

                                                                           

 

  3、 带宽DOS攻击                                                     

 

                                                                           

 

  如果你的连接带宽足够大而服务
冲区消耗服务器的带宽。这种攻击就是人
过是初级DOS攻击。呵呵。Ping白宫??

器又不是很大,你可以发送请求,来消耗服务器的缓
多力量大了,配合上SYN一起实施DOS,威力巨大。不
你发疯了啊!

 

                                                                           

 

  4、自身消耗的DOS攻击                                                 

 

                                                                           

 

  这是一种老式的攻击手法。说老
Win95 (winsock v1), Cisco IOS v.10.x

式,是因为老式的系统有这样的自身BUG。比如
, 和其他过时的系统。

 

                                                                           

 

  这种DOS攻击就是
主机给自己发送TCP请求和
伪装对一些身份认证系统还

把请求客户端IP和端口弄成主机
连接。这种主机的漏洞会很快把
是威胁巨大的。

IP端口相同,发送给主机。使得
资源消耗光。直接导致当机。这中

 

                                                                           

 

  上面这些实施DOS攻击的手段最
这些攻击方法都是建立在TCP基础上的。

主要的就是构造需要的TCP数据,充分利用TCP协议。
还有其他的DOS攻击手段。

 

                                                                           

 

  5、塞满服务器的硬盘                                                     

 

                                                                           

 

  通常,如果服务器可以没有限制
的途径,比如:

地执行写操作,那么都能成为塞满硬盘造成DOS攻击

 

                                                                           

 

  发送垃圾邮件。一般公司的服务
者可以发送大量的垃圾邮件,这些邮件可
到邮箱被撑破或者把硬盘塞满。

器可能把邮件服务器和WEB服务器都放在一起。破坏
能都塞在一个邮件队列中或者就是坏邮件队列中,直

 

                                                                           

 

  让日志记录满。入侵者可以构造
能就造成日志文件非常庞大,甚至会塞满
就不能发现入侵者真正的入侵途径。

大量的错误信息发送出来,服务器记录这些错误,可
硬盘。同时会让管理员痛苦地面对大量的日志,甚至

 

                                                                           

 

  向匿名FTP塞垃圾文件。这样也可以塞满硬盘空间。                         

 

                                                                           

 

  6、合理利用策略                                                         

 

                                                                           

 

  一般服务器都有关于帐户锁定的
这个帐号将被锁定。这点也可以被破坏者
帐号被锁定,而正常的合法用户就不能使

安全策略,比如,某个帐户连续3次登陆失败,那么
利用,他们伪装一个帐号去错误登陆,这样使得这个
用这个帐号去登陆系统了。

 

                                                                           

 

  作者声明:                                                               

 

                                                                           

 

  本文只是一种技术
关。

讨论,不存在任何恶意。如果有

人利用做过什么坏事情,同本人无

 

                                                                           

 

  处于本人的水平限

制,文中难免有错误,希望指正

交流。联系refdom@263.net

 

                                                                           

 

  本文不提供任何工具的下载连接,有这些问题不要问我。呵呵。                  

posted @ 2004-10-27 10:44  泡面 @ 幸福  阅读(1411)  评论(0编辑  收藏  举报