一种基于行为触发的防御链路耗尽型CC攻击的方法
技术领域
本发明是关于网络安全技术领域,特别涉及一种基于行为触发的防御链路耗尽型CC攻击的方法。
背景技术
CC(Challenge Collapsar)攻击是一种针对应用层WEB服务的攻击方法。链路耗尽型CC攻击通过发送大量满负载垃圾数据包到目标服务器,使链路带宽耗尽,从而达到影响正常业务服务的目的。常见的攻击类型包括UDPFLOOD,ICMPFLOOD等。
链路耗尽型CC攻击的原理并不复杂,攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC攻击的目标通常定位于网站中需要进行动态生成和数据库访问的页面,例如以.asp,.jsp,.php,.cgi,.dll等结尾的页面资源。
在2015年11月,黑客对阿里云某互联网金融用户发起了超大规模HTTPS/SSL CC流量攻击,总攻击量达到了5亿次请求,峰值95万QPS(HTTPS)。此次攻击也是迄今为止全球有统计数据的最大的HTTPS SSL/CC攻击。由于对HTTPS协议的处理相对HTTP会消耗更多的资源,因此无论是网站运营者还是安全服务商在面对HTTPS CC攻击时,防护能力都会面临巨大挑战。
目前对CC攻击的检测大多是通过测量IP的请求速率来实现的,当IP的请求速率达到设定阈值时,判定为攻击。但是现在的CC攻击一般是利用僵尸网络或者分布式web proxy来对网站进行大量访问请求,平均到每个web proxy或僵尸IP,访问请求的速率不一定很高。所以仅仅检测单IP请求速率的模型往往很难凑效。再者,这类模型需要每时每刻进行检测,对计算机资源的消耗非常巨大。
另一方面,传统的CC攻击检测技术在公有CDN应用过程中无法进行有效识别。同一组织因为Load Balance的原因可能会在公有CDN上部署多个网站实例,攻击者通过多个攻击源同时向这些实例发起攻击。虽然各个网站受到的攻击是相互独立的,但由于实例属于公有CDN上的同一组织,仅对单一实例进行统计的传统CC攻击检测技术在该类应用场景中将无法有效定位攻击者源IP。
最后,当前防御CC攻击的模型都是在检测到攻击后,才会采取Redirect等措施拒绝服务。对于一些暂时还没有发动CC攻击,但有很大概率之后会发动CC攻击的IP没有提前防御的功能。
因此,需要一种更加准确高效智能的链路耗尽型CC攻击检测与防御方法。
发明内容
本发明的主要目的在于克服现有技术中的不足,提供一种能准确高效智能地,提前防御链路耗尽型CC攻击的方法。为解决上述技术问题,本发明的解决方案是:
提供一种基于行为触发的防御链路耗尽型CC攻击的方法,用于防御攻击者对保护对象进行CC攻击,所述基于行为触发的防御链路耗尽型CC攻击的方法具体包括下述步骤:
(1)行为触发:
统计攻击者在负载均衡技术(Load Balance)下,对保护对象不同网站实例的防问次数,利用GMM拟合该攻击者的总访问次数,然后判断当前的总访问次数是否偏离预估值;
当超出拟合曲线预估值的某个阈值时,即视为满足触发条件,进而进行步骤(2)的组规则验证;设当前时间点为T,则T时刻的观测值为yT,T时刻的预估值为触发条件为:
其中,α为大于0的可调阈值参数;
(2)组规则验证:
以线性时间复杂度O(N)来验证疑似IP组(疑似IP组是指可能发起链路耗尽型CC攻击的攻击源IP的一个临时集合)是否同时满足下面的4个规则:
规则A:IP总数量>β1;
规则B:
规则C:
规则D:
其中,β1,β2,β3,β4和K1分别是可调的阈值,β1,K1取值范围为正整数,β2,β3,β4∈(0,1);规则A表明IP总数量只有达到一定数目时才能形成有威胁的链路耗尽型CC攻击,所述IP总数量是指该保护对象的网站所有访问IP的总数量;规则B和规则C合起来表明链路耗尽型CC攻击的主要特点是少数攻击IP占据所有网站实例大量的访问量,所述疑似IP组的IP数量是指可能发起链路耗尽型CC攻击的攻击源IP数量,所述疑似IP组的总访问数是指可能发起链路耗尽型CC攻击的攻击源IP访问次数的总和,所述所有IP总访问数是指该保护对象的网站所有访问IP对其访问次数的总和;规则D表明IP攻击的集中程度,排除了访问次数高但比较分散的web proxy的影响,所述IP访问前K1的URL访问次数总和是指对每个IP的URL访问数从大到小取排在前K1的URL访问数的总和;
当同时满足这4个规则时,表明通过规则验证,疑似IP组中的所有IP被判定为链路耗尽型CC攻击,然后进行报警;
(3)关联分析:
利用FP-Growth算法对满足步骤(2)中所有规则的IP组进行frequent item sets挖掘以及association rules分析,以实现对链路耗尽型CC攻击进行提前防御,具体包括以下子步骤:
(3.1)将满足步骤(2)中所有规则的IP组作为一条记录加入数据库中,设置最小支持度阈值suPmin;
(3.2)使用FP-growth算法进行frequent item sets挖掘,FP-growth算法利用高级数据结构FP-tree和Apriori原理(如果某个项集是频繁的,那么它的所有子集也是频繁的;如果一个项集是非频繁的,那么它的所有超集也是非频繁的),只需对数据库进行两次扫描就可挖掘出frequent item sets;
(3.3)进行association rules分析,一条关联规则IP1→IP2表示访问源IP1在判定为链路耗尽型CC攻击的前提下,访问源IP2为链路耗尽型CC攻击的可能性,该关联规则的可信度定义为confidence(IP1→IP2)=support(IP1,IP2)/support(IP1);若该关联规则的可信度大于最小可信度阈值conmin,则当访问源IP1被判定为链路耗尽型CC攻击时,访问源IP2也被判定为链路耗尽型CC攻击,需要对访问源IP2进行CC攻击的提前防御。
在本发明中,所述步骤(1)中,T时刻的预估值会和前一天相同时刻的预估值,前一个星期相同时刻的预估值,以及当天相同时刻的预估值产生比较强的关联,所以需要综合考虑这三个因素,设GMM拟合曲线的函数为:
其中,N(·)表示高斯函数,πk,μk,分别是第k个高斯函数的权重、均值、方差;则前一天T时刻的预估值为前一个星期T时刻的预估值为当天T时刻为所以T时刻的预估值为:
其中,λ1+λ2+λ3=1。
在本发明中,所述步骤(2)中的规则验证具有实时性,要求在线性时间复杂度O(N)内完成验证,具体包括以下子步骤:
(2.1)直接获取IP总数量,记为N,验证规则A,符合规则A则进入下一步,不符合直接结束;
(2.2)利用快速排序的思想,提取每个IP的总访问数从大到小排在前K的IP及其总访问数,这里K=β2×N,这K个IP被视为疑似IP组,此时自动符合规则B,时间复杂度为O(N);
(2.3)对疑似IP组中每个IP的总访问数进行累加,验证规则C,符合规则C则进入下一步,不符合直接结束,时间复杂度为O(K);
(2.4)对疑似IP组中每个IP的URL访问数从大到小取排在前K1的URL及其访问数,若某个IP前K1的URL访问量的总和除以这个IP所有URL总访问量的值比β3小,则加入候选集合;该子步骤的时间复杂度为O(KM),M为该保护对象在Load Balance下的网站实例(URL)总数;
(2.5)计算规则D分子和分母项,并验证规则D,时间复杂度为O(K);若符合规则D即说明至此4个规则都同时满足,产生警报并结束;若不符合规则D即进入下一步;
(2.6)该子步骤为循环,首先判断候选集是否为空,如果为空,直接结束,否则从候选集中取出一个IP,并剔除这个IP在疑似IP组中网站URL访问量前K1大以及总访问量中访问次数的贡献,再次验证规则C和规则D,符合的话产生警报并结束,否则重复该子步骤;每次从候选集中剔除并验证规则C和规则D的时间复杂度为O(1),候选集的大小为H,所以整个循环的时间复杂度为O(H);
所述时间复杂度:假设每次组规则验证按最长的步骤来算,总的时间复杂度为O(N)+O(K)+O(KM)+O(K)+O(H);因为β2<1,所以K=β2×N<N,再加上H≤K,M<<N,则时间复杂度近似为O(N)。
在本发明中,所述子步骤(2.2)中,基于快速排序的思想取前k大的基本思路为:
从数组S中随机找出一个元素X,把数组分为两部分Sa和Sb,Sa中的元素大于等于X,Sb中元素小于X;这时有两种情况,第一种情况为Sa中元素的个数小于k,则Sb中的第k-|Sa|个元素即为第k大数,第二组情况为Sa中元素的个数大于等于k,则递归地返回Sa中的第k大数,可以证明该方法对于长度为N的数组,时间复杂度近似为O(N)。
与现有技术相比,本发明的有益效果是:
本发明利用行为触发让服务器只在触发的时候进行链路耗尽型CC攻击的组规则验证,并且这些规则在有很强普适性的同时能在线性时间复杂度内被验证,最后通过关联分析使该方法有提前防御链路耗尽型CC攻击的功能。
附图说明
图1为本发明的总模块框图。
图2为组规则验证时的输入数据示例图。
图3为组规则验证的流程图。
具体实施方式
首先需要说明的是,本发明是计算机技术在信息安全技术领域的一种应用。在本发明的实现过程中,会涉及到多个软件功能模块的应用。申请人认为,如在仔细阅读申请文件、准确理解本发明的实现原理和发明目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本发明,凡本发明申请文件提及的软件功能模块均属此范畴,申请人不再一一列举。
下面结合附图与具体实施方式对本发明作进一步详细描述:
如图1所示的一种基于行为触发的防御链路耗尽型CC攻击方法,具体实现方式为:
(1)行为触发
攻击者通常会针对某个特定的组织或公司进行链路耗尽型CC攻击,该组织或公司的网站通常访问流量很大,为了保证服务质量,会在不同的服务器上部署同一个网站实例,这些网站实例内容完全相同,只有URL不同,然后利用Load Balance(负载均衡技术)进行访问流量的分流;通过收集该组织或公司在不同服务器上的访问日志,可以统计每个网站实例(URL)的访问IP及每个IP的访问次数,进而得到该组织或公司的网站的总访问次数;利用GMM拟合该组织或公司的网站的总访问次数,然后判断当前的总访问次数是否偏离预估值,超出拟合曲线预估值的某个阈值时即可视为满足触发条件,然后进行组规则验证。设当前时间点为T,则T时刻的观测值为yT,T时刻的预估值为
T时刻的预估值会和前一天相同时刻的预估值,前一个星期相同时刻的预估值,以及当天相同时刻的预估值产生比较强的关联,所以需要综合考虑这三个因素,设GMM拟合曲线的函数为:
其中,N(·)表示高斯函数,πk,μk,分别是第k个高斯函数的权重、均值、方差,则前一天T时刻的预估值为前一个星期T时刻的预估值为当天T时刻为所以T时刻的预估值为:
其中,λ1+λ2+λ3=1。
所以,触发条件为:
其中α为大于0的可调阈值参数,在该实施例中可取0.5。
如果满足触发条件,则进行组规则验证。如果符合规则验证,则进行报警,并对当前时间点的观察值重新赋值在当天结束时,对观察值进行最终的GMM拟合,并存储GMM参数用于之后的预测。
(2)组规则验证
以线性时间复杂度O(N)来验证疑似IP组(可能发起链路耗尽型CC攻击的攻击源IP的一个临时集合)是否同时满足下面的4个规则:
规则A:IP总数量>β1;
规则B:
规则C:
规则D:
β1,β2,β3,β4和K1分别是可调的阈值,在该实施例中可分别取为10,0.3,0.7,0.5和3。这些规则的所有数据都在实现方式(1)中说明了获取途径;规则A表明IP总数量只有达到一定数目时才能形成有威胁的链路耗尽型CC攻击,所述IP总数量是指该组织或公司的网站所有访问IP的总数量;规则B和规则C合起来表明链路耗尽型CC攻击的主要特点是少数攻击IP占据所有网站实例大量的访问量,所述疑似IP组的IP数量是指可能发起链路耗尽型CC攻击的攻击源IP数量,所述疑似IP组的总访问数是指可能发起链路耗尽型CC攻击的攻击源IP访问次数的总和,所述所有IP总访问数是指该组织或公司的网站所有访问IP对其访问次数的总和;规则D表明IP攻击的集中程度,排除了访问次数高但比较分散的web proxy的影响,所述IP访问前K1的URL访问次数总和是指对每个IP的URL访问数从大到小取排在前K1的URL访问数的总和;
如图2所示,输入数据以访问IP进行划分,统计的是各个IP在某个时间段的行为。URL_access是需要保护的组织在Load Balance下不同节点的URL,数值代表对这个节点URL的访问次数,列表里面的访问次数是无序的,并且列表是不定长的,只记录对应IP访问过的URL的次数。Total_acces是对该组织所有URL的访问总次数。
只有当同时满足这4个规则时,表明通过规则验证,疑似IP组中的所有IP被判定为链路耗尽型CC攻击,然后进行报警,规则验证需要具有实时性,要求在线性时间复杂度O(N)内完成验证,下面结合图3对流程图的子步骤进行说明:
(2.1)直接获取IP总数量(记为N),验证规则A,符合规则A则进入下一步,不符合直接结束;
(2.2)利用快速排序的思想,提取每个IP的总访问数从大到小排在前K的IP及其总访问数,这里K=0.3N,这K个IP被视为疑似IP组,此时自动符合规则B,时间复杂度为O(N);
(2.3)对疑似IP组中每个IP的总访问数进行累加,验证规则C,符合规则C则进入下一步,不符合直接结束,时间复杂度为O(K);
(2.4)对疑似IP组中每个IP的URL访问数从大到小取排在前K1的URL及其访问数,若某个IP前K1的URL访问量的总和除以这个IP所有URL总访问量的值比50%小,则加入候选集合;该子步骤的时间复杂度为O(KM),M为该组织或公司在Load Balance下的网站实例(URL)总数;
(2.5)计算规则D分子和分母项,并验证规则D,时间复杂度为O(K);若符合规则D即说明至此4个规则都同时满足,产生警报并结束;若不符合规则D即进入下一步;
(2.6)该子步骤为循环,首先判断候选集是否为空,如果为空,直接结束,否则从候选集中取出一个IP,并剔除这个IP在疑似IP组中网站URL访问量前K1大以及总访问量中访问次数的贡献,再次验证规则C和规则D,符合的话产生警报并结束,否则重复该子步骤;每次从候选集中剔除并验证规则C和规则D的时间复杂度为O(1),候选集的大小为H,所以整个循环的时间复杂度为O(H)。
假设每次组规则验证按最长的步骤来算,总的时间复杂度为O(N)+O(K)+O(KM)+O(K)+O(H);其中N,K,M,H在子步骤(2.1)-(2.6)中有详细定义,特别需要指出的是因为K=0.3N<N,再加上H≤K,M<<N,则时间复杂度近似为O(N)。
基于快速排序的思想取前k大的基本思路为,从数组S中随机找出一个元素X,把数组分为两部分Sa和Sb。Sa中的元素大于等于X,Sb中元素小于X。这时有两种情况,第一种情况为Sa中元素的个数小于k,则Sb中的第k-|Sa|个元素即为第k大数,第二组情况为Sa中元素的个数大于等于k,则递归地返回Sa中的第k大数,可以证明该方法对于长度为N的数组,时间复杂度近似为O(N)。
(3)关联分析:利用FP-Growth算法对满足规则的IP组进行frequent item sets挖掘以及association rules分析,从而对链路耗尽型CC攻击进行提前防御,具体包括以下子步骤:
(3.1)对满足步骤(2)中的所有规则的IP组作为一条记录加入数据库中,设置最小支持度阈值supmin;
(3.2)使用FP-growth算法进行frequent item sets挖掘,FP-growth算法利用高级数据结构FP-tree和Apriori原理(如果某个项集是频繁的,那么它的所有子集也是频繁的;如果一个项集是非频繁的,那么它的所有超集也是非频繁的),只需对数据库进行两次扫描就可挖掘出frequent item sets;
(3.3)进行association rules分析,一条关联规则IP1→IP2表示访问源IP1在判定为链路耗尽型CC攻击的前提下,访问源IP2为链路耗尽型CC攻击的可能性,该规则的可信度定义为confidence(IP1→IP2)=support(IP1,IP2)/support(IP1);若该关联规则的可信度大于最小可信度阈值conmin,则当访问源IP1被判定为链路耗尽型CC攻击时,访问源IP2也应被判定为链路耗尽型CC攻击,所以需要对访问源IP2进行CC攻击的提前防御。
最后,需要注意的是,以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应认为是本发明的保护范围。