深度学习检测恶意PowerShell新方法

2019-09-09 约 113 字 预计阅读 1 分钟

声明:本文 【深度学习检测恶意PowerShell新方法】 由作者 angel010 于 2019-09-09 09:11:54 首发 先知社区 曾经 浏览数 51 次

感谢 angel010 的辛苦付出!

微软是机器学习方法应用的先锋,已经将机器学习应用应用于情报、实时保护等方面。本文介绍一个如何用于自然语言处理的方法应用于检测恶意PowerShell脚本。

自然语言处理中的词嵌入

将词语(word)转化为向量(vector)的重要步骤之一就是机器学习算法。其中一个基本的方法就是one-hot encoding,它对词汇表中的每个词都会分配一个唯一的数字,然后以0s向量的方式来表示每个词,1表示某个词的索引。虽然成功应用到很多例子中了,one-hot encoding也有它的缺点,就是每个词都是等距的,并且每个词之间的语义关系不会反映在相应向量之间的几何关系中。

因此就产生了Contextual embedding (上下文嵌入)方法,通过学习紧凑表示来克服one-hot encoding方法的缺点。这种方法的假设是相似语境下单词的意思相近,整个学习是在Wikipedia这样的大型数据库中学习。Word2vec算法就是这种技术的一种应用,不仅能将单词的语义相近性转变成向量的几何关系中,也可以表示单词之间的极化关系。比如,

Madrid – Spain + Italy ≈ Rome

PowerShell脚本的词嵌入

因为要训练好嵌入需要很大的数据量,研究人员使用了386k不同的未标记的PowerShell脚本。Word2vec algorithm算法在应用于PowerShell语言时给出了类似的结果。为此,研究人员将PowerShell脚本分割为token,然后用Word2vec算法来为每个token分配向量化的表示。

图1是大约5000个随机选择的token的向量化表示的2唯视觉效果图。向量表示的-eq,-ne,-gt与PowerShell的equal, not-equal,和greater than对应。类似的,所有PowerShell中执行策略设置的有效值都是聚类表示的。

图1.使用Word2vec将5000个token 2D视觉表示
通过分析token的向量化表示,研究人员发现了一些有趣的关系。

Token similarity相似度

通过使用token的Word2vec表示,研究人员识别了PowerShell中有别名的命令。在许多情况下,与给定命令最接近的token就是其别名。比如,Invoke-Expression的token表示就和别名IEX最接近。再比如,Invoke-WebRequest和IWR,Get-ChildItemcommand和GCI。

研究人员还分析了不同token的距离。比如,图2中右侧的4个token$i, $j, $k 和 $true。前3个用来表示数字变量,最后一个表示布尔常量。因此,$true token与其他token不匹配,因此距离是最远的。PowerShell在网络安全应用中,研究人员检查了bypass, normal, minimized, maximized, hidden等的token表示,如图2左侧所示。第一个token是PowerShell的ExecutionPolicy flag的合法值,剩下的是WindowStyle flag的合法值。因此,bypass的向量表示就是与其他4个token距离最远的。

图2. 部分token的3D视觉表示

Linear Relationships线性关系

因为Word2vec保留了线性关系,计算向量表示的线性结合会产生一些语义上有意义的结果。比如下面的例子:

high – $false + $true ≈’ low 
‘-eq’ – $false + $true ‘≈ ‘-neq’ 
DownloadFile – $destfile + $str ≈’ DownloadString ‘
Export-CSV’ – $csv + $html ‘≈ ‘ConvertTo-html’
‘Get-Process’-$processes+$services ‘≈ ‘Get-Service’

通过上面的表达式,表示右侧的向量是与左侧计算结果最接近的向量。

用深度学习检测恶意PowerShell脚本

研究人员用Word2vec嵌入了PowerShell语言的方法来训练深度学习模型以检测恶意PowerShell脚本。分类模型是用大量与clean或malicious相关标记的PowerShell脚本来进行训练和验证的,而嵌入使用未标记的数据来进行训练。如图3所示:

图3 模型生成过程概览
研究人员用微软Azure的GPU资源对深度学习和传统机器学习模型进行了实验。深度学习模型的最佳性能与传统机器学习方法相比提升了22个百分点。如图4所示的模型中融合了多个深度学习模块,比如CNN和LSTM-RNN。

图4 最佳执行模型的网络架构

实际应用

因为是第一次部署,性能最佳的深度学习模型检测到了许多恶意的和红队的PowerShell活动,其中一些甚至没有被其他方法发现。这表明可以将PowerShell和机器学习模型融合来检测网络攻击活动。
下面是深度学习检测到的,但是其他检测模型无法检测到的一些恶意PowerShell脚本示例:

图5. 严重混淆的恶意脚本

图6. 下载和运行payload的混淆的脚本

图7. 解密和执行恶意代码的脚本

https://www.microsoft.com/security/blog/2019/09/03/deep-learning-rises-new-methods-for-detecting-malicious-powershell/

关键词:[‘安全技术’, ‘WEB安全’]

相关文章:


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now