DOS攻击原理以及常见方法介绍
已经有很多介绍DOS |
(Denial of Service,即拒绝 |
服务)攻击的文章,但是,多数人 |
1、什么是DOS攻击 |
DOS:即Denial Of S |
ervice,拒绝服务的缩写,可不 |
能认为是微软的dos操作系统了。 |
2、有关TCP协议的东西 |
TCP(transmission |
control protocol,传输控制协 |
议),是用来在不可靠的因特网上 |
上面,我们总体上了解一点TCP协 |
议,重要的是要熟悉TCP的数据头(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 |
cknowledgment Number :是顺 |
序号和确认号,确认号是希望接收 |
Data offset :表明TCP头包含多少个 |
32位字,用来确定头的长度,因为头中可选字段长度 |
Reserved : 保留的6位,现在没用,都是0 |
接下来是6个1位的标志,这是两个 |
计算机数据交流的信息标志。接收和发送断根据这些 |
URG:(Urgent Poin |
ter field significant)紧急 |
指针。用到的时候值为1,用来处 |
ACK:(Acknowledgm |
ent field significant)置1时 |
表示确认号(Acknowledgment |
PSH:(Push Function),PUSH标 |
志的数据,置1时请求的数据段在接收方得到后就可 |
RST:(Reset the connection) |
用于复位因某种原因引起出现的错误连接,也用来拒 |
SYN:(Synchronize |
sequence numbers)用来建立 |
连接,在连接请求中,SYN=1, |
FIN:(No more dat |
a from sender)用来释放连接 |
,表明发送方已经没有数据发送了 |
知道这重要的6个指示标志后,我们继续来。 |
16位的WINDOW字段: |
表示确认了字节后还可以发送多 |
少字节。可以为0,表示已经收到 |
接下来是16位的Checksum字段,用来确保可靠性的。 |
16位的Urgent Point |
er,和下面的字段我们这里不解 |
释了。不然太多了。呵呵,偷懒啊 |
我们进入比较重要的一部分:TCP连接握手过程。这个过程简单地分为三步。 |
在没有连接中,接受 |
方(我们针对服务器),服务器 |
处于LISTEN状态,等待其他机器发 |
第一步:客户端发送一个带SYN位的 |
请求,向服务器表示需要连接,比如发送包假设请求 |
第二步:服务器接收到 |
这样的请求后,查看是否在LIST |
EN的是指定的端口,不然,就发送 |
这时客户端接收到消息后,分析得到的信息,准备发送确认连接信号到服务器 |
第三步:客户端发送确 |
认建立连接的消息给服务器。确 |
认信息的SYN位是服务器发送的ACK |
这时,连接已经建立起来了。然后发送数据, |
3、服务器的缓冲区队列(Backlog Queue) |
服务器不会在每次接收到SYN请求 |
就立刻同客户端建立连接,而是为连接请求分配内存 |
如果服务器接收到一 |
个RST位信息,那么就认为这是 |
一个有错误的数据段,会根据客户 |
上面的介绍,我们了解TCP协议 |
,以及连接过程。要对SERVER实施拒绝服务攻击,实 |
|
一, 迫使服务器的缓冲区满,不接收新的请求。 |
|
二, 使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接 |
|
这就是DOS攻击实施的基本思想。具体实现有这样的方法: |
|
1、SYN FLOOD |
|
利用服务器的连接 |
缓冲区(Backlog Queue),利 |
用特殊的程序,设置TCP的Header |
|
如果你的SYN请求 |
超过了服务器能容纳的限度,缓 |
冲区队列满,那么服务器就不再接 |
|
现在有很多实施SYN FLOOD的工具,呵呵,自己找去吧。 |
|
2、IP欺骗DOS攻击 |
这种攻击利用RST位来实现。假 |
设现在有一个合法用户(1.1.1.1)已经同服务器建立 |
|
攻击时,伪造大量 |
的IP地址,向目标发送RST数据 |
,使服务器不对合法用户服务。 |
|
3、 带宽DOS攻击 |
|
如果你的连接带宽足够大而服务 |
器又不是很大,你可以发送请求,来消耗服务器的缓 |
|
4、自身消耗的DOS攻击 |
|
这是一种老式的攻击手法。说老 |
式,是因为老式的系统有这样的自身BUG。比如 |
|
这种DOS攻击就是 |
把请求客户端IP和端口弄成主机 |
的IP端口相同,发送给主机。使得 |
|
上面这些实施DOS攻击的手段最 |
主要的就是构造需要的TCP数据,充分利用TCP协议。 |
|
5、塞满服务器的硬盘 |
|
通常,如果服务器可以没有限制 |
地执行写操作,那么都能成为塞满硬盘造成DOS攻击 |
|
发送垃圾邮件。一般公司的服务 |
器可能把邮件服务器和WEB服务器都放在一起。破坏 |
|
让日志记录满。入侵者可以构造 |
大量的错误信息发送出来,服务器记录这些错误,可 |
|
向匿名FTP塞垃圾文件。这样也可以塞满硬盘空间。 |
|
6、合理利用策略 |
|
一般服务器都有关于帐户锁定的 |
安全策略,比如,某个帐户连续3次登陆失败,那么 |
|
作者声明: |
|
本文只是一种技术 |
讨论,不存在任何恶意。如果有 |
人利用做过什么坏事情,同本人无 |
|
处于本人的水平限 |
制,文中难免有错误,希望指正 |
交流。联系refdom@263.net |
|
本文不提供任何工具的下载连接,有这些问题不要问我。呵呵。 |