发明内容
针对现有技术中存在的上述蠕虫检测的局限性,本发明要解决的技术问题在于提供一种蠕虫特征自动提取的方法。
本发明采用如下的技术方案:
一种蠕虫特征自动提取的方法,包括:
1)收集通过计算机网卡的数据报文,分析数据流量,将离线学习网络中的目标IP地址作为受保护的IP地址存入数据库中,为网络的访问习惯建模,然后通过CUSUM算法发现网络中违背习惯模型的可疑的蠕虫的网络流量,并识别出可疑的网络蠕虫IP地址;
2)根据可疑的网络蠕虫数据通过关联算法分析可疑网络蠕虫的攻击踪迹,将攻击踪迹进一步聚集抽象出相同的攻击踪迹,确定蠕虫特征码的位置;
3)根据网络蠕虫聚集抽象出的相同攻击踪迹提取蠕虫攻击踪迹中的特征码,运用评判函数确定攻击踪迹中网络蠕虫的特征码。
步骤1)中利用CUSUM算法自动识别可疑的网络蠕虫的存在,具体步骤为:设DISIP(n,i)为第n个抽样间隔T内主机i访问的目标IP地址数目并且该目标IP地址在受保护的IP地址中出现,Sn(i)为第n个抽样间隔T内主机i访问的目标IP地址数目并且该目标IP地址没有在受保护的IP地址中出现,归一化为:
其中,
1为初始值,η为常数,根据网络历史数据的分析来定;
第n个抽样间隔T内主机i访问的目标IP地址数目与归一化的比值:
定义:
Zn(i)=Xn(i)-β,β>α (3)
其中α为Xn(i)的均值,β是常数,其设置是根据网络分析的经验来定;
则CUSUM算法满足条件:
yn(i)=(yn-1(i)+Zn(i))+,
y0(i)=0, (4)
yn(i)为测试统计值,其中yn(i)=(Xn(i))+表示:如果x大于0,y=x;否则y=0,则自动识别可疑检测表达式为:
其中,N是预先设定的攻击检测的门限,dN(yn(i))代表在时刻n的判决值:如果测试统计值yn(i)大于N,则dN(yn(i))值为“1”,表示有蠕虫攻击发生,否则为“0”,表示情况正常。
进一步地,步骤2)中将攻击踪迹进一步关联聚集抽象出相同的攻击踪迹,具体为:采用Petri网建立蠕虫攻击踪迹的事件关联模型,采用聚集方法得到超级事件聚集元组集合HEZ=(id,he,count),其中id代表网络蠕虫行为踪迹的编号,he为超级事件向量,count为he的重复发生次数;提取的特征超级事件聚集元组hez(id,he,count)的发生概率P如下:
其中hez.count为超级事件聚集元组超级事件向量的重复发生次数,hey.count为关联后聚集的蠕虫行为踪迹,相同或相似的行为踪迹重复发生次数;当p(hez)越大,该踪迹为网络蠕虫行为踪迹的概率越大,从而确定为蠕虫特征码的位置。
进一步地,蠕虫特征提取的特征为一个超级事件特征三元组hef=(id,payload,count),其中,id代表网络蠕虫行为踪迹的编号,payload为网络蠕虫行为踪迹提取的特征,count为payload的重复发生次数;
将HEF称为HEZ的超级事件特征集合,且满足:
1)对于 使得hefn.id=he.id,hefn.payload为从行为踪迹超级事件聚集元组hez中提取的所有的传输报文;
hefn.count为hefn.payload的重复发生次数;n为关联的踪迹数量;
2)对于 使得hef.id=hez.id,hef.count为hef.payload的重复发生次数,hef为从行为踪迹超级事件聚集元组hez中提取的相应的传输报文;
满足上述条件,超级事件特征集合HEF中,超级事件特征三元组hef的发生概率如下:
超级事件聚集元组集合HEZ的超级事件特征集合HEF中的任意一个特征元组hefi的评判函数Ev(hefi)如下:
其中,ZHEZ={hez|hez∈HEZΛhefi.id=hez.id},hefi表示其中任意一个特征的超级事件特征三元组,λ为调节参数,调节超级事件特征三元组的发生概率以及其对应的所有蠕虫踪迹的发生概率占评判函数结果的比例,若Ev(hefi)大于预先设定的阈值k,则超级事件特征三元组hefi为蠕虫的特征码。
进一步地,事件关联模型包括顺序关系、与关系以及或关系;
顺序关系定义为:如果c[e1>,但是c’[e2>,其中c’是c的后继:c[e1>c’,就是说事件e1和事件e2在c内有顺序关系,表示事件e1和事件e2顺序相关,只授权事件e1发生,事件e2则在后继情态有发生权;
与关系定义为:如果c[e1>∧c[e2>,则说明事件e1和事件e2具有与的关系,关联规则e1∧e2的模型,三个主库所分别代表了网络事件e1、e2和复合事件e3=e1∧e2,从事件e1和事件e2到变迁C的输入弧不包含常量,表示每次移动的令牌数为1;从变迁C到复合事件e3的输出弧上的操作“∧”表示对两个令牌代表的事件执行的操作;变迁C上的谓词表示对令牌内容的限制;
或关系定义:如果c[e1>∨c[e2>,则说明事件e1和事件e2具有或的关系,为关联规则e1∨e2的模型,具有两个变迁。
进一步地,本发明提供一种蠕虫特征自动提取的系统,包括:
数据收集模块,收集通过计算机网卡的数据报文,并将数据放入计算机缓存中;
基于流量的蠕虫检测引擎模块,分析数据收集模块的数据流量,将离线学习网络中的目标IP地址作为受保护的IP地址存入数据库中,为网络的访问习惯建模,然后通过CUSUM算法发现网络中违背习惯模型的可疑的蠕虫的网络流量,并识别出可疑的网络蠕虫IP地址;
蠕虫踪迹分析模块,根据网络蠕虫IP地址通过关联算法分析可疑网络蠕虫的攻击踪迹,确定蠕虫特征码的位置;
蠕虫特征产生模块,根据蠕虫踪迹分析模块分析的网络蠕虫的攻击踪迹,提取蠕虫的特征码;
预警模块,接收基于流量的蠕虫检测引擎模块、蠕虫踪迹分析模块及蠕虫特征产生模块的分析结果并将其存入计算机的数据库中;
分析结果包括网络蠕虫感染主机的IP地址、时间、踪迹、提取的特征码。
本发明如有如下的优点及有益效果:
本发明可以高效准确地提取网络蠕虫的特征码,通过网络蠕虫的行为踪迹帮助准确地确定蠕虫的特征码的位置,从而有效地提取蠕虫的特征码。
具体实施方式
下面结合附图及实施例对本发明方法进行详细地说明:
如图1所示,本发明蠕虫特征自动提取的系统,包括:
数据收集模块,收集通过计算机网卡的数据报文,并将数据放入计算机缓存中,主要负责将监听到的报文完整的收集起来,方便系统对于网络蠕虫进一步分析。其原理就是建立一个RawSocket,用来捕获所有到达本网卡的数据报文,然后放到缓存中;用户态的程序从缓存中读取数据,当缓存中为空时就发生阻塞,直到缓存中被填充数据后才被唤醒。
基于流量的蠕虫检测引擎模块,分析数据收集模块的数据流量,利用CUSUM算法自动识别可疑的网络蠕虫的存在;
蠕虫踪迹分析模块,通过关联算法分析可疑网络蠕虫的攻击踪迹,确定蠕虫特征码的位置;蠕虫特征产生模块,根据蠕虫踪迹分析模块分析的网络蠕虫的攻击踪迹提取蠕虫的特征码;预警模块,接收基于流量的蠕虫检测引擎模块、蠕虫踪迹分析模块及蠕虫特征产生模块的分析结果并将其存入计算机的数据库中;分析结果包括网络蠕虫感染主机的IP地址、时间、踪迹、提取蠕虫的特征码。
管理员可以通过预警模块查询网络蠕虫感染的基本信息,方便人们对于网络的管理。
采用上述系统进行蠕虫特征自动提取的方法,包括:
步骤1)收集通过计算机网卡的数据报文,分析数据流量,利用CUSUM算法自动识别可疑的网络蠕虫的存在;
步骤2)根据可疑的网络蠕虫数据通过关联算法分析可疑网络蠕虫的攻击踪迹,将攻击踪迹进一步聚集抽象出相同的攻击踪迹,确定蠕虫特征码的位置;
步骤3)根据网络蠕虫的攻击踪迹提取所有蠕虫攻击踪迹中的攻击包,运用评判函数确定踪迹中网络蠕虫的特征码。
其中:步骤1)中收集通过计算机网卡的数据报文,分析数据流量,将离线学习网络中的目标IP地址作为受保护的IP地址存入数据库中,为网络的访问习惯建模,然后通过CUSUM算法发现网络中违背习惯模型的可疑的蠕虫的网络流量,并识别出可疑的网络蠕虫IP地址;
由于局域网中的某个用户在访问网站的同时会形成自己的访问习惯,虽然他也会偶然地访问一些陌生的目的地,但是这种访问的频率都是较为有限的。但是,由于在某些网络中的IP地址是动态变化的并且每台主机的使用用户也并非一成不变的,而且一般来说一个局域网内的所有用户具有相似的访问习惯,因此将一个局域网作为一个访问模型对于蠕虫进行监测。蠕虫不会知道网络的访问习惯,而且由于蠕虫本身传播速度的需求,它需要快速地发现网络中具有自己客以攻击的目标,因此会同时访问大量在网络习惯之外的目的地。这样,蠕虫的攻击就增加了网络访问陌生IP地址的数量,即破坏了我们建立的网络模型。由于蠕虫大多采用多线程操作,因而在短时间内即对网络的访问习惯造成显著的改变。为了使得该方法具有一般性,本发明运用CUSUM算法来检测这一变化。
该部分的工作过程分为两步:离线学习网络中的目标IP地址作为受保护的IP地址存入数据库中,以及在线检测网络蠕虫。离线学习网络中的目标IP地址主要是在正常网络环境下学习网络访问的主机的IP地址。在正常情况下,网络中的主机访问的一般都是合法的IP地址,因此将受保护的网络访问的IP地址通过数据库存储下来,将其作为一个网络访问的模型。在线检测网络蠕虫部分在单位时间内收集网络中每个主机访问的目标IP地址,并且将这些目标IP地址与数据库中存储的受保护的IP地址相比较,统计网络中的每个主机访问的新的IP地址的数目,如果CUSUM算法提示这一变化具有异常性,那么就报警提示该主机已经被感染。
CUSUM算法可以检测到一个统计过程均值的变化,CUSUM算法基于这一事实:如果有变化发生,随机序列的概率分布也会改变。通常,CUSUM算法需要随机序列的参数模型,以便可以用概率密度函数来监控序列。然而,因特网是一个动态而复杂的实体,因特网业务模型的理论结构是一个复杂的问题,因而一个主要的难题是如何模拟随机序列{Xn}。本发明设DISIP(n,i)为第n个抽样间隔T内主机i访问的目标IP地址数目并且该目标IP地址在学习的IP地址中出现,Sn(i)为第n个抽样间隔T内主机i访问的目标IP地址数目并且该目标IP地址没有在学习的IP地址中出现。一般情况下,随机序列{DISIP(n,i),n=0,1,…}的均值依赖于网络的规模,并随抽样时刻变化。为降低相关性,使检测通用于各种情况,给出了归一化定义,即
其中,
1为初始值,η为权重系数,根据网络中管理员对历史数据分析后的重要性来确定的,如果权重都一样则设置为0.5。
定义Xn(i)如下:
Xn(i)=Sn(i)/SA(n,i) (2)
由于CUSUM算法要求均值小于零,因此需要有如下等式:
Zn(i)=Xn(i)-β,β>α (3)
其中α为Xn(i)的均值,β是常数,其设置是根据网络分析的经验来定,Xn(i)表示超过一般平均值的多少。
CUSUM算法满足如下表达式:
yn(i)=(yn-1(i)+Zn(i))+,
y0(i)=0, (4)
其中yn(i)为测试统计值,其中yn(i)=(Xn(i))+表示:如果x大于0,y=x;否则y=0,则自动识别可疑检测表达式为:
其中,N是攻击检测的门限,是根据网络分析的经验来定,dN(yn(i))代表在时刻n的判决值:如果测试统计yn大于N,则该值为“1”,表示有蠕虫攻击发生,否则该值为“0”,表示情况正常。
根据蠕虫的传播过程,指出蠕虫在传播过程中可以划分为如下几个模块:蠕虫的目标发现算法(Targeting),漏洞攻击(Vulnerbility Exploring),可见性(Visibility),感染性(Infectability)。因此,蠕虫在传播过程中体现了自己的行为特征,这种行为特征突出体现在两个方面。(1)蠕虫攻击行为是相似的。这种相似性体现在:①传播过程是相似的。相同的蠕虫一般均采用相同步骤去感染目标主机。②蠕虫应用的漏洞攻击代码是相似的。相同的蠕虫一般使用固定的目的端口进行攻击,如lion蠕虫固定使用53端口;由于蠕虫难以在每一次传播时都改变漏洞代码,因此其传播时所使用的漏洞代码与蠕虫代码非常相似。(2)蠕虫在传播过程中,感染过程具有相互关联的关系。也就是蠕虫在感染过程中,总是按照一定的顺序对于网络中的漏洞主机进行攻击。然而,虽然不同的蠕虫程序的逻辑结构相同,但是他们在攻击过程中的攻击包序列却是不同的。即使不同的蠕虫运用相同的漏洞进行攻击,它们的攻击包序列仍然是不同的。因此,每个蠕虫传播过程的攻击序列就成为了蠕虫的重要信息。
将蠕虫传播过程中的感染序列称为蠕虫的行为踪迹。由于不同类型的蠕虫的行为踪迹可以反映蠕虫不同的感染情况,因此将蠕虫的行为踪迹划分为三类:目标搜索踪迹,反馈踪迹和攻击踪迹。网络蠕虫通过某种算法选择攻击的主机和端口并进行攻击尝试时留下的踪迹,称为目标搜索踪迹。例如,基于TCP协议攻击的扫描蠕虫发出的SYN包即为目标搜索踪迹。网络对于蠕虫攻击的反馈而形成的踪迹称为反馈踪迹。例如,扫描蠕虫攻击过程中,网络对于探测的无效主机返回ICMP目标不可达报文为反馈踪迹。攻击踪迹则为网络蠕虫攻击主机后留下的踪迹。然而,由于现实网络以及蠕虫本身攻击代码等条件的约束网络蠕虫在攻击主机的过程中并不一定发送了可以攻击主机的代码(如漏洞攻击代码),因此将攻击踪迹又划分为真实攻击踪迹以及佯装攻击踪迹。例如,蠕虫找到了攻击目标,然后将漏洞攻击代码发送到攻击目标,即为真实攻击踪迹;如果并没有将漏洞攻击代码发送到攻击目标,则为佯装攻击踪迹。
目标搜索踪迹主要是由蠕虫的目标发现算法模块产生的,因此它是攻击的最初步骤,所以它可以作为过滤蠕虫攻击踪迹的一个基本条件。反馈踪迹并不是蠕虫的行为,它是网络对于蠕虫攻击行为的反馈。目标搜索踪迹和反馈踪迹是识别某类蠕虫的重要信息,它们不能够作为某个蠕虫的特征。网络是蠕虫传播的载体,但是受到目前的网络条件的影响,蠕虫的攻击踪迹会出现很多不同的形式。虽然核心的攻击过程不变,但是某些攻击顺序可能受到网络延迟等随机因素的影响,因此它也不是可以区别网络蠕虫的特征。但是,由于网络蠕虫攻击过程中的攻击特征码一定存在于真实攻击踪迹当中,所以提取蠕虫的攻击踪迹可以帮助我们准确定位蠕虫攻击特征码的位置,并且最终提取蠕虫特征码。
1)如果网络中有一个IP数据包,则用事件来描述该数据包的发生。事件可以用这样一个七元组来表示:事件
=(srcIP,SrcPort,DestIP,DestPort,Time,Flag,Protocol,Payload)。这表示在Time时刻,有一个数据包从SrcIP的SrcPort端口发送到DestIP的DestPort端口,该数据包使用的传输层协议是Protocol,协议的状态是Flag,包中内容是Paylaod。
2)对于向量e(e1,e2,……,en),如果ei为事件并且ei.time<ei+1.time,那称向量e为事件向量。
3)蠕虫的行为踪迹为事件向量的集合E={e|e∈E∧e为事件向量}。
例如,一个蠕虫的行为踪迹集合E={(e1,e2,e3),(e4,e5,e6)},其中,(e1,e2,e3)和(e4,e5,e6)为事件向量。如果一个数据流匹配事件向量集合,当且仅当该数据流匹配了事件集合中至少一个事件向量。由于只有攻击踪迹才有助于提取蠕虫的特征码,在下文中指的蠕虫的行为踪迹为蠕虫的攻击踪迹。
蠕虫的感染过程具有相互关联的关系。蠕虫的行为踪迹也正是描述蠕虫感染的过程,因此基于关联算法对于网络蠕虫进行关联提取。由于Petri网可以描述计算机事件之间的关系以及离散事件系统中复杂的事件之间的先后、并行、异步等关系,利用Petri网定义了事件的关联模型。Petri网定义如下:
三元组N=(S,T;F)称为有向网的充分必要条件是:
4.dom(F)∪cod(F)=S∪T
其中, 和 分别为F的定义域和值域。S和T分别称为N的库所集和变迁集,F为流关系。库所和变迁又分别称为S_元素和T_元素,或S_元和T_元。X=S∪T称为N的元素集。
六元组∑=(S,T;F,K,w,M0)构成网系统的条件是:
1.N=(S,T;F)构成有向网,称为∑的基网。
2.K,w,M0依次为N上的容量函数,权函数和标识。M0称为∑的初始标识。
变迁发生条件:
1.°t°=°t∪t°.°t°称为t的外延.
2.t在M有发生权的条件:
t在M有发生权记作M[t>,也说M授权t发生或t在M受权发生。
本发明的Petri网模型中,每个库所与网络事件相对应,而令牌包含较多的信息,令牌所处的位置决定了令牌的内容。输入弧arc∈S*T可以包含变量和常量,变量作为令牌的声明,包含令牌的信息;常量定义了该输入弧上一次移动的令牌数量,即事件实例。输出弧arc∈T*S上的函数表示对输入弧上的变量执行的操作。变迁T上的谓词限定令牌的内容,它是一个逻辑表达式,其参数是该变迁T输入令牌所代表的事件的属性,以对事件的内容进行限制,从而实现细粒度的网络事件的关联检测,提高事件关联的准确性;如果变迁不包含令牌,则表示对令牌没有限制。由此,可以描述复杂事件模型包括:
如图3a所示,事件关系包括:顺序关系:如果c[e1>,但是c’[e2>,其中c’是c的后继:c[e1>c’,就是说e1和e2在c内有顺序关系。
如图3b所示,事件关系:与关系:如果c[e1>∧c[e2>,则说明e1和e2具有与的关系。
如图3c所示,事件关系:或关系:如果c[e1>∨c[e2>,则说明e1和e2具有或的关系。
图3为Petri网模型中的三种关系的表示,图3(a)中表示事件e1和e2顺序相关,情态只授权e1发生,e2则在后继情态有发生权。图3(b)为关联规则e1∧e2的模型,三个主库所分别代表了网络事件e1、e2和复合事件e3=e1∧e2,从库所e1和e2到变迁C的输入弧不包含常量,表示每次移动的令牌数为1;从变迁C到库所e3的输出弧上的操作“∧”表示对两个令牌代表的事件执行的操作;变迁C上的谓词表示对令牌内容的限制。图3(c)为关联规则e1∨e2的模型,它与e1∧e2的模型类似,差别即在于复合事件的关系不同,因而具有两个变迁。根据如上基本事件关联关系的Petri网模型的组合,可以很容易地构造复杂的网络事件关联关系模型,因此就可以关联蠕虫的行为踪迹。
通过Petri网的事件关联模型关联网络蠕虫的行为踪迹,然而由于蠕虫的攻击具有相似性,关联结果中具有大量相同的蠕虫踪迹。此外,由于网络传播条件的多样化,蠕虫的踪迹可能出现不同的形式,首先需要聚集蠕虫踪迹,最终达到分析蠕虫特征代码的目的。为了方便聚集,对于事件的定义进行进一步处理—超级事件。
超级事件可以用这样一个四元组来表示:超级事件=(Flag,Direction,victimport,Protocol,Payload)。
其中Flag为协议的状态;
Direction为超级事件的通讯方向。受保护网络对于外网的连接为1,相反则为0。
Victimport则为受攻击主机的ip地址,也就是非受保护网络内主机的端口。
Protocol为该数据包使用的传输层协议。
Payload为传输的数据包的内容。
对于Petri网模型的关联结果事件向量e(e1,e2,……,en)以及超级事件向量he(he
1,he
2,……,hen),如果
则满足映射f:e
i→he
i:
1.hei.direction的值根据事件ei的方向遵循超级事件中direction属性的定义。
2.hei.victimport为事件ei攻击主机(非受保护网络内的主机)的主机的端口。
3.hei.Protocol=ei.Protocol并且hei.Flag=ei.Flag。
则he为e的超级事件向量。
通过上述中的描述,Petri网模型的关联结果事件向量就转化为超级事件向量了,超级事件向量组成的集合也就成了超级事件向量集合。但是,聚集需要忽略时间要素然后抽象出相同的攻击踪迹。因此,得到了超级聚集元组的概念。
超级事件聚集元组为三元组HEZ=(id,he,count)。其中,id为网络蠕虫踪迹的编号,he为e的超级事件向量,count为he的重复发生次数。
对于Petri网模型的关联结果超级事件集合E和超级事件聚集元组HEZ,HEZ为E的超级事件聚集元组集合当且仅当:
1.
使得f:e→hez.he,并且hez.count为hez.he的对应的超级事件在集合E上重复映射的次数。
2.
使得f:e→hez.he,并且hez.count为hez.he的对应的超级事件在集合E上重复映射的次数。
超级事件聚集元组hez的发生概率P如下(设集合HEZ为关联聚集后的超级事件聚集元组集合):
其中hez.count为超级事件聚集元组超级事件向量的重复发生次数,hey.count为关联后聚集的蠕虫行为踪迹,相同或相似的行为踪迹重复发生次数;根据概率P(hez)能确定蠕虫特征码的位置,概率P(hez)越大,表明数据被感染的几率越大,从而确定该感染数据的位置。
由于蠕虫的行为踪迹是蠕虫传播过程中的感染序列,因此蠕虫感染时发送的攻击代码就一定存在于蠕虫的行为踪迹中,因此下一步为如何从蠕虫的行为踪迹中自动提取蠕虫特征的问题。
对于分析后的蠕虫踪迹结果超级元组集合Ω,虽然每个蠕虫行为踪迹都有其发生的次数,但是由于网络蠕虫应用相同的攻击方式,因此网络蠕虫的行为踪迹中含有的蠕虫特征码非常相似。只要对于网络蠕虫的不同行为踪迹的攻击代码进行提取就可以得到网络蠕虫的特征码。由于蠕虫的行为踪迹不可能存在网络的连接信息中,对于网络报文进行了重组。
将提取的特征定义为一个超级事件特征三元组hef=(id,payload,count)。其中,id代表网络蠕虫行为踪迹的编号,payload为网络蠕虫行为踪迹提取的特征,count为payload的重复发生次数。
对于超级事件聚集元组集合HEZ以及超级事件特征集合HEF,将HEF称为HEZ的超级事件特征集合,且满足:
1)对于 使得hefn.id=he.id,hefn.payload为从行为踪迹超级事件聚集元组hez中提取的所有的传输报文;
hefn.count为hefn.payload的重复发生次数;n为关联的踪迹数量。
2)对于
使得hef.id=hez.id,hef.id表示的是hef的网络蠕虫行为踪迹的编号,hef.count为hef.payload的重复发生次数,hef为从行为踪迹超级事件聚集元组hez中提取的相应的传输报文;
满足上述条件,超级事件特征集合HEF中,超级事件特征三元组hef的发生概率如下:
hef=(id,payload,count)表示的是超级事件特征三元组,hef.count表示超级事件特征三元组中网络蠕虫行为踪迹提取的特征的重复发生次数,本文中其他部分出现类似的表示,均表示是三元组中的一个元组表示,超级事件聚集元组集合HEZ的超级事件特征集合HEF中的特征元组hefi的评判函数Ev(hefi)如下:
其中,ZHEZ={hez|hez∈HEZΛhefi.id=hez.id},λ为调节参数,调节超级事件特征三元组的发生概率以及其对应的所有蠕虫踪迹的发生概率占评判函数结果的比例。
大于预先设定的阈值k,则认为超级事件特征三元组hefi为蠕虫的特征码。
实施例
为了验证本发明,采用本发明基于蠕虫踪迹分析的特征自动提取的原型系统,搭建了网络蠕虫的实验平台。原型系统部署在网络的出口,应用tcpreplay软件将背景流量和蠕虫流量合并后的流量进行重放。其中,不含攻击的背景流量为2006年11月从某公司抓取的一个月的网络流量,蠕虫流量分别为lion蠕虫以及mscan蠕虫的流量。
1.1基于历史信息的蠕虫检测
将某公司抓取的流量分割成两部分:一部分用来进行训练学习而另外一部分则分别与lion蠕虫和mscan蠕虫的流量进行合并,最终用来进行蠕虫检测(蠕虫的流量与背景流量的拟和位置为随机的)。分割流量的比例遵循8-2原则,也就是说训练学习的数据占全部数据的80%,而用于蠕虫检测的网络流量占全部流量的20%。因此,这就模拟了学习网络流量并且通过学习的知识本发明最终检测网络蠕虫的过程。图4给出了lion蠕虫(图4(a))和mscan蠕虫(图4(b))检测的时间曲线图,算法的参数为:T=6s,β=0.5,η=0.02,N=1。
从图4中可以发现mscan蠕虫和lion蠕虫都可以在爆发后的第三个单位时间内检测并报警。这是由于一个局域网内的所有用户基本上具有相似的访问习惯,因此将一个局域网作为一个访问模型对于蠕虫进行监测。在正常情况下某个用户访问的都是熟悉的网络习惯之内的目的地址,然而蠕虫不知道网络的访问习惯,而且由于蠕虫本身传播速度的需求,它需要快速地发现网络中具有自己可以攻击的目标,因此会同时访问很多在网络习惯之外的目的地址。这样,蠕虫的攻击就增加了网络访问陌生IP地址的数量,即破坏了建立的网络模型。因此,可以快速的检测蠕虫的存在。
对于网络中存在的与蠕虫扫描类似的快扫描以及慢扫描的网络活动,在基于历史信息的蠕虫检测部分中可能误认为蠕虫攻击,但是由于这类扫描并不会发出攻击主机的特征码,所以不会在特征码提取中得到特征码,最终本发明方法也就不会将此类活动误认为蠕虫的活动。
1.2蠕虫的行为踪迹与特征提取
根据历史信息的流量检测方法仅能够检测网络蠕虫的存在,但是并不能够提供人们可以重用的网络蠕虫特征码。原型系统实现了关联以及聚集算法,分析了蠕虫的行为踪迹。表1和表2是系统分析的lion蠕虫以及mscan蠕虫的行为踪迹的结果。其中:S为TCP协议的连接发起方的三次握手,F为TCP协议连接发起方通讯结束(Fin),T为连接发起方通过TCP协议传输报文,R为TCP协议的连接发起方要求重传,U为连接发起方通过UDP协议传输报文,t为被动连接方通过TCP协议传输报文,f为被动连接方通讯结束(Fin),r为TCP协议的被动连接方要求重传,u为被动连接方通过UDP协议传输报文。
表1为本发明原型系统分析的lion蠕虫的行为踪迹,结果均为真实攻击踪迹。从表中的数据不难发现,行为踪迹的发生概率最高的为(S,F,f,S,U,u,F,f)达到92.816%,其它的行为踪迹虽然与此行为踪迹攻击事件顺序有所不同,但是lion蠕虫的攻击踪迹的攻击步骤是基本相同的。lion蠕虫的攻击分为两个步骤:首先,通过TCP协议连接53端口,如果连接成功则不进行任何攻击就结束该连接;然后,再次通过TCP协议连接53端口并且发送攻击包,最后结束连接。然而,攻击主机的时候lion蠕虫并没有利用TCP协议传送攻击代码,而是利用UDP协议进行攻击。因此,可以说lion蠕虫的攻击同时运用了TCP协议和UDP协议。然而,由于网络环境的不同以及网络中某些意外因素的存在导致了蠕虫的行为踪迹序列的不同。因此,我们认为在理想情况下lion蠕虫的标准的行为踪迹为(S,F,f,S,U,u,F,f)。
表1lion蠕虫的行为踪迹
表2为原型系统分析的mscan蠕虫的行为踪迹。其中,(S,F,f),(S,F,r),(S,f,F),(S,f,r,r),(S,F,R,R)和(S,F,R)为佯装攻击踪迹,这是由于这些踪迹并不传送攻击报文;表中其余攻击踪迹为真实攻击踪迹。从表中的数据不难发现,佯装攻击踪迹中(S,F,f)的发生概率38.491%,而真实攻击踪迹(S,T,F,f)的发生概率40.548%。也就是说,佯装攻击踪迹和真实攻击踪迹可能同时发生,而且发生的概率也可能基本相同,这很可能由于蠕虫发生过程的网络情况或者网络蠕虫的编写者故意而为。从mscan蠕虫的行为踪迹中,不难发现mscan蠕虫的攻击行为:通过TCP协议连接21端口,然后发送攻击包并且结束连接,或者通过TCP协议连接21端口,然后直接结束连接。然而,由于网络环境的不同,网络中某些意外因素或者网络蠕虫的编写者故意而为,导致了蠕虫的行为踪迹序列的不同。因此,认为mscan蠕虫在理想情况下的标准的行为踪迹为(S,T,F,f)或(S,F,f)。
表2mscan蠕虫踪迹
表3网络蠕虫的特征
发现mscan蠕虫和lion蠕虫在传播过程中由于受到网络环境或者蠕虫编写者等因素的影响并非体现出一致的行为踪迹。但是,这些行为踪迹的最终目的都是攻击主机,因此踪迹中就具有相似的蠕虫攻击代码。本发明方法原型系统根据征提取算法,通过特征评判函数综合考虑了超级事件特征三元组的发生概率以及提取该特征的超级事件聚集三元组的发生概率进行综合打分(其中,λ=0.5,k=0.5),结果如表3所示。由于佯装攻击踪迹并不含有攻击代码,因此从mscan蠕虫的佯装攻击踪迹中并不能提取蠕虫的攻击代码。发现虽然mscan蠕虫和lion蠕虫具有大量的真实攻击踪迹,但是它们含有的攻击代码却是相似的。Lion蠕虫的特征的评判函数的值为1,说明Lion蠕虫的行为踪迹中都含有提取的特征;Mscan蠕虫的特征的评判因子为0.79,这是由于Mscan蠕虫的行为踪迹中有佯装的行为踪迹,降低了评判函数的值。通过实验发现,攻击主机发出的攻击代码具有区分蠕虫的特征,这是由于网络蠕虫需要通过攻击报文攻击主机,而攻击漏洞的恶意代码具有一定的相似性,因此具备代表网络蠕虫特征的特征码。然而,受害主机对于攻击主机的返回确认报文却没有此特点,这是由于受害主机并不需要攻击主机导致报文具有一定的偶然性,因此它不具备代表网络蠕虫特征的特征码。
根据表3所示提取的网络蠕虫特征结果,可以产生相应的snort检测规则,如图5所示。规则中的源IP地址和目的IP地址都设置为any,因为这里无论是内部还是外部的攻击都要检测;源端口也设置为any,因为蠕虫的源端口往往是随机选择的;协议和目的端口设置为检测到的值,content字段则设置为检测到的特征码二进制串。利用本文介绍的测试数据对它们进行误报率和漏报率测试,结果显示这两条规则的误报率和漏报率都为零。从而说明了基于踪迹分析的蠕虫特征自动提取方法产生的攻击特征是准确的。
综上所述,认为蠕虫的行为踪迹并不能够像蠕虫的特征码一样唯一的区别蠕虫。首先,蠕虫的行为踪迹在网络中的表现并不唯一。虽然,蠕虫的攻击步骤是基本相同的,但是由于网络环境的不同导致了蠕虫的具体的行为踪迹的序列的不同。然而,由于蠕虫行为踪迹的不同仅仅由于网络的一些外在因素而导致的,因此,又往往能够找到网络蠕虫的标准行为踪迹,即网络蠕虫在理想的网络环境下攻击主机时展现的行为踪迹。其次,蠕虫的标准的行为踪迹也不能作为网络蠕虫的身份识别的标志。我们可以发现lion蠕虫以及mscan蠕虫的标准行为踪迹虽然在蠕虫爆发时具有较高的发生概率,但是由于网络蠕虫的行为踪迹表现的多样性使得蠕虫的标准行为踪迹也无法区分网络蠕虫的存在。此外,如mscan蠕虫的标准行为踪迹也无法将mscan蠕虫的流量从正常的网络流量中分离出来。最后,蠕虫行为踪迹间的公共子向量并不能区分蠕虫的行为踪迹。由于网络蠕虫在网络上表现的行为踪迹众多,因此虽然可以找到踪迹子向量但是它并不能作为区分正常流量的依据。我们同时发现网络蠕虫的真实行为踪迹与佯装行为踪迹常常同时存在于蠕虫爆发的时候,虽然在lion蠕虫的行为踪迹中我们并没有发现佯装行为踪迹,但是在lion蠕虫的真实行为踪迹的第一步攻击却是佯装行为踪迹的特征。行为踪迹不能够很好地区分蠕虫的存在,但是作为网络蠕虫重要的攻击过程的描述,网络蠕虫的特征码一定存在于网络蠕虫的真实攻击踪迹中,因此它却能很好地帮助我们确定蠕虫的特征码的位置,从而有效地提取蠕虫的特征码。