基于人工智能的电力恶意代码检测方法、服务器及系统与流程

文档序号:17490649发布日期:2019-04-23 20:27阅读:279来源:国知局
基于人工智能的电力恶意代码检测方法、服务器及系统与流程

本发明属于信息安全检测领域,尤其涉及一种基于人工智能的电力恶意代码检测方法、服务器及系统。



背景技术:

信息化是当前社会的主要标志,而信息化面临的主要问题是信息安全的问题,包括计算机病毒,黑客入侵、钓鱼网站、apt(高级持续性威胁)等,对个人隐私、企业发展、国家安全都可能造成严重的威胁。随着计算机和网络技术的发展,特别是信息化与工业化深度融合及物联网的快速发展,工业控制系统正在面临高级病毒、木马攻击的威胁,信息安全问题日益突出。

2010年,伊朗布什尔核电站遭到“震网”病毒攻击,在2009年下至2010年上,该病毒使布什尔核电站超过1000台用于铀浓缩的离心机损坏,最终造成布什尔核电站关闭。近年来,国内外发生了多起针对工业控制系统的安全攻击,造成了恶劣的影响。2015年12月,乌克兰发生了针对电力系统的攻击,导致了乌克兰大范围停电;攻击者使用附带有恶意代码的excel邮件附件渗透了某电网工作站人员系统,向电网网络植入了blackenergy恶意软件,获得对发电系统的远程接入和控制能力。2016年7月,发生sdg恶意代码攻击事件,该恶意软件有针对性的袭击了欧洲的能源公司。

工业控制系统是一个国家重要基础设施,涉及核设施、钢铁、有色、化工、石油石化、电力、天然气、先进制造、水利枢纽、环境保护、铁路、城市轨道交通、民航及城市供水供气供热等诸多国计民生领域。而针对工业控制系统的安全事件频发则为工控系统正常稳定运行蒙上了阴影,此类事件往往会影响与国民经济和人民生活密切相关的设施,带来巨大的破坏性,使生产安全和公共安全正面临巨大的威胁,其造成的后果不容小觑。工业控制系统已经成为国家关键基础设施的重要组成部分,工业控制系统的安全关系到国家的战略安全。

传统工业控制系统的安全性主要依赖于其技术的隐秘性,工业控制系统最早和企业管理系统是隔离的,几乎未采取任何安全措施。但近年来为了实现实时的数据采集与生产控制,满足“两化融合”的需求和管理的方便,通过逻辑隔离的方式,使工业控制系统和企业管理系统可以直接进行通信,而企业管理系统一般直接连接internet,在这种情况下,工业控制系统接入的范围不仅扩展到了企业网,而且面临着来自internet的威胁。

由于电力工业控制系统安全性的重要性和巨大利益,针对电力工控系统的安全攻击越来越多,黑客频繁采用开发电力专用恶意代码的方式开展攻击。检测并防范针对电力行业的恶意代码成为电力信息安全领域的一个重要内容。由于新的、专有恶意代码出现越来越快,传统的病毒检测技术已经无法应对当前电力专有恶意代码检测的需求,因此需要基于大数据进行人工智能恶意代码检测技术研究,有效发现各种未知恶意软件和专有病毒,有效提高网络安全防护技术,保证电力网络安全。

检测并防范恶意代码成为信息安全领域的一个重要内容。由于当前恶意代码的数量非常巨大,新的恶意代码出现的速度也越来越快,传统的检测技术由于其检测速度、效率等问题已经无法应对当前恶意代码检测的需求。



技术实现要素:

为了解决现有技术的不足,本发明的第一目的是提供一种基于人工智能的电力恶意代码检测方法,其综合人为设定的特征和隐含特征,提高了电力恶意代码检测的速度及准确性。

本发明的一种基于人工智能的电力恶意代码检测方法,包括:

遍历整个电力系统调用序列,获取每个api被调用次数以及api之间的调用关系作为相应训练样本的调用关系频度特征向量;

将电力系统调用序列中的每个系统调用均转化为1-hot向量并输入具有lstm模型的递归神经网络,将所述递归神经网络中的隐藏状态转化为相应训练样本的定长特征向量;

混合训练样本的调用关系频度特征向量和定长特征向量,并输入至训练完成的决策树分类器中进行分类,检测出电力恶意代码。

进一步的,在遍历整理电力系统调用序列之前,还包括:构建整个电力系统的api数据依赖图,其具体过程为:

对电力系统的所有api进行编号,得到系统调用序列;

根据系统调用序列中数据流依赖关系,建立有向性的整个电力系统的api数据依赖图。

其中,系统调用api代表着操作系统与应用程序之间的交互,是恶意程序行为检测的首要分析数据。由于api之间的调用关系比单独的api调用次数更能反应程序的行为特征,因此我们将利用api数据依赖图的优点,利用api数据依赖图反应出api调用关系,但是采取统计系统调用关系频度而不是采用图挖掘算法可以避免图挖掘的计算复杂度。

进一步的,在遍历整个电力系统调用序列的过程中,针对当前遍历到的系统调用,在序列中向前搜索与其相关的系统调用;

每搜索到一个系统调用时,与当前遍历到的系统调用进行参数比较,判断两系统调用的相关性;

对于每个系统调用的参数,采用比较相应哈希值来逐一比较。

其中,对于每个系统调用的参数,进行逐一比较的过程中,不采用直接比对,而是采用比较其哈希值,这样做的好处在于,对于内容长度很大的参数,比如buffer等,不需要在每次比较时都遍历参数的所有内容,这样提高了参数比较的效率。

进一步的,每个系统调用均转化为1-hot向量的具体过程为:

创建一个字典,以id与系统调用一一对应;

将系统调用转化为除了其对应id位置为1外,其余位置全为0的向量。

进一步的,在采用训练完成的决策树分类器进行分类的过程中,使用auc来衡量每个特征和类别之间的相关性。

本发明的第二目的是提供一种基于人工智能的电力恶意代码检测服务器,其综合人为设定的特征和隐含特征,提高了电力恶意代码检测的速度及准确性。

本发明的一种基于人工智能的电力恶意代码检测服务器,包括:

调用关系频度特征向量获取模块,其被配置为:遍历整个电力系统调用序列,获取每个api被调用次数以及api之间的调用关系作为相应训练样本的调用关系频度特征向量;

定长特征向量获取模块,其被配置为:将电力系统调用序列中的每个系统调用均转化为1-hot向量并输入具有lstm模型的递归神经网络,将所述递归神经网络中的隐藏状态转化为相应训练样本的定长特征向量;

代码分类模块,其被配置为:混合训练样本的调用关系频度特征向量和定长特征向量,并输入至训练完成的决策树分类器中进行分类,检测出电力恶意代码。

进一步的,所述基于人工智能的电力恶意代码检测服务器还包括:

api数据依赖图构建模块,其被配置为:在遍历整理电力系统调用序列之前,对电力系统的所有api进行编号,得到系统调用序列;

根据系统调用序列中数据流依赖关系,建立有向性的整个电力系统的api数据依赖图。

其中,系统调用api代表着操作系统与应用程序之间的交互,是恶意程序行为检测的首要分析数据。由于api之间的调用关系比单独的api调用次数更能反应程序的行为特征,因此我们将利用api数据依赖图的优点,利用api数据依赖图反应出api调用关系,但是采取统计系统调用关系频度而不是采用图挖掘算法可以避免图挖掘的计算复杂度。

进一步的,在所述调用关系频度特征向量获取模块中,在遍历整个电力系统调用序列的过程中,针对当前遍历到的系统调用,在序列中向前搜索与其相关的系统调用;

每搜索到一个系统调用时,与当前遍历到的系统调用进行参数比较,判断两系统调用的相关性;

对于每个系统调用的参数,采用比较相应哈希值来逐一比较。

其中,对于每个系统调用的参数,进行逐一比较的过程中,不采用直接比对,而是采用比较其哈希值,这样做的好处在于,对于内容长度很大的参数,比如buffer等,不需要在每次比较时都遍历参数的所有内容,这样提高了参数比较的效率。

进一步的,在所述定长特征向量获取模块中,每个系统调用均转化为1-hot向量的具体过程为:

创建一个字典,以id与系统调用一一对应;

将系统调用转化为除了其对应id位置为1外,其余位置全为0的向量;

或/和

在所述代码分类模块中,在采用训练完成的决策树分类器进行分类的过程中,使用auc来衡量每个特征和类别之间的相关性。

本发明的第三目的是提供一种基于人工智能的电力恶意代码检测系统,其综合人为设定的特征和隐含特征,提高了电力恶意代码检测的速度及准确性。

本发明的一种基于人工智能的电力恶意代码检测系统,包括上述所述的基于人工智能的电力恶意代码检测服务器。

与现有技术相比,本发明的有益效果是:

本发明通过获取每个api被调用次数以及api之间的调用关系作为相应训练样本的调用关系频度特征向量;然后,将电力系统调用序列中的每个系统调用均转化为1-hot向量并输入具有lstm模型的递归神经网络,将所述递归神经网络中的隐藏状态转化为相应训练样本的定长特征向量;混合训练样本的调用关系频度特征向量和定长特征向量,综合人为设定的特征和隐含特征,并输入至训练完成的决策树分类器中进行分类,提高了电力恶意代码检测的速度及准确性。

附图说明

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

图1是本发明的一种基于人工智能的电力恶意代码检测方法实施例流程图。

图2是api数据依赖图。

图3是漏洞数据库融合过程示意图。

图4是本发明的一种基于人工智能的电力恶意代码检测服务器结构示意图。

具体实施方式

应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

术语解释:

api(applicationprogramminginterface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

lstm(longshort-termmemory)是长短期记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。

auc(areaundercurve)被定义为roc曲线下的面积,显然这个面积的数值不会大于1。又由于roc曲线一般都处于y=x这条直线的上方,所以auc的取值范围在0.5和1之间。使用auc值作为评价标准是因为很多时候roc曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应auc更大的分类器效果更好。

由于安全漏洞数据库都是将漏洞信息转化为html格式在各自的网站上公布的,因此,本发明的实施例所采用的样本采用爬虫程序将这些页面从数据库网站下载到本地,然后通过解析html来还原漏洞的各项信息,并将这个漏洞添加到本地数据库中。基于html标签的逻辑结构。html标签的嵌套特性使得整篇html文档可以被视为一棵树,其中如果b标签嵌套在a标签内,则b标签是以a标为根的子树的一个结点。这也是文档对象模型(dom)的基本思想。把html转化为一棵树后,使用xml路径语言(xpath)就能够精确定位树的某个结点,从而得到要抽取的信息在树上的位置,再经过简单的处理就可以得到信息的文本。这种方法也是为每个数据库定义一个抽象规则,但这些规则不必内嵌在程序代码中,而是以配置文件的形式保存在程序外部。这就具有了一定的灵活性,在漏洞的发布格式改变后,只需要改动配置文件就可以适应这种变化。

漏洞数据库之间存在冗余。漏洞数据库之间既包含自身特有的数据,也包含相互重合的数据;数据的来源既有部分是独立获取的,也有一定比例来源于其他漏洞库。因此漏洞数据库的融合不应当是简单的数据堆砌,融合后的数据中不同的条目不应当指向同一个实际的漏洞,而应当满足每一个漏洞记录条目的唯一性。而目前尚不存在判断漏洞同一性的标准。

漏洞数据库之间存在异构。在不同的漏洞库中,漏洞的文本类型字段的表达方式存在较大差异,对于同一个含义的名词,当出现在不同的漏洞库中时,软件难以识别其同一性。因此导致数据融合难以自动化、批量化的进行,而如果采用人工的方式逐个完成,工作量将十分庞大,且不可避免主观性。

文本类型字段的异构情况分析:由于每个漏洞库的表现风格不同,漏洞数据库之间存在严重的异构,对于同一个单词或者内容,在不同的库中写法不同。关于漏洞描述等其他字段,在写法上同样存在着差异。

漏洞参考链接的分析:分析漏洞库中所有漏洞参考链接引用的拓扑结构,利用该拓扑结构归纳了漏洞之间可能存在的关系,主要关系如下。

1)“相同”:通过参考链接进行数据融合,在理想情况下为一对一,如nvd中的一条漏洞a引用了x_force中的一条漏洞b,而b没有再引用nvd中除了a以外的其他漏洞,也没有再被nvd中除了a以外的其他漏洞所引用,这种情况便是参考链接的一对一引用。本文认为这种情况下,2个之间的关系是“相同”。

2)“相关”:实际中往往存在多对多的问题,如一条nvd的漏洞会引用多个x_force的漏洞条目,而这些被引用的x_fore漏洞条目又会引用其他nvd的漏洞条目,如果出现这种情况,通过参考链接融合的数据将存在很大的误差。这种情况下,2个漏洞可能是同一个漏洞,也可能不是,定义为“相关”。

3)“无关”:“相同”和“相关”之外的情况定义为“无关”。

从6个方面来融合漏洞威胁数据:

漏洞数据收集模块:通过上面收集漏洞的方法收集各方面的漏洞信息。

漏洞字段处理模块:漏洞字段数据清洗。获取当前漏洞字段后,首先需要规范化每条漏洞字段的字符串,包括书写、处理不规则字符、特殊字符和统一大小写等。为下阶段提供规则的数据源。漏洞字段分词。按照空格分词,去除停用词,语法处理。漏洞字段特征提取。计算漏洞字段权重。权重的计算方法公式为t=if*idf,t表示单词在当前字段中的权重,if表示单词的词频,idf表示单词的反向词频。生成字段检索特征值。按照上一步计算出的单词重选取检索查全率较高的字符串作为特征值。

漏洞参考链接处理模块:该模块抽取漏洞数据中的参考链接,利用“漏洞字段处理模块”进行处理,建立参考链接拓扑关系库,按照关系库中的结果将待融合的2个漏洞数据库间的漏洞关系分为“相同”、“相关”和“无关”3类。

漏洞产品型号训练集处理模块:抽取“相同”关系的漏洞作为训练集,提取这些漏洞的产品型号,利用漏洞字段处理模块进行处理,获取训练模型的最优化参数。

漏洞产品型号测试集处理模块:抽取“相关”关系的漏洞作为测试集,提取这些漏洞的产品型号,利用漏洞字段处理模块进行处理,结合训练集产生的最优参数,计算产品型号字符串相关度,建立统一的厂商和产品型号库。

统一数据库构建模块:根据漏洞统一性判别规则综合判定各漏洞数据库间漏洞条目的相关情况,消除数据库之间的冗余项,融合各库数据,构建统一数据库。具体来说,即漏洞相关性判别规则,首先抽取“相同”关系的漏洞,直接合并,然后抽取“相关”关系的漏洞,根据厂商和产品型号是否相同来判断是否进行合并。

漏洞数据库融合过程如图3所示,首先将公开漏洞库、逆向补丁求得的数据集和漏洞挖掘系统得到的数据集这3个漏洞数据集分为2组,分别是补丁+公开和漏洞挖掘+公开。对每组数据库的漏洞参考链接进行文本匹配,获得同组内2个漏洞数据库中相同的漏洞条目和相关的漏洞条目。再进行两两融合得到最终的统一数据库。

实施例一

图1是本发明的一种基于人工智能的电力恶意代码检测方法实施例流程图。

如图1所示,一种基于人工智能的电力恶意代码检测方法,具体包括:

步骤1:遍历整个电力系统调用序列,获取每个api被调用次数以及api之间的调用关系作为相应训练样本的调用关系频度特征向量。

现有的恶意程序行为检测方法主要是基于单个系统调用频率构建特征向量,程序在运行时系统调用被执行的频率能够表征程序的行为特征信息。如果某一类型的程序可能会比另一类型的程序对某些系统调用使用更频繁,则可以利用这个特点进行分类。但是这种方法忽略了不同系统调用之间的联系,相当于损失了很多的行为特征。

由于api之间的调用关系比单独的api调用次数更能反应程序的行为特征,因此我们将利用api数据依赖图的优点,利用api数据依赖图反应出api调用关系,但是采取统计系统调用关系频度而不是采用图挖掘算法可以避免图挖掘的计算复杂度。

具体地,在遍历整理电力系统调用序列之前,还包括:构建整个电力系统的api数据依赖图,其具体过程为:

对电力系统的所有api进行编号,得到系统调用序列;

根据系统调用序列中数据流依赖关系,建立有向性的整个电力系统的api数据依赖图。

定义(api数据依赖图):一个api数据依赖图是一个有向图g(v,e),代表系统调用之间的数据流依赖关系,v是系统调用集合,e是一组有向边。有向边(x,y)表示从x系统调用到y系统调用,表明x调用系统的输出被系统调用y使用,如图2所示。

通过系统调用关联分析,可以建立api数据依赖图。

通过在系统调用序列中,对比两个发生时间临近的系统调用是否有相同的参数,如果有,则视为相关联的系统调用。由程序的局部性特征可知,一个系统调用与其之前多个系统调用相关,但相关程度随着它们之间距离的增加而减小,所以,搜索一定范围内的系统调用来寻找相关联的系统调用对。

如系统调用a位置为l1,系统调用b的位置为l2,系统调用a的参数集合为sa,系统调用b的参数集合为sb,求sa∪sb。

时,表示系统调用a与系统调用b有关联关系,所以使用关联对a→b来描述这一关系。

在具体实施中,在遍历整个电力系统调用序列的过程中,针对当前遍历到的系统调用,在序列中向前搜索与其相关的系统调用;

每搜索到一个系统调用时,与当前遍历到的系统调用进行参数比较,判断两系统调用的相关性;

对于每个系统调用的参数,采用比较相应哈希值来逐一比较。

其中,对于每个系统调用的参数,进行逐一比较的过程中,不采用直接比对,而是采用比较其哈希值,这样做的好处在于,对于内容长度很大的参数,比如buffer等,不需要在每次比较时都遍历参数的所有内容,这样提高了参数比较的效率。

统计任意两个系统调用之间发生调用的次数,用c(x,y)表示x号api调用y号api的次数;

统计每个api被调用的次数,用c(y,y)表示y号api被调用的次数,这里包括x调用y,也包括y调用t;

假设有n个系统调用,根据系统调用依赖图建立一个n×n的向量m;

m=(c(1,1),c(1,2),…,c(1,n),c(2,1),c(2,2),…,c(2,n),…,c(n,1),c(n,2),…,c(n,n))。

特征向量m既包括了每个api被调用的次数,又能反映api之间的调用关系,因此描绘程序行为特征更加全面和深刻。

其中,系统调用api代表着操作系统与应用程序之间的交互,是恶意程序行为检测的首要分析数据。

步骤2:将电力系统调用序列中的每个系统调用均转化为1-hot向量并输入具有lstm模型的递归神经网络,将所述递归神经网络中的隐藏状态转化为相应训练样本的定长特征向量。

通过样本行为跟踪得到其运行时的不定长度的系统调用序列,此类数据无法使用在传统神经网络中进行训练。而利用递归神经网络,可以利用递归神经网络的特性,通过序列预测,将序列中所包含的信息包含在隐藏状态中,将最终得到的隐藏状态转化为定长的特征向量,照此方法处理的得到所有样本的定长特征向量,输入卷积神经网络,进行特征提取,再进行分类。

样本在发挥其功能时,必须要通过api调用来与操作系统进行交互,例如打开文件。通过记录样本的api调用序列来记录样本的动态行为。单个的api调用表现的具体的操作,多个api调用表现出样本的活动,所有的api调用序列表现了样本的整体行为。这个层次结构类似于文章,文章由句子构成,句子由词构成,所有我们类比语言模型,使用递归神经网络来提取样本的特征。在完成训练之后,从递归神经网络中最终的隐藏状态中提取特征向量。

提取出的特征向量中包含了样本行为特征。将卷积神经网络应用在这些特征向量上,训练出一个分类器,区分样本是否是恶意软件。

基于获取到的系统调用序列日志,我们构造了样本行为“语言”模型。模型使用具有lstm单元的递归神经网络。递归神经网络包含一个输入层x,一个普通隐藏层h1,两层lstm层h2和h3,以及输出层y。

在训练过程中,首先将系统调用转化为1-hot向量。转化方法如下:

1)创建一个字典,以id与系统调用一一对应。

2)将系统调用转化,除了其对应id位置为1外,其余位置全为0的向量。

递归神经网络通过重复地使用系统调用序列来进行训练。首先,我们将系统调用序列转化为1-hot向量,每个向量xt依次输入递归神经网络并得到输出yt。接着将yt与xt+1进行比较,计算损失函数。在执行过指定的次数之后,使用反向传播算法更新递归神经网络的参数。最后在提取特征向量时,使用递归神经网络最后的隐藏状态作为特征向量。

在训练阶段,使用已经标记过是否是恶意软件的特征向量进行训练,提前将特征向量图片化,转化为正方形特征矩阵,大小为w0*w0。卷积神经网络包含一个输入层,两个卷积池化层,以及一个全连接层,一个输出层。

第一个卷积层使用10个卷积核过滤w0×w0×1的输入特征矩阵。

第二个卷积层用20个核,过滤前一次的输出w1×w1×10的特征矩阵。

每个池化层均以2为滑动大小,接受上一卷积层的输出,并将大小其减小到1/2。再通过一个全连接层,最终得到2维的输出层,即为分类器结果。

最终样本是否为恶意软件的概率通过sigmod函数计算。

由于要设计适合目标的lstm模型,必须保证设计的模型是收敛的,为此需要从数学的角度进行证明。

为了便于矩阵运算的表示,列举两个常用的公式:

frobeniusproduct.即为内积,所有对应项相乘后求和;

hadamardproduct.两个矩阵逐项相乘,结果仍为矩阵。

lstm公式如下,其中σ为sigmoid函数,对矩阵求σ即为对其每个元素逐个求σ,tanh函数同样如此。xt为时间序列t时的输入,ht-1为上次输出,w,u,b分别为对应权值和偏置,为需训练参数。

lstm是决定记忆单元信息如何流动的模型,主要设置了3个门。分别为遗忘控制门ft、输入控制门it、输出控制门ot,3个门均根据输入xt,ht-1,使用线性变换,获取一个权值矩阵(或向量),即ft、it、ot,由于使用sigmoid函数,使得每个元素取值范围为0到1,对应运算时,相乘对象元素的权值。为新获取的记忆单元状态值。

为了获取最终的记忆单元状态ct,在中使用输入控制获取真正好的状态,在中根据遗忘控制从旧记忆信息中过滤掉无用成分,根据两者之和获取最新记忆单元ct。最后需要决定输出,使用tanh把记忆单元状态值限定在[-1,+1]区间,使用输出门权值控制具体输出ht。

it=σ(wixt+uiht-1+bi)

ft=σ(wfxt+ufht-1+bf)

ot=σ(wcxt+ucht-1+bc)

把lstm的所有输出ht的均值作为分类器输入,使用简单的sigmoid线性分类模型,使用交叉熵作为损失函数,所求目标为最小化交叉熵。

该模型可以看做lstm加线性分类器,可以先训练lstm待参数训练好后再训练分类器,也可以lstm和分类器作为一个整体训练,使用deeplearning中采取的策略,整体进行训练,训练之前需要知道各个梯度更新公式。

步骤3:混合训练样本的调用关系频度特征向量和定长特征向量,并输入至训练完成的决策树分类器中进行分类,检测出电力恶意代码。

训练完成的决策树分类器为多决策树分类器(随机森林)或迭代决策树(gbdt)。

在用决策树进行分类时,会出现数据非平衡问题,其中,数目较少的类称为少数类;数目较多的类称为多数类。

而在二分类数据集中,称多数类为正类,称少数类为负类。二分类问题为例,给予负类更高的权重,那么分类器在进行训练时,会对错分少数类样本的行为做出更大的惩罚,这样就迫使最终得到的分类器对少数类样本具有更高的预测准确率。

在二类不平衡分类问题中,希望通过特征选择来提高分类系统的值。

roc(receiveroperatingcharacteristic)曲线即接收者操作特征曲线,是一种图形化表示分类器性能的工具。roc最初被用于信号探测问题当中,以展示两种不同错误即识别率和误报率之间的权衡。近年来,roc曲线及其相关技术被引入到深度学习领域中。

在二分类问题中,大多数分类器的连续型输出结果:h(x)→r都可以看成分类器对样本x属于正类可能性的打分,h(x)越大,x属于正类的可能性就越大,反之,h(x)越小,则属于负类的可能性就越大。在传统的分类器构建过程中,人们常常会以0.5做为默认的阈值。即当h(x)>0.5时,x就被分成正类,反之则被分到负类。在实际中,其效果并不好。恰当的做法是在h(x)的值域范围内寻找一个最优的阈值θ,来作为正负类的分界点,即

在不断调整的过程中,会得到一系列不同的h(x)及其对应的(正类识别率,负类错分率)点对。这些点的连线在就是roc曲线。图形化的roc曲线便于人们直观的观察分类器的性能,它却不便于分类器之间的比较。为此,人们常用曲线下的面积做为衡量分类器好坏的度量,称为auc。

对n个样本按照分类器预测的属于正类的可能性h(x)从大到小排序。然后对排序之后的样本从小到大编号,h值最小的样本编号为1,h值最大的样本编号为n。对于样本h值相等的情况,则把它们的编号的平均值赋给其中的每个样本。

使用auc来衡量每个特征和类别标号之间的相关性。

首先,选用等级相关系数(speakerman’srandcorrelationcoefficient,rcc)衡量两个特征(例如f1和f2)之间的冗余性。去除冗余特征能明显的改善算法的性能。在计算的过程中,首先按照f1的取值对所有样本进行从小到大排序,假设第i个样本在这个序列中的编号为p1(f1上取值最小的样本编号为1)。

其次,按照f2对所有样本从小到大排序,假设第i个样本在这个序列中的编号为p2。则,

di=p1-p2

然后,f1和f2之间的等级相关系数可以用下列公式计算

具体的算法如下:

输入:数据集d,用户指定的特征子集大小k

输出:所选的特征子集s

本发明的基于人工智能的电力恶意代码检测方法通过获取每个api被调用次数以及api之间的调用关系作为相应训练样本的调用关系频度特征向量;然后,将电力系统调用序列中的每个系统调用均转化为1-hot向量并输入具有lstm模型的递归神经网络,将所述递归神经网络中的隐藏状态转化为相应训练样本的定长特征向量;混合训练样本的调用关系频度特征向量和定长特征向量,综合人为设定的特征和隐含特征,并输入至训练完成的决策树分类器中进行分类,提高了电力恶意代码检测的速度及准确性。

实施例二

图4是本发明的一种基于人工智能的电力恶意代码检测服务器结构示意图。

如图4所示,本发明的一种基于人工智能的电力恶意代码检测服务器,包括:

(1)调用关系频度特征向量获取模块,其被配置为:遍历整个电力系统调用序列,获取每个api被调用次数以及api之间的调用关系作为相应训练样本的调用关系频度特征向量。

具体地,在所述调用关系频度特征向量获取模块中,在遍历整个电力系统调用序列的过程中,针对当前遍历到的系统调用,在序列中向前搜索与其相关的系统调用;

每搜索到一个系统调用时,与当前遍历到的系统调用进行参数比较,判断两系统调用的相关性;

对于每个系统调用的参数,采用比较相应哈希值来逐一比较。

其中,对于每个系统调用的参数,进行逐一比较的过程中,不采用直接比对,而是采用比较其哈希值,这样做的好处在于,对于内容长度很大的参数,比如buffer等,不需要在每次比较时都遍历参数的所有内容,这样提高了参数比较的效率。

(2)定长特征向量获取模块,其被配置为:将电力系统调用序列中的每个系统调用均转化为1-hot向量并输入具有lstm模型的递归神经网络,将所述递归神经网络中的隐藏状态转化为相应训练样本的定长特征向量。

具体地,在所述定长特征向量获取模块中,每个系统调用均转化为1-hot向量的具体过程为:

创建一个字典,以id与系统调用一一对应;

将系统调用转化为除了其对应id位置为1外,其余位置全为0的向量。

(3)代码分类模块,其被配置为:混合训练样本的调用关系频度特征向量和定长特征向量,并输入至训练完成的决策树分类器中进行分类,检测出电力恶意代码。

具体地,在所述代码分类模块中,在采用训练完成的决策树分类器进行分类的过程中,使用auc来衡量每个特征和类别之间的相关性。

在另一实施例中,所述基于人工智能的电力恶意代码检测服务器还包括:

api数据依赖图构建模块,其被配置为:在遍历整理电力系统调用序列之前,对电力系统的所有api进行编号,得到系统调用序列;

根据系统调用序列中数据流依赖关系,建立有向性的整个电力系统的api数据依赖图。

其中,系统调用api代表着操作系统与应用程序之间的交互,是恶意程序行为检测的首要分析数据。由于api之间的调用关系比单独的api调用次数更能反应程序的行为特征,因此我们将利用api数据依赖图的优点,利用api数据依赖图反应出api调用关系,但是采取统计系统调用关系频度而不是采用图挖掘算法可以避免图挖掘的计算复杂度。

本发明的基于人工智能的电力恶意代码检测服务器通过获取每个api被调用次数以及api之间的调用关系作为相应训练样本的调用关系频度特征向量;然后,将电力系统调用序列中的每个系统调用均转化为1-hot向量并输入具有lstm模型的递归神经网络,将所述递归神经网络中的隐藏状态转化为相应训练样本的定长特征向量;混合训练样本的调用关系频度特征向量和定长特征向量,综合人为设定的特征和隐含特征,并输入至训练完成的决策树分类器中进行分类,提高了电力恶意代码检测的速度及准确性。

本发明还提供了一种基于人工智能的电力恶意代码检测系统,其综合人为设定的特征和隐含特征,提高了电力恶意代码检测的速度及准确性。

本发明的一种基于人工智能的电力恶意代码检测系统,包括如图4所示的基于人工智能的电力恶意代码检测服务器。

本发明的基于人工智能的电力恶意代码检测系统通过获取每个api被调用次数以及api之间的调用关系作为相应训练样本的调用关系频度特征向量;然后,将电力系统调用序列中的每个系统调用均转化为1-hot向量并输入具有lstm模型的递归神经网络,将所述递归神经网络中的隐藏状态转化为相应训练样本的定长特征向量;混合训练样本的调用关系频度特征向量和定长特征向量,综合人为设定的特征和隐含特征,并输入至训练完成的决策树分类器中进行分类,提高了电力恶意代码检测的速度及准确性。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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