基于多标签分类器的恶意PowerShell检测
2023-08-26曹耀彬
曹耀彬
关键词:PowerShell;多标签分类器;深度神经网络;恶意代码;混淆;加密
0 引言
网络空间是现代战争中重要战场,高级持续性威胁攻擊(Advanced Persistent Threat,APT) 是一种复杂且持久的网络攻击,通常为有组织的攻击者发起,旨在获取敏感信息、窃取知识产权或破坏目标系统。APT攻击的目标通常是政府机构、大型企业、关键基础设施和研究机构等具有高价值数据和资产的实体。这些APT具有重大威胁,因为它们可以用于各种恶意活动,包括数据泄露、远程访问和系统入侵等。在所有APT攻击活动中,由于PowerShell的多功能性、隐蔽性和执行复杂命令的能力,成为网络犯罪分子的首选工具之一。攻击者可以使用PowerShell来执行各种恶意活动,如植入后门、窃取凭据、下载和执行恶意软件等。同时,PowerShell的广泛应用和混淆加密技术的不断演进,使得其在目标系统上的活动更难以被发现和阻止。深度混淆的脚本更是能够轻松地绕过现有的防御措施,因此,当前迫切需要一种更先进的技术来准确高效地检测深度混淆的恶意PowerShell代码。近年来,多标签分类器在解决恶意PowerShell检测的复杂性方面显示出巨大的潜力,多标签分类将多个标签分配给输入样本,以识别PowerShell脚本中存在的各种混淆[1]加密技术。与传统的单标签分类相比,多标签分类允许每个样本关联多个标签,可以同时识别多种混淆加密的复杂模式和特征,并且多标签分类器[2](Multi-label Classification, MLC) 能够根据训练数据自适应地学习新的混淆加密技术。如今,随着APT攻击的发展,基于PowerShell的攻击样本已经变得更加复杂多样,鉴于多标签更适用于恶意Power?Shell代码检测,并结合深度学习算法的优势,本文提出了一种新的基于深度神经网络的多标签分类器(Deep Neural Network Multi-label Classification,DNNMLC) 。
1 多标签分类
多标签分类器在现实世界的许多应用中发挥着重要作用。例如,在图像识别中,一幅图像可能包含多个对象,因此需要将图像分配到多个标签类别,如“行人”“红绿灯”和“汽车”等。在自然语言处理中,文本可以具有多个主题或情感,因此需要将文本分配到适当的标签类别,如“体育”“政治”和“娱乐”等。多标签分类器还可以应用于推荐系统、医学诊断和情感分析等领域。深度学习中的多标签分类器通常基于神经网络模型,如卷积神经网络(CNN) 、循环神经网络(RNN) 或Transformer等,这些模型能够自动学习输入数据的特征,并通过多个输出节点对每个标签类别进行预测。对于每个数据点,多标签分类器会将其被分配到多个类别中的一个或多个,其数学模型如下:给定一个m 维输入空间X={X1, X2,…, Xm},输出标签为Y={ Y1, Y2,…, Yn },其中n>1。
多标签分类器的学习主要分为以下三种类型:问题转换法[3](Problem Transformation Methods) 是将多标签分类问题转化为多个单标签分类问题,然后使用单标签分类器来解决每个子问题;算法适应法[4](Algorithm Adaptation Methods) 是通过修改现有的单标签分类算法,使其能够处理多标签分类问题;深度学习方法(Deep Learning Methods) 指使用深度学习技术对具有多个标签的数据进行分类。在实际应用中,多标签分类问题往往涉及高维稀疏数据、标签之间的相关性以及样本不平衡等问题,这对多标签分类算法的性能提出了更高的要求,深度学习的兴起使得多标签分类在处理数据时具有了更强的表现力和扩展性。
2 PowerShell 特征设计
使用不同的混淆加密技术可使PowerShell具有不同的字符分布,即使轻微的变化也能够逃避传统的检测方法,为判定混淆加密类型,本文设计的字符分布特征向量主要构成有如下四个方面。
2.1 字符频率
基于字符分布的特征是指通过统计PowerShell中各种字符出现频率,生成一组特征向量,用来训练深度学习模型。字符频率特征可以更全面精确地描述PowerShell命令中字符的数量和分布情况。
2.2 字符种类
不同的混淆加密方法,文本会有不同的字符种类,本文并没有通过对PowerShell进行预处理来消除或规范化冗余的标记或字符,而是从 PowerShell可打印字符中收集了97种字符作为输入向量一部分。
2.3 字符长度
基于编码方案的混淆通常比基于字符串的操作和压缩要长得多,字符长度是指PowerShell中字符的数量。通常来说,恶意PowerShell的字符长度要比正常的PowerShell长,因为恶意命令通常包含更多的代码和注释。
2.4 信息熵
一个字符串的信息熵[5]越高,说明该字符串中包含的字符更为随机,没有明显的规律可循,也就是说,这个字符串更加难以被预测和识别,对于恶意代码分类任务,字符串的信息熵可以作为一种特征来衡量恶意代码的混淆程度和字符分布的复杂性。
3 DNNMLC 设计与实现
3.1 DNNMLC 设计
深度神经网络(Deep Neural Network,DNN) 是一种由多个隐藏层组成的前馈神经网络模型,通过层层堆叠的方式学习数据的抽象特征表示。DNN 的优势在于其强大的拟合能力和表达能力,通过设计合理的网络结构,选择适当的激活函数和损失函数,并采用反向传播算法对网络参数进行优化,其可以适应恶意PowerShell复杂的字符代码分布和模式。
而多标签分类器的任务主要是学习输入特征与多个标签之间的关联性,标签可以代表不同的混淆加密,例如字符串混淆、变量替换、代码拼接等。本文设计的DNNMLC 如表1 所示,其中优化算法为 Adam(Adaptive Moment Estimation) ,Adam算法通过估计每个参数的一阶矩(平均梯度)和二阶矩(平均梯度的平方)来自适应调整每个参数的学习率,从而可以在处理大量数据和高维空间时提高训练效率。前5层激活函数选择ReLU(Rectified Linear Unit) 以增加网络的非线性表达能力,输出层使用激活函数Sigmoid,它可以将每个标签的输出映射到0~1的概率值。
4 实验设计与分析
4.1 数据集
本文使用的PowerShell數据集由两部分组成,一是在Github 下载的开源脚本5 000个,二是在由JeffWhite分享的4 100个标记分类的恶意PowerShell。9100 个PowerShell 脚本在数据预处理环节全部被Invoke-Obfuscation代码混淆工具中各种不同程度的混淆加密模式伪装。如图1所示,整个实验中,数据集中的80%用于模型训练,20%用于测试。
4.2 评估指标
在实验中多标签分类器使用了分类算法常用的4 种指标来评判模型有效性,定义如下:
1) 真阳性(True Positive, TP),分类结果为恶意样本, 真实为恶意样本的数量。
2) 假阳性(False Positive, FP),分类结果为恶意样本, 真实为正常样本的数量。
3) 真阴性(True Negative, TN),分类结果为正常样本, 真实为正常样本的数量。
4) 假阴性(False Negative, FN),分类结果为正常样本, 真实为恶意样本的数量。
本文设计的多标签器采用准确率和召回率2种指标来评估分类性能:
4.3 对比实验分析
为了验证本文所提方法的有效性,分别对采用不同学习算法模型的多标签分类器进行了实验对比分析。其中对问题转化法中的支持向量机(Support Vec?tor Machine,SVM)和随机森林(Random Forest,RF),算法适用法中K近邻(K-Nearest Neighbors,KNN)与决策树(Decision Tree,DT) 全部进行了实现,参数设计如表2 所示,分类效果对比如图2所示
最终通过实验发现,本文设计实现的基于DNN的多标签分类器,在检测20%数据集时,即使脚本被深度混淆,DNNMLC也能准确检测出各种混淆加密的复杂过程,并且整体的准确率能达到98%,召回率能达到96%。而传统的SVM、RF、KNN和DT的准确率与召回率普遍都在90%以下,其中遗漏比较多的是深度混淆的恶意PowerShell。DNNMLC检测出PowerShell混淆加密类型同时,就可以使用相应的正则表达式解混淆PowerShell脚本,然后调用微软的反恶意软件扫描接口AMSI[6](Anti-Malware Scan Interface)对相应的解混淆代码进行扫描[7],检测恶意PowerShell的意图,进而被系统的杀毒软件或Windows安全中心拦截,最大限度地阻拦恶意PowerShell绕过[8]系统的各种安全防御措施。
5 结论
PowerShell混淆加密技术通常对代码进行各种形式的修改,为了能够在较短的时间内快速响应和防止恶意行为, DNNMLC将PowerShell代码的解混淆任务看作一个多标签分类问题,将每一个特征看作一个标签。实验结果表明,本文设计实现的DNNMLC在检测恶意PowerShell混淆加密类型时,即使对于多重深度混淆的脚本也具有很高的检测精度、自适应性和可扩展性。DNNMLC 能够有效阻拦恶意PowerShell 的执行,给系统提供增强的恶意软件防护功能。