四、基于Markov链的检测模型
系统分为两个部分,训练模块和测试模块。在训练阶段,系统得到一个Markov链模型来描述一个程序的执行行为。在检测阶段,系统利用产生的Markov链模型来判断程序是否发生异常,并记录异常信息。最后利用推断引擎判断是否发生入侵行为。整个系统的基本框架如图4所示。
图4 基于Markov链的系统检测模型
五、 基于信息论的模型衡量
Wenke Lee等人提出使用信息论的方法来分析审计数据的优劣,本文采用类似的方法对L-Call进行分析。下面给出信息论的相关知识。
1. 熵
给定数据集合X,Cx表示属于的样本的类别集合。对于任意x∈Cx,定义熵为
( 1 )
其中P(x),表示x在集合中的概率,并规定当P(x)=0时, 。
一般说来,熵越小说明数据分布越不均匀,熵越大说明数据分布越均匀。例如,如果数据集中所有项都属于同一个类别,那么熵等于0;相反如果数据集是均匀分布,那么熵等于log|Cx|。
对于异常检测而言,熵可以作为衡量数据规则程度的一个度量。在安全审计数据中,每一个唯一的记录表示一个类,熵越小表示不同的记录数目越少,数据也就越规则,从而利用已知条件预测未知的可靠性就越大,通过这样的数据集合建立的模型就越可靠。
2. 条件熵
给定两个随即变量X和Y,定义条件熵为
其中,P(x,y)为x和y的联合分布概率,P(x|y)为给定y时x的条件概率。
安全审计数据(比如用户行为,程序行为等)通常都具有时间上的序列特征,条件熵可以用来衡量这种特征。按照上面的定义,令序列X=(e1,e2…,en),序列Y=(e1,e2…,ek),其中k<n,e1表示每一个审计事件。条件熵H(x|y)可以衡量在给定条件Y以后,剩下的X的不确定性还有多少。因为这里Y是X的前k个事件,即P(x,y)=P(x),所以条件熵也就表示在一个给定的序列中,前k个事件对于预测后面n-k个事件的作用有多少。条件熵越小表示不确定性越小,根据这样的数据集合建立的模型其准确性就越好。因此对异常检测而言,可以使用条件熵来衡量序列关系的规则性。
3. 相对熵 给定两个数据集合X和Y,P(x)和q(x)分别为x在两个集合上的概率。定义相对熵为
在异常检测中,通常利用一组训练数据来构造模型,然后再将这个模型运用到测试数据中,如果希望模型具有较好的结果,这两个数据集合必须具有相似的规则性。相对熵用来比较两个数据集合的规则性,相对熵越小说明两个数据集合越相似。当P(x)=q(x)时,相对条件熵为0,说明这两个数据集合完全一致,那么根据训练集建立的模型就能准确地检测测试集的数据。
4. 相对条件熵
给定两个数据集合X和Y,定义相对条件熵为
相对条件熵衡量的是两个序列数据集的相似性,适合于分析程序行为或者用户行为这一类具有明显序列特征的数据。同样,对于异常检测而言,这个值越小越好。
六、试验评估
本文进行了一系列试验来验证L-Call和系统调用的检测性能的差异,下面给出试验结果并进行分析。
1. 试验数据来源
目前常用的基于系统调用的试验数据是UNM 大学提供的数据,其中包括sendmail,lpr等多种服务进程的系统调用迹。还有部分研究人员使用DARPA98/99的BSM审计数据。BSM(Solaris Basic Security Model)是Solaris系统自带的安全审计模块,用来记录安全相关的事件,这些事件类似于系统调用。但所有这些数据集都不包含返回地址链等信息,不能提取出L-Call,因此本文搭建了一个Linux平台,并利用改进的数据采集器Xtrace收集程序运行的数据。本文使用下列四种程序作为测试程序:grep,find,tar和wu-ftpd。这四个程序都是linux下的常用程序,可以接受用户给定的输入,其中wu-ftpd为ftp的守护程序。
(责任编辑:adminadmin2008)