这项信息安全技术,已是黑客们的心头好
图片来源:pexels.com
我们正处于深度学习的变革浪潮中。在构建计算机视觉与应用自然语言处理(NLP)方面,深度神经网络学习模型取得了前所未有的成就。
现在可谓是应用深度学习技术的大好时机,在目标检测、语言翻译和情感分析等任务中,人们不断引入最前沿的基准。
但这股浪潮并未席卷信息安全领域:深度学习在信息安全领域(InfoSec)的应用仍处于起步阶段;而在其他领域,深度学习的应用瞩目耀眼,吸引了大量研究人员与投资者。信息安全是最关键的领域之一,值得每位数据科学家的关注。
好消息是,与基于规则和基于经典机器学习的方案相比,深度学习已经在恶意软件检测和网络入侵检测两个领域取得了重要进展。
目录
· 什么是PowerShell?
· 了解当前问题
· 收集和生成PowerShell脚本数据集
· 数据实验
什么是PowerShell?
PowerShell是一个由鲁棒命令行壳层程序组成的任务自动化和配置管理框架。2016年8月,微软开放PowerShell源代码,使其得以跨平台兼容。
PowerShell已被广泛运用于各种网络攻击中。赛门铁克(Symantec)的一项研究显示,在赛门铁克Blue Coat沙盒分析的所有脚本中,近95.4%是恶意的。
黑客组织Odinaff甚至利用PowerShell的恶意脚本攻击银行及其他金融机构的网络。在网上,人们可以找到很多工具(例如PowerShellEmpire [6]和PowerSploit[7])用于监听、权限提升、内网漫游、持久性控制、逃避防御,最后达到数据窃取的目的。
黑客通过使用两种技术来逃避检测:
· 首先,通过运行无文件恶意软件,将从网上下载的恶意脚本直接加载到内存中,从而避免了反病毒(AV)文件扫描。
· 然后使用混淆技术,令代码难以解码。因此,任何反病毒扫描和分析师都难以判断脚本的真实意图。
使用混淆技术掩盖PowerShell脚本恶意意图的做法也靡然成风。由于其语法的高度灵活性,分析脚本意图也变得更加困难。在Acalvio的高交互蜜罐(一种诱饵系统)中,我们可以监控攻击者在蜜罐中执行的PowerShell日志、命令和脚本。研究人员收集这些日志并进行实时分析,检测脚本是否经过混淆处理。
了解当前问题
在Windows操作系统中,MicrosoftPowerShell成为开展网络攻击的理想工具。主要原因有两点:
· PowerShell默认安装在Windows系统中
· 黑客最擅长利用可进行混淆处理的现成工具,尽可能避开反病毒(AV)软件扫描。
微软推出了PowerShell3.0后,极大强化了PowerShell的日志记录功能。如果启用Script Block日志记录功能(ScriptBlock Logging),可在事件日志中捕获通过PowerShell执行的命令和脚本。通过对这些日志进行分析,我们就可以检测和阻止恶意脚本。
混淆处理通常用于逃避检测。丹尼尔和福尔摩斯(均为用户名)在Blackhat(黑帽技术大会,是世界顶级的黑客技术会议)上发布的论文中谈到了如何应对经过混淆处理过的脚本。他们使用了逻辑回归分类算法和梯度下降法来达到合理的分类精度,最终将混淆处理过的脚本与正常脚本区分开。
然而,深度前馈神经网络(FNN)可能会增强其他性能指标,如精确度和召回率。因此,在本博客中,我们决定使用深度神经网络,并将性能指标与不同的机器学习(ML)分类算法进行比较。
收集和生成PowerShell脚本数据集
我们已经将丹尼尔发布以及开放源代码的PowerShellCorpus数据集用于数据实验。该数据集由大约30万个PowerShell脚本组成,这些脚本是从各种开源网站(如GitHub、PowerShellGallery和TechNet)中获取的。
我们还从Poshcode中获取了PowerShell脚本,并将其添加到语料库中。最后,得到近3GB的脚本数据,其中包含30万个正常脚本。我们使用Invoke-Obfusion工具对脚本进行混淆处理。在对所有脚本进行混淆处理后,将包含类标签的数据集标记为正常脚本或混淆脚本。
数据实验
黑客在高交互蜜罐中进行的所有操作都被视作恶意行为。然而,高级的混淆处理依然能蒙蔽混淆检测。以下是获取进程列表的一个简单PowerShell命令:
Get-Process| Where($_.Handles -gt 600}| sort Handles| Format -Table
这一命令可能被混淆处理为:
(((“{2}{9}{12}{0}{3}{10}{13}{4}{18}{8}{17}{11}{5}{16}{1}{15}{14}{7}{19}{6}"-f'-P','es','G', 'rocess8Dy Whe','{','S','le','-Ta','-gt','e','r','y ','t','e','t',' 8Dy Forma','ort Handl','600} 8D','RYl_.Handles ','b')) -crePLACE'8Dy',[cHar]124-crePLACE'RYl',[cHar]36)| IEx
这种命令就看起来十分可疑、需要检测。下面是对同一命令进行细微混淆处理的另一示例:
&(“{1}{2}{0}"-f's','G','et-Proces')| &("{1}{0}"-f'here','W') {$_.Handles -gt600} | &("{1}{0}" -f'ort','S') Handles |.("{1}{0}{2}"-f '-','Format','Table')
这种混淆使得反病毒软件很难检测PowerShell命令/脚本的意图。大多数民间的恶意PowerShell脚本都会采用这种细微的混淆,可轻松避开反病毒软件的扫描。
安全分析人员也不可能检查每个PowerShell脚本以确定它是否经过混淆处理。因此,我们需要使混淆检测自动化。我们可以使用基于规则的方法进行混淆检测;但是,这种方法可能会遗漏很多混淆类型,还需要领域专家手动编写大量规则。因此,一种基于机器学习/深度学习的解决方案是该问题的理想答案。
通常,机器学习的第一步是数据清理和预处理。在混淆检测数据集中,数据预处理的任务就是从脚本中删除Unicode字符。
经过混淆处理的脚本和正常脚本截然不同。混淆脚本中使用的某些字符串不可能出现在正常脚本中。因此,我们采用字符级,而非基于词表示PowerShell脚本。
此外,在PowerShell脚本的编写中,复杂的混淆处理有时会完全混淆词/令牌/标识符之间的界限,使得任何基于词的标记化技术完全失效。事实上,基于字符的标记化技术也被安全研究人员用来检测PowerShell混淆脚本。
微软的李·霍尔姆斯在博客中讨论了使用基于字符频率表示和余弦相似性来检测混淆脚本。
对字符进行矢量化有多种方式。字符的独热编码用一位表示一个字符。根据脚本中是否存在该字符,位被设置为0或1。用单字符独热编码训练的分类器表现良好。
但是,通过捕获字符序列可以进一步完善这一方法。例如,像New-Object这样的命令可以被混淆处理为(‘Ne’+’w-‘+’Objec’+’t’)。加号运算符(+)在任何PowerShell脚本中都十分常见。但是,加号(+)后接单引号(‘)或双引号(“)可能就不那么常见了。因此,我们使用tf-idf字符二元语法来表示输入到分类器中的特征。
以下是训练数据集中tf-idf字符检测分数最高的20个二元语法:
正常脚本:
['er', 'te', 'in', 'at', 're', 'pa', 'st', 'on', 'me', 'en','ti', 'le', 'th', 'am', 'nt', 'es', 'se', 'or', 'ro', 'co']
混淆脚本:
["'+", "+'", '}{', ",'","',", 'er', 'te', 'in', 're', 'me', 'st', 'et', 'se', 'ar', 'on','at', 'ti', 'am', 'es', '{1']
每个脚本都用字符二元语法表示。我们使用深度前馈神经网络(FFN)处理所有这些特征,其中N个隐藏层使用Keras和TensorFlow工具。
图1:深度前馈神经网络混淆检测数据流程图
上面的数据流程图显示了混淆检测的训练和预测流程。我们尝试了深度前馈神经网络中隐藏层的各种值,最后发现N=6是最佳值。
RELU激活函数适用于所有隐藏层。每个隐藏层本质上都是全连接层(dense),输入是1000维,神经网络单元丢弃率为0.5。在最后一层,Sigmiod函数被用作激活函数。下列图2展示了用于混淆检测的深度前馈神经网络:
图2:用于混淆检测的深度前馈神经网络
可以看到,验证的精确度接近92%,这表明该模型在训练集之外得到了很好的应用。
接下来,在测试集中测试该模型,得到的准确率为93%,混淆类的召回率为0.99。下列图3展示了每个时期训练和验证数据的分类精度以及分类损失函数图:
图3:训练和验证阶段的分类精度以及损失函数图
对比下表中其他机器学习模型的数据,看一看深度前馈神经网络的结果。精确度和召回率可以用来衡量各种模型的有效性:
目标是将大多数混淆脚本检测出来。换句话说,我们想将混淆类的检测错误率降到最低。在这种情况下,召回率似乎是一个合适的衡量指标。
表1显示,与其他分类器相比,深度前馈神经网络模型的召回率更高。在实验中使用的是中等大小的数据集。日常使用的数据集通常很大,因此,与其他机器学习分类器相比,深度前馈神经网络的性能更好。
PowerShell混淆处理确实是避开现有反病毒软件、隐藏黑客意图的好方法。目前很多黑客都在使用这种技术。
留言 点赞 关注
我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”