一种高效能深度威胁识别引擎的实现方法及系统与流程

文档序号:19219224发布日期:2019-11-26 01:58阅读:207来源:国知局
一种高效能深度威胁识别引擎的实现方法及系统与流程

本发明涉及互联网技术领域,尤其涉及一种高效能深度威胁识别引擎的实现方法及系统。



背景技术:

深度威胁识别系统-实时引擎(advancedthreatdetection–realtimeengine,简称atd-rte)的主要工作有两方面,第一方面是特征向量计算,主要是根据输入日志来计算特征向量,此特征向量一般为用户特征向量。第二方面是规则引擎,通过业务规则判断一个客户(可以用一个ip地址标识一个客户)是否有威胁行为。

例如,一个ip的特征向量如下:

{"domain.pv":1.3461538461538463,"clientip.pv":120.0,"clientip.uristaticcount":0.0,"clientip.requestpath.most":0.175,"clientip.requestpath.uniq":100.0,"clientip.requestpath.mrr":0.2857142857142857,"clientip.requestpath.mstr":"/hehetest","clientip":"220.8.2.1"}

业务规则如下:

clientip.pv>100andclientip.pv>domain.pv*2and(clientip.uristaticcount/clientip.pv<0.4orclientip.requestpath.uniq<domain.requestpath.uniq)

通过规则引擎可以通过上述业务规则和上述ip的特征向量判断出这个ip是否执行危险行为。

现有的规则引擎使用以下方法进行处理:解析业务规则,将业务规则中的变量替换为所述ip特征向量中此变量对应的具体值,获得一个不含有变量的中缀表达式,计算这个中缀表达式的值,将计算得到的中缀表达式的值作为计算结果。规则引擎一般由较多的规则组成。多条规则中会用到相同的变量、计算表达式或者比较表达式,对每一个重复的变量、计算表达式或者比较表达式进行计算,会造成计算资源的浪费。

如何提高规则引擎的处理效率是需要解决的技术问题。



技术实现要素:

为了解决上述技术问题,本发明提供了高效能深度威胁识别引擎的实现方法及系统。

本发明提供的高效能深度威胁识别引擎的实现方法,包括:

解析业务规则,所述业务规则为一中缀表达式;

将所述中缀表达式转换成组成元素为比较表达式和逻辑运算符的逆波兰式;

根据所述逆波兰式构建抽象语法树,所述抽象语法树的非叶子节点为所述逆波兰式中的逻辑运算符,叶子节点为所述逆波兰式中的比较表达式;

根据待处理的特征向量中各变量的具体值计算所述抽象语法树的值,其中:计算叶子节点的值时,判断所述叶子节点的组成元素是否已缓存,如果所述叶子节点的组成元素已缓存,使用已缓存的所述叶子节点的组成元素计算所述叶子节点的值,如果所述叶子节点的组成元素未缓存,确定所述叶子节点的组成元素的值并缓存;

所述叶子节点的组成元素包括以下参数中的至少一种:变量、算术表达式、比较表达式。

上述高效能深度威胁识别引擎的实现方法还具有以下特点:

所述将所述逆波兰式转换为抽象语法树还包括:将所述抽象语法树的叶子节点转换成组成元素为变量、计算符和比较运算符的逆波兰式。

上述高效能深度威胁识别引擎的实现方法还具有以下特点:

如果所述叶子节点的组成元素未缓存,确定所述叶子节点的组成元素的值包括:

所述参数为变量时,从所述特征向量中查找所述变量的值;

所述参数为算术表达式时,计算所述算术表达式的值,其中,所述计算所述算术表达式的值包括:确定所述算术表达式包含的各变量,判断变量的值已缓存时,从缓存中加载所述变量的值,判断变量的值未缓存时,从所述特征向量中查找所述变量的值,根据所述算术表达式包含的各变量的值计算算术表达式的值;

所述参数为比较表达式时,计算比较表达式的值,其中,所述计算比较表达式的值包括:确定所述比较表达式包含的各算术表达式和各变量,判断变量的值已缓存时,从缓存中加载所述变量的值,判断变量的值未缓存时,从所述特征向量中查找所述变量的值,判断算术表达式的值已缓存时,从缓存中加载所述算术表达式的值,判断算术表达式的值未缓存时,计算算术表达式的值,根据所述比较表达式包含的各算术表达式和各变量的值计算所述比较表达式的值。

上述高效能深度威胁识别引擎的实现方法还具有以下特点:

所述根据待处理的特征向量中各变量的具体值计算所述抽象语法树的值包括计算非叶子节点的值,所述计算非叶子节点的值包括:所述非叶子节点为和运算符时,计算所述非叶子节点的一子树的值,此子树的值为否时,确定所述非叶子节点的值为否,此子树的值为是时,计算另一子树的值,将此子树的值作为所述非叶子节点的值。

上述高效能深度威胁识别引擎的实现方法还具有以下特点:

所述根据待处理的特征向量中各变量的具体值计算所述抽象语法树的值包括计算非叶子节点的值,所述计算非叶子节点的值包括:所述非叶子节点为或运算符时,计算所述非叶子节点的一子树的值,此子树的值为是时,确定所述非叶子节点的值为是,此子树的值为否时,计算另一子树的值,将此子树的值作为所述非叶子节点的值。

本发明提供的高效能深度威胁识别引擎的系统,包括:

解析模块,用于解析业务规则,所述业务规则为一中缀表达式;

转换模块,用于将所述中缀表达式转换成组成元素为比较表达式和逻辑运算符的逆波兰式;

构建模块,根据所述逆波兰式构建抽象语法树,所述抽象语法树的非叶子节点为所述逆波兰式中的逻辑运算符,叶子节点为所述逆波兰式中的比较表达式;

处理模块,用于根据待处理的特征向量中各变量的具体值计算所述抽象语法树的值;所述处理模块包括判断单元、叶子节点值计算单元、缓存单元;

所述判断单元,用于判断所述叶子节点的组成元素是否已缓存;

所述叶子节点值计算单元,用于在所述叶子节点的组成元素已缓存时,使用已缓存的所述叶子节点的组成元素计算叶子节点的值;在所述叶子节点的组成元素未缓存时,确定所述叶子节点的组成元素的值;

所述缓存单元,用于缓存所述叶子节点值计算单元确定的所述叶子节点的组成元素的值;

所述叶子节点的组成元素包括以下参数中的至少一种:变量、算术表达式、比较表达式。

上述高效能深度威胁识别引擎的实现系统还具有以下特点:

所述构建模块,还用于将所述抽象语法树的叶子节点转换成组成元素为变量、计算符和比较运算符的逆波兰式。

上述高效能深度威胁识别引擎的实现系统还具有以下特点:

所述叶子节点值计算单元还用于使用以下方法确定所述叶子节点的组成元素的值:

所述参数为变量时,从所述特征向量中查找所述变量的值;

所述参数为算术表达式时,计算所述算术表达式的值,其中,所述计算所述算术表达式的值的方法包括:确定所述算术表达式包含的各变量,判断变量的值已缓存时,从缓存中加载所述变量的值,判断变量的值未缓存时,从所述特征向量中查找所述变量的值,根据所述算术表达式包含的各变量的值计算算术表达式的值;

所述参数为比较表达式时,计算比较表达式的值,其中,所述计算比较表达式的值包括:确定所述比较表达式包含的各算术表达式和各变量,判断变量的值已缓存时,从缓存中加载所述变量的值,判断变量的值未缓存时,从所述特征向量中查找所述变量的值,判断算术表达式的值已缓存时,从缓存中加载所述算术表达式的值,判断算术表达式的值未缓存时,计算算术表达式的值,根据所述比较表达式包含的各算术表达式和各变量的值计算所述比较表达式的值。

上述高效能深度威胁识别引擎的实现系统还具有以下特点:

所述处理模块还包括非叶子节点值计算单元,用于在所述非叶子节点为和运算符时,计算所述非叶子节点的一子树的值,此子树的值为否时,确定所述非叶子节点的值为否,此子树的值为是时,计算另一子树的值,将此子树的值作为所述非叶子节点的值。

上述高效能深度威胁识别引擎的实现系统还具有以下特点:

所述处理模块还包括非叶子节点值计算单元,用于在所述非叶子节点为或运算符时,计算所述非叶子节点的一子树的值,此子树的值为是时,确定所述非叶子节点的值为是,此子树的值为否时,计算另一子树的值,将此子树的值作为所述非叶子节点的值。

本发明通过缓存的方式可以有效提高规则引擎的处理效率,尤其适用于需处理的特征向量为大型数据的场景,并且在计算节点值时,采用省略非必要计算的方式进一步提高处理效率。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是实施例中高效能深度威胁识别引擎的实现方法的流程图;

图2是实施例中高效能深度威胁识别引擎的实现系统的结构图;

图3是具体实施例中构建出的抽象语法树的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征向量可以相互任意组合。

业务规则包括逻辑表达式,此逻辑表达式包括逻辑运算符和比较表达式,比较表达式中包括计算表达式,计算表达式中包括至少一变量。

例如:

业务规则为:

clientip.pv>100andclientip.pv>domain.pv*2and(clientip.uristaticcount/clientip.pv<0.4orclientip.requestpath.uniq<domain.requestpath.uniq)

其中,and表示逻辑与,or表示逻辑或,clientip.pv>100、clientip.pv>domain.pv*2、clientip.uristaticcount/clientip.pv<0.4、clientip.requestpath.uniq<domain.requestpath.uniq为比较表达式。

如图1所示,高效能深度威胁识别引擎的实现方法,包括:

步骤101,解析业务规则,此业务规则为一中缀表达式;

步骤102,将中缀表达式转换成组成元素为比较表达式和逻辑运算符的逆波兰式;

步骤103,根据上述逆波兰式构建抽象语法树,此抽象语法树的非叶子节点为上述逆波兰式中的逻辑运算符,叶子节点为上述逆波兰式中的比较表达式;

步骤104,根据待处理的特征向量中各变量的具体值计算抽象语法树的值,其中:计算叶子节点的值时,判断叶子节点的组成元素是否已缓存,如果叶子节点的组成元素已缓存,使用已缓存的叶子节点的组成元素计算叶子节点的值,如果叶子节点的组成元素未缓存,确定叶子节点的组成元素的值并缓存。其中,叶子节点的组成元素包括以下参数中的至少一种:变量、算术表达式、比较表达式。

步骤103和步骤104之间还包括:将抽象语法树的叶子节点转换成组成元素包括变量、计算符和比较运算符的逆波兰式。具体的:先将叶子节点解析成组成元素包括算术表达式和比较运算符的逆波兰式,再将组成元素包括算术表达式的逆波兰式中的算术表达式进一步转换为组成元素包括参量和计算符的逆波兰式,其中,参量是变量、或者是常量、或者同时包括变量和常量。

步骤104中,如果叶子节点的组成元素未缓存,确定叶子节点的组成元素的值包括:

参数为变量时,从特征向量中查找变量的值;

参数为算术表达式时,计算算术表达式的值,其中,计算算术表达式的值的方法包括:确定算术表达式包含的各变量,判断变量的值已缓存时,从缓存中加载变量的值,判断变量的值未缓存时,从特征向量中查找变量的值,根据算术表达式包含的各变量的值计算算术表达式的值;

参数为比较表达式时,计算比较表达式的值,其中,计算比较表达式的值包括:确定比较表达式包含的各算术表达式和各变量,判断变量的值已缓存时,从缓存中加载变量的值,判断变量的值未缓存时,从特征向量中查找变量的值,判断算术表达式的值已缓存时,从缓存中加载算术表达式的值,判断算术表达式的值未缓存时,计算算术表达式的值,根据比较表达式包含的各算术表达式和各变量的值计算比较表达式的值。其中,计算算术表达式的值的方法与上述描述的计算算术表达式的值的方法相同,具体为:确定算术表达式包含的各变量,判断变量的值已缓存时,从缓存中加载变量的值,判断变量的值未缓存时,从特征向量中查找变量的值,根据算术表达式包含的各变量的值计算算术表达式的值。

为了节省计算步骤,可以省略非必要的计算步骤,例如:

根据待处理的特征向量中各变量的具体值计算抽象语法树的值包括计算非叶子节点的值,计算非叶子节点的值包括:非叶子节点为和运算符时,计算非叶子节点的一子树的值,此子树的值为否时,确定非叶子节点的值为否,此子树的值为是时,计算另一子树的值,将此子树的值作为非叶子节点的值。其中,计算非叶子节点的一子树的值时,此子树可以是默认设置的左子树,或者默认设置的右子树,或者是两个子树中的任意一个。

根据待处理的特征向量中各变量的具体值计算抽象语法树的值包括计算非叶子节点的值,计算非叶子节点的值包括:非叶子节点为或运算符时,计算非叶子节点的一子树的值,此子树的值为是时,确定非叶子节点的值为是,此子树的值为否时,计算另一子树的值,将此子树的值作为非叶子节点的值。其中,计算非叶子节点的一子树的值时,此子树可以是默认设置的左子树,或者默认设置的右子树,或者是两个子树中的任意一个。

如图2所示,高效能深度威胁识别引擎的实现系统,包括:

解析模块,用于解析业务规则,业务规则为一中缀表达式;

转换模块,用于将中缀表达式转换成组成元素为比较表达式和逻辑运算符的逆波兰式;

构建模块,根据逆波兰式构建抽象语法树,抽象语法树的非叶子节点为逆波兰式中的逻辑运算符,叶子节点为逆波兰式中的比较表达式;

处理模块,用于根据待处理的特征向量中各变量的具体值计算抽象语法树的值;处理模块包括判断单元、叶子节点值计算单元、缓存单元;

判断单元,用于判断所述叶子节点的组成元素是否已缓存;

叶子节点值计算单元,用于在叶子节点的组成元素已缓存时,使用已缓存的叶子节点的组成元素计算叶子节点的值;在叶子节点的组成元素未缓存时,确定叶子节点的组成元素的值;

缓存单元,用于缓存叶子节点值计算单元确定的叶子节点的组成元素的值;

叶子节点的组成元素包括以下参数中的至少一种:变量、算术表达式、比较表达式。

其中,

构建模块,还用于将抽象语法树的叶子节点转换成组成元素为变量、计算符和比较运算符的逆波兰式。

叶子节点值计算单元还用于使用以下方法确定叶子节点的组成元素的值:

参数为变量时,从特征向量中查找上述变量的值;

参数为算术表达式时,计算算术表达式的值,其中,计算算术表达式的值的方法包括:确定算术表达式包含的各变量,判断变量的值已缓存时,从缓存中加载变量的值,判断变量的值未缓存时,从特征向量中查找变量的值,根据算术表达式包含的各变量的值计算算术表达式的值;

参数为比较表达式时,计算比较表达式的值,其中,计算比较表达式的值包括:确定比较表达式包含的各算术表达式和各变量,判断变量的值已缓存时,从缓存中加载变量的值,判断变量的值未缓存时,从特征向量中查找变量的值,判断算术表达式的值已缓存时,从缓存中加载算术表达式的值,判断算术表达式的值未缓存时,计算算术表达式的值,根据比较表达式包含的各算术表达式和各变量的值计算比较表达式的值。

处理模块还包括非叶子节点值计算单元,用于在非叶子节点为和运算符时,计算非叶子节点的一子树的值,此子树的值为否时,确定非叶子节点的值为否,此子树的值为是时,计算另一子树的值,将此子树的值作为非叶子节点的值。其中,计算非叶子节点的一子树的值时,此子树可以是默认设置的左子树,或者默认设置的右子树,或者是两个子树中的任意一个。

非叶子节点值计算单元,还用于在非叶子节点为或运算符时,计算非叶子节点的一子树的值,此子树的值为是时,确定非叶子节点的值为是,此子树的值为否时,计算另一子树的值,将此子树的值作为非叶子节点的值。其中,计算非叶子节点的一子树的值时,此子树可以是默认设置的左子树,或者默认设置的右子树,或者是两个子树中的任意一个。

下面通过具体实施例详细说明本方法。

具体实施例

业务规则为一中缀表达式:

clientip.pv>100andclientip.pv>domain.pv*2and(clientip.uristaticcount/clientip.pv<0.4orclientip.requestpath.uniq<domain.requestpath.uniq)

将中缀表达式转换成组成元素为比较表达式和逻辑运算符的逆波兰式:

clientip.pv>100、clientip.pv>domain.pv*2、and、clientip.uristaticcount/clientip.pv<0.4、clientip.requestpath.uniq<domain.requestpath.uniq、or、and

然后基于这个逆波兰式生成一个抽象语法树即ast,如图3所示,此抽象语法树的叶子节点包括:

clientip.pv>100、

clientip.pv>domain.pv*2、

clientip.uristaticcount/clientip.pv<0.4、

clientip.requestpath.uniq<domain.requestpath.uniq。

每一个叶子节点其实是一个比较运算符,例如clientip.uristaticcount/clientip.pv<0.4,将这个叶子节点解析成组成元素包括变量、计算符和比较运算符的逆波兰式;具体的,先将叶子节点解析成组成元素包括算术表达式和比较运算符的逆波兰式:clientip.uristaticcount/clientip.pv、0.4、<。再将此逆波兰式中的算术表达式进一步转换为组成元素为组成元素包括变量和运算符的逆波兰式:clientip.uristaticcount、clientip.pv、/。

用户特征向量为:

{"domain.pv":1.3461538461538463,"clientip.pv":120.0,"clientip.uristaticcount":0.0,"clientip.requestpath.most":0.175,"clientip.requestpath.uniq":100.0,"clientip.requestpath.mrr":0.2857142857142857,"clientip.requestpath.mstr":"/hehetest","clientip":"220.8.2.1"}

使用上述用户特征向量的值计算抽象语法树的值。

上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。

以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。

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