freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

利用深度学习检测恶意PowerShell
2019-09-23 10:00:16

深度学习(deep learning)是机器学习大框架下的一类算法,在图像和文本分类等任务上,深度学习方法明显优于传统方法。随着发展,利用深度学习建立新的威胁检测方法具有很大的潜力。

机器学习算法使用数字模型,因此图像、文档或电子邮件等对象通过特征工程的步骤转换为数字形式,在传统的机器学习方法中,这需要大量的人力。通过深度学习,算法可以在相对原始的数据上进行操作,无需人工干预即可提取特征。

在本文中,我们提供了一个深度学习技术的示例,该技术最初是为自然语言处理(NLP)开发的,现在被采用并应用于检测恶意powershell脚本。

自然语言处理中的词嵌入模型

我们的目标是对powershell脚本进行分类,我们简要介绍在自然语言处理领域中如何处理文本分类。

一个重要的步骤是将单词转换成机器学习算法可以使用的向量(数字元组)。首先为词汇表中的每个单词指定一个唯一的整数,然后将每个单词表示为0的向量,其中1位于对应于该单词的整数索引处。尽管在许多情况下都很有用,但有明显的缺陷。所有的词之间都是等距的,词与词之间的语义关系并没有反映在对应向量之间的几何关系中。

上下文嵌入模型是一种较新的方法,它通过从数据中学习单词的上下文关系来克服这些限制。上下文嵌入模型是在像维基百科这样的大型文本数据集上训练的。word2vec算法是该技术的一个实现,它不仅能将词的语义相似度转化为向量的几何相似度,而且能保持词之间的极性关系。例如,在word2vec表示中:

嵌入powershell脚本

由于训练一个好的模型需要大量的数据,我们使用了一个由386k个不同的未标记powershell脚本组成的大型多样的语料库。word2vec算法通常与人类语言一起使用,当应用于powershell语言时,它提供了类似的结果。我们将powershell脚本拆分为令牌,然后使用word2vec算法为每个令牌分配一个矢量表示。

图1显示了5000个随机选择的令牌的矢量表示的二维可视化,其中一些重要令牌高亮显示。注意语义相似的标记是放置在彼此附近的。例如,表示-eq、-ne和-gt的向量(在powershell中分别是“equal”、“not equal”和“greater than”的别名)聚集在一起。类似地,表示allsigned、remotesigned、bypass和unrestricted令牌的向量(它们都是powershell中执行策略设置的有效值)被聚集在一起。

通过检查标记的向量,我们发现了一些其他关系。

令牌相似性:使用令牌的word2vec表示,我们可以识别powershell中具有别名的命令。在许多情况下,最接近给定命令的标记是其别名。例如,令牌调用表达式Invoke-Expression及其别名IEX的表示形式彼此最接近。这种现象的另外两个例子是invoke webrequest及其别名iwr,以及get childitem命令及其别名gci。

我们还测量了几组标记之间的距离。例如,考虑四个标记$i、$j、$k和$true(请参见图2的右侧)。前三个通常用于表示数值变量,最后一个表示布尔常量。正如预期的那样,$ true令牌与其他令牌不匹配 ,它是距离群组中心最远的(使用欧几里德距离)。

更具体地说,对于网络安全中powershell的语义,我们检查了令牌的表示:绕过、正常、最小化、最大化和隐藏(参见图2的左侧)。虽然第一个标记是powershell中executionpolicy标志的合法值,但其余是windowstyle标志的合法值。正如预期的那样,bypass矢量表示距离相比其他四个标记的矢量的距离更远。

线性关系:由于word2vec保留线性关系,所以计算向量表示的线性组合会得到语义上有意义的结果。以下是我们发现的一些关系:

在上述每个表达式中,符号≈表示右侧的矢量与作为左侧计算结果的矢量最接近(在表示词汇表令牌的所有矢量中)。

利用深度学习检测恶意powershell脚本

我们使用前一节介绍的powershell语言的word2vec嵌入模型来训练能够检测恶意powershell脚本的深入学习模型。

分类模型使用标记为“clean”或“malicious”的powershell脚本数据集进行训练和验证,而嵌入模型则使用未标记的数据进行训练。流程如图3所示。

在Microsoft Azure中使用GPU计算,我们尝试了各种深度学习和传统ML模型。 与传统ML模型相比,性能最佳的深度学习模型将覆盖范围提高了22个百分点。 该模型如图4所示,结合了几个深度学习构建模块,如卷积神经网络(CNN)和长短期记忆递归神经网络(LSTM-RNN)。

应用深度学习来检测恶意PowerShell

自首次部署以来,深度学习模型高精度地检测到许多恶意和红色团队PowerShell活动。 通过PowerShell获得的信号与各种ML模型和Microsoft Defender ATP信号相结合,可以检测网络攻击。

以下是深度学习可以检测但对其他检测方法具有一定困难的恶意PowerShell脚本的示例:

总结

深度学习方法显着改善了威胁的检测,用于网络防御的深度学习系统的开发和产品化需要大量的数据,计算,资源。

使用深度学习更强地检测端点上的恶意PowerShell脚本和其他威胁可为身份,端点,电子邮件和数据,应用程序和基础架构提供全面的安全性。

*参考来源:microsoft,由Kriston编译,转载请注明来自FreeBuf.COM

# 恶意代码检测 # powershell # 深度学习
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者