北京物流信息联盟

二进制安全之机器学习入门

2022-05-21 07:04:47

        这周参加了AVAR(亚洲反病毒研究者联盟Association of Anti Virus Asia Researchers),与会的有来自全世界各国的反病毒软件厂商的安全研究员们,会议期间和他们做了很多深度的交流,特别在IOT和机器学习上。会议已经第二十届了,同理反病毒领域也走过了二十多年,杀毒引擎从第一代、第二代,已经逐步转向了第三代引擎。

        那么第三代引擎是什么?第三代引擎即人工智能引擎,这一代引擎摆脱了特征库的依赖,通过海量的黑白样本进行机器学习训练,最终归纳总结出一套智能算法,从中发现病毒规律与特征,从较高维度对病毒进行检测与分析。摆脱了传统杀毒引擎频繁操作的流程,即分析判别样本->提特征->检查是否有误杀->升级库,更能应对未知的病毒。

工具

        python、numpy、pandas、matplotlib、scikit-learn

PE文件机器学习步骤

1.数据搜集与清洗

        对于本文分别搜集了50个PE类的病毒和正常文件,在Linux下可以用file命令批量鉴别文件的类型,以防特征提取步骤的时候失败。

2.特征化

        特征化需要有病毒或者PE文件相关的知识,事物与事物之间、人与人之间都有自己固有的属性,例如性别可以区分男女,身高可以区分高矮,体重可以区分胖瘦。同样可执行文件也有同样的“属性”,但是这些属性并没有那么像上述属性那样那么好感知,特征的维度可能有上百、上千个,所以怎么提取到区别事物异同的特征十分关键,这也是机器学习中关键的一步。

        我们针对PE文件文件提取了以下特征,可以通过如下PE结构图或者010Editor来辅助特征选取与提取。

PE结构图

提取的部分特征

3.数据标记

        通过数据搜集阶段我们已经搜集到了黑白样本,所以这步我们可以很容易对数据进行标记。

4.数据拆分

        通过数据拆分我们将数据随机分为了训练样本和测试样本,训练样本用于训练机器学习的模型,测试样本用于测试训练出来的模型的准确性。一般训练和测试样本可以2/8、3/7、4/6分等,这里选择了2/8开。

5.数据训练

       在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别输出的类别的众数而定的,这里我们选取了随机森林树来做该次机器学习的模型。

6.模型验证

        我们通过交叉验证的方式,可以得到如图所示模型的一些参数,可以看出误报率为零,同时检测率也比较低,只有70%多。

总结

       本文对机器学习在病毒检测上做了简单的应用,对一般方法做了演示,当然其实以上是一个复杂的过程,但是对事物的认知总是有一个由简到难的认知过程。以上简单的代码已经实现了一个最简化的“第三代”杀毒引擎,所以即使你对病毒没有太深刻的认知,没有学过汇编、没有做过逆向、没有做过分析,同样能打造一个杀毒引擎,这就是机器学习的魅力所在,用人类的智慧创造高于人类智慧的产物。

友情链接

Copyright © 2023 All Rights Reserved 版权所有 北京物流信息联盟