2、其次,我们须要大年夜样本中提取有意义的特点,这些特点也是我们研究的基本。所谓的特点指的就是可以或许描述对象的那些属性,比如,一栋房子的特点包含:房间数、房屋面积、房屋价格等。
一、媒介
机械进修是计算机科学的一个分支学科,目标在于付与计算机大年夜数据中进修的才能,使计算机可以或许有效应用当今互联网中存在的PB量级的数据,为人们在决定计划制订、义务履行方面供给赞助支撑,这些工尴尬刁难人们而言复杂度很高且耗时巨大年夜。
今天我将向读者介绍机械进修如安在不应用特点值检测和行动分析办法前提下来检测恶意应用。
趁便提一句,像CylanceProtect、SentinelOne、Carbon Black之类的平安产品在特点值检测和行动分析方面做了很多工作,本文介绍的恶意软件检测框架不会涉及这些产品所应用的┞封两类技巧。
二、机械进修简介
机械进修这个分支学科融合了数学中的多个范畴,重要包含统计学、概率论、线性代数以及数学计算(如算法、数据处理、数值计算)。机械进修可以或许深刻发掘大年夜数据价值,被广泛用于讹诈检测、垃圾邮件检测、片子推荐、饮食及产品购买推荐等各方面。亚马逊、Facebook以及Google等数百家公司也应用机械进修来改进他们的产品及办事。
分类(classification)是有监督进修的一个阁下,分类对象可所以二进制文件(恶意或非恶意软件)或其他类型对象(阿猫、阿狗、阿猪等等),是以恶意软件检测属于二进制文件分类范畴。
机械进修的具体介绍不在本文范围内,你可以经由过程多种渠道懂得具体信息,也可以查看附录中的资本来深刻进修。
三、问题集
机械进修的工作流程包含定义问题、收集数据、整顿数据(使数据相符练习请求)、应用算法处理数据。这一系列步调须要消费大年夜量资本,是以对通俗人而言,机械进修在具体实现上较为艰苦。这些步调称之为机械进修的工作流程,也是机械进修所需的起码步调。
对于本文设定的场景,我们起首须要定义工作流程:
1、起首,我们须要收集恶意软件样本,剔除大年夜小小于10k的那些样本。样本数量越多越好。
3、提取特点后,我们须要对样本进行处理,构建样本数据集。数据集可所以一个数据库文件或一个CSV文件,以便于转化为数据向量,因为机械进修算法的计算对象是向量。
4、最后,我们须要一个衡量指标来评价二进制文件的分类结不雅。有多种指标可以用来衡量算法的机能,如ROC(Receiver Operating Characteristic,试者工作特点)、AUC(Area Under roc Curve,ROC曲线下面积)、混淆矩阵(Confusion Matrix)等。这里我们应用的是混淆矩阵指标,因为它可以或许反竽暌功结不雅的┞俘确比率以及践言性比率、假阴性比例。
四、收集样本以及特点提取
本文假设读者已经懂得PE文件格局的相干常识,或者读者也可以先大年夜这里进修基本常识。收集样本异常简单,你可以应用付费办事(如VirusTotal)或者应用这个链接中的样本源。
如今我们开端评论辩论建模问题。
为了让我们的算法可以或许大年夜输入的数据中进修,我们须要清理数据,使之整洁且易于懂得。本文中,我们应用12个特点来练习算法,这12个特点提取自样本文件,保存在CSV文件中。
(一)特点提取
我们应用pefile提取样本特点。起首是应用python下载pefile,敕令如下:
- pip install pefile
对象预备完毕,在开端写代码前,我们先评论辩论一下我们到底须要提取哪些特点。对于一个PE文件来说,我们关怀的主如果以下几个特点字段:
1、主映像版本(Major Image Version):表示应用法度榜样的主版本号。对于4.0版本的Excel而言,该值为4
2、IMAGE_DATA_DIRECTORY的虚拟地址以及大年夜小
3、操作体系版本
4、导入地址表(Import Address Table)地址
5、资本区大年夜小
6、区段个数
7、链接器版本
8、保存栈大年夜小
9、DLL属性值
10、导出表大年夜小和地址
- TN = 695
- TP = 731
- FP = 8
- FN = 18
为了使代码构造更为清楚,我们应用类对象来表示PE文件信息,类构造如下所示:
五、机械进修在恶意软件检估中的应用
- import os
- import pefile
- class PEFile:
- def __init__(self, filename):
- self.pe = pefile.PE(filename, fast_load=True)
- self.filename = filename
- self.DebugSize = self.pe.OPTIONAL_HEADER.DATA_DIRECTORY[6].Size
- self.DebugRVA =self.pe.OPTIONAL_HEADER.DATA_DIRECTORY[6].VirtualAddress
- self.ImageVersion = self.pe.OPTIONAL_HEADER.MajorImageVersion
- self.OSVersion = self.pe.OPTIONAL_HEADER.MajorOperatingSystemVersion
- self.ExportRVA = self.pe.OPTIONAL_HEADER.DATA_DIRECTORY[0].VirtualAddress
推荐阅读
众所周知,Python的并行处理才能很不睬想。我认为如不雅不推敲线程和GIL的标准参数(它们大年夜多是合法的),其原因不是因为技巧不到位,而是我们的应用办法不恰当。大年夜多半关于Python线>>>详细阅读
本文标题:机器学习在恶意软件检测中的应用
地址:http://www.17bianji.com/lsqh/34783.html
1/2 1