网络通信 频道

入侵检测系统袭击识别研究

在众多的入侵检测系统(IDS)中,采用的网络入侵防范方法有很大的区别。因此,IDS市场上的许多厂商都疑惑,到底哪种才是最好的方法和解决方案。本文将讨论各种入侵检测方法的优缺点,并说明思科为IDS产品使用的方法。本文讨论的检测技术包括简单样式匹配、状态样式匹配、基于协议解码的签名、启发式签名和异常检测。但是,本文并没有详细说明每种方法,只介绍了这些方法的基本概念以及各种方法之间的区别。

在本文中,“签名”指一组条件,如果满足这组条件的话,就表明是某种类型的入侵活动。签名所使用的算法可能是本文介绍的五种方法之一(例如“异常检测签名”)。说明这一点很重要,因为“签名”一词经常与样式匹配相关。事实上,这个概念很可能引起误解,让读者以为基于签名的IDS仅限于样式匹配。上述定义的目的就是排除这种误解。

样式匹配

样式匹配的概念是查找单个分组中顺序固定的字节。顾名思义,这种方法不够灵活,但易于使用。在多数情况下,只有某项服务过程中发现可疑分组,或者更准确地说,只有可疑分组来往于某个端口,才会执行样式匹配。这种方式虽然能减轻对每个分组的检查工作量,但它使系统难以处理未驻留在精心设计的端口上的协议,例如通常可以随意移动的“特洛伊马”及其相关流量。

使用简单样式匹配方法的签名的结构如下:

如果分组是IPv4和TCP,目标端口是2222,且负载包含字串“foo”,则发出警报。

当然,这个例子非常简单,不过,它的变形也并不难。例如,用户可以在分组中包含特定的检查起点和终点,也可以为即将考虑的分组确定TCP标记。总之,这种技术是最简单、最基本的入侵检测模块。

优点:
• 是检测入侵的最简单的方法
• 这种方法可以将利用与样式直接关联,针对性强
• 这种方法能够对定义的样式发出可靠的警报
• 这种方法可以对所有协议适用

缺点:
• 如果样式不象签名编写者假定的那么独特,这种方法会出现高错误指示率
• 对袭击作少量修改就可以躲过检测(错误漏报)
• 可能需要多个签名才能防范一个易损点,多种工具会导致多个签名
• 这种方法通常仅限于检查单个分组,不适用于基于流的网络流量,例如HTTP流量,因而使入侵技术易于实施

状态样式匹配

更先进的一种方法是状态样式匹配分析。这种方法是签名方法的扩展,它扩展了样式匹配的概念,因为网络流通常包含多个基本分组,因而匹配应该在流状态内中执行。其含意是,执行这种签名分析的系统必须考虑TCP流中分组的到达顺序,而且必须处理分组边界以外的匹配样式。

那么,这种方法对在简单样式匹配段落中讨论的实例有什么影响呢?这种方法不查找每个分组中的样式,取而代之的是,系统必须开始保持正在监控的TCP流的状态信息。为了解其间的差别,可以考虑以下情况。假设正在查找的袭击来自与服务器连接的客户机,而且已经在IDS上部署了样式匹配方法。如果已经发动了袭击,即去往目标端口2222的所有TCP分组中都有“foo”字串,则警报响起。但是,如果袭击者在第一个分组中发送“fo”,在第二个分组中发送“o”,就不会响警报。如果部署状态样式匹配算法,检测器就会将字串的“fo”部分保存起来,因此,当客户机发送“.o”时,就可以完成匹配。

优点:
• 与简单样式匹配相比,这种方法的工作量只是稍有增加
• 这种方法允许将利用与样式直接关联,针对性强
• 这种方法能够对已确定的样式发出可靠警报
• 这种方法适用于所有协议
• 这种方法使入侵更困难一点

缺点:
• 如果样式不象签名编写者假定的那么独特,这种方法会导致高错误指示率
• 只需对袭击作少量修改就能躲过检查(错误漏报)
• 需要多个签名才能发现一个易损点,多种工具会导致多个签名

基于协议解码的分析

从许多方面看,基于协议解码的签名是状态样式匹配的智能扩展。实施这种签名时,对各种元素的解码方法与后面讨论的客户机或服务器解码相同。发现协议元素后,IDS将利用RFC制定的规则查找入侵。在某些情况下,这些入侵是通过某协议字段内的样式匹配发现的,随着字段长度或数量的增加,某些入侵变形需要更加先进的技术才能发现。需要注意的是,样式匹配和协议解码并非水火不相容。

为说明起见,可以再考虑一下基本检测的例子。假设袭击执行的基础协议是虚构的BGS协议,更确切地说,假设袭击要求,非法变量foo必须传递到BGS型字段中。为使情况进一步复杂,假设类型字段前面是称为BGS选项的长度可变的字段。合法选项表是fooh、mooh、tormer和buildo。在这种情况下,使用简单样式匹配或状态样式匹配算法将导致错误指示,因为选项fooh包含正在搜索的样式。另外,由于字段长度可变,因而无法通过定义搜索起止位置来限制这些错误指示。肯定foo正作为BGS型变量传递的唯一方法是对协议完全解码。

如果协议允许执行样式匹配算法难以处理的行为,协议解码不完全也会导致错误漏报。例如,如果BGS协议允许隔字节为空(数值设置在BGS报头中),则样式匹配将无法发现fx00ox00ox00。相反,协议解码型分析机制则能够跳过空字节,如果类型字节中包含foo,将能够如期发出警报。

优点:
• 如果协议经过精心定义和实施,这种方法能减少出现错误指示的机会
• 这种方法可以与利用直接关联
• 这种方法更通用,能发现袭击变形
• 这种方法能够根据协议规则可靠报告违反情况

缺点:
• 如果RFC模棱两可,允许开发人员随意解释和实施,则会导致高错误指示率,这些灰色协议违反情况非常普遍
• 这种方法需要较长的开发时间才能适当实施协议解析器

启发式分析

启发式签名使用某些算法逻辑作为警报决策的基础。这些算法通常是对正出现的流量类型的统计评估。这种签名的典型例子是,将用于检测端口清除的签名。这种签名寻找某机器上正在接触的某个端口的阈值。通过定义感兴趣的分组类型(例如SYN分组),还可以进一步限制自己。另外,还可以要求所有探针都必须来源相同。这种签名需要执行某些阈值操作,这样才能使之符合网络上正在监控的使用样式。这种签名可用于查找非常复杂的关系以及简单统计实例中说明的情况。

优点:
• 某些可疑/恶意行为无法通过其它手段检测

缺点:
• 为更好地符合网络流量和减少错误漏报,需要调整或修改算法

异常分析

异常签名一般适用于查找看似“正常”的网络流量的变形。这种方法的最大问题是,首先得定义什么是“正常”情况。某些系统具有正常情况的硬性定义,在这种情况下,可以把它们看成是启发式系统。某些系统可以学习什么是正常情况,但问题是怎样消除将异常作为正常的可能性。不仅如此,如果将正在学习的流量样式假定为正常,则系统必须学会区分合理变形与非法流量。虽然几种商用产品声称自己使用了异常检测方法,但一般学术机构才从事这方面的工作。这种检测的一个子类是基于概况的检测方法。这些系统根据用户或系统在网络上交互时的方式的变化发送警报。但是,这种方法也存在相同的限制和问题,因为中心类别可能会推断行为变化的倾向。

感兴趣的事实可以从趋势数据中学到,而且可以根据这些算法检测后来袭击。但是,这些系统提供的信息一般针对性不强,而且需要很多调查才能发挥作用。

在某些情况下,各种方法之间的界限是模糊的,因为多数协议解码分析机制会警告用户,协议违反情况并不直接与已知袭击相关,而属于“异常”(例如基于长度的缓冲器溢出检测)。因此,这种方法就具有异常检测的性质。

这些系统称为IDS的灵丹妙药,但是,虽然许多学术研究机构都对这些技术进行了长时间的研究,但成果有限,在生产中效果不佳。正如一句谚语所说的那样:“如果听起来完美得无法实现,事实就很可能如此。”

优点:
• 如果正确采用这种方法,可以检测到未知袭击
• 因为无需开发新签名,这种方法的成本较低

缺点:
• 从整体上看,这些系统无法为入侵数据提供任何细化程度。打个比喻,比如发生了一件非常可怕的事,但系统无法明确描述。
• 多数情况下,信噪比太低
• 这种方法高度依赖于系统学习什么是正常情况的环境

结论

那么,什么方法最好?答案很简单:这取决于您的具体操作和目的。迄今为止,思科对网络IDS(NIDS)的哲学思想是,组合使用样式匹配、状态样式匹配、协议解码和启发式签名。思科认为,用户最好根据需要解决的问题,或者希望检测的袭击选择适当的工具。在组合中,协议解码的分量比较重,因为多数思科签名都是以这种方式实施的。第二位经常使用的启发式签名,第三位是样式匹配。目前,组合中并没有包含异常检测(协议异常检测例外),因为这项技术在成熟之前,还有很多工作要做。思科将继续研究和跟踪IDS技术的发展,并将在新技术变得经济、有效、实用、成熟之后立即采用。

0
相关文章