事实证明,机器学习在网络和安全相关领域的应用非常有效。深度学习在语音识别、目标检测、自然语言处理等许多机器学习任务上的性能更佳。本文介绍深度学习在安全领域的一些应用。

Tobiyama提出一种基于进程行为进行恶意进程检测到方法,研究人员利用LSTM(Long Short-Term Memory,长短期记忆网络)进行特征提取,用CNN(Convolutional Neural Networks,卷积神经网络)进行特征分类,而进程行为是一系列的API调用序列。特征是从转化为含有本地特征的图片的进程行为日志文件中提取的,这些本地特征表示进程活动。


Rhode调查了基于行为数据对可执行文件是否恶意文件进行预测。模型使用Cuckoo沙箱来手机PE样本的活动数据。收集的特征有:系统CPU利用率、用户CPU使用、发送的包、收到的包、发送的字节、收到的字节、内存使用、交换区使用、当前运行的进程总数和分配的最大进程ID等。考虑到训练速度的问题,作者选择了GRU(Gated Recurrent Unit ,门控循环单元)来替代LSTM。


HeNet是一种基于程序执行控制流特征的分层聚集神经网络。HeNet含有一个低层行为模型和顶层聚集模型。HeNet样本测试的准确率是100%,假阳性率是0%。与传统的机器学习分类相比,HeNet的分类准确率更高。


Hardy提出一种基于Stacked AutoEncoders(SAE)的恶意软件检测模型。模型会使用收集的PE文件产生的Windows API调用。如图所示,使用PE解析器从每个文件中提取Windows API调用。API查询数据库会把API调用转变成对应API函数的32位表示。因此,SAE也被用于特征学习、参数调优和恶意软件检测。该模型的准确率大概是96.85%。


Hou提出一种基于Linux kernel系统调用和SAE的安卓恶意软件检测框架。使用了一种名为component travelsal的动态分析方法来对每个给定的安卓应用的代码路径进行自动执行。为了获取系统调用之间的关系,作者构建了一个带权有向图,其中节点代表系统调用,节点的大小表示频率,边表示系统调用的序列流。


DroidDetector是一款基于安卓恶意软件检测引擎的在线深度学习应用。作者Yuan等通过动态分析和静态分析从每个APP中提取特征,提取的特征分为三类,分别是必须的权限、敏感API和动态行为。DroidDetector的检测准确率大约为96.76%,由于传统的机器学习算法。在静态分析阶段,会对Android-Manifest.xml和classes.dex进行语义分析来得到APP请求的120个权限。动态分析包含在DroidBox中运行每个APP,进行动态标记分类并监控13个APP行为的分析。

论文中使用的深度学习模型包含两个阶段,分别是非监督预训练阶段和有监督反向传播阶段。在预训练阶段,会使用受限Restricted Boltzmann Machine(RBM,受限玻尔兹曼机)来构建深度置信网络(Deep belief network,DBN)。在反向传播阶段,会用标记的样本以有监督的方式对预训练的DBN进行调参。


MtNet是一个多任务的深度学习恶意软件分类架构,该架构会被训练用于两个任务,分别是预测未知文件是否恶意和预测文件是否属于100个家族分类——98个重要的家族、1个通用恶意软件分类和1个善意软件分类。

研究人员用从动态分析中获取的低级特征作为训练阶段的输入,这些特征包括含有参数的API调用事件序列。


Azmoodeh提出一种深度Eigenspace学习方法来区分恶意和善意IoT应用。研究人员从支持ARM IoT平台的1078个善意应用和128个恶意应用中提取出OpCode序列。每个样本中被提取的特征会被融合到基于深度神经网络的分类图中。研究人员用Objdump来提取OpCode,然后用n-gram OpCode序列对恶意软件进行分类。研究人员还提出一种类或的分类方法,包含两个阶段,分别是OpCode-Sequence图生成阶段和Deep Eigensapce学习阶段。


Kolosnjaji提出一种基于卷积和递归神经网络的恶意软件系统调用序列分类。研究人员将卷积层和递归层融入到同一神经网络中,其中卷积层用于特征提取。系统的输入是60个不同类型的系统调用。研究中使用的数据集来源于Virus Share、Maltrieve和个人收集。样本的标记是从VirusTotal获取的,然后研究人员用来自不同反病毒软件程序的软件对恶意软件的前面进行聚类。实验结果表明这种方法的平均准确率为85.6%,高于传统的机器学习算法。


https://arxiv.org/pdf/1807.04739.pdf

源链接

Hacking more

...