Py学习  »  机器学习算法

为SOC构建机器学习模型:逆向分析过程(二)

嘶吼专业版 • 5 年前 • 566 次点击  

为SOC构建机器学习模型:逆向分析过程(一)讲了逆向分析过程中基本的有监督模型过程、特征提取等,本部分主要讲模型选择和归纳、所选取模型的工作原理、如何使用该模型以及模型的有效性保证。

模型选择和归纳

特征是从整个数据集中生成完成后,就可以用来训练模型了。没有完美的步骤来选择出最好的模型,但根据数据中特征的类型可以缩小模型选择的范围。在进程事件中,可以将字符串和数字表示的特征结合起来。分析师在进行分析时,会考虑每个特征的数字值,结合答案来估算进程是恶意的可能性。

在本用例中,优化可解释的模型是非常重要的。因为有了可解释的模型之后,分析师就能很容易地解释做出某种决策的原因。这样分析师就对模型有了信心,也可以检测和修复模型中的分析错误。

考虑到数据的本质,分析决策的过程,和过程的可翻译性,研究人员认为基于决策树的模型比较适合告警消息分类。

关于决策树有很多公开的资源,但决策树背后的基本概念是迭代过程,通过询问问题来得到一个高度可信的答案。这与“二十个问题”游戏是类似的,通过问问题不断减小可能性的范围,当问了足够的问题后,问问题的人就有很高的概率可以猜出正确的答案。

图4是用户可能会用来评估进程执行过程的决策树的例子。

图4: 决定告警消息是否恶意的决策树

上图例中,决策路径被标记为红色,这也是决策树模型进行预测的过程。首先会判断长度是否长于100个字符;如果是,继续下一问题“字符串中是否含有http”;继续问问题到得到有信心的猜测。图4中,95%的经过决策路径的训练预警消息是恶意的,因此模型预测告警消息是恶意的可能性是95%。

因为问的问题都很详细,所以决策树可能会过拟合。这会降低模型将新数据一般化(归纳)的能力。一种缓解该效应的方法就是使用稍微不同的决策树,并根据选举的结果得出最后的结果。这种决策树的聚合叫做随机森林(Random Forest),可以改善模型的性能。这也是模型最终选择使用的算法。

SOC Alert Model工作原理

当新的告警消息出现时,数据会转变成编码特征向量,这与用来训练模型的特征表示结构相同。然后,该模型会评估特征向量,应用信心等级到预测的标记中。基于研究人员设置的阀值,用户可以将告警消息分为善意的和恶意的。

图5 根据获取的原始值进行分析的告警消息

根据例子,图5中的事件可能会创建下面的特征值:

· Parent Process: ‘wscript’

· Command Entropy: 5.08

· Command Length =103

基于训练的方式,模型中的树就是问特征向量中的一系列问题。随着特征向量遍历每条树,最终会聚集到一个叶子节点,该节点可以分类为善意的或恶意的。随后可以评估每个树做出的决策来估计哪些特征在最终的分类中起比较重要的作用。

对SOC的分析师来说,研究人员展示了模型中提取的特征,显示整个数据集的特征分布。比如,对告警消息的解释可能是这样的:

· Command Entropy = 5.08 > 4.60:  51.73% Threat

· occuranceOfChar “\”= 9.00 > 4.50:  64.09% Threat

· occuranceOfChar:“)” (=0.00) <= 0.50: 78.69% Threat

· NOT processTree=”cmd.exe_to_cscript.exe”: 99.6% Threat

在分析时,分析师可以看到事件的原始数据、模型的预测、决策路径的近似值、简化的特征重要性表示。

SOC如何使用该模型

分析师可以根据模型使用的特征与自己的方法进行比较,给出关于模型中一些错误的反馈。如果是新的分析师,可能会通过观察特征发现被漏掉的父子进程关系、混淆标志、参数中的网络连接字符串等。虽然模型是从上千个告警消息中学习的经验,但模型本身提供的是分析师经验的汇总,每个分析师都可以从中学习其他分析师的经验。

因此,可以根据模型的输出作为参数编写规则。如果模型对告警消息的子集特别自信,SOC也对自动分类威胁没有争议,那么就可以简单的写一条规则:“如果告警是这种类型,AND(与)恶意软件家族,AND(与)模型的信心超过99,就可以自动将该告警分类为bad,并生成报告。”如果有很多假阳性的数据,可以写一条规则来剔除模型值小于10的假阳性数据。

模型有效性

模型训练的过程中是不再学习的,但威胁和告警消息是持续变化的。因此,就必须不断用新的告警数据来训练模型,来确保模型适应整个环境的变化。监控模型随时间变化的整体效率也是非常重要的。建立模型的效率分析,与分析师的反馈相结合可以帮助识别模型是否开始偏移或者生成了结构化的偏见。将分析师的反馈进行评估并加入到模型中,对与识别和解决特定的误分类和发现潜在的新特征都是非常重要的。

为了完成这些目标,研究人员用新标记的事件更新了我们的训练数据库。随着告警消息越来越多,研究人员对模型进行周期性的重新训练。如果模型的准确率满足要求,就保存该模型并使用该模型。

研究人员也会对分析师提供反馈机制来记录模型的问题。分析师可以观察模型提供的标记和解释,以及做出的决策。不管分析师是否同意该模型,都可以通过接口输入自己的标记。然后研究人员会对该标记进行评估和分析。

监控准确率随时间的变化、更新和重新训练模型、评估分析师给出的反馈可以让我们了解模型执行和学习的过程。最终帮助建立模型的信心,然后执行更多的任务。

结论

有监督的学习模型并不能取代一个有经验的分析师。但将机器学习和预测分析技术融合到SOC的工作流中可以增加分析师的工作效率,减少所需要的时间,保证使用调查的技术和对威胁的创新型都是专业的。

本文罗列了为SOC构建一个告警消息分类模型所需要的主要组件和主要考虑到内容。数据收集、标记、特征生成、模型训练、效率分析在构建这样的模型时都需要认证考虑。文中的例子和过程不仅仅是研究,而是已经应用到FireEye Managed Defense SOC中了。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/v8kTEIW7vn
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/13752
 
566 次点击