网络安全宣传周 | 基于机器学习的病毒分类与预测

  • A+
所属分类:逆向工程

10月12日~10月15日,白帽子社区围绕“网络安全为人民,网络安全靠人民”开展社区知识问答活动(题目见10月15日文章末尾 "阅读原文" )。本次活动采用积分制,积分总分:100分,最终积分达到80分及以上的答题赛参与者获得本次网络安全宣传周知识问答证书。


网络安全宣传周 | 基于机器学习的病毒分类与预测
网络安全宣传周特别栏目

网络安全宣传周 | 基于机器学习的病毒分类与预测

01
前述


随着计算机时代的快速发展,现阶段各种病毒,木马,蠕虫等也呈现出快速飞跃的趋势。从根本上来说,这些仅仅是一段恶意程序,但是带来的危害却是巨大的,可能是经济的损失,也可能是信息的泄露。这些恶意程序具有良好的隐蔽性,变种范围广,传播速度快,影响范围广。在当前严峻的形势下,传统的恶意代码检测已经无法满足当前需要,需要耗费大量人力,物力,而且准确率也并不高。传统方法有人工检测、基于特征码的检测、启发式检测、基于行为的检测等,这些方法都有一些局限性,无法应对新技术下的恶意代码。比如病毒特征码法的检测工具,面对不断出现的新病毒必须不断更新版本,否则检测工具便会老化,逐步失去实用价值。病毒特征码法对从未见过的新病毒,自然无法知道其特征码,因而无法检测这些新病毒,并且维护工具需要不断搜集已知病毒的特征码,也会因长时间检索会使整个网络性能变坏。


02
机器学习的概念


网络安全宣传周 | 基于机器学习的病毒分类与预测

从广义上来说,机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。在实际应用范围中,机器学习跟模式识别,统计学习,数据挖掘,计算机视觉,语音识别,自然语言处理等领域有着很深的联系。

通俗来讲,机器学习就是:三个基本的要素,任务T、经验E和性能P。机器学习=通过经验E的改进后,机器在任务T上的性能p所度量的性能有所改进=T–>(从E中学习)–>P(提高)

机器学习算法分为监督学习,半监督学习,无监督学习。

网络安全宣传周 | 基于机器学习的病毒分类与预测
网络安全宣传周 | 基于机器学习的病毒分类与预测
监督学习

从给定的训练数据集中学习出一个函数(模型参数),当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求包括输入输出,也可以说是特征和目标。训练集中的目标是由人标注的。监督学习就是最常见的分类(注意和聚类区分)问题,通过已有的训练样本(即已知数据及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优表示某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的。也就具有了对未知数据分类的能力。监督学习的目标往往是让计算机去学习我们已经创建好的分类系统(模型)。

有监督学习最常见的就是:regression(回归)&classification(分类)

网络安全宣传周 | 基于机器学习的病毒分类与预测
回归(Regression)
网络安全宣传周 | 基于机器学习的病毒分类与预测

回归问题是针对连续型变量。通俗一点就是,对已经存在的点(数据集)进行分析,拟合出适当的函数模型y=f(x),这里y就是数据的标签,而对于一个新的自变量x,通过这个函数模型得到标签y。

网络安全宣传周 | 基于机器学习的病毒分类与预测
分类(Classification)
网络安全宣传周 | 基于机器学习的病毒分类与预测

和回归最大的区别在于,分类是针对离散型数据集,输出的结果是有限的。最典型的算法是线性回归算法BP神经网络算法决策树支持向量机

网络安全宣传周 | 基于机器学习的病毒分类与预测
半监督学习

大概就是,在有标签数据+无标签数据混合成的训练数据中使用的机器学习算法吧。一般假设,无标签数据比有标签数据多,甚至多得多。这种方法也被称作为强化学习。就是在模型训练的过程中不断使用数据进行校正,提高模型的准确率。

半监督学习算法可分为:self-training(自训练算法)Graph-based Semi-supervised Learning(基于图的半监督算法)Semi-supervised supported vector machine(半监督支持向量机,S3VM)

网络安全宣传周 | 基于机器学习的病毒分类与预测
无监督学习
网络安全宣传周 | 基于机器学习的病毒分类与预测

输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类(聚类,clustering)试图使类内差距最小化,类间差距最大化。通俗点讲就是实际应用中,不少情况下无法预先知道样本的标签,也就是说没有训练样本对应的类别,因而只能从原先没有样本标签的样本集开始学习分类器设计。

无监督学习的方法分为两大类:

  1. 一类为基于概率密度函数估计的直接方法:指设法找到各类别在特征空间的分布参数,再进行分类。

  2. 另一类是称为基于样本间相似性度量的简洁聚类方法:其原理是设法定出不同类别的核心或初始内核,然后依据样本与核心之间的相似性度量将样本聚集成不同的类别。

常见的无监督学习算法:PCA(主成分分析法)许多deep learning(深度学习)算法


03
基于机器学习的病毒分类与预测

网络安全宣传周 | 基于机器学习的病毒分类与预测
数据收集

收集已知病毒的特征,划分为两类静态特征和动态特征。

静态特征(没有真实运行的特征):

  • 字节码:二进制代码转换成了字节码,比较原始的一种特征,没有进行任何处理

  • IAT表:PE结构中比较重要的部分,声明了一些函数及所在位置,便于程序执行时导入,表和功能比较相关

  • Android权限表:如果你的APP声明了一些功能用不到的权限,可能存在恶意目的,如手机信息

  • 可打印字符:将二进制代码转换为ASCII码,进行相关统计

  • IDA反汇编跳转块:IDA工具调试时的跳转块,对其进行处理作为序列数据或图数据

动态特征(真实运行的特征):

  • API调用关系:比较明显的特征,调用了哪些API,表述对应的功能

  • 控制流图:软件工程中比较常用,机器学习将其表示成向量,从而进行分类

  • 数据流图:软件工程中比较常用,机器学习将其表示成向量,从而进行分类

网络安全宣传周 | 基于机器学习的病毒分类与预测
数据准备

将流程图特征转化为向量,从而进行分类。将字符类特征转化为ASCII码,进行相关统计。剔除不相关的特征,防止模型出现过拟合和欠拟合现象。

网络安全宣传周 | 基于机器学习的病毒分类与预测
选择模型
  • 普通的机器学习方法(SVM支持向量机,RF随机森林,NB朴素贝叶斯,KNNk近邻)

  • 深度神经网络(Deep Nerual Network)

  • 卷积神经网络(Convolution Neural Network)

  • 长短时记忆网络(Long Short-Term Memory Network)

  • 图卷积网络(Graph Convolution Network)

网络安全宣传周 | 基于机器学习的病毒分类与预测
训练模型

得到特征向量之后,就开始进行模型的训练和测试,一般机器学习任务事先都有一个数据集,并且会分为训练数据集和测试数据集,按照4比1或9比1的比例进行随机划分。训练会将数据集和标签对输入得到恶意和非恶意的结果,再输入测试集得到最终结果。

网络安全宣传周 | 基于机器学习的病毒分类与预测
评价

下面是衡量机器学习模型的性能指标,首先是一幅混淆矩阵的图表,真实类别中1代表恶意样本,0代表非恶意样本,预测类别也包括1和0,然后结果分为:

TP:本身是恶意样本,并且预测识别为恶意样本

FP:本身是恶意样本,然而预测识别为非恶意样本,这是误分类的情况

FN:本身是非恶意样本,然而预测识别为恶意样本,这是误分类的情况

TN:本身是非恶意样本,并且预测识别为非恶意样本

网络安全宣传周 | 基于机器学习的病毒分类与预测

然后是Accuracy(准确率)、Precision(查准率)、Recall(查全率)、F1等评价指标。

准确率:Accuracy=(TP+TN) / (TP+FP+TN+FN), 即预测正确的比上全部的数据

精确率:Precision=TP / (TP+FP),即在预测为正向的数据中,有多少预测正确了

查全率:Recall=TP / (TP+FN),即在所有正向的数据中,有多少预测正确了

网络安全宣传周 | 基于机器学习的病毒分类与预测
超参数调整

调整模型的相关参数,常见方法有交叉验证,网格搜索,智能优化(粒子群优化算法,蜂群优化算法,混合蛙跳算法,人工鱼群算法)。如果调参后,该模型仍不理想可适当换模型。

网络安全宣传周 | 基于机器学习的病毒分类与预测
预测

使用最理想的模型进行实际应用测试。

网络安全宣传周 | 基于机器学习的病毒分类与预测
静态分析和动态分析对比

静态分析

一般来说,在绝大部分情形下我们无法得到恶意程序的源代码。因此,常用的静态特征包括程序的二进制文件、从使用IDA Pro等工具进行反汇编得到的汇编代码中提取的汇编指令、函数调用等信息,另外基于字符串和基于API调用序列的特征也是比较常见的。

工具推荐:IDA Pro

优点

特征提取速度快特征种类丰富,可以组合多种特征向量

缺点

易受加壳、加密、混淆干扰无法防范无文件攻击,难以反映恶意软件行为的恶意性

动态分析

利用虚拟机或沙箱执行待测程序,监控并收集程序运行时显现的行为特征,并根据这些较为高级的特征数据实现恶意代码的分类。一般来讲,行为特征主要包括以下几个方面:文件的操作行为;注册表键值的操作行为;动态链接库的加载行为;进程访问的操作行为;系统服务行为;网络访问请求;API调用。

工具推荐:

网络安全宣传周 | 基于机器学习的病毒分类与预测

优点

提供恶意软件的动作,调用API规避一些静态的混淆对抗方法

缺点

反虚拟化,延时触发等技术的对抗测试时间较长,单个样本2-3分钟(Cuckoo)

网络安全宣传周 | 基于机器学习的病毒分类与预测
相关论文推荐
  • Kolosnjaji B,Zarras A,Webster G,et al. Deep learning for classification of malware system call sequences[C] // Australasian Joint Conference on Artificial Intelligence. Springer,Cham,2016:137-149.

  • Coull S E,Gardner C. Activation Analysis of Byte-Based Deep Neural Network for Malware Classification[C] // 2019 IEEE Security and Privacy Workshops(SPW). IEEE,2019:21-27.

  • Saxe J, Berlin K. Deep neural network based malware detection using two dimensional binary program features[C]//2015 10th International Conference on Malicious and Unwanted Software (MALWARE). IEEE, 2015: 11-20.

04
总结

网络安全宣传周 | 基于机器学习的病毒分类与预测
传统方法与机器学习方法对比

传统方法

  • 优点:速度快,消耗计算资源少只需要将特征码提取出来,上传至云端进行检测;相对于机器学习大量的矩阵计算,其计算资源消耗少。

  • 缺点:容易绕过,对于未知恶意软件检出率低使用加壳、加密、混淆容易绕过,对于未知软件不知道其特征码,只能通过启发式方法、主动防御检测,相对于机器学习检测率要低。

机器学习方法

  • 优点:能够建立专家难以发现的规则与特征发现的规则和特征很可能是统计学特征,而不是恶意和非恶意的特征,所以这些特征很容易被黑客进行规避,这既是优点也是缺点,虽然有缺陷,但也能发现恶意样本的关联和行为。

  • 缺点:资源消耗大,面临漂移问题,需要不断更新参数

机器学习仍需解决问题:

  • 算力问题

  • 大规模的特征数据

  • 训练的模型是可解释的

  • 误报需要维持极度的低水平

  • 算法需要根据恶意软件作者的变化快速适应新的检测特征

机器学习方法并不能完全取代传统方法,只是对传统方法的一个补充,好的防御系统往往是多种技术方法的组合。

机器学习的检测方法研究还不充分,安全领域的专有瓶颈与人工智能研究的共有瓶颈均存在。

机器学习算法本身也面对一些攻击方法的威胁,比如对抗样本。

对抗样本指的是一个经过微小调整就可以让机器学习算法输出错误结果的输入样本。在图像识别中,可以理解为原来被一个卷积神经网络(CNN)分类为一个类(比如“熊猫”)的图片,经过非常细微甚至人眼无法察觉的改动后,突然被误分成另一个类(比如“长臂猿”)。再比如无人驾驶的模型如果被攻击,Stop标志可能被汽车识别为直行、转弯。


网络安全宣传周 | 基于机器学习的病毒分类与预测
扫码关注我们
技术支持:白帽子社区团队



原文始发于微信公众号(白帽子社区):网络安全宣传周 | 基于机器学习的病毒分类与预测

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: