基于三位一体综合画像的恶意代码检测及恶意性定位方法与流程

文档序号:21888947发布日期:2020-08-18 17:38阅读:262来源:国知局
基于三位一体综合画像的恶意代码检测及恶意性定位方法与流程

本发明涉及恶意代码检测技术领域,具体涉及一种基于三位一体综合画像的恶意代码检测及恶意性定位方法。



背景技术:

恶意代码检测技术发展至今,主要经历了基于特征的检测、基于启发的检测和基于数据挖掘的检测等几个阶段。

基于特征的检测从每一个已知恶意代码中提取独特的字符串序列作为特征,然后采用特征匹配的方式开展检测。这种方法在检测已知恶意代码时准确率较高且误报率较低,但难以应对恶意代码普遍采用混淆手段改变特征,导致维护病毒特征库工作量急剧增加,以及未知恶意代码所带来的挑战。

基于启发式的检测方法基于由安全专家所确定的恶意代码和正常代码的判决规则/模式,判断未知样本的恶意性。为保证检测的有效性和效率,这种方法需要判决规则/模式具有通用性。但随着恶意代码制作工具的出现,恶意代码制作过程已成为一种turn-key式的工作,恶意代码变种大规模涌现,生成判决规则/模式所需的时间和人力消耗已难以承受。

基于数据挖掘的检测方法是当前广泛应用的检测手段,主要包括特征提取和检测两个过程。在特征提取阶段,通常采用静态分析或动态分析的方法提取样本的静态特征或动态特征,然后基于提取出的特征训练机器学习分类器;在检测阶段,首先提取待检测样本的特征,然后使用训练好的分类器对其开展自动化的检测。这一方法已成为当前恶意代码检测的主要研究方向,能够实现准确性、有效性和效率等方面的最优化。

但是,基于数据挖掘的检测方法在应对恶意代码的不断演化更新方面,仍然面临着诸多新的挑战,主要包括:

(1)越来越多的恶意代码采用加壳、变形或多态方式混淆自身特征,躲避反病毒软件的检测,增加恶意代码检测的难度。当前的恶意代码越来越多地采用加壳方式躲避检测,导致静态分析方法难以奏效;

(2)动态分析方法在检测恶意代码方面也存在诸多缺陷。比如,有些恶意代码会在执行恶意操作之前,对运行环境进行判断,如果是处于虚拟机环境之中,就会停止执行。这种具备对抗虚拟执行环境的恶意代码将会导致动态分析方法失效;

(3)此外,目前的研究方法大多针对恶意代码的某一类型特征或融合部分特征展开研究,所以往往难以有效对抗采用加壳、多态、环境侦测等手段对抗检测的恶意代码,普遍存在一定的局限性;

(4)当前的检测结果通常只是对程序的恶意性作出判断,但程序作为一个结构体,还需要在恶意性判决的基础上,确定出其恶意性部位,这样也能为研究人员系统认知恶意代码,以及开展恶意代码防护提供支撑。



技术实现要素:

有鉴于此,本发明提供了一种基于三位一体综合画像的恶意代码检测及恶意性定位方法,能够实现恶意代码的恶意性评估,并对代码恶意性部位实现准确定位。

本发明的基于三位一体综合画像的恶意代码检测方法,包括:

构建恶意代码画像,所述恶意代码画像包括基本结构画像、底层行为画像和高层行为画像;其中,采用程序pe文件的sections进行基本结构画像;采用程序运行过程中所调用的api和dll信息进行底层行为画像;采用程序运行过程中发生的文件操作行为、注册表操作行为和网络行为进行高层行为画像;

提取样本集中各样本的pe文件的sections、调用的api和dll信息、以及文件操作行为、注册表操作行为和网络行为特征,对分类器进行训练;

利用训练好的分类器进行恶意代码检测。

较佳的,所述pe文件的sections特征包括sections名称及大小,以sections作为特征向量,section的size作为其特征值,生成基本结构画像的特征矩阵。

较佳的,对提取出的sections进行模糊匹配归类,并去除包含乱码、名称无意义的sections。

较佳的,取前n个贡献度最大的api作为特征向量,api对应的出现次数作为其特征值,生成底层行为画像的api序列特征矩阵。

较佳的,api序列特征矩阵的获得方法如下:

提取样本的api序列,统计所有样本中每个api出现的次数、每一类样本中每个api出现的次数及每一个样本中每个api出现的次数;

采用tf-idf加权方法计算每一类样本中api的贡献度并按从大到小进行排序;

选取贡献度排序前n个api组成特征向量;

基于前n个api对每一个样本进行匹配,以该api在样本中出现的次数作为其特征值;

为每一个样本生成api序列特征向量;

生成基于api序列的特征向量矩阵。

较佳的,提取样本集合的dll序列,以dll序列作为特征向量,dll对应的出现次数作为其特征值,生成基本结构画像的dll序列特征矩阵。

较佳的,对恶意代码样本动态分析技术报告中提取的dll序列进行模糊匹配归类,并去除乱码dll。

较佳的,文件操作行为特征包括:create、recreate、open、read、write、delete、failed、move、exist文件次数统计,create、remove和enumerate文件夹次数统计;

注册表操作行为特征包括:create、read、write、open、delete注册表值次数统计;

网络行为特征包括:采用tcp、udp协议的不同源ip、目的ip、源端口、目的端口统计,请求的主机、请求的dead主机、请求的域,dns请求及请求的dns服务器统计。

较佳的,采用机器学习算法对分类器进行训练;所述机器学习算法为随机森林法、决策树法或朴素贝叶斯法。

本发明还提供了一种基于三位一体综合画像的恶意代码恶意性定位方法,首先采用上述检测方法对恶意代码进行检测,其中,计算恶意代码画像的每一个特征的信息增益并进行排序,选取前n个信息增益最大的特征进行恶意代码检测;然后,计算前n个信息增益最大的特征分别在其所属的基本结构画像、底层行为画像或高层行为画像的特征子集中所占的比例,所占比例越高,则其对应的画像的恶意性越明显。

有益效果:

本发明在融合静态分析和动态分析方法的基础上,综合提取恶意代码的多方面主要特征,引入系统画像的思想,从基本结构、底层行为和高层行为等三个方面构建起“三位一体”的综合画像,建立能够系统准确刻画恶意代码的特征空间,实现对恶意代码的准确检测和家族分类。在此基础上,基于检测结果对三个画像部位的恶意性进行评估,由此实现对代码恶意性部位的准确定位,辅助研究人员建立起关于恶意代码的系统认知。

附图说明

图1为本发明的基于画像的检测过程流程图。

图2为本发明过程详细设计。

图3为数据采集过程。

图4为pe文件结构。

图5为api序列特征向量生成过程。

图6为不同名称dll归类示例。

具体实施方式

下面结合附图并举实施例,对本发明进行详细描述。

本发明提供了一种基于三位一体综合画像的恶意代码检测及恶意性定位方法,实现过程主要包括5个阶段,如图1所示,包括:

(1)数据采集

本阶段实现对恶意代码画像数据的初始采集,主要从恶意代码动态分析报告中提取所需要的数据信息。

(2)恶意代码画像

基于数据采集到的信息,从基础结构、底层行为和高层行为三个角度对信息进行划分,实现对数据信息的画像角度归类。

(3)恶意代码特征生成

在画像的基础上,分别从基础结构、底层行为和高层行为三个角度的数据信息中生成特征,构建特征向量空间。

(4)恶意代码检测与家族分类

基于构建的特征向量,训练分类器,并完成实际检测。

(5)恶意代码恶意性部位定位

将实际检测结果反馈到画像阶段,评估三个画像角度对检测效果的影响,确定三个画像角度在恶意性方面的不同表现,实现对代码恶意性部位的具体定位。

在方法实现过程中,构建三位一体综合画像是方法实现的基础,最后基于检测结果确定具体的恶意性部位。其详细设计如图2所示,从基本结构、底层行为和高层行为三个方面对恶意代码进行画像,然后分别从三个画像角度提取特征,构建综合特征向量;然后,采用自动化的机器学习分类器实现检测;最后,基于检测结果定位具体的恶意性部位。

具体的,

(1)数据采集

对恶意代码画像所依赖的数据源由cuckoosandbox动态生成。cuckoosandbox是一个开源的恶意代码虚拟运行环境,并提供了api供研究者开发自己的应用。本发明通过调用cuckoosandbox的api实现了样本自动化提交及分析结果自动存储功能,实现过程如图3所示。

(2)恶意代码画像

恶意代码画像包括三个部分:基本结构画像、底层行为画像和高层行为画像。

a)基本结构画像

pe文件的基本结构如图4所示,其中的sections包含了程序运行过程中所需的必要信息。即使采用了加壳方式,pe文件的sections也能表现程序的恶意特征,因此本发明使用pe文件的sections对恶意代码的基本结构进行画像。

b)底层行为画像

因为api是恶意代码与操作系统之间交互的桥梁,而dll则包含了代码在运行过程中所需要使用的函数信息,两者是恶意代码实现其恶意功能所依赖的基础,所以本发明综合使用api和dll对恶意代码的底层行为进行画像。

c)高层行为画像

恶意代码的恶意功能通常表现在对系统文件的操作、对注册表的操作,以及与外界交互的网络行为。所以,本发明综合使用文件操作行为、注册表操作行为和网络行为来对恶意代码的高层行为进行画像。

(3)特征提取

a)基本结构特征

方法生成基本结构特征的过程如下:

(i)提取样本的sections名称及大小;

(ii)对提取出的sections进行模糊匹配归类,包括:大小写匹配归类和名称关键字模糊匹配归类。比如,因为采用混淆手段而出现的’.reloc’和’\x00eloc’、’.data’和’.data\\x13’、’.code’和’.code\\x00\\xe4’等归为一类;

(3)对归类后的sections进一步精简,去除掉包含乱码、名称无意义的sections;

(4)以精简后的sections作为特征向量的,section的size作为特征值,生成样本基本结构的特征矩阵。

b)底层行为特征

底层行为主要是指样本代码在运行过程中所调用的windows接口函数(api)和动态链接库文件(dll)。因为,代码程序在运行过程中需要调用api和dll来使用系统资源,及完成预定的功能操作。所以,检测程序运行过程中所调用的api和dll信息,可以有效理解程序的行为特征。

(i)api序列特征向量生成

生成api序列特征向量的过程如图5所示:

i)首先,从样本动态分析报告中提取样本的api序列,并统计所有样本中每个api出现的次数、每一类样本中每个api出现的次数及每一个样本中每个api出现的次数;

ii)基于第1步得到的信息,采用tf-idf加权方法计算每一类样本中api的贡献度并进行排序;

iii)选取贡献度排序top-n的api组成特征向量;

iv)基于top-napi对每一个样本进行匹配,以该api在样本中出现的次数作为其特征值;

v)为每一个样本生成api序列特征向量;

vi)生成基于api序列的特征向量矩阵。

(ii)dll序列特征向量生成

dll是分析恶意代码的一个重要方面,它包含了装载程序时所需的代码库,可以反映出恶意代码的意图。本发明生成dll序列特征向量的过程如下:

i)分析恶意代码样本动态分析技术报告,提取初始的dll序列信息;

ii)过滤掉因加密而出现的乱码dll,比如’\xd5b\x’、’*invalid*’等;

iii)对过滤之后的dll序列,采用模糊匹配方式进行归类,比如大小写归类及名称关键字模糊匹配归类,如图6所示。其中,mfc*.dll系列dll均为microsoftmfc程序库文件,jv*d7r.bpl系列dll则是隶属于jedi可视化组件库(visualcomponentlibrary)。对不同类型dll的使用也可以反映出该样本的行为意图。

iv)以精简之后的dll序列作为特征向量,以该dll在该样本中出现的次数作为特征值,生成样本的特征矩阵。

c)高层行为特征

高层行为是指代码样本在运行过程中所表现出来的高层次行为,主要包括:(1)发生的文件操作行为;(2)发生的注册表操作行为;(3)网络行为,详细信息如表1所示。

表1恶意代码高层行为特征

(4)基于机器学习的检测

此阶段应用常用的机器学习算法(如随机森林、决策树、朴素贝叶斯等),使用上面步骤构建的特征向量矩阵,开展自动化的检测。

(5)恶意性部位定位

基于综合画像的三个组成部分,本发明构建了一个丰富的特征空间,可克服原有检测方法存在的不足,实现准确的检测效果。

此外,为评估三个画像方面的恶意性程度,本发明计算每一个特征的信息增益并进行排序,由此可建立起一个基于信息增益排列的特征序列。基于按照信息增益排序的特征序列,我们按照特征重要性顺序选定一定数量的特征生成新的特征向量。验证证明,按照这种方式选取的特征子集同样可以达到理想的检测效果。由此证明,按照特征重要性从综合画像集合中选取的特征子集可以实现对恶意代码的准确刻画。

下面,基于上述按照重要性选取的特征子集,实现对代码恶意性部位的定位。在此特征子集中,分别统计三个画像部分被选中特征的数目,计算三个画像部分特征在特征子集中所占的比例,比例高的画像部分即认为其恶意性更明显。按照此设计,可将恶意性部位定位过程形式化描述如下:

(i)首先,为三个画像部分分别定义元素集合,即每个画像部分所包含的特征元素。分别表示如下:

s1={f′1,f′2,f′3,…,f′m1},(f′i(1≤i≤m1)表示画像部分1中包含的特征元素)

s2={f″1,f″2,f″3,…,f″m2},(f″j(1≤j≤m2)表示画像部分2中包含的特征元素)

s3={f″′1,f″′2,f″′3,…,f″′m3},(f″′k(1≤k≤m3)表示画像部分3中包含的特征元素)

画像部分1、2、3即为基本结构画像、底层行为画像和高层行为画像。

(ii)针对第i步构建的综合画像特征集合s=s1∪s2∪s3,分别计算各特征的信息增益作为其特征贡献度,并按照信息增益对特征进行由大到小的排序。按照能够达到预定检测效果的方式,按照特征贡献度从综合画像特征集合中选取若干特征组成检测所用的特征空间子集开展实际检测。此检测过程可形式化描述如下:

(fl(1≤l≤n)表示检测过程中所采用的特征集合中的特征元素)

检测特征空间子集表示为:

s′=s1′∪s2′∪s3′

其中,s1′、s2′和s3′分别表示从3个画像部分中所选取的特征元素所形成的子集。

(iii)评估第ii步中所选各子集在综合画像特征集合中所对应的各画像部分特征所占比例的大小,占比较高的画像部分即认为其恶意性更明显,由此实现对各画像部分恶意性的评判,最终实现对程序恶意性部位的定位。其形式化描述如下:

ifsk′/sk=max(si′/si)(i∈[1,3])

thensk=postarget

即认为第k个部位的恶意性最明显,也即是该程序的恶意性部位。

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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