基于机器学习算法的恶意代码检测分析报告.ppt

基于机器学习算法的恶意代码检测分析报告.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * 关于恶意代码检测的想法 根据恶意代码API调用序列特征生成动作曲线,多个动作曲线重合概率较多的点筛选出,这些点称为可以动作点,将可疑动作点拟合为可疑动作曲线,根据可疑动作曲线的重合率判断恶意代码,利用贝叶斯算法测试。 1.典型恶意代码API调用序列 2.可疑动作曲线的优点在于相比于典型恶意代码API,减少API序列的随机性,进而减少漏判误判。 关于恶意代码检测的想法 Polymorphic(多态化)模糊流程 关于恶意代码检测的想法 提取恶意代码动态行为特征分析检测基本架构如左图所示。 第一步:搭建运行恶意代码的虚拟环境,便于加壳等一些处理过的恶意代码分析。 第二步:虚拟环境中执行恶意代码,并提取恶意代码动态行为语义特征。本课题选取恶意代码执行期间调用的API序列作为语义特征。 第三步:使用提取的语义特征进行模型建立,即组织语义信息建立语义模型。本课题对运行API调用序列加工,抽象为代表语义特征的动作曲线。 第四步:建立模型库,采用朴素贝叶斯进行检测。 注释:后期会考虑贝叶斯计算使用MapReduce进行并行计算优化,提升计算效率。 机器学习算法检测恶意代码 尝试编写一串指令来了解正常主机处理器和内存使用情况,然后同被感染主机上的处理器和内存使用情况进行比较。一旦发现这两组数据集中有一些不同的信息,就可以向计算机发送指令将这些信息应用到收集到从未知/未分类的系统收集的数据上。这样,让计算机来判断系统是否感染上恶意代码。 机器算法恶检测意代码的思路: cpu、内存使用情况检测恶意代码 实现方法 将记录的所有系统的内存和处理器的使用情况保存在一个execel文件中,host记录了主机名,proc和mem分别记录了cpu和内存的使用情况,而state记录了是否感染恶意代码,部分数据如图所示。 实现方法 按照上述算法的第一步,即分别计算被感染和正常系统中处理器和内存的平均使用情况。 R代码: inf - colMeans(train[train$state==Infected, c(proc, mem)]) nrm - colMeans(train[train$state==Normal, c(proc, mem)]) print(inf) ## proc mem ## 1.152025 1.201779 print(nrm) ## proc mem ## -0.8701412 -0.9386983 从注释中输出的均值容易发现,感染和未感染恶意代码的均值间差异较大,所以这个方法可以较好的实现算法。 实现方法 (1)定义和训练一个算法: a) 计算一直感染恶意软件系统的处理器和内存的平均使用情况。 b 计算已知正常的系统的处理器和内存平均使用情况。 (2)使用处理器和内存使用情况来预测未知系统是否感染恶意软件: a)如果处理器和内存使用情况更接近感染主机的平均情况,将该系统标记为已感染。 b)如果处理器和内存使用情况更接近正常主机的平均使用情况,将该系统标记为正常。 注释:一个分类器就是一组规则,或一个决策模型,它们是通过对一组训练数据进行学习而产生的。 实现方法 首先,加载数据并进行检查。将数据进行归一化处理后,这些数字保持在同一尺度内。为了进一步探索这些数据,可将这些数据描绘出来。给基于染而已代码的状态可以比较并区分处理器和内存数据,如图所示。 R代码: library(ggplot2) gg - ggplot(memproc, aes(proc, mem, color=state)) gg - gg + scale_color_brewer(palette=Set2) gg - gg + geom_point(size=3) + theme_bw() print(gg) 注意:归一化化定义:归一化化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保正程序运行时收敛加快。线性函数转换: y=(x-MinValue)/(MaxValue-MinValue) 实现方法 实现方法 第二步,对数据进行预测。从需要检测的数据中,选取其中的“proc”和“mem”值,然后计算这些值与刚才在算法训练过程中得到的均值距离有多远。在这里,我们采用了几何中的勾股定理:a2+b2=c2,公式中a和吧是三角的两条边,c是斜边。此处,a是训练和你测试得到的两个proc值的差,b是训练和测试得到的mem值的差。得到这两个距离后,仅作比较即可。 R代码: predict.malware - function(data) { proc - as.numeric(

文档评论(0)

武神赵子龙 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档