人工智能在入侵检测技术中的运用.docx

上传人:b****3 文档编号:3944227 上传时间:2022-11-26 格式:DOCX 页数:10 大小:68.91KB
下载 相关 举报
人工智能在入侵检测技术中的运用.docx_第1页
第1页 / 共10页
人工智能在入侵检测技术中的运用.docx_第2页
第2页 / 共10页
人工智能在入侵检测技术中的运用.docx_第3页
第3页 / 共10页
人工智能在入侵检测技术中的运用.docx_第4页
第4页 / 共10页
人工智能在入侵检测技术中的运用.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

人工智能在入侵检测技术中的运用.docx

《人工智能在入侵检测技术中的运用.docx》由会员分享,可在线阅读,更多相关《人工智能在入侵检测技术中的运用.docx(10页珍藏版)》请在冰豆网上搜索。

人工智能在入侵检测技术中的运用.docx

人工智能在入侵检测技术中的运用

特约稿

人工智能在入侵检测技术中的应用

耿国华,康华

(西北大学计算机科学系,陕西西安710069)

摘要:

针对由于网络服务不断扩大造成的入侵行为日益复杂多样的情况,对人工智能技术在入侵检测中的运用进行了研究,主要讨论了专家系统和神经网络技术在入侵监测的规则管理和入侵行为分类方面的应用,同时给出了入侵检测实践。

结果证明,人工智能技术确实能够提高入侵监测系统发现入侵的实时性和检测入侵的正确性。

关键词:

入侵检测;人工智能;专家系统;神经网;误用检测;异常检测

中图分类号:

TP391.4文献标识码:

A文章编号:

1000-274X(2003)0010-09

1入侵检测及其通用模型

入侵检测技术以探测入侵为中心,目的是为系统提供实时发现入侵行为并及时采取相应防护手段。

它具体包括数据收集、行为分类、报告错误和响应反击等方面,其中用到的数据可以由专门的网络管理系统(NMS)或网络和系统的日志文件中得到,而数据推导和数据分类是其中的核心。

数据分类是定义攻击和识别攻击的过程,具体实现这个过程的技术多种多样,如模式匹配、统计分析、完整性分析等方法,其本质大多是比较正常状态和考察状态之间的差异,以此来判断系统是否受到了入侵。

首先给出入侵检测通用模型[1]。

这个通用模型广泛应用于IDS(入侵检测系统):

它有3个基本的协作组件——事件产生器(eventgenerator)、活动记录(activityprofile)和规则集(ruleset)。

其工作

关系见图1。

 

事件产生器是用来产生有关系统活动的信息,利用这些信息来检测入侵行为。

这些信息事件可以由网络监控服务来发出,比如可以从防火墙、NMS、日志文件,或由系统执行记录(audittrails)中得到信息。

规则集其实就是一个探测引擎(detectionengine),它利用各种规则来检查由事件产生器送来数据的合法性,判断是否有入侵行为发生。

具体可用概率统计模型、匹配规则等方法。

活动记录是保存那些与被检测系统或网络密切相关的状态信息,其中的信息变量是由事件产生器送来的信息事件或是由规则集发出的动作来执行维护和更新的,规则集的有些动作还可以填加新的观察变量。

事件产生器、规则集和活动记录是在整个系统中的有机结合,活动记录中变量的定义、规则集的判断方法以及事件产生器的及时信息送发一并决定了系统的探测能力。

在此,我们关心的主要问题集中在规则集部分,也就是探测引擎中如何应用人工智能来判断入侵。

2人工智能在入侵检测系统中解决的问题

人工智能是一种模拟人类思维来解决复杂问题的技术,它使得机器具有可进行类似于人类“思考”的行为。

人工智能的优势就是可用来处理那些烦琐而复杂的工作,利用它的学习和推导方法可以提高解决问题的效率。

这是个很大的技术领域,其一端是神经网络——将计算机系统设计成模拟人类神经系统的底层机构和功能,另一端是专家系统——将计算机模拟成类似于智囊团的高层认知结构。

在入侵检测系统中有效地发现入侵行为是相当烦琐复杂的,专家系统在管理检测规则方面要比传统的判断语句更有效,利用神经网络来分类入侵行为方便准确,利用人工智能中的神经网络技术、专家系统技术检测入侵行为具有应用特色。

2.1专家系统的应用

首先,给出基于规则的专家系统(rule-basedexpertsystem)在误用检测(misusedetection)中的应用分析。

按探测技术可将ID(intrusiondetection)分成误用探测和异常探测两大类;误用探测通过把那些已知的攻击行为抽象成为模式或签名(patterns;signatures),如果发现符合这些模式的行为,就认为它是攻击,这类似于病毒防范软件——只能去发现已知的病毒;异常探测则利用,攻击行为往往和合法行为在过程上有明显区别,如果先抽象归纳出合法行为的基本特征,就可以认为那些与合法行为抽象特征有其他的行为是攻击行为[2]。

误用检测见图2。

 

由于误用检测是基于对已有规则的检测,因此适合使用专家系统,专家系统将攻击行为定义成相应的规则集合,如果发现用户行为符合某种攻击规则集合,则被看成这种规则集合对应的是入侵行为。

2.1.1专家系统的优点采用专家系统时,由于新规则的加入是完全独立的,不需要改变已存在的规则,同时与规则对应的推理行为也是集中定义的,非常有利于规则和推理行为的管理,最大化地方便了对系统的进化。

通常使用的从证据到结论的专家系统属于前推型(forward-chaining)系统,这种形式很适合于事件流为主的系统,是由数据驱动的。

一旦事实(facts)满足,就会产生一个新的事实(facts)或是新的结论,这种链条式的推导,模拟了人的思维推理,使分析过程清晰完整,可以观测推导链中每个“节点”,得到它的来龙去脉。

因此,前推形式往往用于数据监控、控制领域,IDS便是它的典型应用。

2.1.2专家系统的建立和描述[3]专家系统应用于入侵检测,其组成大致有以下3部分。

1)行为记录(factsbase):

它记录了系统运行时观察到的状态,是我们分析的依据。

比如程序执行记录(audittrail)、tcp/ip协议头等。

2)规则集合(rulebase):

需要建立一系列的规则集合,由这些规则来推导,这样结合行为记录可以逐步对行为推导。

3)推理逻辑(inference):

由行为记录和规则集合来推理判断入侵行为的逻辑。

其表述方法类似于数学中的推导关系,第一项是规则名字,其次是证据,最后是结论

==>

证据就是我们定义的攻击特征,结论就是在满足特征的情况下触发的动作。

2.1.3专家系统的应用下面给出专家系统在几种常见攻击行为检测中的具体使用方法。

1)缓冲区溢出攻击的检测方法示例。

缓冲溢出攻击是一种常见的系统攻击的手段,黑客往往通过程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他指令,以达到攻击的目的。

据统计,通过缓冲区溢出进行的攻击占所有系统攻击总数的80%以上。

我们的推导规则来自观察缓冲溢出的特点,程序运行过程的痕迹可以在系统调用的执行记录(audittrail)中发现。

由此给出以下分析流程方法。

首先,看执行的调用是否含有setuid程序,我们可以简单地比较有效用户ID和实际用户ID,如果不同就认为调用了setuid程序,否则可能并不是一个攻击。

其次,传递给setuid程序的参数应该相对比较长,在audit记录中的长度超过了其他正常setuid执行调用的长度。

再次,检测调用执行参数中是否包含了系统操作特权命令的字符,如amount(在ASCII码中)等。

以上是缓冲溢出攻击的基本特征,这些简单规则虽不能判断所有可能的缓冲溢出,但可正确地检测出大多数溢出攻击。

我们用专家系统来描述规则(e:

表示有实践发生器送出的记录系统信息的事件)

e.type=='Exec"||"execve"

e.uid!

=ruid

contains(e.exec_arges,"\\"==1)

e.size>"normal_length"

==>printf("alert:

bufferoverrunattackoncommandmand”)

这个示例给出了如何抽象入侵行为特征与如何使用规则推导的方法,并说明利用专家系统来完成检测入侵的简捷高效性。

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_reached

max_reached==>tickoff||clearall

3)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连接完成。

经分析,问题恰好出在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)如果在时间片里恶性连接发生而还没超过限度是,bad_conn_count被增加1。

b)当恶性连接到达限度,发警告,重设bad_conn_count为0。

c)当连接超过bad_conn_life,这个连接将被清除,从而bad_conn_count减1。

2.2神经网络在入侵检测中应用

先说明神经网络(neuralnetworks)在异常检测(anomalydetection)中的应用,异常检测的关键任务是找到那些超出用户行为特点的不正常的用户行为,主要障碍是如何抽象出正常的用户行为。

由于用户行为的不确定性,用传统的方法对合法用户行为的抽象有时很难准确的定义,需要借助于神经网络的特点发挥在入侵检测中的优势。

异常检测见示意图3

 

2.2.1神经网组成结构人工神经网络是由模拟生物神经处理信息过程而产生的一种信息处理方法,其结构是有众多内部紧密连接的信息处理元(neurons)组成,这些处理元依靠集体的工作来处理复杂的信息。

在用神经网络来分类数据或模式识别前,需要对神经网络的内部元进行特殊的学习训练,这如同生物神经对条件反射的适应过程。

神经网系统结构见图4。

图4中包含神经元,这些神经元之间有相当复杂的联系规则,用图形来表示,每个神经元可被看成是一个结点,他们之间的连接被当作是连接结点的边。

各条边都有其各自的权重,权重代表了结点间连接的紧密程度,权重越大代表联系越紧密。

神经网络最大的特点就是具有自适应性,即通过实际结果和希望结果的差异调整连接权重,来消除差异。

 

图4神经网系统结构

fig.4NeuralNetworkSystemStructure

2.2.2神经网络的学习算法和优势神经网络的学习算法具有补偿误差的规则,当神经网络的输出和希望的输出有误时,就自动的调整权重和阀值来补偿误差。

结点的拓扑结构和学习算法构成了一个神经网络的基本结构。

采用神经网络的学习算法,可使系统逐渐记住合法用户行为的基本特征(或叫模式/签名),从而可对后来输入的用户行为特征进行辨别——分类,若不属于系统已记录的合法用户行为模式,将被认为是异常行为。

例如,合法用户通过使用系统,留下他的行为特征好比是“指纹”,当系统有了合法用户的“指纹”后,如有非法用户登陆并使用系统,通过检查合法用户留下的“指纹”,系统就会迅速发现入侵者。

由于用户特征(指纹)的抽象性不易观察,很多情况下用户自己也不知道自己行为的统计规律,因此神经网络被广泛应用于模式识别中,把要检测的用户行为变成一个输入向量,通过神经网络后会按分类结果输出,帮助找出输入和输出间的非线性关系,以提取用户行为模式。

以下通过例子来讲解两个神经网在常探测中的应用。

2.2.3神经网络应用

1)后反馈神经网(backpropagationneuralnetwork)的应用示例[4]

a)BP神经网络的训练过程:

使用BP神经网络识别系统的合法用户,由于系统中不同的用户有不同的要求,他们调用的操作指令也就不会相同。

有些用户使用系统仅仅是收发电子邮件,有些用户则可能主要使用系统编程序,而系统管理人员则有更高的权限,可以进行任何操作。

因为用户的多样性和他们的不同习惯,使得命令的调用呈现不同的分布,并且调用频率也大不相同,但具体如何不同我们很难准确地表示清楚,利用神经网的学习能力系统可以自动的找到这种不同。

可使用这种三层结构的反馈网络,第一层输入特征向量,每个输入端和一个特征对应,假定我们抽象用户行为特征为100个变量,那就应该有100个输入端;每个输入端对应一个合法的用户,这里将来识别10个合法用户行为特征,如果结果超出了这10个用户我们认为它是异常行为。

我们定义100个命令各对应一个输入端,具体变量值就是这个命令的使用频率。

用神经网络来识别:

首先要收集训练数据,读系统的执行记录(audit)得到每个用户的命令调用信息,把他们变成一个代表用户使用频率的100维向量;然后进行训练,训练神经网识别这些不同命令频率分布向量;最后执行,让网络识别新的用户命令频率分布向量,判断是否属于合法用户。

以下是用户使用的命令范围,共100个:

asawkbcbibtexcalendarcatchmodcomsatcpcppcutcvsdatedfdiffdudvipsegrepelmemacsexprfgrepfilterfindfingerfmtfromftpgccgdbghostviewgmakegrepgsgziphostnameidifconfigispelllastldlesslooklpqlprlprmlsmachinemailmakemanmesgmetamailmkdirmoremovemailmpagemtmvnetscapenetstatnmobjdumpperlpgppingpspwdrcpresizermrshsedsendmailshsortstripsttytailtartcshteetesttgiftoptputtrttyunamevacationvivirtexwwcwhereisxbiff++xcalcxdvixhostxterm

这里把用户使用命令的频率分成10个等级,编码为0.0~1.0且以0.1递增。

第一级意味着这个命令从来不使用,第2级表示每天1~2次,类推,最后一级表示每天超过200次。

这样,用户特征向量作为输入数组形式为:

0.1,0.2,0.1,0.3,…,0.0(共100个)。

用合法用户行为训练数次(数十到数百)后,系统会得到一个满意的正确率。

BP神经网络的训练过程是一种监督性的学习过程,必须事先告诉系统希望的输出是什么。

所以,我们先找到了合法用户的行为特征“指纹”。

b)非监督性学习训练过程:

非监督性学习训练过程不需要事先告诉系统希望的结果,将人为干预降到最低,人们不用去准确地抽象出攻击特征,系统会自动学习分析,找到那些不易被发现或精确描述的行为特征,并按照特征将行为类聚。

2)基于非监督性训练识别入侵的神经网络示例

Self-organizingmapneuralnetwork[5]简称SOM,因为它可在不告诉其什么是正确结果的情况下训练,是一种非监督神经网络。

其输入是含有分析物体特征信息的数学向量,在SOM中必须有一个比较函数,用它来比较两个向量(一个是输入向量,一个是存在于网络向量集合中的向量)的相似程度,它把输入向量和集合中的所有向量分别比较,输出的是输入向量和向量集中向量的相似程度。

首先保证在向量集合中的向量的合法性,如果输入向量和所有向量集合中的向量都存在较大的差异,我们就认为它是异常的。

如何使用这种非监督学习性(SOM)神经网络来检测DNS断口的访问中的缓冲溢出攻击呢?

由于缓冲溢出攻击的参数往往过长,并且含有二进制命令代码而不是普通文字,我们用神经网络来检测缓冲溢出攻击的企图,首先需要定义几组特征向量来描述这种企图,然后检测端口收到的包有多少个字节(octet)符合这几组特征。

我们利用简单的特征组,如:

字母(A~Z,a~z);数字(0~9);控制命令代码;非ASCII码。

这些特种组给出了端口访问包的组成轮廓,从中推断访问是否有溢出攻击企图。

可以挑选50个正常包来训练map,每个包都被抽象成含以上4个分量的特征组,其中每个包的控制命令代码和数字都不会超过15个字节。

SOM神经网络会将特征相似的包类聚,对输入的向量检测和网络中包含的已有特征向量的相似程度,如果新包和所有已有向量都不相似,便认为是种异常向量。

用这50个包训练后,网络会自动将他们类聚,即把正常情况下的访问包轮廓记下了。

在训练以后,如果系统碰到的包含有不寻常的特征,如控制命令代码为30个字节或数字为25时,在网络已知的包轮廓中找不到相似的聚类时,就检测出了这种溢出攻击的企图。

3结语

人工智能技术除了提到的专家系统和神经网络,还包括遗传算法、免疫算法等分支,这些方法目前都逐渐被应用于入侵检测。

专家系统的优势在于方便、有效的规则定义和链式推导,神经网和遗传算法的优势在于系统具有的学习能力,这点对于新型攻击的检测是很合适的。

当然,一个强大的入侵检测系统要求结合各种技术来完成信息分析工作,同时也应该考虑到系统实现的复杂性和实时性。

参考文献:

[1]ESCAMALLAT.IntrusionDetection:

NetworkSecurityBeyondtheFirewall[M].NewYork:

JohnWileyandSonsInc,1998.

[2]ULFL,PHILLIPAP.Detectingcomputerandnetworkmisusethroughtheproduction-basedexpertsystemtoolset(P-BEST)[Z].1999IEEESymposiumonSecurityandPrivacy,California,1999.

[3]SundaramA.AnintroductiontoIntrusiondetection[OL].http:

//www.acm.org/crossroads/xrds2-4

/intrus.html,2001.

[4]JAKER,LINMJ.IntrusionDetectionwithNeuralNetworks[OL]./technical.asp,2003.

[5]金波,林家骏.入侵检测技术评述[J].华东理工大学学报,2000,11:

1460-1466.

(编辑:

曹大刚)

Theapplicationofartificialintelligenceinintrusiondetection

GENGGuo-hua,KANGHua

(Department.ofComputerScience,NorthwestUniversity,Xi'an710069,China)

Abstract:

Thekeyofintrusiondetectionishowtofindtheintrusivebehaviorseffectively.Withtheextensionofnetworkservices,itbecamemoreandmorediversificatedandcomplicated.Ifwestilldetectsuchbehaviorsarestilldelectedbyhand,itisobviousthatitcan’tsatisfytheneedofreal-timeintrusiondetectionaswellasguaranteethecorrectness.TheabilityofstudyandreasonofArtificialIntelligenceisaneffectivewaytofindtheintrusionandclassifythem;theperformanceofreal-timeandcorrectnesswillbeimprovedassuredly.BasedonthetechnologyofArtificialIntelligenceandourpracticeofintrusiondetecting,detailexampleandme

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1