电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> 网管专栏
DOS攻击原理及常见方法介绍 -网管专栏,网络技术
作者:网友供稿 点击:46
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
已经有很多介绍dos(denial of service,即拒绝服务)攻击的文章,但是,多数人还是不知道dos到底是什么,它到底是怎么实现的。本文主要介绍dos的机理和常见的实施方法。因前段时间仔细了解了tcp/ip协议以及rfc文档,有点心得。同时,文中有部分内容参考了shaft的文章翻译而得。要想了解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=11,ack=101><data>。这是一个基本的请求和连接过程。需要注意的是这些标志位的关系,比如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次登陆失败,那么这个帐号将被锁定。这点也可以被破坏者利用,他们伪装一个帐号去错误登陆,这样使得这个帐号被锁定,而正常的合法用户就不能使用这个帐号去登陆系统了。

作者声明: 本文只是一种技术讨论,不存在任何恶意。如果有人利用做过什么坏事情,同本人无关。处于本人的水平限制,文中难免有错误,希望指正交流。联系refdom@263.net 本文不提供任何工具的下载连接,有这些问题不要问我。呵呵。 ,
文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·如何查看本机打开的端口是被哪个程序使用的-网管专栏,操作系统
·如何在多台电脑上同时安装Windows-网管专栏,操作系统
·网管人员必备的网络命令(转贴)-数据库专栏,SQL Server
·Postfix + Courier-IMAP + Cyrus-SASL + MySQL + IMP完全指南(新版)-网管专栏,邮件服务
·一个IP建多个Web站点--主机头名法-网管专栏,WEB服务
·WinXP/2003网络服务详解-网管专栏,操作系统
·电信网管中的Java客户端(二)-JSP教程,Java技巧及代码
·Resin在Windows系统下的安装-网管专栏,WEB服务
·在Win2k3下配置Apache+php+mysql-网管专栏,WEB服务
·服务器配置SSL-网管专栏,操作系统

最新文章
·如何查看本机打开的端口是被哪个程序使用的-网管专栏,操作系统
·服务器配置SSL-网管专栏,操作系统
·一个IP建多个Web站点--主机头名法-网管专栏,WEB服务
·如何在多台电脑上同时安装Windows-网管专栏,操作系统
·Linux内核技术分析-网管专栏,操作系统
·在Win2k3下配置Apache+php+mysql-网管专栏,WEB服务
·在Redhat Enterprise AS 3 下源码安装配置 MONO-网管专栏,WEB服务
·网管人员必备的网络命令(转贴)-数据库专栏,SQL Server
·WinXP/2003网络服务详解-网管专栏,操作系统
·Apache安装设置-网管专栏,WEB服务




版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号