入侵者如何进入系统主要有三种方式:
物理入侵:入侵者以物理方式访问一个机器进行破坏活动,例如趁人不备进入机房试图闯入操作系统、拿着钳子改锥卸掉硬盘装在另一台机器上进行研究。
系统入侵:入侵者在拥有系统的一个低级账号权限下进行的破坏活动。通常,如果系统没有及时打补丁,那么拥有低级权限的用户就可能利用系统漏洞获取更高的管理特权。
入侵检测的内容包括:试图闯入、成功闯入、冒充其他用户、违反安全策略、合法用户的泄漏、独占资源以及恶意使用。进行入侵检测的软件与硬件的组合便是入侵检测系统(IntrusionDetectionSystem,IDS)。它通过从计算机网络或计算机系统的关键点收集信息并进行分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象并且对其做出反应。有些反应是自动的,它包括通知网络安全管理员(通过控制台、电子邮件),中止入侵进程、关闭系统、断开与互联网的连接,使该用户无效,或者执行一个准备好的命令等。
入侵检测技术是动态安全技术的最核心技术之一。传统的操作系统加固技术和防火墙隔离技术等都是静态安全防御技术,对网络环境下日新月异的攻击手段缺乏主动的反应。入侵检测技术通过对入侵行为的过程与特征的研究,使安全系统对入侵事件和入侵过程能做出实时响应,
利用防火墙,通常能够在内外网之间提供安全的网络保护,降低了网络安全风险。但是,仅仅使用防火墙、网络安全还远远不够:入侵者可寻找防火墙背后可能敞开的后门;入侵者可能就在防火墙内;由于性能的限制,防火墙通常不能提供实时的入侵检测能力。
入侵检测是防火墙的合理补充,帮助系统对付网络攻击,扩展了系统管理员的安全管理能力(包括安全审计、监视、进攻识别和响应),提高了信息安全基础结构的完整性。入侵检测被认为是防火墙之后的第二道安全闸门,提供对内部攻击、外部攻击和误操作的实时保护。这些都通过它执行以下任务来实现:
(1)监视、分析用户及系统活动,查找非法用户和合法用户的越权操作;
(2)系统构造和弱点的审计,并提示管理员修补漏洞;
(4)异常行为模式的统计分析,发现入侵行为的规律;
(5)评估重要系统和数据文件的完整性,如计算和比较文件系统的校验和;
(6)操作系统的审计跟踪管理,并识别用户违反安全策略的行为。
对一个成功的入侵检测系统来讲,它应该能够使系统管理员时刻了解网络系统(包括程序、文件和硬件设备等)的任何变更;为网络安全策略的制订提供指南;它应该管理、配置简单,从而使非专业人员非常容易地获得网络安全;入侵检测的规模应根据网络威胁、系统构造和安全需求的改变而改变;入侵检测系统在发现入侵后,会及时作出响应,包括切断网络连接、记录事件和报警等。
最早的通用入侵检测模型由D.Denning1987年提出(如图)。该模型由以下6个主要部分构成:
图11.1Denning的通用入侵检测模型
(1)主体(Subjects):在目标系统上活动的实体,如用户;
(2)对象(Objets):系统资源,如文件、设备、命令等;
(4)活动简档(ActivityProfile):用以保存主体正常活动的有关信息,具体实现依赖于检测方法,在统计方法中从事件数量、频度、资源消耗等方面度量,可以使用方差、马尔可夫模型等方法实现;
(5)异常记录(AnomalyRecord):由
(6)活动规则:规则集是检查入侵是否发生的处理引擎,结合活动简档用专家系统或统计方法等分析接收到的审计记录,调整内部规则或统计信息,在判断有入侵发生时采取相应的措施。
Denning模型基于这样一个假设:由于袭击者使用系统的模式不同于正常用户的使用模式,通过监控系统的跟踪记录,可以识别袭击者异常使用系统的模式,从而检测出袭击者违反系统安全性的情况。
Denning模型独立于特定的系统平台、应用环境、系统弱点以及入侵类型,为构建入侵检测系统提供了一个通用的框架。
1988年,SRI/CSL的TeresaLunt等人改进了Denning的入侵检测模型,并开发出了一个IDES。该系统包括一个异常检测器和一个专家系统,分别用于统计异常模型的建立和基于规则的特征分析检测(如图)。
图11.2SRI/CSL的IDES
2.入侵检测系统的分类根据其采用的技术可以分为异常检测和特征检测。
(1)异常检测:异常检测的假设是入侵者活动异常于正常主体的活动,建立正常活动的“活动简档”,当前主体的活动违反其统计规律时,认为可能是“入侵”行为。通过检测系统的行为或使用情况的变化来完成
(2)特征检测:特征检测假设入侵者活动可以用一种模式来表示,然后将观察对象与之进行比较,判别是否符合这些模式。
(3)协议分析:利用网络协议的高度规则性快速探测攻击的存在。
根据其监测的对象是主机还是网络分为基于主机的入侵检测系统和基于网络的入侵检测系统。
(1)基于主机的入侵检测系统:通过监视与分析主机的审计记录检测入侵。能否及时采集到审计是这些系统的弱点之一,入侵者会将主机审计子系统作为攻击目标以避开入侵检测系统。
(2)基于网络的入侵检测系统:基于网络的入侵检测系统通过在共享网段上对通信数据的侦听采集数据,分析可疑现象。这类系统不需要主机提供严格的审计,对主机资源消耗少,并可以提供对网络通用的保护而无需顾及异构主机的不同架构。
根据工作方式分为离线检测系统与在线检测系统。
(1)离线检测系统:离线检测系统是非实时工作的系统,它在事后分析审计事件,从中检查入侵活动。事后入侵检测由网络管理人员进行,他们具有网络安全的专业知识,根据计算机系统对用户操作所做的历史审计记录判断是否存在入侵行为,如果有就断开连接,并记录入侵证据和进行数据恢复。事后入侵检测是管理员定期或不定期进行的,不具有实时性。
(2)在线检测系统:在线检测系统是实时联机的检测系统,它包含对实时网络数据包分析,实时主机审计分析。其工作过程是实时入侵检测在网络连接过程中进行,系统根据用户的历史行为模型、存储在计算机中的专家知识以及神经网络模型对用户当前的操作进行判断,一旦发现入侵迹象立即断开入侵者与主机的连接,并收集证据和实施数据恢复。这个检测过程是不断循环进行的。
3.入侵检测的过程(1)入侵信息的收集
入侵检测的第一步是信息收集,收集的内容包括系统、网络、数据及用户活动的状态和行为。通常需要在计算机网络系统中的若干不同关键点(不同网段和不同主机)收集信息,这除了尽可能扩大检测范围的因素外,还有一个重要的因素就是从一个源来的信息有可能看不出疑点,但从几个源来的信息的不一致性却是可疑行为或入侵的最好标识。
入侵检测很大程度上依赖于收集信息的可靠性和正确性,因此,有必要利用所知道的真正的和精确的软件来报告这些信息。因为入侵者经常替换软件以搞混和移走这些信息,例如替换被程序调用的子程序、库和其它工具。入侵者对系统的修改可能使系统功能失常而看起来跟正常的一样。这需要保证用来检测网络系统的软件的完整性,特别是入侵检测系统软件本身应具有相当强的坚固性,防止被篡改而收集到错误的信息。
入侵检测利用的信息一般来自以下四个方面:
系统和网络日志。
由于日志的重要性,所有重要的系统都应定期做日志,而且日志应被定期保存和备份,因为不知何时会需要它。许多专家建议定期向一个中央日志服务器上发送所有日志,而这个服务器使用一次性写入的介质来保存数据,这样就避免了攻击者篡改日志。系统本地日志与发到一个远端系统保存的日志提供了冗余和一个额外的安全保护层。现在两个日志可以互相比较,任何的不同显示了系统的异常。
目录和文件中的不期望的改变。
网络环境中的文件系统包含很多软件和数据文件,包含重要信息的文件和私有数据文件经常是攻击者修改或破坏的目标。目录和文件中的不期望的改变(包括修改、创建和删除),特别是那些正常情况下限制访问的,很可能就是一种入侵产生的指示和信号。攻击者经常替换、修改和破坏他们获得访问权的系统上的文件,同时为了隐藏系统中他们的表现及活动痕迹,都会尽力去替换系统程序或修改系统日志文件。
程序执行中的不期望行为。
网络系统上的程序执行一般包括操作系统、网络服务、用户起动的程序和特定目的的应用,例如数据库服务器。每个在系统上执行的程序由一到多个进程来实现。每个进程执行在具有不同权限的环境中,这种环境控制着进程可访问的系统资源、程序和数据文件等。一个进程的执行行为由它运行时执行的操作来表现,操作执行的方式不同,它利用的系统资源也就不同。操作包括计算、文件传输、设备和其它进程,以及与网络间其它进程的通讯。
一个进程出现了不期望的行为可能表明攻击者正在入侵系统。攻击者可能会将程序或服务的运行分解,从而导致它失败,或者是以非用户或管理员意图的方式操作。
物理形式的入侵信息。
(2)信号分析
对上述四类收集到的有关系统、网络、数据及用户活动的状态和行为等信息,一般通过三种技术手段进行分析:模式匹配,统计分析和完整性分析。其中前两种方法用于实时的入侵检测,而完整性分析则用于事后分析。
模式匹配
统计分析
完整性分析
(3)入侵检测响应方式
分为主动响应和被动响应。
被动响应型系统只会发出告警通知,将发生的不正常情况报告给管理员,本身并不试图降低所造成的破坏,更不会主动地对攻击者采取反击行动。
主动响应系统可以分为对被攻击系统实施控制和对攻击系统实施控制的系统。
对被攻击系统实施控制(防护)。它通过调整被攻击系统的状态,阻止或减轻攻击影响,例如断开网络连接、增加安全日志、杀死可疑进程等。
对攻击系统实施控制(反击)。这种系统多被军方所重视和采用。
目前,主动响应系统还比较少,即使做出主动响应,一般也都是断开可疑攻击的网络连接,或是阻塞可疑的系统调用,若失败,则终止该进程。但由于系统暴露于拒绝服务攻击下,这种防御一般也难以实施。
二、入侵检测技术分析
1.技术分类入侵检测技术通过对入侵行为的过程与特征的研究,使安全系统对入侵事件和入侵过程能做出实时响应,主要包括特征检测、异常检测、协议分析。
(1)基于知识的特征检测(模式发现)技术
特征检测又称误用检测,是利用已知系统和应用软件的弱点攻击模式来检测入侵。这一检测假设入侵者活动可以用一种模式来表示,系统的目标是检测主体活动是否符合这些模式,那么所有已知的入侵方法都可以用匹配的方法发现。模式发现的关键是如何表达入侵的模式,把真正的入侵与正常行为区分开来。需要的计算量将是:攻击特征字节数×数据包字节数×每秒的数据包数×数据库的攻击特征数。对于满负载的100Mbps以太网,所需的计算量极其巨大。模式匹配/特征搜索技术使用固定的特征模式来探测攻击,只能探测出明确的、唯一的攻击特征,即便是基于最轻微变换的攻击串都会被忽略。
模式发现的优点是误报少,局限是它只能发现已知的攻击,对未知的攻击无能为力,同时由于新的攻击方法不断产生、新漏洞不断发现,攻击特征库如果不能及时更新也将造成IDS漏报。
针对IDS模式匹配可以采用以下方法来逃避检测。
URL编码
将URL进行编码,可以避开一些使用规则匹配的IDS。
二进制编码:HTTP协议允许在URL中使用任意ASCII字符,把二进制字符表示成形如"%xx"的十六进制码。如"cgi-bin"可以表示成"%63%67%69%2d%62%69%6e"。
%u编码:用来代表Unicode/wide特征字符,IISweb服务器支持这种非标准的web请求编码方式。例如:使用下列的编码方式就可以绕过一些IDS对".ida"的攻击的检测。GET/abc.id%u0061HTTP/1.0。
unicode编码:主要针对IIS,将URL中的一些特定的字符或字符串用unicode编码表示,例如:使用下列的编码方式就可以绕过一些IDS对".ida"的攻击的检测。GET/abc.id%c1%01HTTP/1.0。采用通配符如"string"匹配的很多IDS一般都存在此类问题。
斜线问题
"/"问题:如果在HTTP的提交的请求中把'/'转换成'//',如"/cgi-bin/test.cgi"转换成"//cgi-bin//test.cgi",对许多web服务器来说解释是一样的。如果把双斜线换成三斜线或更多效果也是一样的。
""问题:Microsoft用''来分隔目录,Unix用'/'来分隔,而HTTPRFC规定用'/',Microsoft的IIS会主动把'/'转换成''。例如发送"/cgi-bin\test.cgi"之类的命令,但可以逃避一些IDS。
命令问题
许多IDS系统检测时缺省认为客户提交的请求是用GET提交的,如GET/cgi-bin/test.cgi。但是相同的请求用HEAD命令也能实现,如用HEAD发送:HEAD/cgi-bin/test.cgi。
增加目录
插入一些无用的特殊字符,使其与IDS的检测内容不匹配。如'..'意思是父目录,'.'意思是子目录,window下的"c:\tmp...."的意思就是"c:\tmp";相应的unix下的"/tmp/././././"和"/tmp/"等价。对"/cgi-bin/phf"可以任意变化成"/./cgi-bin/././phf等形式。又如:GET/cgi-bin/blahblah/../test.cgiHTTP/1.0实际和"/cgi-bin/test.cgi"一样。
不规则方式
NULL方式:构造如下的请求:GET%00/cgi-bin/test.cgiHTTP/1.0,由于在C语言中很多字符串处理函数用NULL作为字符串的结尾,如果IDS是利用c函数处理字符串的话,IDS就不可匹配NULL后面的字符串了。这种方式适合IIS,Apache不能处理%00。
虚假的请求结束
有些智能的IDS对客户端发过来的数据,一般只处理请求部分。如发送如下请求:GET/%20HTTP/1.0%0d%0aHeader:%20/../../cgi-bin/test.cgiHTTP/1.0\r\n\r\n,解码后是:GET/HTTP/1.0\r\nHeader:/../../cgi-bin/test.cgiHTTP/1.0\r\n\r\n,这是一个正确的请求,但某些IDS只截取GET的命令行,发现"HTTP/1.0\r\n"后就结束,然后对截取的部分进行操作,而不能正确报告基于此cgi的攻击。
长URL
一些IDS只检查前xx个字节,但是如果构造一个很长的请求:GET/rfprfprfprfp/../cgi-bin/test.cgiHTTP/1.0,超过了IDS检测的长度,这样就会使IDS检测不到后面的CGI。通常可以在请求中包涵1-2K个随机字符,有一些IDS会根据某些协议请求的长度来判断是否是缓冲区溢出,这时IDS就会对此误报为缓冲区溢出。
会话组合
把请求分开放在不同的报文中发出(不是分片),则IDS可能就不会匹配了。例如,请求"GET/HTTP/1.0"可以放在不同的包文中("GE","T","/","H","T","TP","/1",".0")。
大小写敏感
DOS/Windows与unix不同,它对大小写不敏感,但有的IDS可能造成不匹配。
针对HTTP请求进行欺骗的工具主要是Whisker,它采用了上面的一些技术进行WWW扫描,目前的IDS能发现绝大部分的欺骗方式,但对于采用URL编码(尤其是unicode编码)和不规则方式(如TAB替换空格)的扫描,有相当一部分IDS可能检测不到。
(2)基于行为的异常检测(异常发现)技术
通过将过去观察到的正常行为与受到攻击时的行为加以比较,根据使用者的异常行为或资源的异常使用状况来判断是否发生入侵活动,其原则是任何与已知行为模型不符合的行为都认为是入侵行为。
异常检测的假设是入侵者活动异常于正常主体的活动。这种活动存在4种可能:入侵性而非异常、非入侵性且异常、非入侵性且非异常、入侵且异常。如果能够建立系统正常行为的轨迹,那么理论上可以把所有与正常轨迹不同的系统状态视为可疑企图。根据这一理念建立主体正常活动的“活动简档”,将当前主体的活动状况与“活动简档”相比较,当违反其统计规律时,认为该活动可能是“入侵”行为。
(3)协议分析技术
在协议分析中,网络入侵检测系统的传感器检查TCP和UDP的有效荷载,且可以将其完全解码。协议分析提供了一种高级的网络入侵解决方案,可以检测更广泛的攻击,包括已知和未知的。
协议分析可以在不同的上层应用协议上(如Telnet、FTP、HTTP、SMTP、SNMP、DNS等等)对每一个用户命令作出详细分析,如果出现IP碎片设置,数据包将首先被重装,然后详细分析来了解潜在的攻击行为。通过重装数据包,系统可以检测到利用IDS逃避技术的攻击手段。
协议分析与命令解析带来的好处还包括:当系统提升协议栈来解析每一层时,它用已获得的知识来消除在数据包结构中不可能出现的攻击。比如4层协议是TCP,那就不用再搜索其他第四层协议如UDP上形成的攻击。如果数据包最高层是SNMP,那就不用再寻找Telnet或HTTP攻击。这样做的结果是性能得到明显改善。
协议解析也大大降低了模式匹配IDS系统中常见的误报现象。当数据包的一些字符串符合攻击特征库时系统就会报警,但该字符串实际上根本不是一个攻击,这就属于误报。这样的误报不会在基于协议分析和命令解协的IDS系统中发生,因为它们知道和每个协议有关的潜在攻击的确切位置。
基于协议分析和命令解析的IDS网络传感器采用高性能数据包驱动器,使其不仅支持线速百兆流量检测,而且千兆网络传感器具有900兆网络流量的100%检测能力,可以支持300万个并发连接。
目前,国际优秀的IDS主要以模式发现技术为主,并结合异常发现、协议分析技术,并且一个完备的入侵检测系统IDS一定是基于主机和基于网络两种方式兼备的分布式系统。
2.常用检测方法入侵检测系统常用的检测方法有特征检测、统计检测与专家系统。目前入侵检测系统中绝大多数属于使用入侵模板进行模式匹配的特征检测系统,其他少量是采用概率统计的统计检测系统与基于日志的专家知识库系系统。
(1)特征检测
特征检测对已知的攻击或入侵的方式作出确定性的描述,形成相应的事件模式。当被审计的事件与已知的入侵事件模式相匹配时,即报警。原理上与专家系统相仿。其检测方法上与计算机病毒的检测方式类似。目前基于对包特征描述的模式匹配应用较为广泛。
该方法预报检测的准确率较高,但对于无经验知识的入侵与攻击行为无能为力。
(2)统计检测
方差,计算参数的方差,设定其置信区间,当测量值超过置信区间的范围时表明有可能是异常;
多元模型,操作模型的扩展,通过同时分析多个参数实现检测;
马尔柯夫过程模型,将每种类型的事件定义为系统状态,用状态转移矩阵来表示状态的变化,当一个事件发生时,或状态矩阵该转移的概率较小则可能是异常事件;
这种入侵检测方法是基于对用户历史行为建模以及在早期的证据或模型的基础上,审计系统实时的检测用户对系统的使用情况,根据系统内部保存的用户行为概率统计模型进行检测,当发现有可疑的用户行为发生时,保持跟踪并监测、记录该用户的行为。系统要根据每个用户以前的历史行为,生成每个用户的历史行为记录库,当用户改变他们的行为习惯时,这种异常就会被检测出来。
统计方法的最大优点是它可以“学习”用户的使用习惯,从而具有较高检出率与可用性。但是它的“学习”能力也给入侵者以机会通过逐步“训练”使入侵事件符合正常操作的统计规律,从而透过入侵检测系统。
(3)专家系统
用专家系统对入侵进行检测,经常是针对有特征入侵行为。所谓的规则,即是知识,不同的系统与设置具有不同的规则,且规则之间往往无通用性。专家系统的建立依赖于知识库的完备性,知识库的完备性又取决于审计记录的完备性与实时性。入侵的特征抽取与表达,是入侵检测专家系统的关键。在系统实现中,将有关入侵的知识转化为if-then结构(也可以是复合结构),条件部分为入侵特征,then部分是系统防范措施。运用专家系统防范有特征入侵行为的有效性完全取决于专家系统知识库的完备性。
该技术根据安全专家对可疑行为的分析经验来形成一套推理规则,然后在此基础上建立相应的专家系统,由此专家系统自动进行对所涉及的入侵行为的分析工作。该系统应当能够随着经验的积累而利用其自学习能力进行规则的扩充和修正。
3.入侵检测技术发展方向在入侵检测技术发展的同时,入侵技术也在更新,攻击者将试图绕过入侵检测系统(IDS)或攻击IDS系统。交换技术的发展以及通过加密信道的数据通信使通过共享网段侦听的网络数据采集方法显得不足,而大通信量对数据分析也提出了新的要求。入侵技术的发展与演化主要反映在下列几个方面:
(1)入侵的综合化与复杂化。入侵的手段有多种,入侵者往往采取一种攻击手段。由于网络防范技术的多重化,攻击的难度增加,使得入侵者在实施入侵或攻击时往往同时采取多种入侵的手段,以保证入侵的成功几率,并可在攻击实施的初期掩盖攻击或入侵的真实目的。
(2)入侵主体对象的间接化,即实施入侵与攻击的主体的隐蔽化。通过一定的技术,可掩盖攻击主体的源地址及主机位置。即使用了隐蔽技术后,对于被攻击对象攻击的主体是无法直接确定的。
(3)入侵的规模扩大。对于网络的入侵与攻击,在其初期往往是针对于某公司或一个网站,其攻击的目的可能为某些网络技术爱好者的猎奇行为,也不排除商业的盗窃与破坏行为。由于战争对电子技术与网络技术的依赖性越来越大,随之产生、发展、逐步升级到电子战与信息战。对于信息战,无论其规模与技术都与一般意义上的计算机网络的入侵与攻击都不可相提并论。信息战的成败与国家主干通信网络的安全是与任何主权国家领土安全一样的国家安全。
(5)攻击对象的转移。入侵与攻击常以网络为侵犯的主体,但近期来的攻击行为却发生了策略性的改变,由攻击网络改为攻击网络的防护系统,且有愈演愈烈的趋势。现已有专门针对IDS作攻击的报道。攻击者详细地分析了IDS的审计方式、特征描述、通信模式找出IDS的弱点,然后加以攻击。
入侵检测系统还存在相当多的问题,这些问题大多是目前入侵检测系统的结构所难以克服的。
(1)攻击者不断增加的知识,日趋成熟多样自动化工具,以及越来越复杂细致的攻击手法。入侵检测系统必须不断跟踪最新的安全技术,才能不致被攻击者远远超越。
(2)恶意信息采用加密的方法传输。网络入侵检测系统通过匹配网络数据包发现攻击行为,入侵检测系统往往假设攻击信息是通过明文传输的,因此对信息的稍加改变便可能骗过入侵检测系统的检测。
(3)不能知道安全策略的内容。必须协调、适应多样性的环境中的不同的安全策略。网络及其中的设备越来越多样化,入侵检测系统要能有所定制以更适应多样的环境要求。
(4)不断增大的网络流量。用户往往要求入侵检测系统尽可能快的报警,因此需要对获得的数据进行实时的分析,这导致对所在系统的要求越来越高,商业产品一般都建议采用当前最好的硬件环境。尽管如此,对百兆以上的流量,单一的入侵检测系统系统仍很难应付。可以想见,随着网络流量的进一步加大(许多大型ICP目前都有数百兆的带宽),对入侵检测系统将提出更大的挑战,在PC机上运行纯软件系统的方式需要突破。
(5)缺乏广泛接受的术语和概念框架。标准的缺乏使得互通、互操作几乎不可能。
(6)不恰当的自动反应存在风险。一般的IDS都有入侵响应的功能,如记录日志,发送告警信息给console、发送警告邮件,防火墙互动等,敌手可以利用IDS的响应进行间接攻击,使入侵日志迅速增加,塞满硬盘;发送大量的警告信息,使管理员无法发现真正的攻击者,并占用大量的cpu资源;发送大量的告警邮件,占满告警信箱或硬盘,并占用接收警告邮件服务器的系统资源;发送虚假的警告信息,使防火墙错误配置,如攻击者假冒大量不同的IP进行模拟攻击,而入侵检测系统系统自动配置防火墙将这些实际上并没有进行任何攻击的地址都过滤掉,造成一些正常的IP无法访问等。
(7)自身的安全问题。入侵检测系统本身也往往存在安全漏洞。因为IDS是安装在一定的操作系统之上,操作系统本身存在漏洞或IDS自身防御力差,就可能受到smurf、synflood等攻击。此类攻击很有可能造成IDS的探测器丢包、失效或不能正常工作。
(8)存在大量的误报和漏报。采用当前的技术及模型,完美的入侵检测系统无法实现。这种现象存在的主要原因是:入侵检测系统必须清楚的了解所有操作系统网络协议的运作情况,甚至细节,才能准确的进行分析。而不同操作系统之间,甚至同一操作系统的不同版本之间对协议处理的细节均有所不同。而力求全面则必然违背入侵检测系统高效工作的原则。
(9)缺乏客观的评估与测试信息的标准。
今后的入侵检测技术大致可朝下述几个方向发展。
(1)分布式入侵检测:传统的IDS局限于单一的主机或网络架构,对异构系统及大规模的网络检测明显不足,不同的IDS系统之间不能协同工作。为解决这一问题,需要发展分布式入侵检测技术与通用入侵检测架构。第一层含义,即针对分布式网络攻击的检测方法;第二层含义即使用分布式的方法来检测分布式的攻击,其中的关键技术为检测信息的协同处理与入侵攻击的全局信息的提取。
(2)智能化入侵检测:即使用智能化的方法与手段来进行入侵检测。所谓的智能化方法,现阶段常用的有神经网络、遗传算法、模糊技术、免疫原理等方法,这些方法常用于入侵特征的辨识与泛化。利用专家系统的思想来构建入侵检测系统也是常用的方法之一。特别是具有自学习能力的专家系统,实现了知识库的不断更新与扩展,使设计的入侵检测系统的防范能力不断增强,应具有更广泛的应用前景。应用智能体的概念来进行入侵检测的尝试也已有报道。较为一致的解决方案应为高效常规意义下的入侵检测系统与具有智能检测功能的检测软件或模块的结合使用。目前尽管已经有智能体、神经网络与遗传算法在入侵检测领域应用研究,但这只是一些尝试性的研究工作,仍需对智能化的IDS加以进一步的研究以解决其自学习与自适应能力。
(3)应用层入侵检测:许多入侵的语义只有在应用层才能理解,而目前的IDS仅能检测如Web之类的通用协议,而不能处理如LotusNotes、数据库系统等其他的应用系统。
(5)入侵检测系统的标准化:在大型网络中,网络的不同部分可能使用了多种入侵检测系统,甚至还有防火墙、漏洞扫描等其他类别的安全设备,这些入侵检测系统之间以及IDS和其他安全组件之间如何交换信息,共同协作来发现攻击、作出响应并阻止攻击是关系整个系统安全性的重要因素。例如,漏洞扫描程序例行的试探攻击就不应该触发IDS的报警;而利用伪造的源地址进行攻击,就可能联动防火墙关闭服务从而导致拒绝服务,这也是互动系统需要考虑的问题。可以建立新的检测模型,使不同的IDS产品可以协同工作。
三、入侵检测系统1.基于网络的入侵检测系统基于网络的入侵检测系统(NIDS)放置在比较重要的网段内,不停地监视网段中的各种数据包。对每一个数据包进行特征分析。如果数据包与系统内置的某些规则吻合,入侵检测系统就会发出警报甚至直接切断网络连接。目前,大部分入侵检测系统是基于网络的。
下面展示一个典型NIDS。一个传感器被安装在防火墙外以探查来自Internet的攻击。另一个传感器安装在网络内部以探查那些已穿透防火墙的入侵和内部网络入侵和威胁。
图11.3基于网络的入侵检测系统
一旦检测到了攻击行为,IDS的响应模块就提供多种选项以通知、报警并对攻击采取相应的反应。反应因系统而异,但通常都包括通知管理员、中断连接并且/或为法庭分析和证据收集而做的会话记录。
基于网络的IDS已经广泛成为安全策略的实施中的重要组件,它有许多仅靠基于主机的入侵检测法无法提供的优点。
(1)拥有成本较低。基于网络的IDS可在几个关键访问点上进行策略配置,以观察发往多个系统的网络通信。所以它不要求在许多主机上装载并管理软件。由于需监测的点较少,因此对于一个公司的环境来说,拥有成本很低。
(2)检测基于主机的系统漏掉的攻击。基于网络的IDS检查所有包的头部从而发现恶意的和可疑的行动迹象。基于主机的IDS无法查看包的头部,所以它无法检测到这一类型的攻击。例如,许多来自于IP地址的拒绝服务型和碎片型攻击只能在它们经过网络时,都可以在基于网络的IDS中通过实时监测包流而被发现。
基于网络的IDS可以检查有效负载的内容,查找用于特定攻击的指令或语法。例如,通过检查数据包有效负载可以查到黑客软件,而使正在寻找系统漏洞的攻击者毫无察觉。由于基于主机的系统不检查有效负载,所以不能辨认有效负载中所包含的攻击信息。
(3)攻击者不易转移证据。基于网络的IDS使用正在发生的网络通讯进行实时攻击的检测。所以攻击者无法转移证据。被捕获的数据不仅包括攻击的方法,而且还包括可识别的入侵者身份及对其进行起诉的信息。许多入侵者都熟知审记记录,他们知道如何操纵这些文件掩盖他们的入侵痕迹,来阻止需要这些信息的基于主机的IDS去检测入侵。
(5)检测未成功的攻击和不良意图。基于网络的IDS增加了许多有价值的数据,以判别不良意图。即便防火墙可以正在拒绝这些尝试,位于防火墙之外的基于网络的IDS可以查出躲在防火墙后的攻击意图。基于主机的系统无法查到从未攻击到防火墙内主机的未遂攻击,而这些丢失的信息对于评估和优化安全策略是至关重要的。
(6)操作系统无关性。基于网络的IDS作为安全监测资源,与主机的操作系统无关。与之相比,基于主机的系统必须在特定的、没有遭到破坏的操作系统中才能正常工作,生成有用的结果。
网络入侵检测系统有向专门的设备发展的趋势,安装这样的一个网络入侵检测系统非常方便,只需将定制的设备接上电源,做很少一些配置,将其连到网络上即可。
网络入侵检测系统有如下的弱点。
(1)网络入侵检测系统只检查它直接连接网段的通信,不能检测在不同网段的网络包。在使用交换以太网的环境中就会出现监测范围的局限。而安装多台网络入侵检测系统的传感器会使布署整个系统的成本大大增加。
(3)网络入侵检测系统可能会将大量的数据传回分析系统中。在一些系统中监听特定的数据包会产生大量的分析数据流量。一些系统在实现时采用一定方法来减少回传的数据量,对入侵判断的决策由传感器实现,而中央控制台成为状态显示与通信中心,不再作为入侵行为分析器。这样的系统中的传感器协同工作能力较弱。
(4)网络入侵检测系统处理加密的会话过程较困难,目前通过加密通道的攻击尚不多,但随着IPv6的普及,这个问题会越来越突出。
2.基于主机的入侵检测系统基于主机的入侵检测系统(HIDS)通常是安装在被重点检测的主机之上,主要是对该主机的网络实时连接以及系统审计日志进行智能分析和判断。如果其中主体活动十分可疑(特征或违反统计规律),入侵检测系统就会采取相应措施。
基于主机的IDS使用验证记录,并发展了精密的可迅速做出响应的检测技术。通常,基于主机的IDS可监探系统、事件和WindowNT下的安全记录以及UNIX环境下的系统记录。当有文件发生变化时,IDS将新的记录条目与攻击标记相比较,看它们是否匹配。如果匹配,系统就会向管理员报警并向别的目标报告,以采取措施。
基于主机的IDS在发展过程中融入了其它技术。对关键系统文件和可执行文件的入侵检测的一个常用方法,是通过定期检查校验和来进行的,以便发现意外的变化。反应的快慢与轮询间隔的频率有直接的关系。最后,许多系统都是监听端口的活动,并在特定端口被访问时向管理员报警。这类检测方法将基于网络的入侵检测的基本方法融入到基于主机的检测环境中。
(1)确定攻击是否成功。由于基于主机的IDS使用含有已发生事件信息,它们可以比基于网络的IDS更加准确地判断攻击是否成功。在这方面,基于主机的IDS是基于网络的IDS完美补充,网络部分可以尽早提供警告,主机部分可以确定攻击成功与否。
(3)能够检查到基于网络的系统检查不出的攻击。基于主机的系统可以检测到那些基于网络的系统察觉不到的攻击。例如,来自主要服务器键盘的攻击不经过网络,所以可以躲开基于网络的入侵检测系统。
(4)适用被加密的和交换的环境。交换设备可将大型网络分成许多的小型网络部件加以管理,所以从覆盖足够大的网络范围的角度出发,很难确定配置基于网络的IDS的最佳位置。业务映射和交换机上的管理端口有助于此,但这些技术有时并不适用。基于主机的入侵检测系统可安装在所需的重要主机上,在交换的环境中具有更高的能见度。某些加密方式也向基于网络的入侵检测发出了挑战。由于加密方式位于协议堆栈内,所以基于网络的系统可能对某些攻击没有反应,基于主机的IDS没有这方面的限制,当操作系统及基于主机的系统看到即将到来的业务时,数据流已经被解密了。
(6)不要求额外的硬件设备。基于主机的入侵检测系统存在于现行网络结构之中,包括文件服务器,Web服务器及其它共享资源。这些使得基于主机的系统效率很高。因为它们不需要在网络上另外安装登记,维护及管理的硬件设备。
(7)记录花费更加低廉。基于网络的入侵检测系统比基于主机的入侵检测系统要昂贵的多。
基于主机的入侵检测系统有如下的弱点。
(1)主机入侵检测系统安装在我们需要保护的设备上,如当一个数据库服务器要保护时,就要在服务器本身上安装入侵检测系统。这会降低应用系统的效率。此外,它也会带来一些额外的安全问题,安装了主机入侵检测系统后,将本不允许安全管理员有权力访问的服务器变成他可以访问的了。
(2)主机入侵检测系统依赖于服务器固有的日志与监视能力。如果服务器没有配置日志功能,则必需重新配置,这将会给运行中的业务系统带来不可预见的性能影响。
(3)全面布署主机入侵检测系统代价较大,企业中很难将所有主机用主机入侵检测系统保护,只能选择部分主机保护。那些未安装主机入侵检测系统的机器将成为保护的盲点,入侵者可利用这些机器达到攻击目标。
(4)主机入侵检测系统除了监测自身的主机以外,根本不监测网络上的情况。对入侵行为的分析的工作量将随着主机数目增加而增加。
基于主机和基于网络的入侵检测都有其优势和劣势,两种方法互为补充。一种真正有效的入侵检测系统应将二者结合。
基于主机和基于网络的入侵检测系统的比较见表11.1。
表11.1基于主机和基于网络的入侵检测系统的比较基于网络
基于主机
可以检测到基于主机所忽略的攻击:DoS,BackOfice
可以检测到基于网络所忽略的攻击:来自关键服务器键盘的攻击(内部,不经过网络)等攻击者
攻击者更难抹去攻击的证据
可以事后比较成功和失败的攻击
实时检测并响应
接近实时检测和响应
检测不成功的攻击和恶意企图
监测系统特定的行为
独立于操作系统
很好地适应加密和交换网络环境
可以监测活动的会话情况
不能
给出网络原始数据的日志
终止TCP连接
终止用户的登陆
重新设置防火墙
封杀用户帐号
探针可以分布在整个网络并向管理站报告
只能保护配置引擎或代理的主机
3.混合入侵检测系统基于网络的入侵检测系统和基于主机的入侵检测系统都有不足之处,单纯使用一类系统会造成主动防御体系不全面。但是,它们的缺憾是互补的。如果这两类系统能够无缝结合起来部署在网络内,则会构架成一套完整立体的主动防御体系,综合了基于网络和基于主机两种结构特点的入侵检测系统,既可发现网络中的攻击信息,也可从系统日志中发现异常情况。
4.文件完整性检查系统文件完整性检查系统检查计算机中自上次检查后文件变化情况。文件完整性检查系统保存有每个文件的数字摘要数据库,每次检查时,它重新计算文件的数字摘要并将它与数据库中的值相比较,如不同,则文件已被修改,若相同,文件则未发生变化。
文件的数字摘要通过Hash函数计算得到。不管文件长度如何,它的Hash函数计算结果是一个固定长度的数字。与加密算法不同,Hash算法是一个不可逆的单向函数。采用安全性高的Hash算法,如MD5、SHA时,两个不同的文件几乎不可能得到相同的Hash结果。从而,当文件一被修改,就可检测出来。
文件完整性检查系统有如下的优点。
(2)文件完整性检查系统具有相当的灵活性,可以配置成为监测系统中所有文件或某些重要文件。
(3)当一个入侵者攻击系统时,他会干两件事,首先,他要掩盖他的踪迹,即他要通过更改系统中的可执行文件、库文件或日志文件来隐藏他的活动;其它,他要作一些改动保证下次能够继续入侵。这两种活动都能够被文件完整性检查系统检测出。
文件完整性检查系统有如下的弱点。
(1)文件完整性检查系统依赖于本地的摘要数据库。与日志文件一样,这些数据可能被入侵者修改。当一个入侵者取得管理员权限后,在完成破坏活动后,可以运行文件完整性检查系统更新数据库,从而瞒过系统管理员。当然,可以将文摘数据库放在只读的介质上,但这样的配置不够灵活性。
(2)做一次完整的文件完整性检查是一个非常耗时的工作,在Tripwire中,在需要时可选择检查某些系统特性而不是完全的摘要,从而加快检查速度。
(3)系统有些正常的更新操作(如软件升级)可能会带来大量的文件更新,从而产生比较繁杂的检查与分析工作
5.入侵检测系统的评估目前市场上有许多入侵检测系统,这些产品在不同方面都有各自的特色。如何去评价这些产品,尚无形成规定的评估标准。一般可以从以下几个方面去评价一个入侵检测系统:
(1)能否保证自身的安全。和其他系统一样,入侵检测系统本身也往往存在安全漏洞。若对入侵检测系统攻击成功,则直接导致其报警失灵,入侵者在其后所作的行为将无法被记录。因此入侵检测系统首先必须保证自己的安全性。
(2)网络入侵检测系统负载能力以及可支持的网络类型。根据网络入侵检测系统所布署的网络环境不同要求也不同。对于网络入侵检测系统,最大可处理流量(包/秒PPS)是多少。首先,要分析网络入侵检测系统所布署的网络环境,如果在512K或2M专线上布署网络入侵检测系统,则不需要高速的入侵检测引擎,而在负荷较高的环境中,性能是一个非常重要的指标。较少的资源消耗,不影响受保护主机或网络的正常运行。
(3)升级与维护系统的开销。象反病毒软件一样,入侵检测的特征库需要不断更新才能检测出新出现的攻击方法。
(4)运行的开销:产品报表结构、处理误报的方便程度、事件与事志查询的方便程度以及使用该系统所需的技术人员数量。
(5)入侵检测系统报警准确率。误报和漏报的情况尽量少。
(6)支持的入侵特征数。协议分析及检测能力。
(7)是否支持IP碎片重组。入侵检测中,分析单个的数据包会导致许多误报和漏报,IP碎片的重组可以提高检测的精确度。而且,IP碎片是网络攻击中常用的方法,因此,IP碎片的重组还可以检测利用IP碎片的攻击。IP碎片重组的评测标准有三个性能参数:能重组的最大IP分片数;能同时重组的IP包数;能进行重组的最大IP数据包的长度。
(8)是否支持TCP流重组。TCP流重组是为了对完整的网络对话进行分析,它是网络入侵检测系统对应用层进行分析的基础。如检查邮件内容、附件,检查FTP传输的数据,禁止访问有害网站、判断非法HTTP请求等。
(9)系统的价格:当然,价格是必需考虑的要点,不过,性能价格比、以及要保护系统的价值可是更重要的因素。
(10)该产品容易被躲避吗。有些常用的躲开入侵检测的方法,如:分片、TTL欺骗、异常TCP分段、慢扫描、协同攻击等。
(11)产品的可伸缩性。系统支持的传感器数目、最大数据库大小、传感器与控制台之间通信带宽和对审计日志溢出的处理。
(12)产品有哪些响应方法。要从本地、远程等多个角度考察。如自动配置防火墙可是一个极为危险的举动。
(13)是否通过了国家权威机构的评测。主要的权威测评机构有国家信息安全测评认证中心、公安部计算机信息系统安全产品质量监督检验中心。
四、IDS的标准化
随着网络安全事件的不断增加和网络入侵手法的多样化,人们迫切需要各种IDS能够协同工作,优势共享,缺陷互补,组成一种全新的分布式IDS。在分布式IDS环境下,各IDS及其组件必须能够共享信息和相互通信,这就要求各种IDS必须遵循相同的信息表达方式和相应的通信机制,也就是必须遵循一个公共的IDS的框架结构,即公共入侵检测框架。IDS系统组件之间需要通信,不同的厂商的IDS系统之间也需要通信。因此,定义统一的协议,使各部分能够根据协议所致订的的标准进行沟通是很有必要的。对IDS进行标准化的工作有两个组织:IETF的入侵检测工作组IntrusionDetectionWorkingGroup(idwg)和公共入侵检测框架CommonIntrusionDetectionFramework(CIDF)。
1.入侵检测工作组(IDWG)IDWG的任务是:定义数据格式和交换规程,用于入侵检测与响应(IDR)系统之间或与需要交互的管理系统之间的信息共享。IDWG提出的建议草案包括:入侵检测消息交换需求(IntrusionDetectionMessageExchangeRequirements)、入侵检测消息交换格式数据模型与XML文档类型定义(IntrusionDetectionMessageExchangeFormatDataModelandExtensibleMarkupLanguage(XML)DocumentTypeDefinition)、入侵检测交换协议(TheIntrusionDetectionExchangeProtocol,IDXP)以及隧道轮廓(TunnelProfile)。
入侵检测消息交换需求描述了入侵检测消息交换格式(IntrusionDetectionMessageExchangeFormat,IDMEF)的需求。
IDMEF描述了表示入侵检测系统输出信息的数据模型,并解释了使用此模型的基本原理。该数据模型用XML(ExtensibleMarkupLanguage)实现,并设计了一个XML文档类型定义。自动入侵检测系统可以使用IDMEF提供的标准数据格式对可疑事件发出警报,提高商业、开放资源和研究系统之间的互操作性。IDMEF最适用于入侵检测分析器(或称为“探测器”)和接收警报的管理器(或称为“控制台”)之间的数据信道。
IDXP(入侵检测交换协议)是一个用于入侵检测实体之间交换数据的应用层协议,能够实现IDMEF消息、非结构文本和二进制数据之间的交换,并提供面向连接协议之上的双方认证、完整性和保密性等安全特征。IDXP是BEEP的一部分,后者是一个用于面向连接的异步交互通用应用协议,IDXP的许多特色功能(如认证、保密性等)都是由BEEP框架提供的。
2.通用入侵检测框架(CIDF)CIDF是一套规范,它定义了IDS表达检测信息的标准语言以及IDS组件之间的通信协议。符合CIDF规范的IDS可以共享检测信息,相互通信,协同工作,还可以与其它系统配合实施统一的配置响应和恢复策略。CIDF的主要作用在于集成各种IDS使之协同工作,实现各IDS之间的组件重用,所以CIDF也是构建分布式IDS的基础。
CIDF的规格文档由四部分组成,分别为:
体系结构(TheCommonIntrusionDetectionFrameworkArchitecture)
规范语言(ACommonIntrusionSpecificationLanguage)
内部通讯(CommunicationintheCommonIntrusionDetectionFramework)
程序接口(CommonIntrusionDetectionFrameworkAPIs)
CIDF的体系结构文档阐述了一个标准的IDS的通用模型;规范语言定义了一个用来描述各种检测信息的标准语言;内部通讯定义了IDS组件之间进行通信的标准协议;程序接口提供了一整套标准的应用程序接口(API函数)。
CIDF将IDS需要分析的数据统称为事件(event),它可以是基于网络的IDS从网络中提取的数据包,也可以是基于主机的IDS从系统日志等其它途径得到的数据信息。
CIDF组件之间的交互数据使用通用入侵检测对象(generalizedintrusiondetectionobjects,gido)格式,一个gido可以表示在一些特定时刻发生的一些特定事件,也可以表示从一系列事件中得出的一些结论,还可以表示执行某个行动的指令。
CIDF将一个入侵检测系统分为以下组件:
图11.4CIDF组件
事件产生器(Eventgenerators):从入侵检测系统外的整个计算环境中获得事件,并以CIDFgidos格式向系统的其他部分提供此事件。事件产生器是所有IDS所需要的,同时也是可以重用的。
事件分析器(Eventanalyzers):从其他组件接收gidos,分析得到的数据,并产生新的gidos。如分析器可以是一个轮廓特征引擎。
响应单元(Responseunits):是对分析结果作出作出反应的功能单元,它可以终止进程、重置连接、改变文件属性等,也可以只是简单的报警。
事件数据库(Eventdatabases):是存放各种中间和最终数据的地方的统称,它可以是复杂的数据库,也可以是简单的文本文件。
CIDF将各组件之间的通信划分为三个层次结构:GIDO层(GIDOlayer)、消息层(Messagelayer)和协商传输层(NegotiatedTransportlayer)。其中协商传输层不属于CIDF规范,它可以采用很多种现有的传输机制来实现。消息层确保被加密认证的消息在防火墙或网络地址转换NAT等设备之间传输过程中的可靠性。消息层不关心传输的内容,它只负责建立一个可靠的传输通道。GIDO层任务就是提高组件之间的互操作性,负责对传输信息的格式化,GIDO就如何表示各种各样的事件做了详细的定义。GIDO层只考虑所传递信息的语义,不关心这些消息怎样被传递。
CIDF也对各组件之间的信息传递格式、通信方法和标准API进行了标准化。在现有的IDS中,经常用数据采集部分、分析部分、响应部分和日志来分别代替事件产生器、事件分析器、响应单元和事件数据库这些术语。
CIDF的规范语言文档定义了一个应用层的公共入侵标准语言(CommonIntrusionSpecificationLanguage,CISL),各IDS使用统一的CISL来表示原始事件信息(审计踪迹记录和网络数据流信息)、分析结果(系统异常和攻击特征描述)和响应指令(停止某些特定的活动或修改组件的安全参数),从而建立了IDS之间信息共享的基础。CISL是CIDF的最核心也是最重要的内容,GIDO的构建与编码是CISL的重点。
CIDF的内部通信文档描述了两种CIDF组件之间通信的机制,一种为匹配服务(MatchmakingService)法,另一种为消息层(MessageLayer)法。
CIDF的匹配服务(也叫做匹配器),为CIDF各组件之间的相互识别、定位和信息共享提供了一个标准的统一的机制。匹配器的实现是基于轻目录存取协议(theLightweightDirectoryAccessProtocol,LDAP)的,每个组件通过目录服务注册,并公告它能够产生或能够处理的GIDO,这样组件就被分类存放,其它组件就可以方便地查找到那些它们需要通信的组件。目录中还可以存放组件的公共密钥,从而实现对组件接收和发送GIDO时的身份认证。
CIDF的消息层在易受攻击的环境中实现了一种安全(保密、可信、完整)并可靠的信息交换机制。使用消息机制主要是为了达到以下的目的使通信与阻塞和非阻塞处理无关、使通信与数据格式无关、使通信与操作系统无关、使通信与编程语言无关。默认情况下消息传输是基于UDP的,且使用端口0x0CDF作为CIDF消息传输的服务端口。
CIDF的程序接口文档描述了用于GIDO编解码以及传输的应用程序接口API,负责GIDO的编码、解码和传递,它提供的调用功能使得程序员可以在不了解编码和传递过程具体细节的情况下,以一种很简单的方式构建和传递GIDO。API包括以下几部分内容:GIDO编码和解码API(GIDOEncoding/DecodingAPISpecification)、消息层API(MessageLayerAPISpecification)、GIDO动态追加API(GIDOAddendumAPI)、签名API(SignatureAPI)、顶层CIDF的API(Top-LevelCIDFAPI)。