一种恶意代码家族分类方法与流程

文档序号:19635440发布日期:2020-01-07 11:57阅读:1231来源:国知局
一种恶意代码家族分类方法与流程

本发明涉及网络与信息安全技术领域,尤其涉及一种恶意代码家族分类方法。



背景技术:

恶意代码(maliciouscode,也称作malware/恶意软件),指为达到恶意目的专门设计的程序、代码或指令,指一切意在破坏计算机、移动终端或网络系统可靠性、可用性、安全性或者消耗系统资源的恶意程序。恶意代码主要的存在形式包括:恶意数据文档、恶意网页、内存代码、可执行程序和动态链接库等。机器学习作为人工智能的一个重要分支已渗透到很多领域,深度学习是一种实现机器学习的重要技术,深度学习是利用深度神经网络来解决特征表达的一种学习过程。卷积神经网络cnn(convolutionalneuralnetwork)是深度学习中经典的模型之一,可应用于图像处理和图像识别等领域,在图像分类上展现出了极好的分类特性及良好的应用前景。

在过去十几年时间里,针对恶意代码家族的自动标注方法已经取得了一定成果,研究人员开发出了多种恶意代码家族自动标注系统。l.nataraj等人(malwareimage:visualizationandautomaticclassification[a].proceedingsofvizses[c],1011)首次将二进制文件以可见灰度图的形式表示,利用图像的纹理特征对恶意代码进行聚类。何源浩等人(一种基于深度学习的恶意代码样本分类方法及系统,1016,10,专利)对恶意代码样本进行反汇编得到汇编代码;然后基于十六进制码与图像灰度值的对应关系,将汇编代码转化为图像样本数据;将所述图像样本数据输入预先训练得到的卷积神经网络,得到恶意代码样本分类。何帅等人(基于恶意代码图像指纹的恶意代码家族标注方法,通信技术,1017,3)该方法将恶意代码反汇编文件绘制成图像,提取图像的全局指纹gist特征描述符和局部指纹sift特征点,通过bow模型对局部特征进行优化,最终获取图像指纹,并采用随机森林的方法实现恶意代码家族标注。通过对现有文献进行研究,发现每个文献存在如下一种或几种缺陷:(1)直接从恶意代码样本库获取恶意代码样本,对获取恶意代码样本进行分类,后续不能自动丰富更新恶意代码库,不能实时更新恶意代码家族分类特征库;(2)没有利用多线程爬虫算法通过多个提供恶意代码的网站抓取恶意代码样本,导致获取恶意代码样本的范围小、效率低;(3)没有利用卷积神经网络进行深度学习,或者利用了卷积神经网络进行深度学习但是学习的层数及大小不太合适恶意代码分类,导致恶意代码分类方法效率较低、准确率不高。



技术实现要素:

本发明的目的是提供一种能克服上述缺陷、具有对恶意代码进行分类功能的一种恶意代码家族分类方法。其技术方案为采用以下步骤:

1)利用多线程爬虫算法,从网站抓取恶意代码样本,放入恶意代码样本库,多线程爬虫算法采用并发线程池编程模板threading中的thread类,再重写run方法,线程自动运行run方法中的代码实现封装,采用threading.condition实现线程高效上锁和解锁操作;

2)对步骤1)抓取的每一个恶意代码样本进行反汇编生成二进制码文件,放入扩展名为bytes的文件中;

3)通过b2m算法,将每一个二进制码文件生成恶意代码图像,并进行标准化、归一化预处理,放入恶意代码图像库;

4)批量化读取恶意代码图像库中的所有恶意代码图像,再利用gist算法,调用matlab软件接口提取恶意代码gist图像全局特征,放入gist全局特征库;

5)从gist全局特征库获取全局特征,使用优化卷积神经网络模型进行深度学习训练,优化卷积神经网络采用多通道卷积技术和批量归一化算法,卷积神经网络优化是在单个卷积层中加入若干个不同尺寸的过滤器,生成更具多样性的featuremap特征;批量归一化算法采用bn算法,训练后得到恶意代码家族种族分类,放入恶意代码家族分类特征库;若要自动更新恶意代码家族分类特征库转步骤1),否则结束。

所述的一种恶意代码家族分类方法,步骤1)中,从多个提供恶意代码网站发布站点抓取恶意代码样本,属于网络频繁型读取数据,针对网络频繁型读取数据操作,采用多线程爬虫算法提高系统的效率。从多个网站获取恶意代码样本,就使恶意代码样本量丰富、样本数据大,更适合采用卷积神经网络进行训练。爬虫算法采用python语言编程,利用并发的线程池模板实现多线程,线程数量与服务器核数及每个物理核上的逻辑processor一致,这样为了提高吞吐量,线程数应该设置在服务器核数与服务器核数乘以逻辑processor数之间。多线程的实现通过继承多线程编程模块threading中的thread类,再重写run方法,线程就会自动运行run方法中的代码,能够让线程代码更好的封装;线程上锁和解锁操作使用threading.condition,能避免做一些无用的上锁和解锁操作,在没有数据的时候处于阻塞等待状态,而一旦有合适的数据,就使用notify的相关函数通知其他处于等待状态的线程工作,从而提高程序的性能;由此完成从网站抓取恶意代码样本文件,并放入恶意代码样本库。

所述的一种恶意代码家族分类方法,步骤2)中,运行ida反汇编软件打开恶意代码样本库中每一个可执行文件,反汇编生成汇编码文件以及二进制机器码文件,为每一个可执行文件创建一个名为主文件与原文件名相同、扩展名为bytes的文件。

所述的一种恶意代码家族分类方法,步骤3)中,用b2m算法读取bytes二进制机器码文件,以8bit作为一个单位,取值在0-255,对应灰度图的一个像素点,图像宽度固定,高度为整个文件大小与宽度的比值,让每一个文件都生成一个固定宽度的恶意代码图像文件。恶意代码图像文件标准化image_standardization计算利用公式:其中,μ是图像像素点的均值,x表示图像矩阵,其中adjust_stddev的计算利用公式:其中,α表示标准方差,n表示图像的像素数量。接着进行图像归一化处理,归一化处理norm计算利用公式:其中,xi表示图像在第i个点处的像素点值,max(x)、min(x)分别表示图像像素的最大值和最小值,公式的前半部分使图像的像素点范围由[0,255]转化为[0,1]之间的实数,而后再乘以255.0,恢复为正常像素点范围[0,255]。将预处理后的图像文件进行存放,形成恶意代码图像库。

所述的一种恶意代码家族分类方法,步骤4)中,利用matlab的gist算法并结合python语言,将恶意代码图像库进行批量化处理操作;批量化处理方法为:读取步骤3)中的恶意代码图像库中的所有恶意代码图像,将图像路径传递给命令中img_path参数,而后利用gist算法完成所有图像文件的全局特征提取,并放入gist全局特征库。采用python语言进行批量化处理操作,调用matlab的接口,直接在命令行中运行matlab-nojvm-nosplash-r“get_gist(‘img_path’);”,其中img_path为要输入图像的路径。图像全局特征包括:纹理特征、形状特征和空间关系特征。采用全局特征信息对其场景进行识别和分类,实现快速场景识别和分类。采用gist算法提取图像的全局特征,具体方法为:假设待提取特征的恶意代码图像为f(x,y),首先,将恶意代码图像划分为n×n的网格,每个网格表示一个子区域,子区域的个数是n×n,用滤波器g(x,y)对子区域进行卷积滤波;然后在每个网格内计算每个通道的平均能量得到特征,将每个网格的特征级联,就得到恶意代码图像的gist全局特征gi(x,y),gi(x,y)的计算利用公式:其中,cat表示级联运算,*为卷积运算,i的取值为1~n×n,m、l分别表示滤波尺度和方向数,c等于滤波尺度和方向数的乘积。

所述的一种恶意代码家族分类方法,步骤5)中,优化卷积神经网络模型输入形状为32×16×1,层次训练步骤如下:第一层卷积核为5×5,将输入的1通道转为32通道;第二层使用批量归一化bn算法,反向计算时参照的样本分布就会与正向计算时的数据分布一致,并对权重进行调整,最大限度的保证每次的正向传播输出在同一分布上,这样反向计算时参照的样本分布就会与正向计算时的数据分布一致,保证了分布的统一,对权重的调整更加有意义;第三层为relu激励层;第四层是卷积核形状为2×2的最大池化层;第五层为两个卷积核并行的卷积层,两个卷积核形状分别为3×3和5×5,使用多通道卷积技术,在单个卷积层中加入若干个不同尺寸的过滤器,生成多样性featuremap特征,通过优化卷积核技术,如将一个3×3的过滤器裁剪成3×1和1×3两个等效过滤器,分别对原有输入进行卷积操作,提高运算速度;第六层分别对第五层两个卷积操作进行批量归一化处理;第七层为两个卷积的relu激励层;第八层使用concat函数将两个卷积操作后的输出合并在一起;第九层是卷积核形状为2×2的最大池化层;第十层输出1024节点的全连接层;第十一层为relu激励层;第十二层为dropout层,随机选择一定比例的数据丢弃,降低对小概率异常数据的学习机会,丢弃的比例范围为1/1000~1/10为宜;第十三层为k个节点的全连接层,最后归为k类;第十四层为softmax层。将采用优化卷积神经网络模型训练后得到的恶意代码家族种族分类结果,放入恶意代码家族分类特征库。

本发明与现有技术相比,其优点在于:

1)从多个网站获取恶意代码样本,就使恶意代码样本量丰富、样本数据大,更适合采用卷积神经网络进行训练。针对网络频繁型读取数据,爬虫算法采用并发的线程池模板实现多线程,提高了抓取恶意代码的效率;利用threading多线程编程模块中的thread类,再重写run方法,线程就会自动运行run方法中的代码,能够让线程代码更好的封装;使用threading.condition能避免做一些无用的上锁和解锁操作,由此提高程序的性能。

2)优化卷积神经网络进行深度学习使之更加合适恶意代码分类,提高恶意代码分类方法效率和准确率;使用多通道卷积技术,在单个卷积层中加入若干个不同尺寸的过滤器,使生成的featuremap特征更加多样性;使用批量归一化算法(bn算法),最大限度的保证每次正向传播输出在同一分布上,这样反向计算时参照的样本分布就会与正向计算时的数据分布一致,对权重的调整更加有意义。

3)实时利用多线程爬虫算法抓取新的恶意代码,自动识别恶意代码家族种类或者重新利用优化卷积神经网络模型进行训练产生新的恶意代码家族种类,同时实时更新恶意代码家族分类特征库,恶意代码家族分类特征库的不断扩大,又进一步提高了恶意代码家族分类的准确性。

附图说明

图1是本发明一种恶意代码家族分类方法流程图;

图2是本发明所用优化卷积神经网络层次结构图;

图3是本发明训练过程准确率变化图;

图4是本发明训练过程损失函数变化图;

图1中:101为利用爬虫算法抓取恶意代码样本文件,102为利用反汇编生成bytes文件,103为生成恶意代码图像库,104为构建gist全局特征库,105为通过卷积神经网络训练后构建恶意代码家族分类特征库,106为判断是否进行恶意代码家族分类特征库的更新,107结束。

具体实施方法

本发明给出了一种恶意代码家族分类方法实施例,为使本技术领域人员更好地理解本发明实施例中的系统架构和技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图并通过2个实施例对本发明中的技术方案作进一步详细说明:

实施例1:恶意代码家族分类

步骤1),爬虫算法抓取恶意代码样本文件101,利用多线程爬虫算法从如下网站抓取恶意代码样本文件:https://github.com/ytisf/thezoo/、https://www.cert.org.cn/、https://www.hybrid-analysis.com/、http://83.133.184.251/virensimulation.org/、https://www.kaggle.com/c/malware-classification/、http://www.virusign.com/、https://forums.malwarebytes.com/forum/44-research-center/、https://malware.lu/、http://malc0de.com/database/、http://vxvault.net/virilist.php、https://dasmalwerk.eu/,并放入恶意代码样本库。具体实施为:

爬虫算法采用python语言编程,利用并发的线程池模板实现多线程;多线程的线程数量与服务器核数及每个物理核上的逻辑processor一致,本例中采用的服务器核数是40,且每个物理核上有2个逻辑processor,线程数为40;多线程的实现通过继承多线程编程模块threading下的thread类,再重写run方法,线程自动运行run方法中的代码;采用threading.condition实现上锁和解锁操作。

步骤2)反汇编生成bytes文件102,具体实施为:运行ida反汇编软件并打开步骤1)抓取的每一个恶意代码样本可执行文件,反汇编生成汇编码文件以及二进制机器码文件,创建一个名为主文件与原文件名相同、扩展名为bytes的文件。

步骤3)生成恶意代码图像库103,具体实施为:针对每一个bytes文件都生成一个固定宽度的恶意代码图像文件,利用公式对恶意代码图像文件标准化,其中μ是图像像素点的均值,x表示图像矩阵,其中式中α表示标准方差,n表示图像的像素数量;然后利用公式对标准化后的恶意代码图像文件进行图像归一化处理,其中xi表示图像在第i个点处的像素点值,max(x)、min(x)分别表示图像像素的最大值和最小值,公式的前半部分将图像的像素点范围由[0,255]转化为[0,1]之间的实数,将预处理后的恶意代码图像文件进行存放。

步骤4)构建gist全局特征库104,具体实施为:批量读取步骤3)恶意代码图像库103中的所有恶意代码图像,将图像路径传递给命令中img_path参数,而后利用gist算法完成所有图像文件包括纹理特征、形状特征和空间关系特征的全局特征提取,放入gist全局特征库,特征提取具体实施为:先将恶意代码图像划分为n×n的网格,每个网格表示一个子区域,子区域的范围个数是n×n,用滤波器g(x,y)对子区域进行卷积滤波;然后利用公式将每个网格的特征级联,得到恶意代码图像的gist全局特征gi(x,y),其中cat表示级联运算,*为卷积运算,i的取值为1~n×n,m、l分别表示滤波尺度和方向数,c等于滤波尺度和方向数的乘积。

步骤5)卷积神经网络训练后构建恶意代码家族分类特征库105,具体实施为:恶意代码家族分类采用优化卷积神经网络,层次结构如图2,优化卷积神经网络模型输入形状为32×16×1,层次训练步骤如下:第一层卷积核为5×5,将输入的1通道转为32通道;第二层使用批量归一化bn算法,反向计算时参照的样本分布就会与正向计算时的数据分布一致,并对权重进行调整,最大限度的保证每次的正向传播输出在同一分布上;第三层为relu激励层;第四层是卷积核形状为2×2的最大池化层;第五层为两个卷积核并行的卷积层,两个卷积核形状分别为3×3和5×5,然后进一步将3×3的过滤器裁剪成3×1和1×3两个等效过滤器,将5×5的过滤器裁剪成5×1和1×5两个等效过滤器;第六层分别对第五层两个卷积操作进行批量归一化处理;第七层为两个卷积的relu激励层;第八层使用concat函数将两个卷积操作后的输出合并在一起;第九层是卷积核形状为2×2的最大池化层;第十层输出1024节点的全连接层;第十一层为relu激励层;第十二层为dropout层,随机的选择一定比例数据丢弃,丢弃的比例范围为1/1000~1/10为宜,本例丢弃的比例为1/100;第十三层为k个节点的全连接层,最后归为k类;第十四层为softmax层。将采用优化卷积神经网络模型训练后得到的恶意代码家族种族分类结果,放入恶意代码家族分类特征库,实现恶意代码家族种族分类。

使用google公司的开源tensorflow框架,整个训练过程可视化显示,训练过程准确率(accuracy)变化如图3,损失函数(loss)变化如图4。

实施例2:恶意代码家族分类特征库更新

在已经创建了恶意代码家族分类特征库的基础上,执行步骤1)~步骤5)。

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