时间:2016-02-25 10:52 文章来源:http://www.lunwenbuluo.com 作者:赵婧,魏彬,罗鹏,杨 点击次数:
摘要:针对当前网络安全事件频发以及异常检测方法大多集中在对系统调用数据的建模研究上等问题,提出一种基于隐马尔可夫模型的入侵检测方法。该算法基于系统调用和函数返回地址链的联合信息来建立主机进程的隐马尔可夫模型。此外,针对常用训练方法存在的不足,设计了一种快速算法用以训练模型的各个参数。实验结果表明:基于系统调用和函数返回地址链的联合信息的引入能够有效区分进程的正常行为和异常行为,大幅度降低训练时间,取得了良好的运算效果。
关键词:入侵检测;隐马尔可夫模型;系统调用序列
入侵检测作为一种网络安全防卫技术,可以有效地发现来自外部或内部的非法入侵,因此针对入侵检测算法的研究具有重要的理论和很强的实际应用价值。
基于动态调用序列对系统的入侵行为进行发掘是入侵检测领域主要的检测方法之一。自Forrest在1996年首次提出使用系统调用进行异常检测的思路和方法以来,有很多基于此的改进算法被提出。
文献提出一种基于频率特征向量的系统调用入侵检测方法,将正常系统调用序列抽取出的子序列的频率特征转换为频率特征向量。文献提出基于枚举序列、隐马尔科夫2种方法建立系统行为的层次化模型。然而,这类方法在误报率以及漏报率方面仍与实际需求有着一定的差距。
此外,由于隐马尔可夫模型(hiddenmarkovmodel,HMM)是一种描述离散时间内观察数据非常强大的统计工具,因此在基于主机的入侵检测研究中,HMM方法是目前重要的研究方向之一。
美国新墨西哥大学的Warrender等首次于1999年在IEEESymposiumonSecurityandPrivacy会议上提出将HMM应用于基于系统调用的入侵检测中。2002年,Qiao等提出使用HMM对系统调用序列进行建模,利用TIDE方法划分状态序列的短序列,建立正常数据的状态短序列库来进行检测。2003年,Cho等提出用HMM对关键的系统调用序列进行建模。文献设计了一种双层HMM模型进行入侵检测,而其中所用到的训练方法存在局部最优以及时间效率较低等问题限制了其在实际中的应用。文献依据在网络数据包中发现的频繁情节,设计了基于HMM的误用检测模型。文献设计了一种基于节点生长马氏距离K均值和HMM的网络入侵检测方法。近些年,针对此方面的研究热度依然不减。然而,从目前的研究情况看,虽然基于隐马尔可夫模型的入侵检测技术能取得较好的检测效果,但是也存在着如下几个问题:
1)基于HMM的入侵检测技术主要集中在对主机的命令序列或者系统调用序列进行建模,单一的数据源提供的信息较少,因此检测效果仍然不够理想。
2)在线学习问题,隐马尔可夫模型的建立需要消耗大量的时间和空间对参数进行调整学习,这导致了HMM难以得到有效的利用。综上所述,为克服现有模型算法所存在的问题,提出一种新的基于系统调用和进程堆栈信息的HMM入侵检测方法,该方法的主要思想是将系统调用和函数返回地址信息作为检测数据源,并利用HMM来构建主机特权进程的正常行为模型。其次,针对经典模型训练法存在局部最优且算法的复杂度较高等问题,设计一个更为简单的训练算法来计算HMM的参数,进而提升算法效率。最后,设计了附加观察值和附加状态等参数,用以消除非完备的数据以及零概率对模型的影响。
1、隐马尔可夫模型
马尔可夫模型中的每个状态都与一个具体的观察事件相互对应,但实际问题可能会比Markov链模型所描述的情况更复杂,人们所能观察到的事件一般情况下并不是与状态完全一致对应的,而是通过概率相联系,这样的模型称为HMM。
HMM是由马尔可夫过程扩充改变而形成的一种随机模型算法,它的基本理论是由数学家Baum在20世纪60年代后期建立起来的。该方法最早在20世纪70年代应用于语音处理领域,而在20世纪80年代逐渐广泛应用于文本处理等各个领域中。
20世纪90年代初以来,HMM及其各种推广形式开始被用于图像信号处理以及视频信号处理等领域。
HMM的状态不能够直接观察到,而是可以通过观测向量序列得到,每个观测向量都是由概率密度分布表现为不同的状态,因此其是具有一定状态数的隐马尔科夫链和显示随机函数集。而其在应用过程中需要解决3个基本问题:对于给定的一个观察序列O={O1,O2,…,OT}和一个HMM参数λ=(π,A,B),有:
1)评估问题,
2)解码问题,
3)训练问题。
2、基于HMM入侵检测方法
2.1模型的参数定义
系统调用和函数返回地址反映了程序执行时系统内核层的服务行为。系统调用信息是进程对资源的请求,它从一定程度上反映了进程行为的变化过程。而层层嵌套的函数返回地址则反映了系统调用对内核资源请求的过程。把函数返回地址的序列称为函数调用链,它代表了一个系统调用产生时完整的函数调用的路径。假设函数f()是函数main()的一个子函数且被main()调用,且函数f()直接调用某个系统调用,则该调用对应的一条函数链为A={a1,a2},其中,a1为函数main()的返回地址,a2为函数f()的返回地址。系统调用与函数调用链的联合信息能够比仅仅使用系统调用信息更加有效、精确地描述进程的行为,因此,采用系统调用和函数调用链来构建正常进程的隐马尔可夫模型。
HMM是一种双重随机过程,能够有效地刻画离散事件之间的转移特性。传统的基于HMM的入侵检测方法中,系统调用是HMM的观察符号,HMM的观察序列是程序运行时的系统调用序列,而隐状态是不可见的。隐状态在模型中没有具体的意义,一般选择不同类型系统调用的个数作为HMM中隐状态的个数。
在提出的HMM方法中,系统调用作为HMM的隐状态,而系统调用产生时对应的函数调用链作为HMM的观察值。那么,隐马尔可夫模型的参数可以定义如下:
1)N,模型的隐状态个数。定义隐状态集合为S={S1,S2,…,SN},qt为t时刻HMM所处的状态。对于某个特权进程,模型的隐状态集合即为进程所有可能出现的不同类型的系统调用组成的集合,该集合中系统调用的个数即为隐状态的个数。
联系方式
随机阅读
热门排行