基于协同学习的可视化恶意软件检测方法转让专利
申请号 : CN202110775119.6
文献号 : CN113221115B
文献日 : 2021-09-17
发明人 : 陈文 , 黄登 , 高覃
申请人 : 四川大学
摘要 :
权利要求 :
1.一种基于协同学习的可视化恶意软件检测方法,其特征在于,包括初始化过程和协同训练过程;其中:
所述初始化过程具体包括:
(1)软件可视化:当得到软件的二进制文件后,首先对每个二进制文件进行读取,得到每个二进制文件所对应的二进制字符串,然后将得到的二进制字符串组成二维矩阵,再将所述二维矩阵中的数值转化成像素值,并将每个像素值按照由黑至白过渡的颜色拼接成软件样本的灰度图像;
(2)特征提取:提取所述软件样本的特征,用于在不同的特征视图上训练多个不同的分类器,实现多分类器协同的恶意软件检测;其中,提取的特征包括:软件样本灰度图像局部特征视图 、软件样本灰度图像全局特征视图 和软件样本的行为特征视图 ;
所述的协同训练过程具体包括:(3)多分类器新样本协同训练标记:在训练的初始化阶段,利用少量有标记软件样本,在三个不同的特征视图 下分别训练三个分类器 ;
之后在迭代训练过程中,对于所得到的分类器 ,由另两个分类器 , 为其产生更新样本 ,且 : 和 随机从未标记软件样本集U中抽取软件样本进行标记,其中 和 标记结果相同的软件样本集合 被认为具有较高置信度,在分类器 所在的视图 中对 中的软件样本 进行特征提取,并将提取后的特征连同标记的 或 作为新的有标记软件样本加入分类器 的新标记软件样本集 ,用于 的更新训练;
所述的协同训练过程还包括:
新标记软件样本的有效性评估:将多分类器新样本协同训练标记过程中标记错误的软件样本视作样本噪声,利用噪声学习理论,对新标记软件样本的有效性进行评估,只有通过评估的软件样本才能最终用于分类器的更新;
新标记软件样本的有效性评估具体包括:设训练样本序列包含 个软件样本,其中协同标记的样本噪声率,即错误率为 ,当 满足 时,有 ,其中,为置信度参数,表示分类器 的分类误差上限,是软件样本的类别数目, 反映了分类器 和理想分类器 的均衡差别的概率之和;
在给定置信度参数的情况下,需满足的条件可变形为式(1):(1)
对式(1)左侧进行展开,可得:(2)
从而得到:
(3)根据式(3),软件样本数量 和样本错误率需满足式(4): (4)令常数 ,其中为令式(4)取等号的系数,则可得: (5)由式(5)可知,误差上限 的平方与 成反比;
设 为少量的已标记样本集,为第轮新标注的样本集,对于分类器 ,和 ,分别代表第轮新标记样本集 , ,第轮已标记样本总数为 ,软件样本协同标记错误率为 ,使用第轮的 个样本对分类器 进行更新训练, ,若要保证更新训练后分类器的性能较上一轮训练有所提升,则需保证满足式(6): (6)
结合式(5)和式(6)可知:若式(6)成立,则第轮的 个样本对分类器 , 进行训练后,的分类误差上限 将较 轮更低;若式(6)不成立,则需要从未标记软件样本集U中重新采样进行协同标记;设第轮样本协同标记过程中,和 在已标记软件样本集 和新标记软件样本集 上的错误率分别为 和 ,则软件样本协同标记错误率 如式(7)所示: (7)为保证训练过程持续降低分类误差上限 ,将式(7)代入式(6),可得: (8)
通常在已标记软件样本上的分类错误率 ,可忽略不计,由此简化式(8)得到: (9)即:
(10)将式(10)作为新标记软件样本集 是否用于分类器更新训练的有效性评估条件;
采用十折交叉验证法,每轮迭代训练前从已标记软件样本集 中随机选出1/10的样本加入未标记软件样本集U: , ,利用 中的软件样本对第轮协同标记的错误率 进行估计;
由于未标记软件样本集的选取具有随机性,当 时,需要有 ,式(10)较难满足,导致无法选出符合条件的协同标记软件样本而提前终止迭代更新过程;故限定两轮协同标记的软件样本规模大小一致,即 ,将式(10)的评估条件进行扩展,得到式(11),即:
(11)通过固定每轮协同标记的软件样本规模,令 ,对软件样本的有效性评估条件进行简化;
当需要更多的已标记软件样本用于后继的分类器训练,继续放宽软件样本的有效性评估条件如式(12)所示:
(12)
其中,为松驰因子;
在第轮的迭代训练过程中,依次令 , ,对 中的软件样本进行有效性评估,只有满足式(11)或式(12)条件的新标记软件样本才能对分类器 进行更新训练,直至达到给定的迭代更新训练次数,或无法从未标记软件样本集U中找出符合更新条件的软件样本;
(4)投票检测过程:对于协同训练结束后得到的三个分类器 ,和 ,采用投票机制对恶意样本的进行融合标记。
2.根据权利要求1所述的基于协同学习的可视化恶意软件检测方法,其特征在于,在软件可视化过程中,所述二进制文件中每个所读取的字符表示为8位的无符号变量,所述软件样本灰度图像的像素范围为相应8位二进制的范围[0,255],其中:0代表黑色,255代表白色,中间为灰色,而且针对不同大小的软件样本灰度图像设定不同的灰度图像高度。
3.根据权利要求1所述的基于协同学习的可视化恶意软件检测方法,其特征在于,特征提取过程中,提取软件样本灰度图像局部特征视图 具体为:将软件样本的灰度图像投入旋转不变均匀模式的局部二值模式LBP算子进行运算得到相应的LBP纹理特征向量,作为描述软件样本的局部特征;
提取软件样本灰度图像全局特征视图 具体为:将软件样本划分成16*16的网格,并对每个网格计算平均灰度强度和灰度的平均方差,作为描述软件样本的全局特征;
提取软件样本的行为特征视图 具体为:对软件样本进行逆向分析,提取其包含的系统调用序列 ,对每一个 函数进行数值编码,从而将序列 转换为对应的编码序列 ,直接对编码序列 进行分段切分,形成分段输入向量作为软件样本的行为特征;或者将编码序列 中典型的异常 函数调用序列片段出现的频率作为软件样本的行为特征。
说明书 :
基于协同学习的可视化恶意软件检测方法
技术领域
背景技术
开始对恶意软件的检测进行深入研究,现有的恶意软件检测包括静态检测和动态检测两类
方法,目前应用广泛的检测方式包括基于签名的检测、基于行为的检测和启发式扫描等。
软件传播。同时,在实际的检测场景下,由于恶意样本的特征标记需要经过大量的人工解码
和分析,导致获取有标记的恶意样本十分困难。而大量的无标记软件样本因缺乏标记而无
法被用于传统的恶意软件检测模型训练过程。
大量无标记的恶意样本无法被用于检测模型训练过程而遗留闲置。因此,设计新型的恶意
软件检测方法,避免检测模型对大量人工标记样本的依赖问题对于恶意软件检测具有重要
意义。
发明内容
同的图像特征并结合软件行为特征,进而形成多特征视图;然后在多特征视图下,利用少量
的有标记样本和大量无标记样本,利用多个分类器进行基于协同学习的恶意软件检测建
模,以持续优化模型的恶意软件检测能力;本发明能够利用图像特征的旋转、平移不变性提
升模型对变种恶意软件的检测能力,此外,利用大量未标记样本进行检测模型持续迭代训
练,减少了对人工标记样本的依赖。
再将所述二维矩阵中的数值转化成像素值,并将每个像素值按照由黑至白过渡的颜色拼接
成软件样本的灰度图像;
局部特征视图 、软件样本灰度图像全局特征视图 和软件样本的行为特征视图 ;
记,其中 和 标记结果相同的软件样本集合 被认为具有较
高置信度,在分类器 所在的视图 中对 中的软件样本 进行特征提取,并将提取后的特征
连同标记的 或 作为新的有标记软件样本加入分类器 的新标记软件样本集 ,用于
的更新训练;
围[0,255],其中:0代表黑色,255代表白色,中间为灰色,而且针对不同大小的软件样本灰
度图像设定不同的灰度图像高度。
运算得到相应的LBP纹理特征向量,作为描述软件样本的局部特征;
为对应的编码序列 ,直接对编码序列 进行分段切分,形成分
段输入向量作为软件样本的行为特征;或者将编码序列 中典型的异常 函数调用序列片
段出现的频率作为软件样本的行为特征。
通过评估的软件样本才能最终用于分类器的更新。
差上限,是软件样本的类别数目, 反映了分类器 和理想分类器 的均衡差别的概
率之和;
记错误率为 ,使用第轮的 个样本对分类器 进行更新训练, ,若要保证更新训练
后分类器的性能较上一轮训练有所提升,则需保证满足式(6):
中重新采样进行协同标记;设第轮样本协同标记过程中,和 在已标记软件样本集 和新
标记软件样本集 上的错误率分别为 和 ,则软件样本协同标记错误率 如式(7)所示:
软件样本对第轮协同标记的错误率 进行估计。
本而提前终止迭代更新过程;故限定两轮协同标记的软件样本规模大小一致,即 ,
将式(10)的评估条件进行扩展,得到式(11),即:
达到给定的迭代更新训练次数,或无法从未标记软件样本集U中找出符合更新条件的软件
样本。
特征视图下训练不同的分类器;多个分类器通过协同训练,新标记样本的有效性评估,迭代
实现了多个分类器的协同训练更新;本发明能够使用少量已标记的软件样本特征进行建
模,并通过大量未标记样本不断优化模型的检测性能,使恶意软件检测模型具有了自学习,
自适应的能力,从而减少了对于人工软件样本标记的依赖,解决了恶意软件检测中有标记
样本收集困难,导致基于机器学习的恶意软件分类模型难以有效训练的问题。
附图说明
具体实施方式
分类器新样本协同标记,4、新标记样本有效性评估。
无符号变量。然后将得到的二进制字符串组成二维矩阵;将二维矩阵中的数值转化成像素
值,并将每个像素值按照由黑至白过渡的颜色拼接成灰度图像。其中图像像素的取值范围
设置为相应8位二进制位的取值范围[0,255],0代表黑色,255代表白色,中间为灰色。同时,
针对不同大小的恶意样本设定不同的灰度图像高度,以防止由于图像过长或过宽导致提取
出含有噪声的特征。
纹理特征向量作为描述图像样本的局部特征。
序列 。优选的,直接对 进行分段切分,形成分段输入向量作为
软件的行为特征;也可以将 中典型的异常 调用序列片断出现的频率作为软件的行为特
征。
训练三个不同基本分类器 。
和 标记结果相同的样本集合 被认为具有较高置信度,在
分类器 所在的视图 中对 中的样本 进行特征提取,并将提取后的特征连同标记 (或
)作为新的有标记样本加入分类器 的新标记样本集 ,用于 的更新训练。
(3)标记错误的样本视作样本噪声,利用噪声学习理论,对新标记样本的有效性进行评估,
只有通过评估的样本才能最终用于分类器更新。
其中,为置信度参数,表示分类器 的分类误差上限,是样本的类别数目。 反映了
分类器 和理想分类器 的均衡差别(两者在样本标记上的不一致)的概率之和。
错误率为 。使用第轮的 个样本对分类器 进行更新训练, ,若要保证更新训练后
分类器的性能较上一轮训练有所提升,则需保证满足式(6):
中重新采样进行协同标记。设第轮样本协同标记过程中,和 在已标记软件样本集 和新
标记软件样本集 上的错误率分别为 和 ,则软件样本协同标记错误率 如式(7)所示:
,利用 中的软件样本对第轮协同标记的错误率 进行估计。
示。
的迭代更新训练次数,或无法从未标记样本集U中找出符合更新条件的样本。
以上恶意软件数据集可以公开下载。
Challenge数据集(简称为Microsoft数据集)由Kaggle于2015年宣布的Microsoft恶意软件
分类挑战所提出。Microsoft数据集包含约0.5 TB的恶意样本反汇编文件和字节代码,涵盖
了来自9个不同恶意软件家族的21741个恶意软件样本,其中每个恶意软件样本有两个文
件,分别为样本的十六进制代码和反汇编代码,且为了保证这些文件的安全性,微软删除了
PE头。
个,其余的10873个样本用于测试;表2显示了Malimg数据中9339个属于25种不同家族的恶
意软件的统计数据。
本族就占总体的48.6%,而其余的23种样本仅占51.4%;Microsoft数据集中,9个样本族中的
Simda样本仅占总体的0.4%。对于有监督学习算法,使用这种不均衡的恶意样本分布,往往
会因为过拟合的原因导致分类性能较差。
(KNN)。然后对3个分类器进行迭代的协同训练。训练结束后,在测试集上对不同类别的恶意
样本进行预测。
出,在初始总样本大小仅达到1800个时,由于样本量较低,所有的训练算法的分类效果均不
太理想。随着样本集规模的不断扩大,本实施例通过少量有标记样本和大量无标记样本的
协同训练,相对于其他检测模型,本实施例有效提升了恶意软件检测准确率。
到2200,2600和3000时,本发明的方法能够分别达到85.46%,90.62%和94.88%的准确率。如
图4和图5所示,在两种不均衡的数据集中,由于Malimg数据集中出现了少数恶意样本族样
本大小占比过高的情况,相比Malimg数据集,在Microsoft数据集产生的准确率的梯度曲线
更加平缓。在无标记样本数量超过3000时,本实施例在两种数据集上的融合分类准确率均
超过95%。相比其他分类算法,本发明的准确率有明显提升。这表明,经过分类器之间的协同
训练学习,本实施例能够不断提高恶意软件检测准确率。
来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保
护范围。