一种自动化恶意代码变种检测方法与流程

文档序号:15272645发布日期:2018-08-28 22:37阅读:281来源:国知局

本发明属于信息安全领域,尤其涉及一种恶意代码变种检测方法,属于恶意代码防护技术。



背景技术:

近年来,互联网恶意程序数量继续保持高速增长趋势,按其恶意行为进行分类,前三位分别是流氓行为类、恶意扣费类和资费消耗类。虽然在工业和信息化部的指导下,严格控制恶意程序传播的途径,但通过非正规平台途径传播恶意程序的数量还在继续增长。同时,恶意代码变种的数目急剧增长,恶意代码作者花费更多的时间在轻微改动或打包用以进一步传播以及规避检测。针对不同种类的恶意代码需要提供不同的切实有效的解决方案。否则,不仅不能快速有效的解决恶意代码反而因错误处理恶意代码而造成更大的损失。因此,恶意代码变种检测具有重要的研究意义。

恶意代码变种方向大致可以分为2类:一类是重用基础模块实现恶意代码变种,另一类是恶意代码混淆技术。恶意代码混淆技术,按照其实现原理可分为2类:一类是干扰反汇编,使反汇编不能够得到正确的分析结果,从而阻碍进步机理分析;另一类是使用指令,这类混淆技术通常采用加壳、垃圾代码插入、等价指令替换、寄存器重新分配及代码变换等方式,改变恶意代码的语法特征,隐藏其内部调用逻辑关系。

而针对以上的两种情况,恶意代码检测算法主要分为2类:基于恶意代码二进制的静态特征的静态检测和基于恶意代码运行时行为的动态检测。基于恶意代码静态特征的静态检测方法通过分析其pe文件结构、二进制字节码、反汇编后的代码、反汇编后系统调用等因素并利用基于学习的分类算法区分良性软件与恶意代码。但是,静态分析严重依赖反汇编技术,各种混淆技术可以阻碍反汇编分析,导致静态分析难以得到正确结果。基于动态特征的恶意代码检测方法主要原理是将待检代码放入一个沙箱或蜜罐中,通过检测目标程序运行过程的恶意行为来判断是否为恶意代码。但当前的动态分析技术多是采用行为序列的曼哈顿距离或加权曼哈顿距离进行检测,恶意代码可以使用系统调用重排和加入垃圾调用等方式增大行为之间的距离,进而绕过以行为序列为特征的检测方案。

通常,在恶意代码检测技术分为静态分析和动态分析的基础上,主流的恶意代码检测技术可分为4类:基于主动学习的检测方法、基于特征码的检测方法、基于行为特征的检测方法和基于语义的特征检测方法。

基于主动学习的恶意代码检测方法,该方法基于最小估计风险的策略,增量式地主动学习未知样本,不断完善恶意代码检测分类器,仅需要少量已知样本即可得到较理想的恶意代码检测效果。但是也存在主动学习步长的选取在一定程度上影响恶意代码检测效果以及少数恶意代码漏检的问题。基于特征码的恶意代码检测方法根据提取恶意代码二进制文件的形态特征,通过模式匹配的方式检测恶意代码。但是,当恶意代码经过简单变形或者混淆后,基于特征码的检测方法将不能正确识别该恶意代码。

基于行为特征的恶意代码检测方法,该技术将恶意行为用一组自定义行为特征编码表示,通过对程序行为抽象后匹配特征编码,一定程度上能够降低代码混淆的影响,但该方法仍然不足以解决等价行为替换、系统调用重排等方法造成的漏报或误报问题。基于语义的特征检测从语义角度抽取特征,通过静态分析恶意代码,结合指令语义信息,使用三元操作符构造特征向量来进行检测,该方法可有效对抗指令重排、垃圾代码插入、寄存器重分配等混淆技术的干扰。但存在对行为混淆技术的抗干扰能力较弱,且其匹配判定过程比较复杂。

但是,不论是基于恶意代码二进制的静态特征的静态检测还是基于恶意代码运行时行为的动态检测面对急剧增长的恶意代码变种数量的情况都很难满足企业以及国家对检测恶意代码变种速度的需求。因为,这两种方法都要求权威的开发人员提出合适恰当的静态特征或者动态特征。但是恶意代码编写者为了规避检测规则而应用了各种混淆方法或者入侵方法,使得恶意代码检测程序需要不断更新需要检测的静态特征或者动态特征。这将严重加大了恶意代码检测的时间消耗,也可能因为没能按时更新特征库而使恶意代码成功规避了检测。所以说,设计与实现一个自动化恶意代码检测系统变得尤为重要。



技术实现要素:

本发明在研究国内外恶意代码变种检测相关系统的基础上,在不影响恶意代码检测精度的基础上提高恶意代码变种检测的速度,综合运用系统工程理论与软件工程理论的原理和思想,采用面向对象的开发思想,将软件构件技术灵活运用于系统的设计与开发中,提高系统的可靠性、可扩展性和可维护性,研究并实现了功能完善的恶意代码变种检测系统,改善目前以人工选取恶意代码检测特征的方式,实现恶意代码变种检测自动化的设想。

本发明的主要目的在于提出了一种自动化的恶意代码变种检测系统,这是一整套完整的恶意代码变种检测平台,由客户端与服务器端构成,客户端与服务器端相互交互。本系统主要包括程序质量检测系统、数据库管理系统、恶意代码变种检测系统以及自动微调系统。程序质量检测系统负责检测程序是否是一个严格的可执行程序,数据库管理系统负责保存系统中每个步骤的实时信息,恶意代码变种检测系统负责对恶意代码按照恶意代码家族正确分类,自动微调系统负责微调恶意代码变种检测系统检测所需要的分类模型。这几个模型相互连接相互服务,共同组成自动化的恶意代码变种检测系统。

利用该检测系统实现的检测方法包括以下流程:

首先,将待检测程序送入程序质量检测系统,主要检测待检测程序是否是一个严格的能够执行的程序,具体需要验证程序的大小、后缀以及命名规则等简单特征。如果待检测程序没能通过程序质量检测系统则说明这不是一个严格的能够执行的程序,也就不需要继续进行恶意代码变种检测,直接退出恶意代码变种检测系统。

然后,通过程序质量检测系统的待检测程序将会保存在数据库中,同时将待检测程序交付恶意代码变种检测系统进行检测。1)将待检测代码的二进制文件通过恶意代码变种检测系统规定的相应方法映射为无压缩的灰度图像。2)对生成的无压缩的灰度图像进行检测数据预处理操作,主要包括去均值等操作。3)将处理好的图片输送到已经训练好的恶意代码变种检测模型中进行前向传播,通过softmax分类器得到检测结果,将检测结果保存在数据库中以及传输到客户端界面进行展示。

最后,如果在数据库系统中存放的新检测的恶意代码数量达到预定好的阈值,将触发数据库系统中设定好的触发器,自动微调系统开始进行工作。自动微调系统提出的初衷为了防止因为恶意代码编写者为了规避检测规则而应用了各种混淆方法或者新的入侵方法,使得恶意代码检测程序需要不断更新需要检测的静态特征或者动态特征,加大了恶意代码检测的时间消耗,或者是因为没能按时更新特征库而使恶意代码成功规避了检测现象的发生。

自动微调系统的操作步骤如下:

第一步,使用灰阶图像映射方法,将给定的恶意代码二进制文件,按照每八位顺序二进值组合成一个无符号空间矢量,按照图像设定的高度存储为一个二维数组并可视化为灰阶图像。

第二步,使用基于epoch的解决数据不均衡的方法解决数据过少以及数据不均衡的问题,避免出现过拟合以及训练不够泛化的问题。在训练过程中每个epoch按照权重对每个类别进行随机重采样,使训练过程每个epoch中的样本都能够被平均表示;根据重采样的权重附加给每个样本,然后按照权重比例从样本库中随机重采样一个epoch大小的样本集,以达到重采样epoch的数据相对均衡的结果。

第三步,通过使用修改过的面向灰度图像的卷积神经网络对上一步经过数据均衡之后的灰阶图像数据进行训练。微调使用的面向灰度图像的卷积神经网络需要保留原网络用来提取浅层特征的前几层网络,只修改最后几层参与训练用来选取恶意代码变种检测其决定性作用的特征,并重新训练分类器,最终输出一个用于恶意代码变种检测的判别的新模型。使用新模型替换恶意代码检测系统中的旧模型进行检测,避免漏检或者错检的现象发生。

与现有技术相比较,本发明具有如下有益效果。

1.一种自动化恶意代码变种检测系统。在研究国内外恶意代码变种检测相关系统的基础上,从在不影响恶意代码检测精度的基础上提高恶意代码检测速度的使命特点出发,综合运用系统工程理论与软件工程理论的原理和思想,采用面向对象的开发思想,将软件构件技术灵活运用于系统的设计与开发中,提高系统的可靠性、可扩展性和可维护性,研究并实现了功能完善的恶意代码变种检测系统,改善目前以人工选取恶意代码检测特征的方式,实现恶意代码变种检测自动化的设想。

2.本发明提出了程序质量检测系统。将待检测程序送入程序质量检测系统,主要检测待检测程序是否是一个严格的能够执行的程序,具体需要验证程序的大小、后缀以及命名规则等简单特征。如果待检测程序没能通过程序质量检测系统说明这不是一个严格的能够执行的程序,也就不需要继续进行恶意代码变种检测,直接退出恶意代码变种检测系统。

3.本发明提出了恶意代码检测系统。首先,将待检测代码的二进制文件通过恶意代码变种检测系统规定的相应方法映射为无压缩的灰度图像。其次,对生成的无压缩的灰度图像进行检测数据预处理操作,主要包括去均值等操作。最后,将处理好的图片输送到已经训练好的恶意代码变种检测模型中进行前向传播,通过softmax分类器得到检测结果,同时将检测结果保存在数据库中以及传输到客户端界面进行展示。

4.本发明提出了自动微调系统。自动微调系统提出的初衷为了防止因为恶意代码编写者为了规避检测规则而应用了各种混淆方法或者新的入侵方法,使得恶意代码检测程序需要不断更新需要检测的静态特征或者动态特征,严重加大了恶意代码检测的时间消耗,也可能因为没能按时更新特征库而使恶意代码成功规避了检测的现象的发生。

附图说明

图1自动化恶意代码变种检测系统的基本流程图;

图2系统设计模式图;

图3自动化恶意代码变种检测系统详细设计图;

图4对象关系映射设计图;

具体实施方式

为使本发明的目的、技术方案和特点更加清楚明白,以下结合具体实施方案,并参照附图,对本发明进行进一步的细化说明。自动化恶意代码变种检测系统的基本流程图如图1所示。

各个步骤解释如下:

1)提出了程序质量检测系统。程序质量检测系统主要检测待检测程序是否是一个严格的能够执行的程序,如果待检测程序没能通过程序质量检测系统,直接退出恶意代码变种检测系统。

2)提出了恶意代码变种检测系统。将待检测程序交付恶意代码变种检测系统进行检测。1)将待检测代码的二进制文件通过恶意代码变种检测系统规定的相应方法映射为无压缩的灰度图像。2)对生成的无压缩的灰度图像进行检测数据预处理操作,主要包括去均值等操作。3)将处理好的图片输送到已经训练好的恶意代码变种检测模型中进行前向传播,经过softmax分类器得到检测结果。

3)提出了自动微调系统。自动微调系统提出的初衷为了防止因为恶意代码编写者为了规避检测规则而应用了各种混淆方法或者新的入侵方法,使得恶意代码检测程序需要不断更新需要检测的静态特征或者动态特征,严重加大了恶意代码检测的时间消耗,也可能因为没能按时更新特征库而使恶意代码成功规避了检测的现象的发生。

实施方案

本节将详细介绍本发明的具体实施方案。实施环境为ubuntu14.04主机,8g内存,1t硬盘。开发环境为python3.5.3,后台数据库使用mysql数据库,恶意代码变种检测系统使用的检测模型是通过使用基于深度学习的恶意代码变种检测方法训练得到的模型。恶意代码变种检测系统的设计模式采用的是mvc模型,具体的设计模式实施图如图2所示。

mvc是一种软件设计典范。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。mvc的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。

自动化恶意代码变种检测系统详细设计图如图3所示。

首先,web服务器运行在python自带的asyncio以及aiohttp的基础之上。asyncio直接内置了对异步io的支持,asyncio的编程模型就是一个消息循环。从asyncio模块中直接获取一个eventloop的引用,然后把需要执行的协程扔到eventloop中执行,就实现了异步io。而aiohttp则是基于asyncio实现的简单http框架。但是aiohttp框架相对来说比较底层,编写一个url的处理函数比较麻烦,操作步骤繁琐并具有很多重复的工作。基于asyncio以及aiohttp,编写了一个异步高性能web服务器,主要为了减少一些不必要的重复工作,简化开发流程让使用者编写尽可能少的代码以及可以单独测试。

第一步,定义两个将一个函数映射为一个url处理函数get函数以及post函数,然后用requesthandler()来封装一个url处理函数,requesthandler目的就是从url函数中分析其需要接收的参数,从request中获取必要的参数,调用url函数,然后把结果转换为web.response对象。再编写一个add_routes函数,用来注册一个url处理函数,自动注册handler模块所有符合条件的函数。最后,在服务器中加入middleware和jinja2模板的支持。middleware是一种拦截器,一个url在被某个函数处理前,可以经过一系列的middleware的处理。jinja2是纯python编写的模板引擎,支持内联表达式和一个可选的沙箱环境。

然后,web框架使用的是基于协程的异步模型,在异步的协程中,不能调用普通的同步io操作,因为所有用户都是由一个线程服务的,协程的执行速度必须非常快,才能处理大量用户的请求。本发明设计实现了一种异步式的关系对象映射,使用aiomysql作为mysql数据库的异步io的驱动。创建了一个全局的连接池,每个http请求都可以从连接池中直接获取数据库连接。对mysql语句进行封装,其中select抽象出来select函数,而由于insert,update,delete三个函数的参数相似,可以抽象出一个公用的函数execute,返回一个整数表示影响的行数。

设计对象关系映射需要从上层调用者角度来设计,首先要定义的是所有orm映射的基类model。model从dict继承,所以具备所有dict的功能,同时又实现了特殊方法。最后为了完善orm以及便于查找实现了findall()以及findnum()等方法。具体的对象关系映射设计图如图4所示。

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