本篇笔记是基于阅读《基于参数优化元学习和困难样本挖掘的小样本恶意软件分类方法》,作者王方伟,柴国芳,李青茹,王长广。
一些简单定义
恶意软件:能够影响系统的完整性、保密性和功能性的恶意代码。根据其功能不同可分为蠕虫、shell、木马、病毒等。通过代码变换、代码插入、子程序重排等方法可构建变种。
特征检测技术:一种基于特征匹配的恶意软件检测方法,它通过比对样本中的特定代码或文件的“指纹”和已知的病毒特征来进行判断。特征检测技术依赖已知病毒特征库,对结合多态等技术的恶意软件检测有一定局限性。
静态分析:通过对恶意软件二进制文件进行反汇编后进行分析,无需运行代码。
动态分析:通过在虚拟封闭隔离环境中运行恶意软件并观察其在系统上的行为。
灰度图:将一个恶意软件的二进制位字符串拆分为多个子字符串,每个子字符串的长度为8位。这些子串中的每一个子串都可以看作一个像素。根据指定的宽度,该一维数组可以被视为具有一定宽度的二维矩阵。最后,恶意代码矩阵被解释为灰度图像。
席卷神经网络(CNN):其本质是一个多层感知机,其所采用的局部连接和权值共享的方式一方面减少了权值的数量使得网络易于优化;另一方面降低了模型的复杂度、减小了过拟合的风险。现代表带有卷积结构的深度神经网络,卷积结构可以减少深层网络占用的内存量。
一些对比
基于机器学习的恶意软件分类:
1.提取GIST(generalized search trees)特征,使用K近邻分类技术进行分类,该技术在包含25类的数据集实验,准确率为0.9708。
2.提取GIST(generalized search trees)特征,使用人工神经网络(artificial neural network,ANN)进行分类,该技术在8类1719个样本上实验,准确率为0.9800;在24类3131个样本上实验,准确率为0.9630。
3.使用主成分分析(principal component analysis,PCA)技术进行特征提取,用K最近邻分类算法,在8类10000个样本上实验,准确率为0.9600。
上述分类方法在对恶意软件进行纹理分析时需要消耗大量时间。
基于深度学习的恶意软件分类:
1.使用卷积神经网络(convolutional neuralnetworks,CNN)结构的模型在数据集 Malimg和Microsoft Malware进行分类,其准确率分别为0.985 2和 0.999 7。
2.使用循环神经网络(recurrent neural network,RNN)提取恶意软件行为特征,使用蝙蝠算法来处理数据不平衡,并使用提取的特征训练过的CNN来分类,在25类9339个样本上准确率为 0.9450。
3.利用不同的CNN提取不同的空间特征,然后构建一个混合的特征空间,再用支持向量机进行分类,在 BIG-2015数据集上进行实验,准确率为 0.9756。
4.将二进制执行文件转化为彩图并使用数据增强处理数据不平衡问题,微调已经训练好的 CNN模型检测和分类恶意软件。该方法在 Malimg 数据集9435个样本上的准确率为 0.9882。
该文方法
烦躁,不想搞,哈哈。但还是要弄!!!加油!!!!
本文主要分三个步骤:恶意软件预处理,模型训练,模型测试。
恶意软件预处理
将二进制文件拆分成多个8位的子字符串,形成高度不同的矩阵,然后将二维矩阵解释成灰度图。为了方便数据处理,加快实验速度,需要将灰度图归一化,都为80×80像素。归一化还能降低图像在降维过程中丢失一些重要特征的风险。
模型训练
这个,我看不懂,但是这个图挺好懂的,图自论文。
模型测试
好,也是图,一样图自论文。
实验结果及分析
该文章模型使用Malimg数据集和BIG-2015数据集进行测试与统计。Malimg数据集有25个家族,9339个样本;BIG-2015数据集有9个家族,21741个样本。该文章使用浅层神经网络作为目标模型。
元学习是通过多个任务训练模型后,让模型有一个比较好的初始参数。如果有新任务要进行,那么就只需要微调参数就能让模型更快适应新任务。
……(再次编辑这个已经是过了几天了,决定先把前面的笔记发了先)