计算机工程
Computer Engineering
1999年　第25卷　第9期　Vol.25 No.9  1999



计算机系统入侵检测模型与方法
阮耀平　易江波　赵战生
　　摘　要：简要介绍了系统评估和入侵检测的研究背景和意义．从攻击策略的角度，阐述了入侵检测内容和方法，并介绍了具有通用价值的入侵检测模型．通过总结将检测原理分为基于行为和基于知识两大类，分别阐述了各类方法的具体实现手段和积压自的优缺点．
　　关键词：入侵检测；审计跟踪；行为特征
The Model and Methodology of Intrusion Detection in Computer System
Ruan Yaoping Yi Jiangbo Zhao Zhansheng
(State Key Lab of Information Security, Graduate School of USTC, Beijing 100039)
　　Abstract　The study background and significance of system evaluation and intrusion detection are introduced in this paper.The contents and methodology of instrusion detection are presented from the view of attack strategy. By classifying the detection principle into behavior-based and knowledge-based method, a generic intrusion detection model is introduced, and the respective implement measures, advantages and disadvantages are addressed.
　　Key words　Intrusion detection; Audit trail; Behavior feature
　　近十几年Internet的发展和应用正逐步影响着人们的生活和工作方式。在我国，网络互联亦早已成为人们实现信息共享与交流的有力手段。与此同时，由于保护许多涉及国家军政、经济工商业情报以及一些私人数据等敏感信息的需要，或者实际工作的需要，信息技术的安全性越来越引起业内人士的普遍关注。但是，由于系统脆弱性的客观存在以及各种各样入侵行为的存在，使得信息系统的安全保护难度大为提高。
　　几乎从一开始起，人们就将"存取控制"或"访问控制"作为最基本的一道安全防线，并依此发展了一些安全模型，如著名的Bell-Lapadula 安全操作系统模型，以及Biba, Clark-Wilson, Lipner完整性模型等。暂且不说实现这些理论模型的难度，只从这样一个防御的角度来保证系统的安全性是不够的。计算机系统安全的管理应包括4部分，如图1所示。其中构筑一个安全系统(防御模块)只是其中的一小部分。检测模块用于发现各种违反系统安全规则的入侵行为。调查模块将检测模块所获得数据加以分析，并确认当前所发生的有关入侵企图。最后，事后分析模块分析将来如何抵制类似入侵行为。

图1　具有检测模块的安全系统管理
　　系统的风险分析和入侵检测正是后几部分模块所要完成的工作。一般方法是通过分析系统的审计数据，找出有关追踪安全侵害和入侵企图的有用信息。所以入侵检测系统不仅能发现非法用户的攻击以及合法用户滥用特权等入侵行为，还能够在一定程度上提供追究入侵者法律责任的有效证据。
　　目前国外不但有多个实验室在从事入侵检测系统的研究和开发，并已完成一些原型系统和商业产品。但是，国内的研究现状却相对落后。本文综合了国外大部分系统的检测方法，将它们从原理上作了分类，并指出了相应的优缺点，希望能对我们的进一步研究有一定的启发和借鉴作用。
1　入侵检测模型
　　入侵行为不仅来自外部，同时也指内部用户的未授权活动。从入侵策略的角度可将入侵检测的内容分为：试图闯入或成功闯入、冒充其它用户、违反安全策略、合法用户的泄漏、独占资源以及恶意使用等6个方面。

图2　入侵检测模型
　　最早的入侵检测模型由Dorothy Denning 在1986 年提出[1]。这个模型与具体系统和具体输入无关，对此后的大部分实用系统都很有借鉴价值。图2表示了这个通用模型的体系结构。事件产生器可根据具体应用环境而有所不同，一般可来自审计记录、网络数据包以及其它可视行为。这些事件构成了检测的基础。行为特征表是整个检测系统的核心，它包含了用于计算用户行为特征的所有变量，这些变量可根据具体所采纳的统计方法以及事件记录中的具体动作模式而定义，并根据匹配上的记录数据更新变量值。
　　如果有统计变量的值达到了异常程度，则行为特征表产生异常记录，并采取一定的措施。规则模块可以由系统安全策略，入侵模式等组成。它一方面为判断是否入侵提供参考机制，另一方面根据事件记录、异常记录以及有效日期等控制并更新其它模块的状态。在具体实现上，规则的选择与更新可能不尽相同，但一般地，行为特征模块执行基于行为的检测，而规则模块执行基于知识的检测。由于这两种方法具有一定的互补性，实际系统中经常将两者结合在一起使用，下面分别加以介绍。
2　基于行为的检测
　　基于行为的检测指根据使用者的行为或资源使用状况来判断是否入侵，而不依赖于具体行为是否出现来检测，所以也被称为异常检测(Anomaly Detection)。基于行为的检测与系统相对无关，通用性较强。它甚至有可能检测出以前未出现过的攻击方法，不像基于知识的检测那样受已知脆弱性的限制。但因为不可能对整个系统内的所有用户行为进行全面的描述，况且每个用户的行为是经常改变的，所以它的主要缺陷在于误检率很高。尤其在用户数目众多，或工作目的经常改变的环境中。其次由于统计简表要不断更新，入侵者如果知道某系统在检测器的监视之下，他们能慢慢地训练检测系统，以至于最初认为是异常的行为，经一段时间训练后也认为是正常的了。基于行为的检测方法主要有以下两种。
2.1　概率统计方法
　　概率统计方法是基于行为的入侵检测中应用最早也是最多的一种方法[2]。首先，检测器根据用户对象的动作为每个用户都建立一个用户特征表，通过比较当前特征与已存储定型的以前特征，从而判断是否是异常行为。用户特征表需要根据审计记录情况不断地加以更新。用于描述特征的变量类型有：1)操作密度：度量操作执行的速率，常用于检测通过长时间平均觉察不到的异常行为；2)审计记录分布：度量在最新纪录中所有操作类型的分布；3)范畴尺度：度量在一定动作范畴内特定操作的分布情况；4)数值尺度：度量那些产生数值结果的操作，如CPU使用量，I/O使用量。
　　这些变量所记录的具体操作包括：CPU 的使用，I/O 的使用，使用地点及时间，邮件使用，编辑器使用，编译器使用，所创建、删除、访问或改变的目录及文件，网络上活动等。
　　在SRI/CSL的入侵检测专家系统(IDES)[2]中给出了一个特征简表的结构：
　　<变量名，行为描述，例外情况，资源使用，时间周期，变量类型，门限值，主体，客体，值>
　　其中的变量名、主体、客体唯一确定了每一个特征简表，特征值由系统根据审计数据周期性地产生。这个特征值是所有有悖于用户特征的异常程度值的函数。如果假设S1，S2，…，Sn 分别是用于描述特征的变量M1，M2，…，Mn 的异常程度值，Si值越大说明异常程度越大。则这个特征值可以用所有Si值的加权平方和来表示：
　　M=a1s12+ a2s22+…+ ansn2，ai>0，其中ai表示每一特征的权重。
　　如果选用标准偏差作为判别准则，则
　　标准偏差：σ＝√M/(n-1)- μ2其中均值 μ=M/n
　　如果某S值超出了μ±dσ就认为出现异常。
这种方法的优越性在于能应用成熟的概率统计理论。但也有一些不足之处，如：统计检测对事件发生的次序不敏感，也就是说，完全依靠统计理论可能漏检那些利用彼此关联事件的入侵行为。其次，定义是否入侵的判断阈值也比较困难。阈值太低则漏检率提高，阈值太高则误检率提高。
2.2　神经网络方法
　　利用神经网络检测入侵的基本思想是用一系列信息单元(命令)训练神经单元，这样在给定一组输入后，就可能预测出输出。与统计理论相比，神经网络更好地表达了变量间的非线性关系，并且能自动学习并更新。实验表明UNIX系统管理员的行为几乎全是可以预测的[3]，对于一般用户，不可预测的行为也只占了很少的一部分。用于检测的神经网络模块结构大致是这样的：当前命令和刚过去的w个命令组成了网络的输入，其中w是神经网络预测下一个命令时所包含的过去命令集的大小。根据用户的代表性命令序列训练网络后，该网络就形成了相应用户的特征表，于是网络对下一事件的预测错误率在一定程度上反映了用户行为的异常程度。基于神经网络的检测思想可用图3表示[3]：

图3　用于入侵检测的神经网络示意图
　　图中输入层的W个箭头代表了用户最近的W个命令，输出层预测用户将要发生的下一个动作。神经网络方法的优点在于能更好地处理原始数据的随机特性，即不需要对这些数据作任何统计假设，并且有较好的抗干扰能力。缺点在于网络拓扑结构以及各元素的权重很难确定，命令窗口w的大小也难以选取。窗口太小，则网络输出不好，窗口太大，则网络会因为大量无关数据而降低效率。
3　基于知识的检测
　　基于知识的检测指运用已知攻击方法，根据已定义好的入侵模式，通过判断这些入侵模式是否出现来检测。因为很大一部分的入侵是利用了系统的脆弱性，通过分析入侵过程的特征、条件、排列以及事件间关系能具体描述入侵行为的迹象。基于知识的检测也被称为违规检测(Misuse Detection)。这种方法由于依据具体特征库进行判断，所以检测准确度很高，并且因为检测结果有明确的参照，也为系统管理员做出相应措施提供了方便。主要缺陷在于与具体系统依赖性太强，不但系统移植性不好，维护工作量大，而且将具体入侵手段抽象成知识也很困难。并且检测范围受已知知识的局限，尤其是难以检测出内部人员的入侵行为，如合法用户的泄漏，因为这些入侵行为并没有利用系统脆弱性。基于知识的检测方法大致有以下3种。
3.1　专家系统
　　专家系统是基于知识的检测中运用最多的一种方法[2]。将有关入侵的知识转化成if-then结构的规则，即将构成入侵所要求的条件转化为if 部分，将发现入侵后采取的相应措施转化成then部分。当其中某个或某部分条件满足时，系统就判断为入侵行为发生。其中的if-then结构构成了描述具体攻击的规则库，状态行为及其语义环境可根据审计事件得到，推理机根据规则和行为完成判断工作。在具体实现中，专家系统主要面临①全面性问题，即难以科学地从各种入侵手段中抽象出全面的规则化知识；②效率问题，即所需处理的数据量过大，而且在大型系统上，如何获得实时连续的审计数据也是个问题。
　　因为这些缺陷，专家系统一般不用于商业产品中，运用较多的是特征分析。像专家系统一样，特征分析也需要知道攻击行为的具体知识。但是，攻击方法的语义描述不是被转化为检测规则，而是在审计纪录中能直接找到的信息形式。这样就不像专家系统一样需要处理大量数据，从而大大提高了检测效率。这种方法的缺陷也和所有基于知识的检测方法一样，即需要经常为新发现的系统漏洞更新知识库。另外，由于对不同操作系统平台的具体攻击方法可能不同，以及不同平台的审计方式也可能不同，所以对特征分析检测系统进行构造和维护的工作量都较大。
3.2　模型推理
　　模型推理[4]是指结合攻击脚本推理出入侵行为是否出现。其中有关攻击者行为的知识被描述为：攻击者目的，攻击者达到此目的的可能行为步骤，以及对系统的特殊使用等。根据这些知识建立攻击脚本库，每一脚本都由一系列攻击行为组成。检测时先将这些攻击脚本的子集看作系统正面临的攻击。然后通过一个称为预测器的程序模块根据当前行为模式，产生下一个需要验证的攻击脚本子集，并将它传给决策器。决策器收到信息后，根据这些假设的攻击行为在审计记录中的可能出现方式，将它们翻译成与特定系统匹配的审计记录格式。然后在审计记录中寻找相应信息来确认或否认这些攻击。初始攻击脚本子集的假设应满足：易于在审计记录中识别，并且出现频率很高。随着一些脚本被确认的次数增多，另一些脚本被确认的次数减少，攻击脚本不断地得到更新。
　　模型推理方法的优越性有：对不确定性的推理有合理的数学理论基础，同时决策器使得攻击脚本可以与审计记录的上下文无关。另外，这种检测方法也减少了需要处理的数据量，因为它首先按脚本类型检测相应类型是否出现，然后再检测具体的事件。但是创建入侵检测模型的工作量比别的方法要大，并且在系统实现时决策器如何有效地翻译攻击脚本也是个问题。
3.3　状态转换分析
　　状态转换分析最早由 R.Kemmerer 提出[5]，即将状态转换图应用于入侵行为的分析。状态转换法将入侵过程看作一个行为序列，这个行为序列导致系统从初始状态转入被入侵状态。分析时首先针对每一种入侵方法确定系统的初始状态和被入侵状态，以及导致状态转换的转换条件，即导致系统进入被入侵状态必须执行的操作(特征事件)。然后用状态转换图来表示每一个状态和特征事件，这些事件被集成于模型中，所以检测时不需要一个个地查找审计记录。但是，状态转换是针对事件序列分析，所以不善于分析过分复杂的事件，而且不能检测与系统状态无关的入侵。
　　Petri 网用于入侵行为分析是一种类似于状态转换图分析的方法[6]。利用Petri网的有利之处在于它能一般化、图形化地表达状态，并且简洁明了。虽然很复杂的入侵特征能用Petri网表达得很简单，但是对原始数据匹配时的计算量却会很大。下面是这种方法的一个简单示例，表示在一分钟内如果登录失败的次数超过4次，系统便发出警报。其中竖线代表状态转换，如果在状态 S1发生登录失败，则产生一个标志变量，并存储事件发生时间 T1，同时转入状态 S2。如果在状态 S4时又有登录失败，而且这时的时间 T2-T1<60 秒，则系统转入状态 S5，即为入侵状态，系统发出警报并作相应措施。

图4　Petri网分析一分钟内4次登录失败
4　结束语
　　入侵检测的最终目的是有效地提高系统脆弱性，所以不能局限于检测已知脆弱性，而是要发现新的脆弱性，反过来检测库也要不断更新，检测与更新构成一个相辅相成的动态过程。目前对入侵检测的研究主要集中在机器学习和自动更新上，入侵检测的应用范围已从早期的审计跟踪数据分析，到目前应用于大型网络和分布式系统上。本文通过总结介绍入侵检测方法，将它们分为基于行为和基于知识两大类，并阐述了各自的实现手段和优缺点，目的在于能为我们的进一步研究起到启发和借鉴的作用。
作者简介：阮耀平(1975～)，男，研究生，研究方向：信息安全
作者单位：中国科技大学研究生院信息安全国家实验室，北京　100039
参考文献
1 Denning D E. An Intrusion Detection Model. IEEE Transaction on Software Engineering, 1987, 2(2): 222-232
2 Tamaru A, Gilham F,Jagannathan R,et al A Real-Time Intrusion. Detection Expert System (IDES), SRI-CSL-92-05, 1992-04
3 Fox K L, Henning R R, Reed J H, et al.A Neural Network Appr- oach Towards Intrusion Detection. In Proceedings of the 13th Na- tional Computer Security Conference Washington. DC, 1990-10: 125-134
4 Garvey T G, Lunt T F. Model Based Intrusion Detection. In Pro- ceeding of the 14th National Computer Security Conference： 1991-10：372-385
5 Porras P, Kemmerer R. Penetration State Transition Analysis-A Rule Based Intrusion Detection Approach. In Proceedings of the Eight Annual Computer Security Applications Conference, 1992- 11:220-229
6 Kumar K, Spafford E. A Pattern Matching Model for Misuse Intrusion Detection.In Proceedings of the 17th National Computer Security Conference, 1994-10:11-12
收稿日期：1999-02-02
