基于硬件性能计数器时序数据的恶意软件检测方法

文档序号:37757028发布日期:2024-04-25 10:43阅读:6来源:国知局
基于硬件性能计数器时序数据的恶意软件检测方法

本发明属于计算机,特别是涉及基于硬件性能计数器时序数据的恶意软件检测方法。


背景技术:

1、随着互联网的发展,恶意软件攻击随之迅速升级。恶意软件越来越多地采用复杂的技术来逃避检测和分析。例如,部分恶意软件利用加密、混淆、多态和变形等技术来逃避静态检测,而反调试和反虚拟机方法使恶意软件能够识别当前所处的虚拟环境,从而不执行真正的恶意行为以逃避动态检测。同时,为了增强检测能力,基于大量数据训练生成的深度学习模型得到了广泛应用。然而,由于缺乏可解释性,这些模型被认为是黑盒。恶意软件检测在系统安全中起着至关重要的作用,依赖这种不透明的模型来进行关键决策存在巨大的安全风险。

2、静态检测方法侧重于分析恶意软件的静态特征,包括字节序列、汇编指令、字符串、操作码等,从而实现快速扫描。但是,一些恶意软件采用模糊和加密技术来隐藏其可区分的静态特征。因此需要更先进的技术来识别恶意软件。动态检测方法需要动态运行样本并在其运行期间采集数据。现在流行的动态检测方法主要采用在虚拟环境中运行样本采集数据,但采用反调试后者反虚拟机的恶意软件能够检测到虚拟环境,导致采集的数据失真。

3、硬件性能计数器是一组用于存储硬件相关活动的寄存器,这些寄存器位于cpu上,很难受到外界的篡改与干扰,可靠性较高。硬件性能计数器的设计最初是为了调试软件性能,这表明硬件性能计数器的值能够很好地反映上层软件的行为特征。恶意软件行为与良性软件行为存在较大差异,因此本发明希望通过硬件性能计数器的时序数据特征找出对应的恶意软件行为。


技术实现思路

1、为了解决上述问题,本发明提出基于硬件性能计数器时序数据的恶意软件检测方法。使用linux系统提供的perf工具集提供的perf stat命令,从linux系统的linux容器中获取恶意软件和良性软件的硬件性能计数器时序数据;之后采用长短期记忆递归神经网络作为深度学习模型,利用python程序对上一步所取得的硬件性能计数器时序数据进行预处理:将原始时序数据进行数据清洗并以csv文件形式保存。将预处理之后的硬件性能计数器时序数据输入长短期记忆递归神经网络中进行训练,获得最终的恶意软件检测模型。并使用shap值对恶意软件检测模型的分类结果进行解释,获取贡献度高的时间片和硬件性能计数器特征,再使用linux系统提供的perf工具集,从linux系统的linux容器中获取恶意软件和良性软件的系统调用时序数据。结合硬件性能计数器时序数据对软件行为进行分析,进一步揭示了硬件性能计数器和软件行为之间的相关性,增强了此检测方法的可解释性。

2、为实现上述目的,本发明采用如下技术方案:

3、基于硬件性能计数器时序数据的恶意软件检测方法,其特征在于,包括以下步骤:

4、1)将恶意软件样本与良性软件样本分别投放至linux容器中,使用linux系统提供的perf工具集采集对应linux容器的硬件性能计数器时序数据,利用python程序将取得的硬件性能计数器时序数据进行预处理,以便输入到长短期记忆递归神经网络中;

5、2)采用长短期记忆递归神经网络作为深度学习模型,将预处理之后的硬件性能计数器时序数据输入长短期记忆递归神经网络中进行训练,获得恶意软件检测模型;

6、3)利用python程序生成shap图,根据不同时间片不同特征的shap图对恶意软件检测模型的分类结果进行解释,使得此检测模型具备可解释性,并使用linux系统提供的perf工具集,从linux系统的linux容器中获取恶意软件和良性软件的系统调用时序数据,结合硬件性能计数器时序数据对软件行为进行分析,进一步揭示硬件性能计数器和软件行为之间的相关性。

7、本技术方案进一步的优化,所述步骤1)时序数据预处理方法为:

8、1.1)在实验机器中安装linux系统,并在该系统上搭建linux容器;

9、1.2)使用lxc file命令将恶意软件和良性软件样本传送到linux容器当中;

10、1.3)使用数据采集自动化脚本采集硬件性能计数器时序数据,脚本中具体采集数据的命令为:perf stat-e[要采集的硬件性能计数器事件]-i[以固定时间间隔输出硬件性能计数器值]-o[输出数据文件存放的路径]。

11、-e之后的参数是需要采集的硬件性能计数器的具体事件。本专利需采集16个硬件性能计数器事件数据,16个硬件性能计数器事件为:branch-instructions(分支指令数)、branch-misses(分支指令缺失数)、cache-misses(缓存缺失数)、cache-references(缓存引用数)、cpu-cycles(中央处理器周期数)、instructions(指令数)、l1-dcache-load-misses(一级数据缓存加载缺失数)、l1-dcache-loads(一级数据缓存加载数)、l1-dcache-stores(一级数据缓存存储指令数)、l1-icache-load-misses(一级指令缓存加载缺失数)、branch-loads(分支加载数)、branch-load-misses(分支指令加载缺失数)、dtlb-load-misses(数据页表缓存加载缺失数)、dtlb-store-misses(数据页表缓存存储缺失数)、itlb-load-misses(指令页表缓存加载缺失数)、bus-cycles(总线周期数);为防止硬件性能计数器时分复用的问题,将16个硬件性能计数器事件分4组采集,1组4个硬件性能计数器事件。

12、上述命令-i之后的参数:100。含义是每100ms输出一次采集到的硬件性能计数器的值。

13、上述命令-o之后的参数:/home/users/desktop/data/。含义是将上述命令采集到的数据形成的数据文件,输出到”/home/users/desktop/data/”该文件目录下。

14、上述命令执行之后,脚本中使用sleep 5s命令控制perf工具的运行时长。所以在本专利中perf工具在5s内输出50次需要采集的硬件性能计数器事件的值。sleep 5s命令后使用kill命令关闭掉perf工具来停止收集数据。

15、1.4)将步骤1.3)获得的数据进行预处理,利用python程序将硬件性能计数器原始时序数据进行数据清洗,删除掉无效单词:time、events、started、on,和无效信息:硬件性能计数器时序数据采集的时间、所使用容器的具体信息,对于未获得计数的性能计数器数据置0;

16、1.5)将步骤1.4)获得的数据以csv文件的形式进行保存。

17、本技术方案进一步的优化,所述步骤2)具体如下:

18、2.1)设计长短期记忆递归神经网络模型,并用步骤1)预处理后的数据训练长短期记忆递归神经模型;其中,恶意软件的标签为1,良性程序的标签为0;

19、2.2)恶意软件检测模型是经过修改的长短期记忆递归神经网络,其通过引入输入门、遗忘门和输出门来控制单元存储器,解决了梯度消失和爆炸的问题,长短期记忆递归神经网络的cell状态可以访问和存储长时记忆信息,使长短期记忆递归神经网络在处理顺序数据时能够记住之前的信息。

20、本技术方案更进一步的优化,所述长短期记忆递归神经网络结构如下:两层长短期记忆递归神经网络层,第一层lstm层设置256个神经元,每个输入样本是个50*16的矩阵,指定lstm层的激活函数是双曲正切,指定循环步的激活函数是线性整流单元;第二层lstm层与第一层结构相同,但此层lstm只会返回序列的最后一个输出,而不是返回完整序列的输出;加入一层展平层将多维数据转化为一维数据,展平层后面加入一层dropout层,本网络dropout层设置的比率是0.1,为防止过拟合随机丢弃一部分神经元的输出;之后加入三层全连接层,第一层全连接层设置64个神经元,激活函数采用relu,第二层全连接层设置32个神经单元接收上一个全连接层的64个单元作为输入,第三层全连接层是网络的输出层,有2个单元,用于输出软件是否为恶意软件。

21、本技术方案进一步的优化,所述步骤3)具体包括如下步骤:

22、3.1)使用python程序生成实验所使用的每个硬件特征不同时间片的shap值,并用python函数绘制成图,直观的分析每个硬件特征在不同时间片对模型分类效果的贡献度;

23、3.2)使用python程序生成相同时间片不同硬件特征的shap值,并用python函数绘制成图,直观的表现相同时间片不同硬件特征对模型分类效果的贡献度;

24、3.3)结合步骤3.1)和3.2)所得的shap图,定位到恶意软件和良性软件区分度最大的时间片,进一步定位到此时间片中区分良性软件和恶意软件贡献度最大的硬件特征,将贡献度前十的硬件特征生成排名图反馈给使用人员,以描述样本行为特征;

25、3.4)利用perf工具的perf record命令在linux容器环境下收集恶意软件和良性软件的系统调用时序数据;

26、3.5)将步骤3.3)生成的硬件特征贡献度排名图和步骤3.4)收集的系统调用时序数据利用python程序对齐时间轴生成对应的硬件特征及其系统调用的对照图,根据对照图使用人员可以看到对分类贡献度最大的时间片中贡献度前十的硬件特征对应的系统调用,协助使用人员分析恶意软件和良性软件在高级语义上的不同,以及硬件性能计数器时序数据与系统调用时序数据的内在关联,增强该模型的可靠性与透明性。

27、区别于现有技术,上述技术方案具有如下有益效果:

28、1)本发明提出的恶意软件检测方法利用硬件性能计数器时间序列作为硬件指纹来识别恶意软件。这种方法能够有效地检测使用了规避技术的恶意软件。

29、2)本发明中利用可解释的长短期记忆递归神经网络模型,通过分析系统调用和硬件性能计数器时序数据,进一步验证了硬件性能计数器时序数据与软件行为之间的相关性。这些使得本发明提出的恶意软件检测方法更加透明和可靠。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1