好文档 - 专业文书写作范文服务资料分享网站

一种DDOS攻击的检测方法

天下 分享 时间: 加入收藏 我要投稿 点赞

龙源期刊网 http://www.qikan.com.cn

一种DDOS攻击的检测方法

作者:李秀婷

来源:《科技视界》2015年第22期

【摘 要】状态协议分析通过对协议执行过程中状态的转换情况进行分析,将网络攻击过程转化为协议状态迁移,可有效检测DDOS等多步骤攻击。依据SYN Flooding的攻击原理,对TCP三次握手时状态转换过程进行分析,运用二叉排序树维护每一个TCP会话连接,并进行状态的转换更新,对异常会话状态进行统计来实现对SYN Flooding攻击的检测。在给出算法描述的基础上并测试验证了其有效性。

【关键词】DDOS;状态转换;SYN Flooding;二叉排序树 1 分布式拒绝服务攻击DDOS的原理

拒绝服务攻击DOS是黑客通过向网络发送大量数据,消耗系统资源或网络带宽,占用及超越受攻击服务器的处理能力,导致网络或系统不负重荷,停止对合法用户提供正常的网络服务。常见的拒绝服务攻击有SYN Flooding,teardrop,smurf,udp flood等[2]。分布式拒绝服务攻击DDOS是在传统DOS攻击的基础上演变而成的。DOS攻击一般采用一对一的方式,即从一个攻击源攻击一个目标。而DDOS采用多对一的方式,将多个计算机联合起来作为攻击平台,对目标发动DOS攻击,从而成倍的提高拒绝服务攻击的威力。 2 一种DDOS检测方法

DDOS攻击通常采用多步骤攻击,我们采用状态协议分析进行DDOS攻击的检测。状态协议分析方法是将网络协议及其攻击看做一个有步骤的、连续的、前后相关的行为过程。我们以针对TCP三次握手建立连接的典型攻击SYN Flooding为例,给出具体的检测方法。 2.1 攻击描述

TCP协议通过三次握手成功地在客户机和服务器之间建立连接。首先客户机向服务器发送一个设置SYN标志的TCP报文段,服务器以设置SYN标志和ACK标志的TCP报文段应答,最后客户机向服务器发送一个设置ACK标志的TCP报文段进行确认。这样客户机和服务器之间的TCP连接就建立起来了[3]。TCP三次握手中,如果客户机向服务器发送了SYN报文,服务器在发出SYN和ACK应答报文后,没有收到客户端的ACK报文,此时该连接将保持挂起状态,如果出现大量这样的恶意连接,服务器端将会为了保持一个非常大的半连接列表而消耗非常多的资源,从而导致服务器失去响应,造成SYN Flooding攻击。 2.2 算法描述

龙源期刊网 http://www.qikan.com.cn

检测SYN Flooding攻击的算法主要思想是:在限定的时间内,如果处于半连接状态的TCP会话数目大于设定的阈值后就进行报警。算法分为三个主要模块:抓包及协议解析模块,TCP会话树建立维护模块以及会话状态转换模块。 2.2.1 抓包及协议解析模块

算法采用winpcap进行数据包的捕获,基于winpcap库捕获数据包的主要函数及流程[4]如图1所示:

图1 winpcap捕包流程 图2 协议解析流程

数据包被捕获后进行协议解析,以得到每个数据包的具体协议信息。数据包的解析算法严格按照TCP/IP协议规定,依次分解出数据链路层,网络层,传输层各层协议首部,将结果存入预先定义的结构体中,协议解析的流程如图2。 2.2.2 TCP会话树建立维护模块

对于客户端发起的每一个TCP会话连接,使用二叉排序树来存贮会话信息,每个会话节点都包括了此会话的IP地址、端口、会话状态、时间信息和唯一标示该节点的会话号。当系统收到一个TCP会话数据包后,首先根据会话的源、目的IP地址和端口来查看树中是否已存有此会话连接信息,如果没有则新建一个会话节点加入到会话树中,树中第一个节点的会话号为1,此后每增加一个会话节点其会话号都加1;如果已有此连接会话,则转入会话状态转换模块,本模块的执行过程如图3。 图3 TCP会话树建立维护流程 1)会话节点的加入和搜索

当收到新的待检测的数据包时,将会在当前的TCP会话树中根据包的源和目的地址信息查找相应的会话连接,若不存在则新建一个会话节点记录此连接,同时加到树中相应的位置。在加入会话节点时,与己有会话节点的服务器端IP地址,客户端IP地址,服务器端端口号及客户端端口号进行逐个比较,按照左小右大的原则,如果要加入节点的地址信息小于己有节点,则加入到此节点的左子树;如大于则加入到右子树;如果要加入节点的服务器与客户端的IP地址和端口号与已有节点完全相同,则为找到相应的会话连接,不加入新节点,转入会话状态转换模块。

由于我们根据数据包的IP地址和端口号进行节点的插入,在进行某一会话节点的搜索时可以使用二分法减少搜索时间,若搜索的节点地址小于当前节点,则搜索其左子树,否则搜索右子树,从根节点开始直至搜索成功。

龙源期刊网 http://www.qikan.com.cn

2)会话节点的删除

当一个会话超时或完成三次握手成功建立TCP连接后,将该会话节点删除,使得TCP会话树中不存在无用的数据。删除会话树中的一个节点后仍要保持节点中地址信息的有序性,分三种情况讨论:

假设被删除的节点为*p,其双亲节点为*f,PL、PR分别表示其左子树和右子树。 (1)如果PL、PR均为空树,直接修改*f节点指针即可。

(2)如果*p节点只有PL或只有PR,并且*p为*f(下转第175页)(上接第96页)的左子树或右子树,此时只需令PL或PR直接成为*f的左子树或右子树。

(3)若PL、PR均不为空,此时不能如上简单处理。先中序遍历二叉树,得到中序遍历序列中*p的直接前驱*s,此时令PL为*f的左子树,PR为*s的右子树。 2.2.3 会话状态转换模块

根据三次握手建立连接的过程构造状态转换图,如图4所示。q0为初始状态,客户端向服务器发送了一个SYN报文后转向状态q1,服务器向客户端发送了SYN和ACK报文后转向状态q2,客户端向服务器发送ACK报文后转向终止状态q3,完成了连接的建立。指定时间间隔阈值alert-t及连接数阈值alert-n,在某一TCP服务器的所有TCP会话连接的状态序列中,若在alert-t时间内大于等于alert-n个会话连接处于q2状态,则认为发生了SYN Flooding攻击。

图4 TCP三次握手状态转换图

当收到一个新的数据包时,找到相应的会话节点,判断接收包的TCP标志位和会话的当前状态依据状态转换图进行会话状态转换和时间更新,如果完成三次握手连接就从会话树中删除该会话节点,并对会话树中处于q2状态的会话数目进行统计,判断是否报警。

在统计处于q2状态的会话节点数目时需要定义一个时间链表,每当一个处于q1状态的会话收到相应数据包转向q2状态时,将该会话节点的会话号和当前时间信息存入时间链表中,当时间链表中的节点数目大于alert-n时,检查时间链表中第一个节点和最后一个节点的时间差,若小于等于alert-t则报警。当一个会话的三次握手完成后,根据会话号在时间链表中找到对应节点,将其删除。 3 测试结果分析

一种DDOS攻击的检测方法

龙源期刊网http://www.qikan.com.cn一种DDOS攻击的检测方法作者:李秀婷来源:《科技视界》2015年第22期【摘要】状态协议分析通过对协议执行过程中状态的转换情况进行分析,将网络攻击过程转化为协议状态迁移,可有效检测DDOS等多步骤攻击。依据SYNFlooding的攻击原理,对TCP三
推荐度:
点击下载文档文档为doc格式
2pthy0b8ef207lq1bbd16zh7s4eqd201d1w
领取福利

微信扫码领取福利

微信扫码分享