技术揭秘:DoS攻击原理以及常见方法

0 views
Skip to first unread message

10...@1024m.com

unread,
Nov 16, 2006, 10:07:29 PM11/16/06
to top...@googlegroups.com, NetMe...@googlegroups.com, eMee...@googlegroups.com, Netwo...@googlegroups.com, web...@googlegroups.com
本文主要介绍DOS的机理和常见的实施方法。因前段时间仔细了解了TCP/IP协议以及
RFC文档,有点心得。同时,文中有部分内容参考了Shaft的文章翻译而得。要想了解
DOS攻击得实现机理,必须对TCP有一定的了解。所以,本文分为两部分,第一部分介绍
一些实现DOS攻击相关的协议,第二部分则介绍DOS的常见方式。

什么是DOS攻击


DOS:即Denial Of Service,拒绝服务的缩写,可不能认为是微软的dos操作系统了。
拒绝服务,就相当于必胜客在客满的时候不再让人进去一样,呵呵,你想吃馅饼,就必
须在门口等吧。DOS攻击即攻击者想办法让目标机器停止提供服务或资源访问,这些资
源包括磁盘空间、内存、进程甚至网络带宽,从而阻止正常用户的访问。比如:


* 试图FLOOD服务器,阻止合法的网络通讯


* 破坏两个机器间的连接,阻止访问服务


* 阻止特殊用户访问服务


* 破坏服务器的服务或者导致服务器死机


不过,只有那些比较阴险的攻击者才单独使用DOS攻击,破坏服务器。通常,DOS攻击会
被作为一次入侵的一部分,比如,绕过入侵检测系统的时候,通常从用大量的攻击出发
,导致入侵检测系统日志过多或者反应迟钝,这样,入侵者就可以在潮水般的攻击中混
骗过入侵检测系统。


有关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数据段头格式。


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)用来释放连接,表明发送方已经没有数据发
送了。

_________________________________________________________________
与联机的朋友进行交流,请使用 MSN Messenger: http://messenger.msn.com/cn

Reply all
Reply to author
Forward
0 new messages