一种基于有穷状态自动机的网络入侵预警方法

文档序号:7589441阅读:171来源:国知局
专利名称:一种基于有穷状态自动机的网络入侵预警方法
技术领域
本发明涉及一种网络入侵预警方法,特别涉及一种基于有穷状态自动机的网络入侵预警方法(State-transition-based IntrusionPre-alert Algorithm,简称为SBIPA方法),属于网络安全技术领域。
背景技术
互联网已经进入我们生活的方方面面,网络安全问题越来越受到人们的关注。在这种背景下,为了应对手法不断翻新的黑客入侵行为,人们一直在进行有关的研究工作。
经研究发现,黑客在发起攻击之前,通常会通过网络扫描技术对目标网络的拓扑结构、可达性或目标主机的系统配置及服务运行状况进行探测和信息收集,并决定下一步采取的攻击手段和步骤。因此,网络扫描通常是入侵事件发起的前奏。通过对网络扫描进行检测和分析,尤其是对恶意和入侵性的扫描活动进行准确的检测、报警,并采取应急防范措施是对付黑客的有效手段。另外,由于在扫描活动中黑客要得到扫描动作的反馈信息,通常不会采用IP地址欺骗(IP Spoofing)技术,因此在此时进行监控有助于系统发现其真实地址,这对准确定位扫描源、防范入侵和制定安全策略具有实际意义。
目前,黑客常用的扫描技术主要有水平和垂直两种,水平扫描是指攻击者对一定IP地址范围内的多台主机的特定端口进行顺序扫描的方式,其目的是寻找运行特定服务的主机作为攻击目标,如对53(DNS服务)、139(NetBIOS文件和打印共享服务)、23(telnet)等端口的扫描;而垂直扫描是指攻击者对特定主机的多个端口进行顺序扫描的方式。在这种情况下,攻击者往往已经确定了攻击目标,扫描的目的是为了获得该目标主机的系统配置和服务运行信息,并寻找漏洞、确定进一步的攻击手段。现有的扫描技术主要是针对TCP和UDP协议进行的,其中以TCP扫描技术应用最为广泛。
目前,广泛使用的网络入侵检测系统(Network-based IntrusionDetection System,简称NIDS)所采用的网络扫描检测技术普遍过于简单,大多数检测方法通常以一个时段内扫描次数阈值做为分析依据,如在M秒时间段内从相同的源IP地址发出的超过N次不同的探测,但此种方法很容易被攻击者避开,如分布式扫描就是一种非常有效和典型的逃避手段,扫描者利用多台主机同时对目标主机或者网络发起多类型的扫描,使每台主机发起的扫描探测次数限制在报警阈值内,如此即可逃避检测。
另外,在现有针对TCP协议的扫描技术中,存在多种难于用现有的技术手段进行检测的扫描方式,例如SYN扫描方式。它是扫描发起者向目标机某端口发送一个SYN数据包,如果目标端口处于侦听状态,那么会返回一个SYN-ACK应答,否则,会应答一个RST报文,如果没有任何应答,则表示在扫描者和目标机之间有防火墙或其它数据包过滤设备。最关键的是当接收到SYN-ACK应答之后,发起者并不完成三次握手过程,而是应答一个RST报文取消连接请求,因此不会在目标机日志中留下记录,一般的检测手段难于发现。
总之,由于网络扫描手段具有多样性和动态性,现有简单的扫描检测技术无法实现保障网络安全的目的。

发明内容
本发明的目的在于提供一种针对网络入侵前扫描活动的预警方法,该方法基于有穷状态自动机的计算模型而实现,通过利用状态序列刻画扫描特征、利用状态转换树对网络中发生的扫描活动进行全局的分析和检测,可以有效改善对网络入侵的预警能力。
为实现上述的发明目的,本发明采用下述的技术方案一种基于有穷状态自动机的网络入侵预警方法,其特征在于包括如下步骤定义一个状态转换模型,并利用状态转换树来表达检测模型的状态转换机制,将网络连接的基本组织方式采用链表结构表述;在所述网络连接链表结构的连接信息节点中包含一个状态节点指针,指向该连接当前所处状态在状态转换树中对应的节点;同时所述状态转换树的每个节点中包含一个指针链表,链表中的节点分别指向每一个当前处于该状态的连接信息节点;通过检测(1)网络连接链表中源地址节点的扫描次数是否超过设定的极限值;(2)状态转换树叶节点的匹配次数是否超过设定的极限值;(3)扫描次数全局统计变量是否超过设定极限值;
中任何一个条件是否满足来确定是否发送预警信息。
所述状态转换模型为一个5元组M=(Q,∑,δ,q0,F),其中Q是一个网络连接的在扫描序列中所处状态的有穷状态集合;∑是由一个数据报文所有可能的标识位组合构成的有穷状态集合;δQ×∑→Q是状态转换函数;q0∈Q是起始状态,为一个网络连接上刚出现第一个报文时的状态;FQ是终止状态集合,其元素对应某种网络扫描报文序列完成时网络连接的状态。
所述链表结构中,第一层由不同的源地址节点构成主链表,每个源地址节点除了指向主链表中的下一个源地址节点之外还包含一个指针,指向所有与该源地址之间出现报文的目标地址节点的链表;每个目的地址节点包含一个指针,指向在对应的源地址和目标地址之间发生通信的所有端口对节点的链表,端口对节点也即连接信息节点。
一个连接在某一特定时刻只能对应一个状态,状态树中的每个状态节点对应所有当前处于该状态的多个连接;在连接节点中包含一个指向扫描报文序列链表的指针。
所述连接为一个出现通信报文的地址-端口对。
该网络入侵预警方法还包括如下步骤(1)以一个新俘获的网络报文作为输入;(2)在连接链表检查该报文所属的连接是否已经存在;(3)如果连接不存在,则创建一个新连接,将新建连接的状态设置为q0;(4)根据连接的当前状态和新报文的标识,按照状态转换函数δ对连接进行状态迁移;(5)若连接的状态发生了变化,则将该数据包追加到连接节点的扫描报文序列链表;(6)如果当前连接状态迁移到状态树的叶节点;(7)增加出现该类型扫描活动的连接的计数;(8)增加连接对应的源主机的扫描计数;(9)将全局扫描计数器递增;(10)如果叶节点的匹配次数超过极限值或者源地址节点的扫描次数超过极限值或者扫描次数全局统计变量超过极限值,则进行报警。
所述步骤(10)中,报警动作包括根据不同的检查条件而对应进行的多种报警处理及数据记录动作。
当符合报警条件准备报警时,为保证检测准确性,首先清除无效连接,减掉扫描计数器中的无效值,如果还符合报警条件,再进行报警。
每一个所述源地址节点中都设置有存储关于该源地址发起扫描的统计信息的变量。
本发明所述的SBIPA方法与现有网络入侵检测系统所采用的扫描检测方法相比,不仅提高了对各种单一类型的扫描活动检测的准确度,而且能够对分布式、多类型混杂扫描等现有技术无法检测的扫描活动进行有效的检测,从而有效改善了网络扫描的检测效果,提高了对网络入侵的预警能力。


下面结合附图和具体实施方式
对本发明作进一步的说明。
图1为体现网络连接的基本组织方式的链表结构示意图。
图2为状态转换树的示意图。
图3为将状态节点与连接节点进行关联处理的机制示意图。
图4为预警算法的流程图。
具体实施例方式
本发明所述的SBIPA方法是基于有穷状态自动机的计算模型来实现的。所谓有穷状态自动机是这样一种计算模型,它拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。有穷状态自动机可以表示为一个有向图。
在实践中,大多数通过设置非法标识位组合进行的扫描是很容易被检测到的,因为这些报文的特征是很明显的,而且在正常的通讯中不可能出现,因此通过编写相应的检测规则,就可以非常准确地检测到。但是,对于如SYN扫描这样的技术,其单个扫描报文在正常的网络通讯中也会出现,因而使得检测非常困难。对于此问题,我们通过对现有网络扫描技术的深入分析,发现这些扫描都有一个共同点,即扫描是通过特定的报文序列完成的,因此,基于有穷状态自动机,通过不同状态及状态之间的转换序列来刻画扫描报文序列,并在实现中对自动机中的状态节点进行扩展,同时引入数量统计、动作触发等处理机制,即有可能对普通技术无法检测的扫描方式进行检测。这就是本发明所述SBIPA方法的基本实现思路。
为实现上述的技术思路,我们首先定义SBIPA方法的状态转换模型如下定义1SBIPA的状态转换模型是一个5元组M=(Q,∑,δ,q0,F),其中Q是一个网络连接的在扫描序列中所处状态的有穷状态集合;∑是由一个数据报文所有可能的标识位组合构成的有穷状态集合,比如,它的元素有SYN,SYN|ACK(表示报文的SYN和ACK位同时被置1),SYN|FIN等;δQ×∑→Q是状态转换函数;q0∈Q是起始状态,为一个网络连接上刚出现第一个报文时的状态;FQ是终止状态集合,其元素对应某种网络扫描报文序列完成时网络连接的状态。
在定义1中,转换函数δ指明了某一状态qi-1和数据包标识位组合a转换到的下一个状态qi,即δ(qi-1,a)=qi,其中qi-1,qi∈Q,a∈∑,意为连接在qi-1状态下收到带有a标识的数据包时,将转换到qi状态。
应该说明的是为便于描述,我们将一个出现通信报文的地址-端口对称作一个“网络连接”,即在一个地址-端口对之间只要出现一个报文就称为连接,这一定义不同于TCP协议中定义的连接,后者需要三次握手完成后才开始称为连接。其次,该模型只定义了一个特定网络连接的扫描状态转换情况,对于整个网络所有连接的全局扫描检测功能是通过后面将要介绍的基于该模型的SBIPA方法相关处理机制实现的。
要根据上面定义的模型对整个网络内的所有网络连接进行网络扫描检测,最关键的问题就是如何组织网络连接的信息、如何表达状态转换模型以及怎样将网络连接信息与状态转换模型的信息进行关联处理以检测扫描,下面分别进行分析。
一个网络连接的信息由一个地址-端口对组成,即一个四元组<源IP地址,源端口,目标IP地址,目标端口>。由于网络连接是动态建立、关闭的,在处理过程中需要对连接进行高效地查找定位和新添、删除等操作,因此,如图1所示,我们将网络连接的基本组织方式采用链表结构完成。第一层由不同的源地址节点构成主链表,每个源地址节点除了指向主链表中的下一个源地址节点之外还包含一个指针,指向所有与该源地址之间出现报文的目标地址节点的链表;同样,每个目的地址节点包含一个指针,指向在对应的源地址和目标地址之间发生通信的所有端口对节点的链表,端口对节点也即连接信息节点。这样,多棵树结构通过一个主链表组织起来,构成体现网络连接关系的数据结构。
为了能够发现由某一源地址发出的扫描,在每一个源地址节点中设置存储关于该源地址发起扫描的统计信息的变量,如扫描时间、扫描次数等,当该源地址节点所下属的连接中发现有扫描发生时就更新该节点这些成员,因而通过检查某源地址节点的这些变量就可以很容易地发现由单一IP地址发起的各种扫描,不论该扫描是通过水平扫描、垂直扫描还是混合方式以及利用不同的扫描技术进行的,都不能逃避方法的检测,因为每个单一连接上的任何扫描现象都会引起源地址节点中的扫描总次数的增加。但仅通过该机制还不能对由多个源地址协同发起的分布式扫描进行检测,为了解决这一问题,本发明创造性地利用定义1中的状态转换模型进行检测。
如图2所示,该状态转换树用来表达检测模型的状态转换机制。它在逻辑上对应检测模型所定义的有穷状态自动机的状态图,树的各节点之间的关系反映了自动机的状态转换函数规定的状态迁移关系。为了利用状态转换模型对网络内的所有连接进行扫描检测,需要对网络连接链表和状态转换树中的信息进行关联处理。如图3所示,该关联处理方法的具体内容如下在图1所示网络连接链表结构的连接信息(Connection Info)节点中包含一个状态节点指针,指向该连接当前所处状态在状态转换树中对应的节点;同时在图2所示状态转换树的每个节点中包含一个指针链表,链表中的节点分别指向每一个当前处于该状态的连接信息节点。这样就在状态节点和连接节点之间提供了一种双向追踪机制,状态节点和连接节点之间是一对多的关系,一个连接在某一特定时刻只能对应一个状态,而状态树中的每个状态节点则对应所有当前处于该状态的多个连接。为了便于对导致扫描发生的数据报文进行追踪,在连接节点中还包含了一个指向扫描报文序列链表的指针。
检测扫描的机制主要有三种,分别针对不同的扫描方式源地址检测机制统计网络连接链表中源地址节点的扫描次数是否超过极限值T1,其主要针对由单一主机发起的扫描;叶节点检测机制检查状态转换树叶节点(对应终止状态)的匹配次数是否超过极限值T2,能够检测由第一种机制无法检测的由多个主机同时发起的单一类型的分布式扫描;将T2定义为叶节点的属性,根据不同扫描类型的不同特点,其对应叶节点的T2值可以不同,这为检测机制提供了更好的合理性和灵活性;
全局检测机制设置一个扫描次数全局统计变量,所有连接上检测到任何扫描动作发生时都将该变量值递增,通过判断该值是否超过极限值T3,可以检测前两种机制无法检测的由多主机同时发起的多类型混杂的扫描。为减少误报,该极限值T3应根据应用环境的特定情况调整为一个较大的值。
通过这三种检测机制不但可以对单主机发起的简单类型扫描进行检测,而且能够检测单主机多类型、分布式单类型、分布式多类型混杂等现有技术不能有效检测的扫描,从而弥补现有扫描检测技术的不足。
所有对扫描的检测条件都是在状态中描述的,首先由状态转换模型建立模块根据状态转换库中的状态描述建立起状态转换模型,然后根据状态转换模型对俘获的报文进行状态转换分析检测。
基于状态转换的分析是以连接为单位进行的,状态转换的过程对应了一个连接上的一系列报文。俘获一个数据包之后,首先将根据报文的源地址、目的地址、源端口、目的端口以及协议类型来将该报文定位到一个连接上,然后根据此连接的当前转换状态来进行状态转换分析,尝试进行下一步的状态转换,若转换到叶子状态则表明检测到扫描,为相应的检测扫描次数记录加1,当扫描次数超过极限值时进行报警、记录、清除连接等操作。下面先介绍将报文定位到连接上的操作过程,然后再介绍对一个报文的分析检测过程。
在连接上尝试作状态转换的过程是根据报文解包后的各个特征字段来对此连接的当前匹配状态的各个子状态作状态匹配。若报文的各个特征字段都满足状态的各个成员变量的值(即状态描述中各个关键字的值),那么状态匹配成功,此连接的当前匹配状态指针指向新匹配的状态。
对于新建立的连接,当状态转换不成功时,会将此连接视为正常通信,直接移入保留连接集合中,对此连接上的报文不再作检测,若一定时间内没有报文传输,对于新报文则重新开始检测。这点主要是考虑到当一个新建连接上的报文没有匹配任何一个状态,那么表示它不符合任何一种扫描的特征,因此可作为正常通信处理。典型的一个例子是,一般会对服务器主机的地址和服务端口屏蔽TCP连接和UDP扫描,这种报文应为正常通信,对该连接上的报文不需作检测,在对这种报文作状态转换分析时体现的结果就是不匹配任何一个状态。判断一个连接为新建立的连接的方法为判断其当前转移状态是否为初始状态。
只有当状态转换到叶子状态节点,才会进一步检查各个扫描次数记录是否达到极限值、然后进行超时连接清除、报警等相关工作。未转移到叶子状态节点则直接返回,等待对后续报文的分析进行下一次状态转换。
函数流程中最后一部分当匹配到叶子状态节点时,要对叶子状态节点、源节点和全局扫描记录都进行检查是否达到其极限值,如果是则清除超时连接;如果超过极限值则报警这些工作。
最后对保留连接集合检查是否达到极限值,如果是则清除超时连接。保留连接集合中清除的超时连接并非直接就从全局连接集合中删除了该连接,因为有可能在保留连接集合中的连接上又重新发生了状态转移,需要进一步检测、观察。当一个连接上一定时间内没有报文传输时,我们把新捕获到的报文重新从初始状态尝试进行状态转移。
当俘获一个数据包,将会首先在全局的连接集合中查找相应的连接,若不存在则新建一个连接,新建连接的当前匹配状态为初始状态。然后把当前数据包信息与找到的连接的当前匹配状态的下一个可能转移状态做匹配,若成功匹配到下一个状态,则该连接的当前匹配状态指针下移,指向转换到的新状态,并把报文信息添加到此连接的状态转移报文信息链表中。当被匹配的状态的匹配次数超过其极限值,则执行被匹配状态的action函数所指定的动作。一般情况下,非叶子节点的极限值可设为1,action设为等待,叶子节点的极限值设为某个统计值,action设为报警。当状态转换树的叶子节点被匹配,表示检测到一次扫描,对应连接的源地址节点、目的地址节点的扫描次数加1。当某个源地址的扫描次数超过极限值时也将进行报警。在作状态转换分析的过程中,对于服务器主机的服务端口屏蔽检测标志值设置为1的状态,系统将会忽略对目的端口为服务器主机的服务端口的相应报文作状态转换分析。
同时设置全局统计变量,每检测到一次可能的扫描,全局统计变量加1。当在一段时间中检测到的扫描次数超过该极限值时进行报警。时间段的长度和极限值在配置文件中设置。
综上,检测到扫描的报警条件主要有三个,分别针对不同的扫描手法。针对由一个单一主机发起的扫描,全局连接集合的源地址节点的扫描次数超过极限值时报警;针对单一类型的扫描(可能是由多个主机同时发起的分布式扫描),状态转换树叶子节点的匹配次数超过极限值时报警;针对由多个主机同时发起的多种类型的扫描,全局统计扫描次数在一定时间内超过极限值时报警,这个极限值应设为一个较大值,因为在正常流量中也容易包含一些产生扫描效果的正常报文。这样,对于非缓慢的扫描,包括分布式扫描,通过本发明所述的方法可以得到完全的检测。
结合上面对关键数据结构的描述和检测机制原理的说明,预警方法SBIPA如图4所示,具体实施步骤如下(1)以一个新俘获的网络报文作为输入;(2)在连接链表检查该报文所属的连接是否已经存在;(3)如果连接不存在,则创建一个新连接,将新建连接的状态设置为q0,即定义1中的初始状态;(4)根据连接的当前状态和新报文的标识(是定义1中∑的元素),按照状态转换函数δ对连接进行状态迁移;(5)若连接的状态发生了变化,则将该数据包追加到连接节点的扫描报文序列链表;(6)如果当前连接状态迁移到状态树的叶节点,即当前状态q∈F;(7)增加出现该类型扫描活动的连接的计数;(8)增加连接对应的源主机的扫描计数;(9)将全局扫描计数器递增;(10)如果叶节点的匹配次数超过极限值T2或者源地址节点的扫描次数超过极限值T1或者扫描次数全局统计变量超过极限值T3,则进行报警。
需要说明的是,上述方法中最后进行的报警动作是一个统称。实际上根据不同的检查条件有不同的报警处理及数据记录动作,由于报警的机制与检测方法非密切相关,为保持表述的简洁性,我们用报警动作一词统一地表示不同的报警处理及数据记录动作。
在实际网络应用环境中,一个繁忙的服务器会导致在较短时间内大量用户与其建立连接请求,而这种情况与发生检测方法判断connect()扫描的条件完全相同,因此,为了避免这种情况下出现误报,我们为状态节点提供了server_ignore属性,根据特定的检测环境,系统管理员可以在配置文件中提供繁忙的服务器的地址和端口列表,并将connect()扫描类型所对应的状态描述中叶节点的server_ignore属性设置为1,系统将会忽略对这些服务器端口的connect()扫描报警,这样为不同的检测环境提供了可定制的灵活性。
另外,由于网络连接是动态地创建和关闭的,而检测方法对于扫描特征的统计是在一定时间值之内的数量,在此时间段之外被统计的连接对于检测方法来讲即为无效连接,为保证检测的准确性,对无效连接的及时清除是十分关键的。
在具体实现时,我们将所有的连接都保存在一个全局连接集合中,其它需要追踪连接处都只保存对某连接的指针,并在建立指针的同时将此连接的引用计数加1。
连接的清除可以有两种方案,第一种是定时清除,第二种是在符合报警条件准备报警时清除。定时清除的方式优点是可以根据报警的频度不同灵活的调整清除的间隔时间,从而可以最大可能的减小连接清除带来的负载,但缺点是报警时间和连接清除的时间不一致,因此进行报警时报警条件的统计数量中可能有一定数量的无效连接,从而造成误报;因此在实现中我们采用了第二种方式,即在出现报警条件时进行连接清除。如果清除连接后有扫描特征的连接的数量仍然超过报警阈值,那么进行报警。在实际应用中,由于报警频度并不会太高,因此这种清除方式带来的额外负载不影响方法的效率。
当引用连接的某处发现一个无效连接并将指针删除时,连接本身并不从连接集合中删除,而是将该连接的引用计数减1。一个连接只有当同时满足引用计数为0和一定时间内无数据包传输这两个条件时才将其从全局连接集合中删除。所有引用计数为0,但仍存在数据包传输的连接都会在保留连接集合中添加指向这个连接的指针,由保留连接集合负责定时对其进行最终的清除。
本发明所述的基于有穷状态自动机的网络入侵预警方法不仅在理论上可行,通过实验验证也取得了令人满意的效果,下面简要介绍实验情况如下实验环境为100M的共享局域网,网段内有18台主机,其中1台主机运行实现SPIBA算法的软件系统,检测整个网段内的扫描;利用其它的5台普通PC运行测试软件,对网络内的主机发起不同类型的扫描。运行软件系统的主机详细配置为RedHat Linux 7.2操作系统,Pentium IV 1.7GCPU,512M内存,其它发起扫描测试的普通PC由于对性能要求较低,因此详细配置略去。测试工具采用漏洞扫描器Nessus和自行开发的可定制发包软件PacketSender。
测试分为两个部分,分别针对普通的常用扫描技术和攻击者蓄意隐蔽扫描行为的分布式扫描技术,检验算法对不同扫描方式的检测效果。
1.常规扫描技术测试使用扫描工具Nessus从一台主机对局域网内另一台主机的1~256号端口分别发起TCP connect扫描、SYN扫描、FIN扫描、Xmas Tree扫描、Null扫描,系统的检测结果如表1所示

表1常规扫描检测情况表从结果可见对不同类型的扫描,算法都能够及时检测到并报警,对不同类型扫描的报警次数不同是因为不同类型的扫描报警极限值不同,一些特征明显、与正常报文差异大的扫描类型极限值很低,比如Xmas Tree扫描;而对于与正常通讯流量差异不大、难以区分的扫描如TCP connect()扫描,其报警极限值则相对较高。Xmas Tree扫描的报警次数超过了实际扫描报文的个数是因为本方法中有三种不同的检测机制分别对扫描次数进行统计,而这种特征明显的扫描很容易满足不同机制的报警条件,因此同一扫描动作可能引起不同扫描机制的多次报警。
2.隐蔽分布式扫描测试由多人同时利用PacketSender从不同主机对另一主机发起相同类型的人工扫描,然后发起不同类型混杂的人工扫描,两种情况下扫描端口的数量都很少,以逃避通常的检测技术,由此可以检查本方法在两种情况下的检测效果。


表2多主机单类型分布式扫描检测情况表在从多台主机发起不同类型的分布式扫描的情况下,虽然发起扫描的源头是分布式的,但由于发起的扫描类型相同,因此对应于SYN扫描的状态树叶节点的匹配次数matcn_cnt可以很准确的累计不同扫描源发起的扫描动作,从而引发叶节点检测机制报警;同时当扫描的总次数达到一定数量时,全局检测机制也对其做出了检测。

表3多主机多类型分布式扫描检测情况表在从多台主机发起不同类型的分布式扫描的情况下,叶节点检测机制报警的4次为1次FIN扫描报警,3次Xmas Tree扫描报警,这是因为这两种扫描的特征明显,报警阈值较低(在测试中FIN扫描为3,Xmas Tree扫描为1);全局检测机制累计了不同扫描的总次数,从而能够检测到这些非常隐蔽的扫描,符合对算法对这种扫描检测功能的预期。
综合分析以上的测试结果可以看出,本发明所述的基于有穷状态自动机的网络入侵预警方法不仅能够更准确地检测常规扫描,而且对于蓄意隐蔽、逃避检测的单类型或多类型混杂分布式扫描也能做出有效的检测,达到了预期的检测效果,有效的弥补了现有检测技术存在的缺陷,可以对入侵起到有效的预警作用。
上面结合具体实施方式
对本发明进行了说明,但显然本发明的具体实现形式并不局限于此。对于本技术领域的一般技术人员来说,在不背离本发明所述方法的精神和权利要求范围的情况下对它进行的各种显而易见的改变都在本发明的保护范围之内。
权利要求
1.一种基于有穷状态自动机的网络入侵预警方法,其特征在于包括如下步骤定义一个状态转换模型,并利用状态转换树来表达检测模型的状态转换机制,将网络连接的基本组织方式采用链表结构表述;在所述网络连接链表结构的连接信息节点中包含一个状态节点指针,指向该连接当前所处状态在状态转换树中对应的节点;同时所述状态转换树的每个节点中包含一个指针链表,链表中的节点分别指向每一个当前处于该状态的连接信息节点;通过检测(1)网络连接链表中源地址节点的扫描次数是否超过设定的极限值;(2)状态转换树叶节点的匹配次数是否超过设定的极限值;(3)扫描次数全局统计变量是否超过设定极限值;中任何一个条件是否满足来确定是否发送预警信息。
2.如权利要求1所述的网络入侵预警方法,其特征在于所述状态转换模型为一个5元组M=(Q,∑,δ,q0,F),其中Q是一个网络连接的在扫描序列中所处状态的有穷状态集合;∑是由一个数据报文所有可能的标识位组合构成的有穷状态集合;δQ×∑→Q是状态转换函数;q0∈Q是起始状态,为一个网络连接上刚出现第一个报文时的状态;FQ是终止状态集合,其元素对应某种网络扫描报文序列完成时网络连接的状态。
3.如权利要求1或2所述的网络入侵预警方法,其特征在于所述网络连接链表结构中,第一层由不同的源地址节点构成主链表,每个源地址节点除了指向主链表中的下一个源地址节点之外还包含一个指针,指向所有与该源地址之间出现报文的目标地址节点的链表;每个目的地址节点包含一个指针,指向在对应的源地址和目标地址之间发生通信的所有端口对节点的链表,端口对节点也即连接信息节点。
4.如权利要求3所述的网络入侵预警方法,其特征在于一个连接在某一特定时刻只能对应一个状态,状态树中的每个状态节点对应所有当前处于该状态的多个连接;在连接节点中包含一个指向扫描报文序列链表的指针。
5.如权利要求4所述的网络入侵预警方法,其特征在于所述连接为一个出现通信报文的地址-端口对。
6.如权利要求1或2或3所述的网络入侵预警方法,其特征在于还包括如下步骤(1)以一个新俘获的网络报文作为输入;(2)在连接链表检查该报文所属的连接是否已经存在;(3)如果连接不存在,则创建一个新连接,将新建连接的状态设置为q0;(4)根据连接的当前状态和新报文的标识,按照状态转换函数δ对连接进行状态迁移;(5)若连接的状态发生了变化,则将该数据包追加到连接节点的网络连接链表;(6)如果当前连接状态迁移到状态树的叶节点;(7)增加出现该类型扫描活动的连接的计数;(8)增加连接对应的源主机的扫描计数;(9)将全局扫描计数器递增;(10)如果叶节点的匹配次数超过极限值或者源地址节点的扫描次数超过极限值或者扫描次数全局统计变量超过极限值,则进行报警。
7.如权利要求6所述的网络入侵预警方法,其特征在于所述步骤(10)中,报警动作包括根据不同的检查条件而对应进行的多种报警处理及数据记录动作。
8.如权利要求6所述的网络入侵预警方法,其特征在于当符合报警条件准备报警时,清除无效连接,减掉扫描计数器中的无效值。
9.如权利要求1所述的网络入侵预警方法,其特征在于每一个所述源地址节点中都设置有存储关于该源地址发起扫描的统计信息的变量。
全文摘要
本发明提供了一种基于有穷状态自动机的网络入侵预警方法。该方法通过利用状态序列刻画扫描特征、利用状态转换树对网络中发生的扫描活动进行全局的分析和检测。它定义了一个状态转换模型,并利用状态转换树来表达检测模型的状态转换机制,采用链表结构来组织网络连接,利用双向指针综合处理状态树及网络连接链表,并根据三种统计机制对网络扫描进行检测和报警。本方法不仅能够准确检测各种单一类型的扫描活动,而且能够对分布式、多类型混杂扫描等现有技术无法检测的扫描活动进行有效检测,改善了对网络扫描的检测效果,能够对网络入侵起到有效的预警作用。
文档编号H04L12/24GK1694412SQ20041000935
公开日2005年11月9日 申请日期2004年7月16日 优先权日2004年7月16日
发明者怀进鹏, 刘利军, 刘旭东, 颜强, 刘庆云 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1