`

DOS(Denial of Service,即拒绝服务)攻击

阅读更多

DOS Denial of Service ,即拒绝服务)攻击

本文主要介绍 DOS 的机理和常见的实施方法。要想了解 DOS 攻击得实现机理,必须对 TCP 有一定的了解。


   1 、什么是 DOS 攻击

   DOS :即 Denial Of Service ,拒绝服务的缩写,可不能认为是微软的 dos操作系统 了。好象在 5·1 的时候闹过这样的笑话。拒绝服务,就相当于必胜客在客满的时候不再让人进去一样,呵呵,你想吃馅饼,就必须在门口等吧。 DOS 攻击即让目标机器停止提供服务或资源访问。

   2 、有关 TCP 协议的东西

    TCP transmission control protocol ,传输控制协议),是用来在不可 * 的因特网上提供可 * 的、端到端的字节流通讯协议,在 RFC793 中有正式定义,还有一些解决错误的东西 RFC 1122 中有记录, RFC 1323 则有 TCP 的功能扩展。我们常见到的 TCP/IP 协议中, IP 层不保证将数据报正确传送到目的地, TCP 则从本地机器接受用户的数据流,将其分成 不超过 64K 字节的数据片段,将每个数据片段作为单独的 IP 数据包发送出去,最后在目的地机器中再组合成完整的字节流, TCP 协议必须保证可 * 性。发送和 接收方的 TCP 传输以数据段的形式 交换 据,一个数据段包括一个固定的 20 字节,加上可选部分,后面再跟上数据, TCP 协议从发送方传送一个数据段的时候,还要启动计时器,当数据段到达目的地 后,接收方还要发送回一个数据段,其中有一个确认序号,它等于希望收到的下一个数据段的顺序号,如果计时器在确认信息到达前超时了,发送方会重新发送这个 数据段。

  上面,我们总体上了解一点 TCP 协议,重要的是要熟悉 TCP 的数据头( header )。因为数据流的传输最重要的就是 header 里面的东西,至于发送的数据,只是 header 附带上的。客户端和服务端的服务响应就是同 header 里面的数据相关,两端的信息交流和 交换 是根据 header 中的内容实施的,因此,要实现 DOS ,就必须对 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 | Destination Port |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Sequence Number |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Acknowledgment Number |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | 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 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | data |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

TCP Header Format

   Source Port Destination Port : 是本地端口和目标端口
   Sequence Number Acknowledgment Number :是顺序号和确认号,确认号是希望接收的字节号。这都是 32 位的,在 TCP 流中,每个数据字节都被编号。
   Data offset : 表明 TCP 头包含多少个 32 位字,用来确定头的长度,因为头中可选字段长度是不定的。
   Reserved : 保留的 6 位,现在没用,都是 0

  接下来是 6 1 位的标志,这是两个计算机数据交流的信息标志。接收和发送断根据这些标志来确定信息流的种类。下面是一些介绍:
   URG :( Urgent Pointer field significant )紧急指针。用到的时候值为 1 ,用来处理避免 TCP 数据流中断
   ACK :( Acknowledgment field significant )置 1 时表示确认号( Acknowledgment Number )为合法,为 0 的时候表示数据段不包含确认信息,确认号被忽略。
   PSH :( Push Function ), PUSH 标志的数据,置 1 时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。
   RST :( Reset the connection )用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到 RST 位时候,通常发生了某些错误。
    SYN :( Synchronize sequence numbers )用来建立连接,在连接请求中, SYN=1 ACK=0 ,连接响应时, SYN=1 ACK=1 。即, SYN ACK 来区分 Connection Request Connection Accepted
   FIN :( No more data from sender )用来释放连接,表明发送方已经没有数据发送了。

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

   16 位的 WINDOW 字段:表示确认了字节后还可以发送多少字节。可以为 0 ,表示已经收到包括确认号减 1 (即已发送所有数据)在内的所有数据段。
  接下来是 16 位的 Checksum 字段,用来确保可 * 性的。
   16 位的 Urgent Pointer ,和下面的字段我们这里不解释了。不然太多了。呵呵,偷懒啊。

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

  在没有连接中,接受方(我们针对 服务器 ), 服务器 处于 LISTEN 状态,等待其他机器发送连接请求。

  第一步:客户端发送一个带 SYN 位的请求,向 服务器 表示需要连接,比如发送包假设请求序号为 10 ,那么则为: SYN=10 ACK=0 ,然后等待 服务器 的响应。

  第二步: 服务器 接收到这样的请求后,查看是否在 LISTEN 的是指定的端口,不然,就发送 RST=1 应答,拒绝建立连接。如果接收连接,那么 服务器 发送确认, SYN 服务器 的一个内码,假设为 100 ACK 位则是客户端的请求序号加 1 ,本例中发送的数据是: SYN=100 ACK=11 ,用这样的数据发送给客户端。向客户端表示, 服务器 连接已经准备好了,等待客户端的确认

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

  第三步:客户端发送确认建立连接的消息给 服务器 。确认信息的 SYN 位是 服务器 发送的 ACK 位, ACK 位是 服务器 发送的 SYN 位加 1 。即: SYN=11 ACK=101

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

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

   服务器 不会在每次接收到 SYN 请求就立刻同客户端建立连接,而是为连接请求分配内存空间,建立会话,并放到一个等待队列中。如果,这个等待的队列已经满了,那么, 服务器 就不在为新的连接分配任何东西,直接丢弃新的请求。如果到了这样的地步, 服务器 就是拒绝服务了。
  如果 服务器 接收到一个 RST 位信息,那么就认为这是一个有错误的数据段,会根据客户端 IP ,把这样的连接在缓冲区队列中清除掉。这对 IP 欺骗有影响,也能被利用来做 DOS 攻击。

  上面的介绍,我们了解 TCP 协议,以及连接过程。要对 SERVER 实施拒绝服务攻击,实质上的方式就是有两个:
  
   : 迫使 服务器 的缓冲区满,不接收新的请求。
  
   : 使用 IP 欺骗,迫使 服务器 把合法用户的连接复位,影响合法用户的连接
  
  这就是 DOS 攻击实施的基本思想。具体实现有这样的方法:
  
   1 SYN FLOOD
  
  利用 服务器 的连接缓冲区( Backlog Queue ),利用特殊的程序,设置 TCP Header ,向 服务器 端不断地成倍发送只有 SYN 标志的 TCP 连接请求。当 服务器 接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。
  
  如果你的 SYN 请求超过了 服务器 能容纳的限度,缓冲区队列满,那么 服务器 就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续你的 SYN 请求发送,直到缓冲区中都是你的只有 SYN 标记的请求。
  
  现在有很多实施 SYN FLOOD 的工具,呵呵,自己找去吧。
  
   2 IP 欺骗 DOS 攻击

  这种攻击利用 RST 位来实现。假设现在有一个合法用户 (1.1.1.1) 已经同 服务器 建立了正常的连接,攻击者构造攻击的 TCP 数据,伪装自己的 IP 1.1.1.1 ,并向 服务器 发送一个带有 RST 位的 TCP 数据段。 服务器 接收到这样的数据后,认为从 1.1.1.1 发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户 1.1.1.1 再发送合法数据, 服务器 就已经没有这样的连接了,该用户就必须从新开始建立连接。
  
  攻击时,伪造大量的 IP 地址,向目标发送 RST 数据,使 服务器 不对合法用户服务。

3 带宽 DOS 攻击
  
  如果你的连接带宽足够大而 服务器 又不是很大,你可以发送请求,来消耗 服务器 的缓冲区消耗 服务器 的带宽。这种攻击就是人多力量大了,配合上 SYN 一起实施 DOS ,威力巨大。不过是初级 DOS 攻击。呵呵。 Ping 白宫??你发疯了啊!
  
   4 自身消耗的 DOS 攻击
  
  这是一种老式的攻击手法。说老式,是因为老式的系统有这样的自身 BUG 。比如 Win95 (winsock v1), Cisco IOS v.10.x, 和其他过时的系统。
  
  这种 DOS 攻击就是把请求客户端 IP 和端口弄成主机的 IP 端口相同,发送给主机。使得主机给自己发送 TCP 请求和连接。这种主机的 漏洞 会很快把资源消耗光。直接导致当机。这中伪装对一些身份认证系统还是威胁巨大的。
  
  上面这些实施 DOS 攻击的手段最主要的就是构造需要的 TCP 数据,充分利用 TCP 协议。这些攻击方法都是建立在 TCP 基础上的。还有其他的 DOS 攻击手段。
  
   5 塞满 服务器 的硬盘   
  通常,如果 服务器 可以没有限制地执行写操作,那么都能成为塞满硬盘造成 DOS 攻击的途径,比如: 发送垃圾邮件。一般公司的 服务器 可能把邮件 服务器 WEB服务器 都放在一起。破坏者可以发送大量的垃圾邮件,这些邮件可能都塞在一个邮件队列中或者就是坏邮件队列中,直到 邮箱 被撑破或者把硬盘塞满。   
  让日志记录满。入侵者可以构造大量的错误信息发送出来, 服务器 记录这些错误,可能就造成日志文件非常庞大,甚至会塞满硬盘。同时会让管理员痛苦地面对大量的日志,甚至就不能发现入侵者真正的入侵途径。 向匿名 FTP 塞垃圾文件。这样也可以塞满硬盘空间。   


   6 合理利用策略
  
  一般 服务器 都有关于帐户锁定的安全策略,比如,某个帐户连续 3 次登陆失败,那么这个帐号将被锁定。这点也可以被破坏者利用,他们伪装一个帐号去错误登陆,这样使得这个帐号被锁定,而正常的合法用户就不能使用这个帐号去登陆系统了。

 

分享到:
评论
1 楼 powerclark 2009-11-28  
看样子,任何一种协议都有它的弱点和不足啊!

相关推荐

    DDoS.rar_ddos_denial_denial of service_dos attack_拒绝服务攻击

    相信大家都一定不会对这两个这个词感到陌生,是的,拒绝服务攻击(Denial of Service),以及分布式拒绝服务攻击(Distributed Denial of Service)。

    DOS拒绝服务攻击方法

    我们所说的DoS (Denial of Service)攻击其中文含义是拒绝服务攻击,这种攻击行动使网站服务器充斥大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪而停止提供正常的网络服务。...

    DOS拒绝服务攻击源代码

    DOS(Denial of Service)拒绝服务攻击是黑客常用的攻击手段之一,其目的是通过大量无效请求使目标服务器过载,导致正常用户无法访问或使用服务。 在描述中提到“仅供学习使用”,这暗示了我们应当从理论分析和防御...

    计算机病毒与防护:拒绝服务攻击.ppt

    组合后报文 IP头 UDP头 数据A 偏移量=0 IP头 UDP头 数据B IP头 UDP头 数据A 数据B 偏移量=980 * * * * * * * * * * 拒绝服务攻击 拒绝服务攻击的定义 HTTP的请求响应模型 拒绝服务攻击:Denial of Service(Dos),...

    Hashcash - A Denial of Service Counter-Measure

    这样,攻击者发送大量垃圾邮件或执行其他类型的拒绝服务(DoS)攻击的成本就会提高。 hashcash的提出和设计灵感来源于对互联网资源滥用问题的早期研究,包括Dwork和Naor提出的CPU定价函数,用于应对垃圾邮件。后续...

    拒绝服务器攻击检测器

    拒绝服务器攻击(Denial of Service, DoS)是一种网络攻击方式,通过大量恶意流量或请求淹没目标服务器,使其无法正常处理合法用户的请求,从而导致服务中断。这种攻击可能由单一设备发起,也可能由多台受控设备...

    防火墙防止DDOS SYN Flood的原理详细介绍

    DoS(Denial of Service拒绝服务)和DDoS(Distributed Denial of Service分布式拒绝服务)攻击是大型网站和网络服务器的安全威胁之一。SYN Flood由于其攻击效果好,已经成为目前最流行的DoS和DDoS攻击手段。防火墙...

    论文研究-分布式拒绝服务攻击及防范研究.pdf

    拒绝服务攻击(Denial of Service,DoS)是网络上最常见的一种攻击方式,其攻击类型繁多、影响广泛,其中的分布式拒绝服务攻击(Distributed Denial of Service,DDoS)更是严重威胁网络安全,受到这种攻击的损失是无法...

    拒绝服务攻击对策及网络追踪的研究

    分布式拒绝服务攻击(Distributed Denial of Service,DDoS)则是DoS的一种高级形式,攻击者利用多台受感染的计算机(通常称为僵尸网络)同时向目标发起攻击,这种攻击方式更难防御,因为攻击流量来自多个源头,且...

    遭到拒绝服务攻击的路由器的解决办法

    拒绝服务(Denial of Service, DoS)攻击是一种常见的网络安全威胁,通过大量无效或恶意的网络流量淹没目标设备,使其无法正常处理合法请求,从而导致服务中断。在本例中,路由器作为网络的关键节点,遭受了分布式...

    如何利用路由器防止DoS拒绝服务攻击

    在现代网络环境中,拒绝服务(Denial of Service,简称DoS)攻击是一种常见的威胁,它通过消耗目标系统的资源,导致合法用户无法访问服务。为了有效抵御DoS攻击,合理配置路由器成为关键策略之一。本文将详细探讨...

    拒绝服务攻击PPT拒绝服务攻击PPT

    拒绝服务攻击(Denial of Service, DoS)是一种恶意网络攻击行为,其目的是通过消耗或破坏网络、系统或服务的资源,导致合法用户无法正常使用服务。这种攻击方式自互联网诞生以来就一直存在,并且由于其破坏性强,...

    分布式拒绝服务攻击(DDoS)原理及防范

    传统的拒绝服务(Denial of Service,简称DoS)攻击主要依赖于单个攻击源对目标进行攻击。然而,随着计算机硬件性能的提升以及网络带宽的增大,单一DoS攻击的效果逐渐减弱。为了应对这种情况,攻击者开始采用DDoS...

    网络攻击与防御 --拒绝服务攻击ppt

    拒绝服务攻击(Denial of Service,DoS)是一种恶意行为,旨在使网络服务无法提供给合法用户。DoS攻击通过消耗或占用目标系统的资源,如网络带宽、CPU时间和内存,使其无法正常运行。这种攻击方式包括直接消耗资源...

    网络攻击与防范 拒绝服务攻击实验.docx

    本文档对拒绝服务攻击(Denial of Service,DoS)进行了实验和分析,介绍了SYN Flood攻击的原理和过程,并对防范措施进行了讨论。 一、拒绝服务攻击的定义和原理 拒绝服务攻击是一种类型的网络攻击,使网站服务器...

    拒绝服务攻击检测器.rar

    拒绝服务攻击(Denial of Service, DoS)是一种恶意网络攻击方式,其目的是通过大量无效请求,使目标服务器过载,导致正常用户无法访问服务。这类攻击常常利用网络中的漏洞或者资源消耗策略来瘫痪目标系统。为了防御...

    论文研究-基于虚拟机迁移的DoS攻击防御方法.pdf

    利用云计算资源共享的特性,攻击者可以通过不停消耗带宽资源,使得同一物理主机上的其他用户无法接受正常服务,造成拒绝服务(denial of service,DoS)攻击。这种攻击区别于传统网络体系中的DoS攻击,因此难以应用...

    拒绝服务(DoS)攻击的安全管理

    拒绝服务(Denial-of-Service,简称DoS)攻击作为一种网络攻击手段,已经存在多年,并且对互联网安全构成了重大威胁。这类攻击的目的在于使目标系统或服务无法正常提供服务,从而导致合法用户无法访问所需的资源或...

Global site tag (gtag.js) - Google Analytics