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

 
    2. 基于信息论的试验分析 
    根据前面的定义,为了衡量两种方式的优劣,需要比较条件熵和相对条件熵。条件熵衡量的是短序列的规则性,而相对条件熵衡量的是训练集和测试集的规则性。 条件熵比较如前所述,系统调用和L-Call具有明显的序列特征,可以用前个事件来预测第个事件。如果条件熵越小,说明在给定条件下预测事件的不确定性就越小,预测模型也就会越准确。图5显示了四种程序的条件熵,其中轴表示短序列的长度,也就是N-Gram中的,轴表示条件熵值。从图中可以得到以下结论: 
    ■ 随着短序列长度的增加,条件熵会逐渐减小。无论是否加入地址信息,这个结论都成立。 
    ■ 给定同样长度的短序列,L-Call的条件熵要小于系统调用的条件熵,说明加上地址信息后预测下一个事件的准确性得到提高,这样建立的预测模型也会越精确。 
    相对条件熵比较 
    相对条件熵衡量的是训练集和测试集的规则性,相对条件熵越小,说明测试集与训练集越相似,因此根据训练集建立的模型来处理测试集也会更准确。本文比较了wu-ftpd的几个入侵实例和训练集(只包含正常数据)的相对条件熵,图6显示了测试结果,其中X轴表示短序列的长度,Y轴表示相对条件熵值。在每一副图中,虚线表示采用系统调用方式得到的相对条件熵,而实体线表示采用L-Call得到的相对条件熵。从图中可以看出,在给定相同的短序列长度的条件下,L-Call的相对条件熵明显小于系统调用的相对条件熵,这表明训练集对测试数据起了更大的帮助,因此根据训练集得到的检测模型效果也越好。 
    图6 wu-ftpd训练集和测试集的相对条件熵 
    3. System Call和L-Call的检测结果比较 
    表1给出在实际检测过程中的结果比较。试验平台采用Redhat6.2 和wu-ftpd.2.6.0,测试集包含36个入侵实例和21个正常实例。从表中可以看出使用系统调用的检测系统只能检测出24个入侵实例,同时还有5个正常实例被误报,但采用L-Call可以检测出全部36个入侵实例,并且没有误报。 
    表1 SystemCall和L-Call的检测结果比较 
    ① 16(5)表示有16个正常实例被正确识别为正常,有5个被错误识别为攻击(即产生误报)

七、 结束语 
    L-Call是一个具有位置信息的系统调用表示方法,它不仅仅包含系统调用信息,还包含该系统调用被调用时的位置(用返回地址链表示),因此可以更细粒度地区分调用情况,也就可以更准确地识别入侵。根据前面的分析,可以得出L-Call具有以下特点: 
    1. 能够提高系统的检测性能。相比一般的系统调用,L-Call具有更小的条件熵和相对条件熵,因此建立的模型也更准确,更有利于检测入侵行为。 
    2. 可以适用于多种建模分析方法。从机器学习角度上,L-Call是一个新的事件表示方法,属于特征选择范畴。其它的建模方法,比如隐马尔可夫模型(HMM)、自动机理论、神经网络等都可以应用到L-Call中,而这些方法也都成功应用于基于系统调用的检测。 
    3. 可以有效地抵抗模仿攻击(Mimicry Attack)。如果入侵者企图绕过L-Call的检测,不仅要伪造系统调用,还需要伪造堆栈信息(最重要的是返回地址链),这大大增加了入侵的难度。 
    4. L-Call由于包含了位置信息,因此可进一步应用于系统调用的参数学习。

(责任编辑:adminadmin2008)

分享到:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

返回首页 返回顶部