时间:2016-02-25 10:52 文章来源:http://www.lunwenbuluo.com 作者:赵婧,魏彬,罗鹏,杨 点击次数:
2)M,模型的观察值个数。定义观察值集合为V={v1,v2,…,vM},Ot为t时刻HMM输出的观察值。对于某个特权进程,模型的观察值集合即为进程所有可能出现的不同的函数调用链组成的集合,该集合中函数链的个数即为观察值个数。
3)状态转移概率矩阵A={aij},其中,aij=P(qt+1=Sj|qt=Si),1i,j?N,表示当前状态(系统调用)为Sj且下一个状态(系统调用)为Si的概率值。该状态转移矩阵描述了系统调用之间的一步转移概率。
4)输出概率矩阵B={bj(k)},其中,bj(k)=P(Ot=vk|qt=Sj),1j?N,1?k?M,表示当前状态(系调用)为Sj时,对应的观察值(函数调用链)为vk的概率值。如果概率值为0,则表示进程执行时,进程不可能通过执行函数路径vk得到当前系统调用Sj。
5)初始概率矩阵π={πi},其中,πi=P(q1=Si),1i?N,表示在初始时刻处于状态(系统调用)Si的概率值。
根据上面的参数定义,可以得到关于进程系统调用和堆栈信息的隐马尔可夫模型λ=(π,A,B)。
2.2模型的训练
隐马尔可夫模型的训练算法是基于HMM的入侵检测应用的关键问题。经典的训练方法Baum-Welch算法是一种迭代算法,它利用前向后向概率来解决参数估计问题。但是BW算法是一种局部最优算法而且算法的复杂度较高,需要消耗大量的时间进行训练,这些缺点影响了HMM的检测效果和实用性。在提出的方法中,系统调用是作为模型的状态出现的,它对于整个模型是可见的。因此,可以利用一个更为简单的训练算法来计算HMM的参数。
给定某个特权进程的一条系统调用序列和相应的函数调用链序列对HMM进行训练。假设进程的函数调用链序列为O={O1,O2,…,OT},系统调用序列为Q={q1,q2,…qT},其中,Ot为进程执行系统调用qt时对应执行的函数调用链。HMM模型λ=(π,A,B)的各参数可由如下公式计算得到:aij=NijNi*(1)πi=NiNto(2)bj(k)=MjkMj*(3)其中:Nij为训练进程中当前时刻t的状态qt为Si,下一时刻t+1的状态qt+1为Sj的个数;Ni*为训练进程中当前时刻的t状态qt为Si,下一时刻t+1的状态qt+1为S={S1,S2,…,SN}中任一系统调用的个数;Ni为训练进程中当前时刻t的状态qt为系统调用Si的个数;Nto为训练进程中系统调用的总个数;Mjk为训练进程中当前时刻t的状态qt为系统调用Sj时,观察符号Ot为函数调用链Vk的个数;Mj*为训练进程中当前时刻t的状态qt为系统调用Sj时,观察符号Ot为V={v1,v2,…,vM}中任一函数调用链的个数。
由于完备的训练数据是很难获得的,因此在实际检测中有可能出现之前在训练数据集中未曾学习到的系统调用或者函数调用链;另外当服务进程遭受入侵时,也会产生一系列未曾在训练数据中出现过的系统调用或函数调用链。考虑到以上因素,引入一个附加观察值vM+1和附加状态SN+1来表示这些没有出现过的观察值和状态。在隐马尔可夫模型中,参数定义如下:πSN+1=10-6,aSN+1Sj=aSiSN+1=10-6,bj(VM+1)=10-6,i?N,1?j?M。为了避免检测时出现概率值为零的情况,在状态转移矩阵A和初始概率分布π中为零者,也赋予一个固定的小概率值10-6。
2.3异常检测
基于正常程序行为的HMM训练完成以后,在实验中,以每个进程作为研究对象,检测某个进程是否正常。因此,给定一组包含系统调用和函数调用链的数据,首先按照进程号对它们进行分组,然后将每个进程产生的系统调用和函数调用链作为一组进行检测。在实际的异常检测中,长度为L的滑动窗用以对上述数据进行分割,其中步距为1。
利用正常数据训练得到的HMM参数模型λ=(π,A,B),对于给定的一条函数调用链序列X={Ot-L+1,…,Ot}(该函数链对应的系统调用序列为Y={qt-L+1,…,qt}),可以按如下公式计算它出现的概率:P(X|λ)=πqt-L+1bqt-L+1(Ot-L+1)Πt-1i=t-L+1aqiqi+1bqi+1(Oi+1)(4)
此外,文中将异常度δ定义为如下的形式:δ=NNCNTS(5)其中:NNC为不匹配短序列数,定义为输出概率小于初始设定阈值数目;NTS为测试进程中的总的短序列数。在实验中将求得的异常度与实验中不断调整得到的阈值δh进行比较,如果异常度大于该阈值,就认为产生此测试序列的进程可能为异常;否则认为是正常。
3、实验结果与分析
3.1实验数据
实验数据由在RedhatLinux7.2上跟踪Ftp和SambaHttpd特权进程所获得,并将其分为训练以及测试2个部分。其中,训练数据是部分正常数据,而测试数据则由其余正常数据以及异常数据构成。正常数据由模拟用户各种正常行为获得,而异常数据则是对进程进行模拟攻击得到。
3.2实验结果
每一个正常数据轨迹都是正常状态下,一个特权从开始产生到最后结束的系统调用和函数调用链序列。每一个异常数据轨迹都是特权进程从开始被攻击到最后进程结束的系统调用和函数调用链序列。
能够有效区分进程的正常状态和异常状态是评价一个入侵检测方法好坏的重要标准。进程的正常序列和进程的异常序列之间的异常度差异越大,则越容易发现针对系统的入侵行为。可见正常进程和异常进程的平均异常度差异非常明显,因此可以作为正常与异常的区分。
误报率和漏报率是评价入侵检测方法有效性的一个重要标准。实验中将Warrender提出的经典HMM入侵检测方法和提出的HMM入侵检测方法进行比较。2种方法都采用异常度作为判定进程是否异常的指标,同时滑动窗口的长度均选择为L=6。实验采用的数据为Ftp和Samba这2种特权进程的正常序列和异常序列。由于Warrender的方法是基于系统调用来对进程的隐马尔可夫模型建模的,因此该方法只使用实验数据中各进程的系统调用序列进行训练和测试。
为了评估提出的入侵检测方法的实时性,在实验中,对2种方法的训练时间进行了比较。实验所用计算机配置为CPUPengtiumIV2.6GHz,512MBDDR内存。
3.3实验结果的分析与讨论
联系方式
随机阅读
热门排行