您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 人工智能在入侵检测技术中的应用
西北大学学报(自然科学网络版)2003年8月第2期ScienceJournalofNorthwestUniversityOnlineAug.2003No.2________________________收稿日期:2003-04-08基金项目:国家信息关防与网络安全保障持续发展计划资助项目(2001-研3-020)人工智能在入侵检测技术中的应用耿国华,康华(西北大学计算机科学系,陕西西安710069)摘要:针对由于网络服务不断扩大造成的入侵行为日益复杂多样的情况,对人工智能技术在入侵检测中的运用进行了研究,主要讨论了专家系统和神经网络技术在入侵监测的规则管理和入侵行为分类方面的应用,同时给出了入侵检测实践。结果证明,人工智能技术确实能够提高入侵监测系统发现入侵的实时性和检测入侵的正确性。关键词:入侵检测;人工智能;专家系统;神经网;误用检测;异常检测中图分类号:TP391.4文献标识码:A文章编号:1000-274X(2003)0010-091入侵检测及其通用模型入侵检测技术以探测入侵为中心,目的是为系统提供实时发现入侵行为并及时采取相应防护手段。它具体包括数据收集、行为分类、报告错误和响应反击等方面,其中用到的数据可以由专门的网络管理系统(NMS)或网络和系统的日志文件中得到,而数据推导和数据分类是其中的核心。数据分类是定义攻击和识别攻击的过程,具体实现这个过程的技术多种多样,如模式匹配、统计分析、完整性分析等方法,其本质大多是比较正常状态和考察状态之间的差异,以此来判断系统是否受到了入侵。首先给出入侵检测通用模型[1]。这个通用模型广泛应用于IDS(入侵检测系统):它有3个基本的协作组件——事件产生器(eventgenerator)、活动记录(activityprofile)和规则集(ruleset)。其工作关系见图1。事件产生器是用来产生有关系统活动的信息,利用这些信息来检测入侵行为。这些信息事件可以由网络监控服务来发出,比如可以从防火墙、NMS、日志文件,或由系统执行记录(audittrails)特约稿事件产生器活动记录规则集/探测引型日志文件执行记录等更新记录修改规则集分析数据补充新记录变量图1工作关系图fig.1Workrelation2中得到信息。规则集其实就是一个探测引擎(detectionengine),它利用各种规则来检查由事件产生器送来数据的合法性,判断是否有入侵行为发生。具体可用概率统计模型、匹配规则等方法。活动记录是保存那些与被检测系统或网络密切相关的状态信息,其中的信息变量是由事件产生器送来的信息事件或是由规则集发出的动作来执行维护和更新的,规则集的有些动作还可以填加新的观察变量。事件产生器、规则集和活动记录是在整个系统中的有机结合,活动记录中变量的定义、规则集的判断方法以及事件产生器的及时信息送发一并决定了系统的探测能力。在此,我们关心的主要问题集中在规则集部分,也就是探测引擎中如何应用人工智能来判断入侵。2人工智能在入侵检测系统中解决的问题人工智能是一种模拟人类思维来解决复杂问题的技术,它使得机器具有可进行类似于人类“思考”的行为。人工智能的优势就是可用来处理那些烦琐而复杂的工作,利用它的学习和推导方法可以提高解决问题的效率。这是个很大的技术领域,其一端是神经网络——将计算机系统设计成模拟人类神经系统的底层机构和功能,另一端是专家系统——将计算机模拟成类似于智囊团的高层认知结构。在入侵检测系统中有效地发现入侵行为是相当烦琐复杂的,专家系统在管理检测规则方面要比传统的判断语句更有效,利用神经网络来分类入侵行为方便准确,利用人工智能中的神经网络技术、专家系统技术检测入侵行为具有应用特色。2.1专家系统的应用首先,给出基于规则的专家系统(rule-basedexpertsystem)在误用检测(misusedetection)中的应用分析。按探测技术可将ID(intrusiondetection)分成误用探测和异常探测两大类;误用探测通过把那些已知的攻击行为抽象成为模式或签名(patterns;signatures),如果发现符合这些模式的行为,就认为它是攻击,这类似于病毒防范软件——只能去发现已知的病毒;异常探测则利用,攻击行为往往和合法行为在过程上有明显区别,如果先抽象归纳出合法行为的基本特征,就可以认为那些与合法行为抽象特征有其他的行为是攻击行为[2]。误用检测见图2。由于误用检测是基于对已有规则的检测,因此适合使用专家系统,专家系统将攻击行为定监控数据系统状态纪录攻击状态更新规则加入新规则是否符合规则?图2误用检测示意图fig2MisuseDetection3义成相应的规则集合,如果发现用户行为符合某种攻击规则集合,则被看成这种规则集合对应的是入侵行为。2.1.1专家系统的优点采用专家系统时,由于新规则的加入是完全独立的,不需要改变已存在的规则,同时与规则对应的推理行为也是集中定义的,非常有利于规则和推理行为的管理,最大化地方便了对系统的进化。通常使用的从证据到结论的专家系统属于前推型(forward-chaining)系统,这种形式很适合于事件流为主的系统,是由数据驱动的。一旦事实(facts)满足,就会产生一个新的事实(facts)或是新的结论,这种链条式的推导,模拟了人的思维推理,使分析过程清晰完整,可以观测推导链中每个“节点”,得到它的来龙去脉。因此,前推形式往往用于数据监控、控制领域,IDS便是它的典型应用。2.1.2专家系统的建立和描述[3]专家系统应用于入侵检测,其组成大致有以下3部分。1)行为记录(factsbase):它记录了系统运行时观察到的状态,是我们分析的依据。比如程序执行记录(audittrail)、tcp/ip协议头等。2)规则集合(rulebase):需要建立一系列的规则集合,由这些规则来推导,这样结合行为记录可以逐步对行为推导。3)推理逻辑(inference):由行为记录和规则集合来推理判断入侵行为的逻辑。其表述方法类似于数学中的推导关系,第一项是规则名字,其次是证据,最后是结论rule-nameconditional-element==action证据就是我们定义的攻击特征,结论就是在满足特征的情况下触发的动作。2.1.3专家系统的应用下面给出专家系统在几种常见攻击行为检测中的具体使用方法。1)缓冲区溢出攻击的检测方法示例。缓冲溢出攻击是一种常见的系统攻击的手段,黑客往往通过程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他指令,以达到攻击的目的。据统计,通过缓冲区溢出进行的攻击占所有系统攻击总数的80%以上。我们的推导规则来自观察缓冲溢出的特点,程序运行过程的痕迹可以在系统调用的执行记录(audittrail)中发现。由此给出以下分析流程方法。首先,看执行的调用是否含有setuid程序,我们可以简单地比较有效用户ID和实际用户ID,如果不同就认为调用了setuid程序,否则可能并不是一个攻击。其次,传递给setuid程序的参数应该相对比较长,在audit记录中的长度超过了其他正常setuid执行调用的长度。再次,检测调用执行参数中是否包含了系统操作特权命令的字符,如amount(在ASCII码中)等。以上是缓冲溢出攻击的基本特征,这些简单规则虽不能判断所有可能的缓冲溢出,但可正确地检测出大多数溢出攻击。4我们用专家系统来描述规则(e:表示有实践发生器送出的记录系统信息的事件)e.type=='Exec||execvee.uid!=ruidcontains(e.exec_arges,\\==1)e.sizenormal_length==printf(alert:bufferoverrunattackoncommande.command”)这个示例给出了如何抽象入侵行为特征与如何使用规则推导的方法,并说明利用专家系统来完成检测入侵的简捷高效性。2)无效权限访问(failedauthenticationattempts)检测示例。如果没有hotmail的帐号,但你却试图登陆,我们使用专家系统进行了判断这种非法登陆的研究。先抽象这种无效权限访问非法行为的特征,当一个用户尝试在一个给定的时间里用错误的名字或密码登陆达到一定次数,系统将发出警告。这种技术在login,telnet,rlogin等程序上经常见到。定义行为记录(fact)和规则(以下a,b,c是规则推理):a)当用户鉴定失败,记录这个用户到行为记录的变量bad_login并且变量前鉴定失败次数current_failures加1;b)当前鉴定失败次数current_failures到达一个阀值时发出警告,且建立新的行为记录max_reached,表示不再允许这个用户尝试登陆。c)到达阀值max_reached,踢出潜在的入侵者(即这个用户),把各种记录清零。用专家系统的简要描述如下:e.type=login_failure==saveinbad_login||current_failure++cureent_failure=threshold==makemax_reachedmax_reached==tickoff||clearall3)SYNflood攻击检测示例。SYNflood是当前最流行的Dos(拒绝服务攻击)与Ddos(分布式拒绝服务攻击)的方式之一,是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。SYNFlood攻击的基本原理,与TCP连接建立的过程相关。TCP与UDP不同,它是基于连接的,为了在服务端和客户端之间传送TCP数据,必须先建立一个虚拟电路,也就是TCP连接。建立TCP连接的标准过程在TCP协议中被称为三次握手(three-wayhandshake),步骤如下:第一步,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加1,ACK即确认(acknowledgement)。第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加1,到此一个TCP连接完成。5经分析,问题恰好出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYNtimeout,一般来说这个时间大约为30s~2min。一个用户出现异常导致服务器的一个线程等待1min并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源(数以万计的半连接),即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上,如果服务器的TCP/IP栈不够强大,结果往往是堆栈溢出崩溃,即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作服务器端受到了SYNflood攻击(SYN洪水攻击)。根据这种攻击的特点,我们在专家系统中对它的行为记录(fact)定义如下:max_bad_conns:最大的恶性连接数,超过此数将发警告。expire_time:超过这个等待应答ACK时间,而没能连接,被认为是恶性连接。bad_conn_life:恶性连接被保留时间,超过这个时间的将被清除。当半连接超过一定时间没成为成功连接时,我们认为发生了个恶性连接。检测规则:a)如果在时间片里恶性
本文标题:人工智能在入侵检测技术中的应用
链接地址:https://www.777doc.com/doc-28052 .html