基于隐马尔可夫模型的系统脆弱性检测
来源:岁月联盟
时间:2010-08-30
2 计算机脆弱性
在研究计算机脆弱性的过程中,对于“计算机脆弱性”(computer vulnerability) 这个词组的精确定义争论很大,下面是众多被广泛认可的定义中的两个。 1) 1996 年Bishop 和Bailey 给出的关于“计算机脆弱性”的定义[1]: “计算机系统是由一系列描述构成计算机系统的实体的当前配置的状态(states) 组成,系统通过应用状态变换( state transitions) (即改变系统状态) 实现计算。 从给定的初始状态使用一组状态变换可以到达的所有状态最终分为由安全策略定义的两类状态: 已授权的(authorized) 或者未授权的( unauthorized) 。 ” “脆弱(vulnerable) 状态是指能够使用已授权的状态变换到达未授权状态的已授权状态。 受损(compromised) 状态是指通过上述方法到达的状态。攻击(attack) 是指以受损状态结束的已授权状态变换的顺序。 由定义可得,攻击开始于脆弱状态。 ” “脆弱性(vulnerability) 是指脆弱状态区别于非脆弱状态的特征。广义地讲,脆弱性可以是很多脆弱状态的特征;狭义地讲,脆弱性可以只是一个脆弱状态的特征……” 2) Longley D.,Shain M.,Caelli W.对于“计算机脆弱性”的解释是这样的[2]: (1) 在风险管理领域中,存在于自动化系统安全过程、管理控制、内部控制等事件中的,能够被渗透以获取对信息的未授权访问或者扰乱关键步骤的弱点。 (2) 在风险管理领域中,存在于物理布局、组织、过程、人事、管理、硬件或软件中的,能够被渗透以对自动数据处理(ADP) 系统或行为造成损害的弱点。 脆弱性的存在本身并不造成损害。 脆弱性仅仅是可能让ADP 系统或行为在攻击中受损的一个或者一组条件。 (3) 在风险管理领域中,任何存在于系统中的弱点和缺陷。 攻击或者有害事件,或者危险主体可以用于实施攻击的机会。 (4) 在信息安全领域中,被评价目标所具有的能够被渗透以克服对策的属性或者安全弱点。 从上面的两个定义我们得出一个计算机脆弱性的简单定义:计算机脆弱性是系统的一组特性,恶意的主体(攻击者或者攻击程序) 能够利用这组特性,通过已授权的手段和方式获取对资源的未授权访问,或者对系统造成损害。3 系统结构
基于隐马尔可夫模型的入侵检测系统主要有审计数据预处理器、过滤器和基于HMM 的分类器三部分组成,如图1 所示。图1 基于HMM的入侵检测系统 审计数据预处理器负责将原始审计记录转变为分析引擎可以接受的标准格式。过滤器负责决定哪些审计事件是适合系统的、哪些审计数据字段对系统分析来说是充分有用的。基于HMM 的分类器负责对过滤后的数据进行分类,产生检测结果。 整个系统的工作过程分为两个阶段:训练阶段和检测阶段。在训练阶段,根据已知的正常审计数据和异常审计数据来训练分类器,并得出相应的参数。在检测阶段,预处理器将审计数据转换成标准格式,再通过过滤器得到充分有用的数据,然后通过基于HMM 的分类器进行分类,从而区分出正常行为和入侵行为。
4 隐马尔可夫模型
马尔可夫模型是一个离散时域有限状态自动机,隐马尔可夫模型(HMM)是指这一马尔可夫模型的内部状态外界不可见,外界只能看到各个时刻的输出值。[4]隐马尔可夫模型本质上是一种双重随机过程有限状态自动机,其中的双重随机过程是指满足Markov分布的状态转换Markov 链以及每一状态的观察输出概率密度函数,共两个随机过程。 设Xi是一个随机变量,它表示时刻t 系统的状态,其中t=0,1,2,…。用HMM 建模系统正常行为特征需做出如下两个假设:P(Xi+1=it+1|X/t=it,Xi-1=it-1,…,x0=i0)=P(Xi+1=it+1|Xt=it (1)P(Xi+1=it+1|Xt=it)=P(Xi+1=j|Xt=i)=Pij (2) 对每个t 和所有的状态都成立。其中Pij表示系统在时刻t处于状态的条件下,在时刻t+1处于状态j的概率。等式(1)说明在时刻t+1 系统状态的概率分布只与时刻t 时的状态有关,而与时刻t以前的状态无关。等式(2)说明由时刻t 到时刻t+1的状态转移与时间无关。 如果系统有有限数目的状态:1,2…,s,则HMM可以用转移概率矩阵P和初始概率分布Q来定义: (3) (4) 其中qi是系统在时刻0时处于状态i的概率,并且: (5) 给定状态序列Xt-k,...,Xt在时刻t-k,...,t出现的联合概率表示为:P(Xt-k,…,Xt)= (6) 训练数据提供了在时刻t=0,1,...N-1时刻状态X0,X1,X2,...XN-1的观察值,HMM的转移概率矩阵和初始概率分布通过学习训练数据来得到。由训练数据计算转移概率矩阵和初始概率分布如下:Pij=Nij/Ni (7) qi=Ni/N (8) 其中Nij表示Xt在状态i、Xt+1在状态j的观察值对(Xt,Xt+1)的数目,Nt表示Xt在状态i、Xt+1在任何状态的观察值对(Xt,Xt+1)的数目,Ni表示Xt在状态i的数目,N表示观察值总数。5 正常行为建模
为了检测入侵,通常使用两类数据来捕捉机和中的行为:网络通信数据和审计踪迹数据(审计数据)。在研究中,采用的是SUn 微系统公司开发的Solsris作系统的审计数据,重点考虑的是攻击主机的入侵。Solsris操作系统的基本安全模块(BSM)有大约284 个不同类型的审计事件。对每种类型的事件,BSM 审计记录包括如下信息:事件类型、用户ID、组ID、进程ID、会话ID、访问的系统对象等。在研究中,仅仅抽取了事件类型信息,这是审计事件的最关键的特征之一。另外,通过审计事件的连续流来捕捉用户行为,每种审计事件由事件类型来表征。 主机的正常行为和入侵行为都是由计算机操作序列组成的,这些操作序列引发了审计事件序列。因此,如果把审计事件发生的时间作为HMM 的离散时间点,把各种审计事件看作主机的可能状态,那么主机的行为就可以用隐马尔可夫模型来描述。为了检测入侵,需要构造主机的长期正常行为特征,将最近过去的主机行为与长期正常行为特征相比较来检测重要的区别。基于训练数据集合中的正常审计事件流,用公式(7)和(8)计算转移概率矩阵P 和初始概率分布Q 来构造正常行为的隐马尔可夫模型,由这个模型来表征主机正常行为的特征。 用长度为N的滑动窗口对审计事件的连续流进行扫描,以观察当前时间t 的过去N个审计事件:Et-N+1,…,Et其中E表示事件。假设N=15,则对时刻t在窗口中的审计事件Et-14,…,Et通过观察每个审计事件的类型来获得出现在窗口状态Xt-14,…,Xt序列,其中Xt是审计事件Ei对应的状态(审计事件类型)。用P 和Q 计算状态序列 Xt-14,…,Xt在正常使情况下出现的概率(即正常行为特征的HMM支持状态序列Xt-14,…,Xt的概率)如下:P(Xt-14, …,Xt)= (9) 用HMM 来构造一个分类器,由分类器来区分正常行为和入侵行为。假设给定一个阈值 μ,用公式(6)求得某状态序列的概率记为 η",则分类器可定义:如果 η≥μ ,该状态序列是正常的,否则是入侵的。6 实验仿真及结果分析
6.1 阈值 μ 的确定
评价入侵检测系统的检测性能主要有两个指标:检测率和误报率。检测率是被检测到的攻击占攻击总数的百分比。误报率是系统正常数据中误认为是攻击的百分比。预期的入侵检测系统必须有高的入侵检测率和低的误报率。 阈值 μ 的大小直接决定了入侵检测系统的检测性能。如果增大阈值,则入侵检测率将提高,但误报率也会提高。相反,如果减小阈值,则误报率将降低,但入侵检测率也会降低。所以,选择阈值时,应该在入侵检测率和误报率之间折衷考虑。6.2 结果分析
实验中,用c++语言实现了隐马尔可夫模型的学习算法和推导算法。分别用所有数据和特权变化数据两种方法来建模主机正常行为的隐马尔可夫模型,并比较哪种方法能够产生更好的性能。为测试两种建模方法的运行时间性能,程序执行了30次,用time 命令记录了shell 执行结果。表1 列出了实验的结果。表1 运行时间性能比较建模方法 状态数目 序列长度 序列数目 时间戳 |
5 20 767194 4小时58分所有数据 15 30 767187 6小时31分 |
5 20 5943 25.8秒特权变化数据 15 30 5805 55.9秒 |
建模方法 状态数目 序列长度 HMM 阀值 务报率 |
5 20 9.86E-54.1 6.698%特权变化数据 15 25 1.05E-64.9 2.4001% 10 30 7.98E-82.1 0.599% |
5 20 1.12E-91.8 4.198%所有数据 10 20 3.46E-94.0 1.5978% 15 30 9.75E-120.1 11.987% |