收藏 分享(赏)

DOS 攻 击 原 理 以 及 常 见 方 法 介 绍-学院-黑客基地.doc

上传人:wspkg9802 文档编号:8734164 上传时间:2019-07-09 格式:DOC 页数:6 大小:29KB
下载 相关 举报
DOS 攻 击 原 理 以 及 常 见 方 法 介 绍-学院-黑客基地.doc_第1页
第1页 / 共6页
DOS 攻 击 原 理 以 及 常 见 方 法 介 绍-学院-黑客基地.doc_第2页
第2页 / 共6页
DOS 攻 击 原 理 以 及 常 见 方 法 介 绍-学院-黑客基地.doc_第3页
第3页 / 共6页
DOS 攻 击 原 理 以 及 常 见 方 法 介 绍-学院-黑客基地.doc_第4页
第4页 / 共6页
DOS 攻 击 原 理 以 及 常 见 方 法 介 绍-学院-黑客基地.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、DOS 攻 击 原 理 以 及 常 见 方 法 介 绍-学院-黑客基地DOS 攻 击 原 理 以 及 常 见 方 法 介 绍已经有很多介绍 DOS(Denial of Service,即拒绝服务)攻击的文章,但是,多数人还是不知道 DOS到底是什么,它到底是怎么实现的。本文主要介绍 DOS的机理和常见的实施方法。因前段时间仔细了解了 TCP/IP协议以及 RFC文档,有点心得。同时,文中有部分内容参考了 Shaft的文章翻译而得。要想了解 DOS攻击得实现机理,必须对 TCP有一定的了解。1、什么是 DOS攻击DOS:即 Denial Of Service,拒绝服务的缩写,可不能认为是微软的

2、dos操作系统了。好象在 51的时候闹过这样的笑话。拒绝服务,就相当于必胜客在客满的时候不再让人进去一样,呵呵,你想吃馅饼,就必须在门口等吧。DOS 攻击即让目标机器停止提供服务或资源访问。2、有关 TCP协议的东西TCP(transmission control protocol,传输控制协议) ,是用来在不可靠的因特网上提供可靠的、端到端的字节流通讯协议,在RFC793中有正式定义,还有一些解决错误的东西在 RFC 1122中有记录,RFC 1323 则有 TCP的功能扩展。我们常见到的 TCP/IP协议中,IP 层不保证将数据报正确传送到目的地,TCP 则从本地机器接受用户的数据流,将其

3、分成不超过 64K字节的数据片段,将每个数据片段作为单独的 IP数据包发送出去,最后在目的地机器中再组合成完整的字节流,TCP 协议必须保证可靠性。发送和接收方的 TCP传输以数据段的形式交换数据,一个数据段包括一个固定的 20字节,加上可选部分,后面再跟上数据,TCP 协议从发送方传送一个数据段的时候,还要启动计时器,当数据段到达目的地后,接收方还要发送回一个数据段,其中有一个确认序号,它等于希望收到的下一个数据段的顺序号,如果计时器在确认信息到达前超时了,发送方会重新发送这个数据段。上面,我们总体上了解一点 TCP协议,重要的是要熟悉 TCP的数据头(header) 。因为数据流的传输最重

4、要的就是 header里面的东西,至于发送的数据,只是 header附带上的。客户端和服务端的服务响应就是同 header里面的数据相关,两端的信息交流和交换是根据header中的内容实施的,因此,要实现 DOS,就必须对 header中的内容非常熟悉。下面是 TCP数据段头格式。RFC793 中的(请大家注意网页显示空格使下面的格式错位了)0 1 2 30 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+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

5、+-+-+-+| Source Port | Destination Port |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Sequence Number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Acknowledgment Number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Data | |U|A|P|R|S|

6、F| | Offset| Reserved |R|C|S|S|Y|I| Window | | |G|K|H|T|N|N| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Checksum | Urgent Pointer |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Options | Padding |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

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

8、位,现在没用,都是 0接下来是 6个 1位的标志,这是两个计算机数据交流的信息标志。接收和发送断根据这些标志来确定信息流的种类。下面是一些介绍:URG:(Urgent Pointer field significant)紧急指针。用到的时候值为 1,用来处理避免 TCP数据流中断ACK:(Acknowledgment field significant)置 1时表示确认号(Acknowledgment Number)为合法,为 0的时候表示数据段不包含确认信息,确认号被忽略。PSH:(Push Function) ,PUSH 标志的数据,置 1时请求的数据段在接收方得到后就可直接送到应用程序,

9、而不必等到缓冲区满时才传送。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个指示标志后,我们继续来

10、。16位的 WINDOW字段:表示确认了字节后还可以发送多少字节。可以为 0,表示已经收到包括确认号减 1(即已发送所有数据)在内的所有数据段。接下来是 16位的 Checksum字段,用来确保可靠性的。16位的 Urgent Pointer,和下面的字段我们这里不解释了。不然太多了。呵呵,偷懒啊。我们进入比较重要的一部分:TCP 连接握手过程。这个过程简单地分为三步。在没有连接中,接受方(我们针对服务器) ,服务器处于 LISTEN状态,等待其他机器发送连接请求。第一步:客户端发送一个带 SYN位的请求,向服务器表示需要连接,比如发送包假设请求序号为 10,那么则为:SYN=10,ACK=0

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

12、1,ACK=101。这时,连接已经建立起来了。然后发送数据,。这是一个基本的请求和连接过程。需要注意的是这些标志位的关系,比如 SYN、ACK。3、服务器的缓冲区队列(Backlog Queue)服务器不会在每次接收到 SYN请求就立刻同客户端建立连接,而是为连接请求分配内存空间,建立会话,并放到一个等待队列中。如果,这个等待的队列已经满了,那么,服务器就不在为新的连接分配任何东西,直接丢弃新的请求。如果到了这样的地步,服务器就是拒绝服务了。如果服务器接收到一个 RST位信息,那么就认为这是一个有错误的数据段,会根据客户端 IP,把这样的连接在缓冲区队列中清除掉。这对 IP欺骗有影响,也能被利

13、用来做 DOS攻击。#上面的介绍,我们了解 TCP协议,以及连接过程。要对 SERVER实施拒绝服务攻击,实质上的方式就是有两个:一, 迫使服务器的缓冲区满,不接收新的请求。二, 使用 IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接这就是 DOS攻击实施的基本思想。具体实现有这样的方法:1、SYN FLOOD利用服务器的连接缓冲区(Backlog Queue) ,利用特殊的程序,设置 TCP的 Header,向服务器端不断地成倍发送只有 SYN标志的 TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。如果你的 SYN请求

14、超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续你的 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.

15、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基础上的。当然还有更多的实施方法,可以自己去研究。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报