基于L-Call的程序异常检测模型研究(3)



四、基于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)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

开源发家史:Linux在为谁代言?

开源发家史:Linux在为谁代言?

开源,也被称为开放源代码(Open Source) 开源(Open Source) 开源运动起源于20实际60年...[详细]

作为码农,我们为什么要写作

作为码农,我们为什么要写作

在程序员这个行业,坚持做技术写作的人一直比较少。我和身边的朋友沟通后,发现他们除...[详细]

键盘敲击识别技术真的靠谱吗?

键盘敲击识别技术真的靠谱吗?

所有人都知道密码是靠不住的。于是现在有一个有意思的行为生物识别是你是如何打字的,...[详细]

干货!企业安全产品采购指南

干货!企业安全产品采购指南

作为一个安全行业的客户,怎么知道什么样的技术、产品和服务将会满足自身的需求?本文...[详细]

作为程序员,你必须了解这些关于计算机的知

作为程序员,你必须了解这些关于计算机的知识

存储-块设备,文件系统,集群文件系统,分布式文件系统,光纤SCSI,iSCSI,RAID等。 ...[详细]

返回首页 返回顶部