勒索软件检测的方法与流程

文档序号:11775150阅读:2187来源:国知局
勒索软件检测的方法与流程
本发明涉及网络安全
技术领域
,具体涉及一种勒索软件检测的方法。
背景技术
:勒索软件是黑客用来劫持用户设备或资源,并以此为条件向用户勒索钱财的一种恶意软件。勒索软件通常会将用户系统中多种类型的文件进行加密或篡改系统配置,干扰用户正常使用,用户只有支付赎金后方可获得解密文件的密码或者获得恢复系统正常使用的方法。2016年,360公司共截获电脑端新增勒索软件样本16.7万个,全国至少有497多万台用户电脑遭到了勒索软件攻击。勒索软件是恶意代码的一种,目前恶意代码检测方法主要分为静态检测和动态检测两类。静态分析通过逆向工程抽取程序特征,分析函数调用、程序指令等序列。但是恶意代码会使用代码混淆、花指令等手段对抗静态分析。动态检测是通过拦截或监控的方式分析程序运行时的行为特征,使用沙箱或虚拟机模拟运行程序,绕过代码混淆等代码保护机制,检测恶意代码的动态行为。动态检测中,葛雨玮等人,从代码执行程序的控制流和数据流中抽取动态特征,然后将恶意代码特征分为特征代码、api函数特征、数据特征和行为特征,其中api函数特征按调用顺序连接形成api序列字符串,同时计数提取api函数调用的不同参数,结合bp神经网络算法,检测恶意代码的同源性。在研究api函数的调用与恶意代码的关系上,韩兰胜等人从9个动态链接库中选取126个api构造记录调用的子集。结合熵与机器学习算法训练检测模型,他们共检测了920个恶意软件样本以及450个正常软件样本。主流的恶意代码检测方法包括基于n-grams算法计算api调用的相似度进行恶意代码的检测。kyeomcho等人有不同的尝试,他们结合信息生物学的序列比对法,首先将恶意软件的api调用行为构造为一组基因序列,再通过比对待测软件的api调用序列与已知恶意软件的调用序列进行检测。同样的问题,恶意样本对api的调用存在大量的冗余操作。所以随着监测的样本动态行为越多,检测的结果受到的干扰越严重。勒索软件有着自己特有的行为,所以基于行为的频繁度检测勒索软件是一种很好的检测方法。国外的研究者使用api名称、api调用的参数并选取了24种api计算恶意代码api调用的频繁度,构造特征进行恶意软件的检测。但由于api库的庞大,基于24种api调用的频繁度无法全面的描述恶意代码的行为。korkmaz等人则在基于调用的频繁度上做了拓展,他们将api调用分为不同的调用类,基于api调用类别的频繁度来描述恶意代码的行为,对勒索软件的准确率为88%。已有专利中,从防止勒索软件感染电脑的角度上,倪茂志提出一种勒索软件的防范方法和系统,构建至少一个符合勒索软件加密类型的诱饵文件,并插入到欲保护磁盘原有的文件序列中,再判断诱饵文件是否发生变化;在诱饵文件发生变化的情况下,禁止对欲保护磁盘进行预设操作。缺点是如果勒索软件检测到有诱饵软件,则不表现勒索行为,导致无法识别是否为勒索软件。此外倪茂志提出另外一种勒索软件的防范方法,构建备份数据库,其中,备份数据库包括至少一个还原点以及与每个还原点对应的还原数据,还原数据包括注册表数据和磁盘文件数据;接收处理请求,根据处理请求从备份数据库中选择一个还原点,并调用与一个还原点对应的磁盘文件数据。遍历磁盘,根据与一个还原点对应的磁盘文件数据确定磁盘是否有新增的文件;在磁盘中有新增的文件的情况下,对新增的文件添加启动时锁定的属性,并根据与一个还原点对应的注册表数据对磁盘进行还原。该发明能够缩小勒索软件在所有文件中的判定范围,并有效的对勒索软件进行锁定,防止勒索软件的进一步侵害,同时能够对磁盘进行还原,使磁盘恢复正常。从恢复数据的角度上,安天实验室的叶佳旭提出一种基于数据重定向的勒索软件防御系统及方法。该发明提出一种基于数据重定向的勒索软件防御系统,通过在用户和勒索软件的服务器间增加数据重定向服务器,同时接收来自客户端发送的请求消息以及目的服务器的数字证书,并向客户端发送重定向服务器数字证书,客户端用重定向服务器数字证书加密后发送至重定向服务器,重定向服务器解密信息后又用目的服务器的数字证书重新加密,发送至目的服务器,实现对已感染勒索类病毒的系统内的文件进行还原。从备份数据的角度上,倪茂志提出一种针对防御勒索软件文件数据的备份保护方法和系统,该发明设计一种针对防御勒索软件文件数据的备份保护方法和系统。其中方法包括:接收对文件的操作请求;确定文件的大小是否小于预设上限值;在文件的大小小于预设上限值的情况下,确定文件是否属于预设文件备份类型;在文件属于预设文件备份类型的情况下,在存储介质中对文件进行备份后,执行对文件的操作请求;在文件不属于预设文件备份类型的情况下,直接执行对文件的操作请求。现有的静态和动态检测方法主要是针对恶意软件的通用检测技术和方法,并没有对勒索软件在行为特征上的差异性进行深入分析。辨别勒索软件是分析勒索软件的家族、特征与研究防范方法最重要的一步,本发明重点解决勒索软件检测问题。目前,检测勒索软件的主要问题在于:(1)勒索软件在对抗静态检测方面下了很大的功夫,使得静态检测方法难以检测勒索软件。例如cerber家族的勒索软件使用虚拟内存映射等手段来逃避静态检测,并使用重新打压缩包和加载机制的方式逃避静态机器学习检测。(2)勒索软件有着明显的行为特征,虽然已经有研究者从api函数调用频繁度的角度进行勒索软件的检测,但对不同类型的勒索软件的特征研究不深入,检测的效果有待提高。(3)使用机器学习检测勒索软件,在构造行为特征时,主流使用的n-grams、序列比对法等描述api的调用有大量的冗余,随着监测的样本动态行为越多,检测的结果受到的干扰越严重,并且构建的算法维度与复杂度高。技术实现要素:为解决上述问题,本发明提供了一种勒索软件检测的方法,有效避免了现有技术中难以检测勒索软件、对不同类型的勒索软件的特征研究不深入、检测的结果受到的干扰越严重以及构建的算法维度与复杂度高的缺陷。为了克服现有技术中的不足,本发明提供了一种勒索软件检测的方法的解决方案,具体如下:一种勒索软件检测的方法,所述勒索软件检测的方法分为先后顺序执行的两个部分,勒索软件的检测模型训练:首先,需要确定训练勒索软件检测模型的训练集,训练集分为2个子集:①勒索软件样本集合;②正常样本集合;利用分布式沙箱对训练集合中样本进行动态分析,提取沙箱分析后的报告;2)勒索软件的检测模型的测试;根据特征构造算法建立特征集,采用五折交叉法进行模型的训练与测试,使用准确率这样的指标衡量模型性能。将所述样本的动态分析的实验环境设置在虚拟机中,设置了快照与检查机制,当系统检测到恶意样本尝试逃逸分析机时,启动快照回滚到干净状态。所述勒索软件的检测模型包括:勒索软件样本集合和正常样本集合;把所述勒索软件样本集合和正常样本集合利用分布式沙箱对训练集合中的样本进行动态分析,提取沙箱分析后的报告;根据特征构造算法建立特征集,采用五折交叉法进行模型的训练与测试,使用准确率这样的指标衡量模型性能。所述特征集分别为api函数特征、行为特征以及内存特征。所述api函数特征的类别包括加密应用程序api类crypto、系统进程管理类api类process、进程服务类apiservices、注册表类apiregistry、资源类apiresource。所述行为特征的网络行为构建一组特征,表示样本的网络行为中建立连接的主机域名个数,建立的tcp或者udp连接。所述注册表行为包括注册表的访问、读取、修改与删除。所述文件行为定义了一组描述对敏感文件的向量,捕获样本对敏感文件的操作,敏感文件集由"dll","exe","jpg","doc"这样的扩展名组成。所述文件夹行为包括敏感路径删除、移动、读取、遍历的计数值。所述内存特征基于沙箱的行为捕获不能完全捕获样本的行为,结合volatility内存取证工具以及yara匹配工具,使用内存行为特征对沙箱捕获到的行为进行补充;在沙箱分析样本完毕后,首先使用volatility获取执行后的沙箱的内存镜像,再使用yara匹配工具根据匹配规则对镜像进行扫描、分析,获取行为标签。所述特征构造算法为随机森林(randomforest,rf)算法有更高的稳定性和鲁棒性,恰当的训练参数可以获得更好的分类,随机森林算法是bagging算法和randomsubspace算法的组合,基本构成单元是决策树,通过多棵决策树的组合h1(x),h2(x),…,hn(x)来提高分类的准确性,通过子树的最终投票对未知类别的样本进行分类。所述样本t的信息熵为公式(1)所示:其中,pi表示类别i样本占总样本数量的比例,在特征a作用后,样本t被分成了k个部分,此时基尼系数计算为公式(2)和公式(3)所示:rf中降低过拟合的方式为剪枝,使用悲观剪枝(pessimisticerrorpruning)进行剪枝,pep首先计算规则在它应用的训练样例上的精度,然后假定此估计精度为二项式分布,并计算它的标准差。对于给定的置信区间,采用下界估计作为规则性能的度量,其中当节点tt满足公式(4)时,tt就会被裁剪掉,e′(t)≤e′(tt)+se(e′(tt))(4)e(t)为结点t的误差;i为覆盖tt的叶子结点;nt为子树tt的叶子树;n(t)为在结点t处的训练集合数量。在进行rf框架选择和改进时,选取完最佳子树特征集后,另一个影响过拟合能力的参数为基学习器。rf框架中,基学习器(baselearner)的偏差小但方差较大,rf框架中整体模型的方差为:基学习器数量为b,基学习器方差为σ2,两两基学习器间的相关性为ρ。所以基于pep剪枝算法进行剪枝并结合网格搜索法选取基学习器的最优值。本发明的技术效果为:本发明为基于特征行为的频繁度并结合内存特征的方法,使用基于参数优化的随机森林算法构造模型。实验表明,与以往的勒索代码检测方法相比,在降低构建特征的维度、复杂度的同时,能很好的检测勒索软件与未知的勒索软件。附图说明图1是本发明的勒索软件检测的方法的系统结构示意图;图2是本发明的算法的流程图。具体实施方式下面将结合附图和实施例对本发明做进一步地说明。如图1-图2所示,勒索软件检测的方法,所述勒索软件检测的方法分为先后顺序执行的两个部分,勒索软件的检测模型训练:首先,需要确定训练勒索软件检测模型的训练集,训练集分为2个子集:①勒索软件样本集合;②正常样本集合;利用分布式沙箱对训练集合中样本进行动态分析,提取沙箱分析后的报告;2)勒索软件的检测模型的测试;根据特征构造算法建立特征集,采用五折交叉法进行模型的训练与测试,使用准确率这样的指标衡量模型性能。为了降低恶意样本在执行中可能造成的危害,将所述样本的动态分析的实验环境设置在虚拟机中,设置了快照与检查机制,当系统检测到恶意样本尝试逃逸分析机时,启动快照回滚到干净状态。所述勒索软件的检测模型包括:如图1所示,勒索软件样本集合和正常样本集合;把所述勒索软件样本集合和正常样本集合利用分布式沙箱对训练集合中的样本进行动态分析,提取沙箱分析后的报告;根据特征构造算法建立特征集,采用五折交叉法进行模型的训练与测试,使用准确率这样的指标衡量模型性能。根据分析,勒索软件会频繁访问个人文件夹以及目录,加密敏感文件。此外,还会进行注册表项更新,以保持持久性,或访问密钥来检索已安装的设备列表。勒索软件通常会试图搜索python代理,检测是否在虚拟环境内。本专利主要目的在于检测勒索软件,所以从勒索软件刚植入电脑时的行为出发进行分析,基于此构建了三类特征集,所述特征集分别为api函数特征、行为特征以及内存特征。即如表1所示的构建的特征及特征的说明:表1大多数情况下,勒索软件会启动大量的系统调用,单个系统调用的计数量大,并难以表征勒索软件的行为。所以根据系统调用类别定义了api函数特征的特征向量,确定了不同类别的系统调用类型,所述api函数特征的类别如表2所示包括加密应用程序api类crypto、系统进程管理类api类process、进程服务类apiservices、注册表类apiregistry、资源类apiresource。如表2所示:表2类别描述crypto加密应用程序api类process系统进程管理类api类services进程服务类apiregistry注册表类apiresource资源类api......通常系统调用不是由程序直接访问,而是通过调用实际系统调用本身的高级应用程序接口(api),例如windowsapi。而api由各种api函数实现,包含在几个api库文件中,通常是动态链接库dll文件。所以本方法抽取了256个api函数,以及96个动态链接库文件,计算样本的api调用、dll调用的频繁度,如表3所示:表3所述行为特征的网络行为是基于勒索软件遍历敏感文件后,通常会建立多个网络连接。由此构建一组特征,表示样本的网络行为中建立连接的主机域名个数,建立的tcp或者udp连接。所述注册表行为关注注册表的四个功能的计数,包括注册表的访问、读取、修改与删除。当读取和访问大量注册表项时,考虑到嵌套的路径遍历。所述文件行为,通过对勒索软件常加密的文件以及攻击方式进行分析,定义了一组描述对敏感文件的向量,捕获样本对敏感文件的操作,敏感文件集由"dll","exe","jpg","doc"这样的扩展名组成。所述文件夹行为基于勒索软件执行后,通常会在文件系统中特定的路径或位置下创建文件。并在windows操作系统中命名。由此包括敏感路径删除、移动、读取、遍历的计数值。如表4所示:表4所述内存特征考虑到恶意软件的对抗分析的技术,基于沙箱的行为捕获不能完全捕获样本的行为,结合volatility内存取证工具以及yara匹配工具,使用内存行为特征对沙箱捕获到的行为进行补充;在沙箱分析样本完毕后,首先使用volatility获取执行后的沙箱的内存镜像,再使用yara匹配工具根据匹配规则对镜像进行扫描、分析,获取行为标签。根据前期对勒索软件的分析,结合yara匹配工具构造行为标签特征,构造了一组基于行为标签的特征,此外另定义了一组描述互斥体(mutex)的特征,如表5所示:表5相比svm及逻辑回归的方式,所述特征构造算法为随机森林(randomforest,rf)算法有更高的稳定性和鲁棒性,恰当的训练参数可以获得更好的分类,随机森林算法是bagging算法和randomsubspace算法的组合,基本构成单元是决策树,通过多棵决策树的组合h1(x),h2(x),…,hn(x)(可能是二叉树,也可能是多叉树)来提高分类的准确性,通过子树的最终投票对未知类别的样本进行分类。从特征集k中选取最佳分类节点有三种,分别是根据信息增益、信息增益率或基尼系数。对应决策树类型为id3、c4.5和cart,属性筛选的方法对算法性能影响较小,由此基于基尼系数选取最佳子树特征集。根据信息论中的熵值定义,信息熵越大表示数据的纯度越高。所述样本t的信息熵为公式(1)所示:其中,pi表示类别i样本占总样本数量的比例,在特征a作用后,样本t被分成了k个部分,此时基尼系数计算为公式(2)和公式(3)所示:剪枝是训练树重要的一部分,rf算法中当子树划分的太细时,会发生过拟合。rf中降低过拟合的方式为剪枝,使用悲观剪枝(pessimisticerrorpruning)进行剪枝,pep首先计算规则在它应用的训练样例上的精度,然后假定此估计精度为二项式分布,并计算它的标准差。对于给定的置信区间,采用下界估计作为规则性能的度量,其中当节点tt满足公式(4)时,tt就会被裁剪掉,e′(t)≤e′(tt)+se(e′(tt))(4)e(t)为结点t的误差;i为覆盖tt的叶子结点;nt为子树tt的叶子树;n(t)为在结点t处的训练集合数量。在进行rf框架选择和改进时,选取完最佳子树特征集后,另一个影响过拟合能力的参数为基学习器。rf框架中,基学习器(baselearner)的偏差小但方差较大,rf框架中整体模型的方差为:基学习器数量为b,基学习器方差为σ2,两两基学习器间的相关性为ρ。一般来说b值太小,容易欠拟合,太大容易过拟合。对于rf来说,增加b值可以明显降低整体模型的方差,且不会对子模型的偏差和方差有任何影响。所以基于pep剪枝算法进行剪枝并结合网格搜索法选取基学习器的最优值。基于pep剪枝算法的流程图如图2所示。经由实践,即从互联网下载近几年的勒索病毒,并且从360官方商城下载正常样本。正常样本集中包含16类软件共397个样本(办公软件类、聊天工具类、数据恢复类、驱动工具类等)。勒索样本集中包含16类勒索家族共1412个勒索样本,包含当前主流与新出现的勒索软件(cryptowall、cryptlocker、cryptmic、cerber、teslacrypt等)。正常样本集仅从360的官方应用商店,按软件使用比例下载软件。并检测两者数据集在virustotal上的结果,筛选未被污染的样本。实验的环境如表6所示:表6接着与其他分类算法进行比较,即通过上面特征的选取,所生成的特征向量空间被转换为dataframe格式,然后使用python的scikit-learn库进行处理分类,为了评价用于检测勒索样本的特征向量与模型的性能,将本专利提出的优化随机森林算法op-randomforest方法与svm,logisticregression,decisiontree进行比较,评估的指标包括准确率、f1值。实验结果如表7所示:表7从表7中可以看出,五种分类器的准确率都高于89%。其中使用随机森林算法构建的分类器性能最好准确率为96.57%,优化参数后的随机森林准确率下降了2%,但oob_score提高了0.7%,泛化能力有所提升。svm和决策树的f1值以及准确率较低。在时间上分类器分类所有样本所消耗的时间中除svm外,所用时间都低于6.6s。另外还与常见杀毒软件进行比较,即本次取另一组勒索样本,首先计算每个样本在virustotal上被杀毒软件检测的平均检测率`r=p/t,t为virustotal上所有杀毒软件的计数,p为杀毒软软件检测为阳性的计数。根据平均检测率低于0.1,0.3分两组勒索样本集合n1和n2。使用本专利提出的模型分别检测两组样本集并与杀毒软件avg、avira、clamav、kaspersky、mcafee进行对比,对比`r1=0.1与`r2=0.3的结果,如表8所示,n为样本集的总数。其中杀毒软件mcafee的检测率最高,其次检测率较好的杀毒软件为avira,而本专利提出的方法在两组实验中检测率都不低于95%,可以得出本方法相比常见杀毒软件,并且对于未知的勒索软件有更好的检测率。表8本发明的技术效果为:本发明为基于特征行为的频繁度并结合内存特征的方法,使用基于参数优化的随机森林算法构造模型。实验表明,与以往的勒索代码检测方法相比,在降低构建特征的维度、复杂度的同时,能很好的检测勒索软件与未知的勒索软件。以上以附图说明的方式对本发明作了描述,本领域的技术人员应当理解,本公开不限于以上描述的实施例,在不偏离本发明的范围的情况下,可以做出各种变化、改变和替换。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1