对DDoS攻击的实现技术的研究

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:xiaogege0451
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:阐述了DDoS攻击的原理与方法,详细介绍了DDos攻击的实现。
  关键词:拒绝服务;DDoS;DDoS攻击
  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)23-881-02
  随着网络技术和网络应用的发展,网络安全问题显得越来越重要。拒绝服务攻击由于具有容易实施、难以防范、难以追踪等特点而成为最难解决的网络安全问题之一,给网络社会带来了极大的危害。同时,拒绝服务攻击也将是未来信息战的重要手段之一。因此,研究拒绝服务攻击及其对策是极为重要的。文章阐述了DDoS攻击的原理与方法,详细介绍了DDos攻击的实现。
  
  1 DDoS 攻击技术
  
  1.1 什么是DDoS
  DDoS(分布式拒绝服务),它的英文全称为Distributed Denial of Service,它是一种基于DoS的特殊形式的拒绝服务攻击,是一种分布、协作的大规模攻击方式。
  1.2 DDoS的攻击原理
  首先攻击者向服务器发送众多的带有虚假地址的请求,服务器发送回复信息后等待回传信息,由于地址是伪造的,所以服务器一直等不到回传的消息,分配给这次请求的资源就始终没有被释放。当服务器等待一定的时间后,连接会因超时而被切断,攻击者会再度传送新的一批请求,在这种反复发送伪地址请求的情况下,服务器资源最终会被耗尽。
  DDoS采用一种三层客户机/服务器结构,包括攻击主控机,攻击操纵机,攻击代理机三层。如图1所示。
  1.3 DDoS的攻击过程
  1.3.1 准备阶段,收集目标信息
  通常,攻击者的攻击并非盲目地胡乱进行的,他不会用一台通过Modem连接的PC机去轰炸(flooding)一个大型网站(当然,如果该网站有一些漏洞使得剧毒包型攻击也能奏效的话,用一台PC 机通过剧毒包攻击大型网站奏效的情况也是存在的。因此,在攻击发生前,攻击者需要先对目标进行侦察,如利用扫描工具对目标进行扫描。
  1.3.2 占领傀儡机和控制台
  在DDoS中,攻击者可以通过自己的机器直接对目标发起攻击,这样攻击者可能会冒着被发现的风险。通常,为了掩蔽自己不被发现,攻击者需要占领一些傀儡机,用来实施攻击。另外,为了达到需要的攻击力度,单靠一台或数台机器对一个大型系统的攻击是不够的,因此攻击者也需要大量的傀儡机器用于增强攻击的“火力”。
  1.3.3 攻击的实施
  在前面的准备工作完成之后,实际的攻击过程却相对比较简单,攻击者只需通过控制台向傀儡机发出指令,令其立即或在某个时间向指定的受害者大量发送特定的攻击数据包即可[1]。
  
  2 DDoS攻击的实现
  
  2.1 拒绝服务攻击的检测方法
  一般说来,同任何攻击一样,如果能够越早地检测出拒绝服务攻击,而不是等到受害者系统无法响应时才发觉攻击的存在,则对拒绝服务攻击的防范会有更多的帮助。
  单独看起来,风暴型拒绝服务攻击的数据包与正常的数据包是没有什么两样的。因此,对数据包进行孤立地检测的方法是无法检测风暴型拒绝服务攻击的。对于风暴型攻击,唯有通过统计分析才能奏效。
  2.2 SYN Flood的攻击方法
  2.2.1 什么是SYN Flood攻击
  SYN Flood攻击是一种典型的拒绝服务型(Denial of Service)攻击。所谓拒绝服务型攻击就是通过进行攻击,使受害主机或网络不能够良好的提供服务,从而间接达到攻击的目的。
  SYN Flood攻击利用的是IPv4中TCP协议的三次握手(Three-Way Handshake)过程进行的攻击。大家知道协议规定,如果一端想向另一端发起TCP连接,它需要首先发送TCP SYN 包到对方,对方收到后发送一个TCP SYN+ACK包回来,发起方再发送TCP ACK包回去,这样三次握手就结束了。我们把TCP连接的发起方叫作TCP客户机(TCP Client),TCP连接的接收方叫作TCP服务器(TCP Server)。值得注意的是在TCP服务器收到TCP SYN request包时,在发送TCP SYN+ACK包回TCP客户机前,TCP服务器要先分配好一个数据区专门服务于这个即将形成的TCP连接。一般把收到SYN包而还未收到ACK包时的连接状态成为半开连接(Half-open Connection)。
  2.2.2 三次握手建立TCP连接
  TCP是面向连接的协议。在连接建立的过程中要解决以下三个问题:①要是每一方能够确知对方的存在。②要允许双方协商一些参数(如最大报文段长度、最大窗口大小、服务质量等)。③能够运输实体资源(如缓存大小、连接表中的项目等)进行分配[2]。
  第一次握手:建立连接时,客户端发送syn包(SEQ=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
  第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(SEQ=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
  第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
  2.2.3 功能需求分析
  需求分析是软件定义时期的最后一个阶段,它的基本任务是准确回答“系统必须做什么?”这个问题。需求分析的结果是系统开发的基础,关系到工程的成败和软件产品的质量。因此用行之有效的对软件需求进行严格的审查验收。
  SYN Flood为最常见的DDoS攻击,因此需要编制一个程序能够实现多线程的SYN数据包的发送。
  2.3 系统功能函数的编程实现
  2.3.1 数据包生成模块setup
  用于进行初始设置,计算特定ip,特定端口,特定tcp序列号的检验和,生成数据包。如下代码作用为填充IP首部:
  wsprintf( src_ip, "%d.%d.%d.%d", rand() % 250 + 1, rand() % 250 + 1, rand() % 250 + 1, rand() % 250 + 1 );
  IpHeader.h_verlen = (4<<4 | sizeof(IpHeader)/sizeof(unsigned long));
  IpHeader.tos = 0;
  IpHeader.total_len = htons(sizeof(IpHeader)+sizeof(TcpHeader));
  IpHeader.ident = 1;
  IpHeader.frag_and_flags = 0x40;
  IpHeader.ttl = 128;
  IpHeader.proto = IPPROTO_TCP;
  IpHeader.checksum = 0;
  IpHeader.sourceIP = inet_addr(src_ip);
  IpHeader.destIP = inet_addr(dst_ip);
  2.3.2 数据包发送函数send_packet
  send_packet函数负责向目标主机发送SYN数据包。如下代码:
  int Ret = sendto(SendSocket, SendBuff[Tmp], sizeof(IP_HEADER) + sizeof(TCP_HEADER), 0, (struct sockaddr *) &Sin, sizeof(Sin));
  if (Ret == SOCKET_ERROR)
  { printf("ErrorCode:%d\n", GetLastError());
   CurrentThread--;
  return 0; }
  else
  {CurrentThread--;
  return 1; }
  2.3.3 线程监测函数watchthread
  watchthread函数用于检测当前线程数量,如果大于等于最大线程树林则休眠0.1秒等待其它线程的退出。实现代码如下:
  void watchthread()
  { for (;; ) {if ( CurrentThread >= MaxThread ) { Sleep(100); } else break; }
  2.4 计算检验和函数CheckSum
  CheckSum 函数用于计算检验和并返回检验和。检验和字段检验的范围包括首部和数据这两个部分。为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16 bit的二进制反码进行求和(整个首部看成是由一串16 bit的字组成),结果存在检验和字段中。当收到一份IP数据报后,同样对首部中每个16 bit的二进制反码进行求和。原代码如下:
  USHORTchecksum(USHORT * buffer, int size)
  { unsignedlongcksum = 0;while (size > 1) { cksum += *buffer++;
  size -= sizeof(USHORT); } if (size) { cksum += *(UCHAR *) buffer; }
  cksum = (cksum >> 16) + (cksum & 0xffff);
  cksum += (cksum >> 16);return (USHORT) (~cksum); }
  2.5 出错处理模块
  if ( WSAStartup(MAKEWORD(2, 2), &WSAData) != 0 ) { printf( "初始化WSAStartu失败\n" ); return -1; }
  
  参考文献:
  [1] 曹爱鹃,刘爆旭,许榕生.网络陷阱与诱捕防御技术综述[J].计算机工程,2004,9(30):4.
  [2] 谢希仁.计算机网络[M].3版.大连:大连理工大学出版社,2000:121-135.881,
其他文献
摘要:研究和分析在当前中国电子商务运营体制,阐述BAB电子商务模式如何利用自身特点帮助企业避免电子商务过程中缺乏资源、信用难保的情况。在MVC设计模式下,建立BAB交易模型.通过J2EE组件化开发,进行资源运营系统的设计。解决中国电子商务的瓶颈问题——信誉问题、支付问题和物流问题。  关键词: BAB模式;电子商务;J2EE  中图分类号:TP311文献标识码:A文章编号:1009-3044(20
期刊
摘要:该文讨论了对称加密算法——数据加密标准(DES)和非对称加密算法——椭圆曲线密码算法(ECC)的数学模型及优缺点,结合两者优点,提出了一个基于DES和ECC的加密签名方案设计。该方案具有安全性好、速度快、效率高的优点,具有一定的实用性。  关键词:数据加密技术;数据签名;DES算法;ECC算法  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)36-2617-0
期刊
摘要:介绍了Web资源类型和采集策略中的对采集质量有影响的因素。设计实现了一套基于正则表达式的Web资源采集系统,系统具有灵活的可扩展性和可配置性,重点介绍了采集系统结构和采集技术。  关键词:正则表达式;采集;Web资源  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)31-0888-02  To Detect Intranet Worms Using Networ
期刊
摘要:采用代码生成技术能大幅提高软件开发的质量和生产率,降低软件开发的风险。本文将介绍了基于C#的NHibernate代码生成器的设计与实现过程,并分析了常见的代码生成技术,同时结合实例说明核心源代码。  关键词:代码生成器;C#;NHibernate;XML  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)31-0908-04  Design and Impleme
期刊
摘要:该文首先介绍了Ad Hoc网络中常见的几种分簇算法以及各自的优缺点,这些分簇算法考虑的因素较为单一。而自适应按需加权(AOW)分簇算法利用加权的思想综合考虑多种因素,在实际应用中可以对影响因素进行取舍,也可以调整各因素的重要性,具有较强的通用性和灵活性。最后通过NS2仿真实验对几种分簇算法进行了比较分析,得出AOW分簇算法根据网络环境的变化动态的调整权值更能适应复杂的网络环境。  關键词:A
期刊
摘要:数据挖掘能为决策者提供许多重要的、极有价值的信息或知识,从而产生不可估量的效益。文章通过实例论述了Apriori算法进行数据挖掘应用的价值。  关键词:数据挖掘;关联规则;Apriori算法  中图分类号:TP301文献标识码:A文章编号:1009-3044(2008)23-862-03  The Discourse and Application about Association and
期刊
摘要:本文综合数字化城市交通建设方案及RFID技术,提出了一种基于RFID技术的出租车调度管理系统,阐述了系统的组成结构和工作原理,并详细介绍了系统的软硬件设计与实现。该系统对于合理地调度和管理出租车具有一定的实用性。  关键词:RFID技术;调度管理系统  中图分类号:TP315文献标识码:A文章编号:1009-3044(2008)31-0898-02  Taxi Dispatch and Ma
期刊
摘要:高速串口数据通讯,要求在接收数据采集设备发送大量数据的同时,完成对已接收到数据的实时存储。利用多线程技术,解决高速ARM在运行任务时应用程序的执行速度和串口传输数据速度不匹配,提高ARM对用户应用程序的响应速度,从而提高整个任务的执行速度和保证数据的完整性,提高系统整体性能。  关键词:ARM9;多线程;串行通信;嵌入式系统  中图分类号:TP311文献标识码:A文章编号:1009-3044
期刊
摘要:传统DSS基于业务系统数据库从而缺乏统一、充足的数据源支持,这严重影响了DSS的发展。数据仓库的出现解决了DSS应用的一大难题。该文以江西省社会保险DSS为应用实例,给出了社保数据仓库的具体设计与实现过程。  关键词:数据仓库;决策支持系统;社会保险  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)23-869-03  Design and Implementa
期刊
摘要:Web技术正在迅速成为支持企业范围应用程序的优选平台,基于Windows DNA的三层结构体系框架分布式应用程序已经成为计算主流。在比较详尽地论述了三层结构框架的整体构建思想基础上,示例了分布式应用程序的设计和实现过程。  关键词:Windows DNA;分布式应用程序;三层结构;XML Web services  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)
期刊