一种日志流异常检测的方法及系统与流程

文档序号:11236799阅读:446来源:国知局
一种日志流异常检测的方法及系统与流程

本发明涉及网络安全领域,特别涉及一种日志流异常检测的方法及系统。



背景技术:

在科技迅猛发展的今天,保证网络的安全已经成为互联网技术发展的前提,若网络安全出现问题,会对某些企业造成难以想象的打击,因此网络安全成为各种互联网技术的重中之重。

随着数据处理、分析能力的提升,以及机器学习等人工智能技术的成熟,解决网络安全问题的技术层出不穷,但是在技术层面上来,这些技术的原理基本相同。现有技术在网络安全领域中通过对各类日志流分析,进行异常发现、安全检测,进而保护网络安全,但是由于攻击方式、攻击手法具有多样性、不可预测性,签名、特征、规则等基于先验知识检测手法难以应对新的异常。

因此,如何对日志流中的异常进行识别并对新的异常进行自主学习,是本领域技术人员目前需要解决的技术问题。



技术实现要素:

本申请的目的是提供一种日志流异常检测的方法及系统,能够在验证数据完整性的过程中保证数据安全。

为解决上述技术问题,本申请提供一种日志流异常检测的方法及系统,该方法包括:

利用检测模型对待检日志流进行异常检测,并根据检测结果判断所述待检日志流是否存在异常;其中,所述检测模型为通过根据训练日志流按照异常检测算法训练初始模型得到;

若所述待检日志流存在所述异常,则判断所述异常是否为已知威胁;

若所述异常不是所述已知威胁,则根据接收的异常复检信息更新所述检测模型。

可选的,所述检测模型为通过根据训练日志流按照异常检测算法训练初始模型得到包括:

获取并初始化所述训练日志流,生成与应用相关的静态统计数据;

提取所述静态统计数据的特征,并将所述特征输入所述初始模型;

根据所述特征与所述异常检测算法对所述初始模型进行训练,生成所述检测模型;其中,所述检测模型中存有基于所述训练日志流构建的安全场景。

可选的,所述利用检测模型对待检日志流进行异常检测,并根据检测结果判断所述待检日志流是否存在异常包括:

获取所述待检日志流,并对所述待检日志流采样及切片,获得待检日志流片段;

将所述待检日志流片段输入所述检测模型,检测所述待检日志流片段是否存在所述异常。

可选的,若所述待检日志流存在所述异常,则判断所述异常是否为已知威胁包括:

若所述待检日志流存在所述异常,则根据所述安全场景判断所述异常是否为已知威胁。

可选的,若所述异常不是所述已知威胁,则根据接收的异常复检信息更新所述检测模型包括:

若所述异常不是所述已知威胁,则上报所述异常至云端;

当收到所述云端返回的异常复检信息后,根据所述异常复检信息更新所述静态统计数据;

根据更新后的所述静态统计数据更新所述检测模型。

本申请还提供了一种日志流异常检测的系统,所述系统包括:

异常检测模块,用于利用检测模型对待检日志流进行异常检测,并根据检测结果判断所述待检日志流是否存在异常;其中,所述检测模型为通过根据训练日志流按照异常检测算法训练初始模型得到的;

威胁判断模块,用于当所述待检日志流存在所述异常时,判断所述异常是否为已知威胁;

更新模块,用于当所述异常不是所述已知威胁时,根据接收的异常复检信息更新所述检测模型。

可选的,该系统还包括:

获取模块,用于获取并初始化所述训练日志流,生成与应用相关的静态统计数据;

提取模块,用于提取所述静态统计数据的特征,并将所述特征输入所述初始模型;

训练模块,用于根据所述特征与所述异常检测算法对所述初始模型进行训练,生成所述检测模型;其中,所述检测模型中存有基于所述训练日志流构建的安全场景。

可选的,所述异常检测模块包括:

待检日志获取单元,用于获取所述待检日志流,并对所述待检日志流采样及切片,获得待检日志流片段;

异常检测单元,用于将所述待检日志流片段输入所述检测模型,检测所述待检日志流片段是否存在所述异常。

可选的,所述威胁判断模块具体为若所述待检日志流存在所述异常,则根据所述安全场景判断所述异常是否为已知威胁的模块。

可选的,所述更新模块包括:

上报单元,用于当所述异常不是所述已知威胁时,上报所述异常至云端;

数据更新单元,用于当收到所述云端返回的异常复检信息后,根据所述异常复检信息更新所述静态统计数据;

模型更新单元,用于根据更新后的所述静态统计数据更新所述检测模型。

本发明提供了一种日志流异常检测的方法,利用检测模型对待检日志流进行异常检测,并根据检测结果判断所述待检日志流是否存在异常;其中,所述检测模型为通过根据训练日志流按照异常检测算法训练初始模型得到;若所述待检日志流存在所述异常,则判断所述异常是否为已知威胁;若所述异常不是所述已知威胁,则根据接收的异常复检信息更新所述检测模型。

本方法中使用的检测模型是利用训练日志流和异常检测算法训练得到的,也就是说训练日志流中全部的数据特征都被检测模型所学习,可以通过先验知识进行判断的异常称为已知威胁。但是如果遇到检测模型无法通过先验知识进行判断的异常称为未知事件,可以将该未知事件交由第三方判断来是否存在威胁,经第三方判断后根据该未知事件对应的日志流更新检测模型。若再次遇到同样的异常时,可以利用更新后的检测模型进行判断。该方法对日志流中的异常进行识别并对新的异常进行自主学习,既可以识别已知威胁,也能够学习未知事件,提升了网络环境的安全性。本申请同时还提供了一种日志流异常检测的系统,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例所提供的一种日志流异常检测的方法的流程图;

图2为本申请实施例所提供的另一种日志流异常检测的方法的流程图;

图3为图2所示实施例中云端对检测结果进行误报判断的示意图;

图4为本申请提供的一种日志流异常检测的系统的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

下面请参见图1,图1为本申请实施例所提供的一种日志流异常检测的方法的流程图;

具体步骤可以包括:

步骤s101:利用检测模型对待检日志流进行异常检测,并根据检测结果判断所述待检日志流是否存在异常;其中,所述检测模型为通过根据训练日志流按照异常检测算法训练初始模型得到;

其中,本方法的实施主体是系统,本步骤的目的是判断待检日志流是否存在异常。本步骤是通过检测模型来实现对待检日志流的检测,检测模型是一种具有学习能力的虚拟装置,由未进行过学习的初始模型进行训练得到。对初始模型进行训练的方法有很多,可以选择一些具有代表性的出现异常的日志流对初始模型进行训练,使生成的检测模型能够识别一些常见的异常日志流,再将检测模型放置在实际工作环境中,在实际检测中增加其可以识别的异常种类。可以理解的是,也可以在一开始检测时便使用初始模型,让初始模型在实际工作中进行训练,不断积累各种异常的类型,当然若使用该方法在初始模型训练初期需要用户频繁地、长期地帮助初始模型进行训练。当然生成检测模型的异常检测算法并不固定,即不依赖于特定算法,包括但不限定于多元高斯分布、one-classsvm、isolationforest等算法。

训练初始模型的训练日志流既可以是已经检验过异常的日志流,也可以是各种特定类型网络行为的日志流,只要能够训练初始模型生成检测模型即可,此处并不对训练日志流的内容、来源进行限定。

在进行本步骤时,已经默认检测模型是受过一定训练并且能够检测出某些异常的模型。检测模型对待检日志流进行检测的方法有很多,可以提取待检日志流的特征信息与已经学习过的特征信息相比对从而判断待检日志流中是否存在异常,也可以按照训练初始模型时得到的安全场景进行检测,当然相关领域技术人员也可以想到其他的检测异常的方法,此处只要能够将异常检测出来即可,并不对检测异常的方法进行具体的限定。可以理解的是,检测模型检测出来的异常既包括训练阶段学习的已经出现的异常,还包括并没有见到过的某些日志流特征,也定义为异常;已经见过的异常称之为已知威胁,若发现可直接报警,没有见过的异常称之为未知事件,还需上传至第三方进行进一步的判断。

当然,待检日志流中会存在诸多日志信息,每条日志信息是检测的最小单位,可以将待检日志流按一条日志信息为一个日志片段,将待检日志流分割为若干日志片段,也可以对待检日志流整体进行检测。可以理解的是当待检日志流中的日志信息较多时,可以将其切片为日志流片段降低检测的复杂程度,当待检日志流中的日志信息较少时,可以将待检日志流作为整体进行检测提升检测的效率;此处并不对待检日志流是否进行切片处理进行限定,只要便于检测模型进行检测即可。

步骤s102:若所述待检日志流存在所述异常,则判断所述异常是否为已知威胁;

其中,由于各种攻击手法、方式具有多样性、不可预测性,日志流中可能会存在新的威胁,因此检测模型的机制是当检测到从未见过的某种网络行为的日志流时判定该日志流存在异常。检测模型判定待检日志流中存在有异常的原因既可能是待检日志流中出现了在训练阶段中同样异常的日志流,还可能是检测模型在训练阶段没有训练的某种新的网络行为的日志流,即未知事件。

也就是说,当待检日志流中记录有检测模型训练检测过的特定类型异常网络行为时,检测模型则判定该日志流出现异常,并且将这种异常定义为已知威胁。已知威胁其实是用户已经在系统中定义的某种异常类型,无需上报给第三方进行再次检测。当待检日志流中存在有检测模型没有训练检测过的新的网络行为的日志流时,检测模型将这种日志流出现的问题定义为未知事件,即该未知事件可能存在威胁,也可能不存在威胁,由于检测模型不具备对所有情况都可以进行异常检测的能力,所以无法判断该未知事件是否真的存在威胁。

本步骤中判断异常是否为未知事件的方法,可以是与训练阶段时学习的各种异常进行比对,如在训练时构建的安全场景利用该场景进行过滤,若有相同的异常则判定该异常为已知威胁,若无相同的异常则判定该异常为未知事件。

步骤s103:若所述异常不是所述已知威胁,则根据接收的异常复检信息更新所述检测模型;

其中,本步骤默认当检测模型判定该威胁不是已知威胁,即为未知事件时,会自动将未知事件对应的相关信息转发给第三方进行进一步的判断。可以理解的是,判断检测模型的检测结果是否为误报的第三方有多种选择,可以是用户,让用户在基于其对自身业务和安全问题的理解来处理检测结果;也可以是云端装置,通过云端联动,获取云端其他用户的误报情况,扩充误报确认结果的来源来处理检测结果;还可以是云端装置和用户的组合,先将检测结果发送至云端,查看是否其他用户处理过这种异常,当无法通过云端解决时再发送给用户,让用户在基于其对自身业务和安全问题的理解来处理检测结果。

本步骤的核心是使检测模型对于未知事件进行学习,第三方在进行判断后会向系统发送异常复检信息,检测模型根据异常复检信息对检测模型进行再次训练,即更新检测模型,以便再次遇到该情况时能够做出准确的判断。可以理解的是,未知事件作为检测模型没有训练过的一种异常,其可能存在威胁,也可能不存在威胁;同理可知,作为对未知事件的判断,异常复检信息可能判断未知事件存在威胁,也可能判断未知事件不存在威胁。也就是说,当异常复检信息判定未知事件确实存在威胁时,更新检测模型,在下一次遇到该情况时上报为异常并判定为已知威胁;当异常复检信息判定未知威胁不存在威胁时,更新检测模型,在下一次遇到该情况时将其判定为不存在异常的日志流信息,从而降低了检测模型误报的几率。

下面请参见图2、图3,图2为本申请实施例所提供的另一种日志流异常检测的方法的流程图;图3为图2所示实施例中云端对检测结果进行误报判断的示意图;此实施例是在上述实施例的基础上,对生成检测模型及对待检日志流进行检测等步骤进行了限定。

具体步骤可以包括:

步骤s201:获取并初始化所述训练日志流,生成与应用相关的静态统计数据;

其中,本步骤中的训练日志流是指特定类型网络行为的日志流,训练日志流指特定应用产生的网络数据流或网络日志,如dns、http请求的网络流量信息或日志记录。通常来讲,训练日志流中存在有大量的日志信息,若不对训练日志流进行分割不利于训练的进行。因此,可以对训练日志流进行切片或采样,使得处理后的每个日志片段至少包含一条日志信息。当然对训练日志流进行切片或采样的方法有很多,既可以按照时间序列切片或采样,也可以按照日志流的类型切片或采样,还可以按照日志流的来源不同切片或采样,此处并不对切片或采样的依据进行具体的限定,只要能够将训练日志流分割为若干日志流片段即可。

在获取训练日志流后,对训练日志流进行初始化,当然进行初始化的方法有很多,本领域技术人员可以根据具体实际情况选择初始化训练日志流的方法。

生成与应用相关的静态统计数据是对初始化的训练日志流作进一步的处理,相对于应用而言,生成的静态统计数据具有相对稳定的特性,如,正常情况下网络日志流中http请求的平均频率、http请求头中的user-agent的集合、http请求的二元序列集合等。

步骤s202:提取所述静态统计数据的特征,并将所述特征输入所述初始模型;

其中,本步骤中提取的特征是基于构建的异常检测模型,来从日志流、时间窗口内的统计数据等提取、计算相关特征向量值,作为模型的输入。当然,检测模型所选的特征有多种选择,例如可以是http请求的采样窗口内连续两个请求的序列发生的概率,也可以是出现当前user-agent的概率,还可以是响应数据大小等,此处不进行具体的限定。

步骤s203:根据所述特征与所述异常检测算法对所述初始模型进行训练,生成所述检测模型;其中,所述检测模型中存有基于所述训练日志流构建的安全场景;

其中,对于检测模型的训练在于基于输入的训练数据、选定的算法,进行模型训练,确定最终用于检测的模型参数。根据训练日志流中提取的特征,可以在检测模型中构建诸多安全场景,安全场景包括针对当前应用的可能攻击方式,可以通过安全场景过滤的方式来进行异常的检测,例如,对于http日志流,安全场景包括但不限定于网站扫描、后台登录页面爆破等。

步骤s204:获取所述待检日志流,并对所述待检日志流采样及切片,获得待检日志流片段。

步骤s205:将所述待检日志流片段输入所述检测模型,检测所述待检日志流片段是否存在所述异常。

步骤s206:若所述待检日志流存在所述异常,则根据所述安全场景判断所述异常是否为已知威胁。

步骤s207:若所述异常不是所述已知威胁,则上报所述异常至云端;

其中,可以通过云端进行联动,获取云端其它用户的误报情况,扩充误报确认结果的来源,并将其更新到当前用户的模型中,降低误报。

步骤s208:当收到所述云端返回的异常复检信息后,根据所述异常复检信息更新所述静态统计数据;

步骤s209:根据更新后的所述静态统计数据更新所述检测模型;

其中,本步骤在于基于云端设备确认后的误报结果或其它来源的误报数据不断更新步骤s203得到的检测模型,来持续提升检测效果、降低误报。检测模型的更新主要是更新步骤s201中产生针对特定应用的静态统计数据。如web应用场景下,http请求的平均频率、访问序列等。当云端设备判定该异常存在威胁时,则将这种情况设置为例外情况,即再检测到这样的日志流时直接判定为异常,不再上报。当云端设备判定该检测结果存在误报,即不存在威胁时,再检测到这样的日志流时直接判定为正常的日志流。

由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

请参见图4,图4为本申请提供的一种日志流异常检测的系统的结构示意图;

该系统可以包括:

异常检测模块100,用于利用检测模型对待检日志流进行异常检测,并根据检测结果判断所述待检日志流是否存在异常;其中,所述检测模型为通过根据训练日志流按照异常检测算法训练初始模型得到的;

威胁判断模块200,用于当所述待检日志流存在所述异常时,判断所述异常是否为已知威胁;

更新模块300,用于当所述异常不是所述已知威胁时,根据接收的异常复检信息更新所述检测模型。

在本申请提供的另一种日志流异常检测的系统的实施例中,该系统进一步,还包括:

获取模块,用于获取并初始化所述训练日志流,生成与应用相关的静态统计数据;

提取模块,用于提取所述静态统计数据的特征,并将所述特征输入所述初始模型;

训练模块,用于根据所述特征与所述异常检测算法对所述初始模型进行训练,生成所述检测模型;其中,所述检测模型中存有基于所述训练日志流构建的安全场景。

进一步的,所述异常检测模块100包括:

待检日志获取单元,用于获取所述待检日志流,并对所述待检日志流采样及切片,获得待检日志流片段;

异常检测单元,用于将所述待检日志流片段输入所述检测模型,检测所述待检日志流片段是否存在所述异常。

进一步的,所述威胁判断模块200具体为若所述待检日志流存在所述异常,则根据所述安全场景判断所述异常是否为已知威胁的模块。

进一步的,所述更新模块包括:

上报单元,用于当所述异常不是所述已知威胁时,上报所述异常至云端;

数据更新单元,用于当收到所述云端返回的异常复检信息后,根据所述异常复检信息更新所述静态统计数据;

模型更新单元,用于根据更新后的所述静态统计数据更新所述检测模型。

以上对本申请所提供的一种日志流异常检测的方法及系统进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1