一种基于深度学习的内存驻留恶意代码检测方法及系统

未命名 10-09 阅读:255 评论:0


1.本发明涉及计算机网络安全和大数据领域,具体涉及一种基于深度学习的内存驻留恶意代码检测方法及系统。


背景技术:

2.随着互联网技术的发展,网络与人们的生活联系日益紧密,网络空间安全形势日益复杂。随着反病毒程序在检测打包和代码混淆等逃避方法方面变得越来越强大,内存中代码执行攻击已成为其中一种恶意代码广泛使用的隐身技术,使用内存中代码执行技术在内存中执行shellcode和可执行文件的恶意代码被定义为内存驻留恶意代码。这种恶意代码对文件系统进行了极少的修改,只在内存中执行恶意操作,几乎不会在磁盘上留下任何痕迹,使得传统的静态和动态分析方法难以检测。
3.随着内存驻留恶意代码的大规模流行,基于内存的分析逐渐成为一种更为有效的恶意代码检测方法。内存取证是一种从计算机的内存转储中捕获易失性内存数据(ram)并对其进行分析的技术。与传统的分析方法相比,如果恶意代码使用内存中代码执行方法,静态和动态分析方法可能会无法检测出恶意代码,但它们将无法逃避内存取证的分析。
4.因此,当前对于内存驻留恶意代码检测的需求变得很高,目前的内存取证工具使用的检测方法可以分为基于操作系统以及进程的内存页面特征的检测和结合人工智能技术的内存取证两种方法。然而,现有检测方法的准确性依赖于网络安全专家选择的内存驻留恶意代码的各种手工特征,需要在内存分析领域的专业知识,特征选择的过程非常耗时且不可推广。另外,目前的基于机器学习的检测工具没有充分利用内存数据提供的信息。因此传统方法无法高效检测内存驻留恶意代码。


技术实现要素:

5.针对上述问题,本发明提出了一种基于深度学习的内存驻留恶意代码检测方法及系统。通过在测试环境中运行内存驻留恶意代码以及收集的良性程序,获取程序运行时的内存转储数据,分析内存转储数据,将其转换为rgb图片并结合切分技术处理内存转储图片,基于深度神经网络实现高效内存驻留恶意代码检测。
6.为达到上述目的,本发明采取的具体技术方案是:
7.一种基于深度学习的内存驻留恶意代码检测方法,所述方法包括:
8.在虚拟机中运行待检测软件,得到该待检测软件对应的内存转储文件;
9.每次读取的所述内存转储文件的三个字节,将所述三个字节分别填充进r通道、g通道和b通道,得到该待检测软件对应的一内存转储图片;
10.将所述内存转储图片剪切为若干张子图片;
11.提取每一子图片的特征且向量化,并对得到的特征向量进行分类,得到该子图片的分类结果;
12.根据所述待检测软件对应的所有子图片的分类结果,得到该待检测软件的内存驻
留恶意代码检测结果。
13.进一步地,所述在虚拟机中运行待检测软件,得到该待检测软件对应的内存转储文件,包括:
14.修改虚拟机的配置;所述配置包括:mac地址、屏幕分辨率和bios序列号;
15.将未运行任何待检测程序时的虚拟机快照作为参考内存转储,将运行任何待检测程序时的虚拟机快照作为待测内存转储文件;
16.逐个对比所述参考内存转储与所述待测内存转储文件的数据,并删除待测内存转储文件中的重复数据,以得到该待检测软件对应的内存转储文件。
17.进一步地,所述修改虚拟机的配置,包括:
18.卸载vmware tools;
19.和,
20.将虚拟机序列号修改为与物理机相同的bios序列号;
21.和,
22.将mac地址修改除默认vmware mac地址外的任何值;
23.和,
24.将屏幕分辨率修改为除默认值外的任何值。
25.进一步地,所述逐个对比所述参考内存转储与所述待测内存转储文件的数据,并删除待测内存转储文件中的重复数据,以得到该待检测软件对应的内存转储文件之前,还包括:
26.针对同一所述参考内存转储与所述待测内存转储文件中多次出现的共享页面,只保留一组共享页面中的一个。
27.进一步地,所述每次读取的所述内存转储文件的三个字节,将所述三个字节分别填充进r通道、g通道和b通道,得到该待检测软件对应的一内存转储图片,包括:
28.针对每次读取的所述内存转储文件的三个字节,将每一字节转换为一像素后,填入一个三维数组;
29.将所述三维数组的三个维度分别填入r通道、g通道和b通道,生成一rgb图片;其中,所述rgb图片的分辨率在6000
×
6000-10000
×
10000像素之间;
30.通过双三次插值技术将所述rgb图片的分辨率调整统一后,得到内存转储图片。
31.进一步地,所述将所述内存转储图片剪切为若干张子图片的方法,包括:基于非重叠滑动窗口机制的图像剪裁方法。
32.进一步地,所述提取每一子图片的特征且向量化,并对得到的特征向量进行分类,得到该子图片的分类结果,包括:
33.将所述子图片输入训练后的resnet-18网络,并取所述resnet-18网络的平均池化层的输出作为子图片的特征向量;
34.利用训练后的基于注意力机制的gru网络,对所述特征向量进行分类,得到该子图片的分类结果。
35.进一步地,所述根据所述待检测软件对应的所有子图片的分类结果,得到该待检测软件的内存驻留恶意代码检测结果,包括:
36.计算所有子图片的分类结果的均值;其中,在一子图片来自良性代码的情况下,所
述子图片的分类结果对应的取值为a,在一子图片来自良性代码的情况下,所述子图片的分类结果对应的取值为b;
37.将所述均值与一阈值进行比较,以得到该待检测软件的内存驻留恶意代码检测结果。
38.一种基于深度学习的内存驻留恶意代码检测系统,所述系统包括:
39.内存数据收集与预处理模块,用于运行待检测软件,得到该待检测软件对应的内存转储文件;
40.可视化与图片切割模块,用于每次读取的所述内存转储文件的三个字节,将所述三个字节分别填充进r通道、g通道和b通道,得到该待检测软件对应的一内存转储图片;将所述内存转储图片剪切为若干张子图片;
41.视觉特征提取与检测模块,用于提取每一子图片的特征且向量化,并对得到的特征向量进行分类,得到该子图片的分类结果;根据所述待检测软件对应的所有子图片的分类结果,得到该待检测软件的内存驻留恶意代码检测结果。
42.一种计算机设备,其特征在于,所述计算机设备包括:处理器以及存储有计算机程序指令的存储器;所述处理器执行所述计算机程序指令时实现上述任一项所述的方法。
43.本发明的积极效果如下:
44.由于内存驻留恶意代码已经逐渐成为攻击者和攻击组织广泛使用的恶意代码隐身技术,传统的恶意代码检测方法已经无法应对日益复杂的恶意代码混淆技术的检测需求。本发明针对这一问题,提出了一种端到端的内存恶意代码检测方法,该方法能够有效检测出内存驻留恶意代码样本,提升了windows系统中恶意代码检测效率,并且大大提高了检测效率,降低了恶意代码分析的人工成本和时间成本。
附图说明
45.图1是本发明方案的整体结构示意图。
46.图2是内存转储数据收集与处理流程图。
47.图3是rgb内存转储图片生成流程图。
48.图4是内存转储特征提取和内存驻留恶意代码检测算法流程图。
49.图5是待测程序检测分值计算和检测结果判定流程图。
50.图中100、200、300、400、500、600、210、220、230、310、320、410、420、430、510、520:步骤。
具体实施方式
51.为使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的目的、特征和优点能够更加明显易懂,下面结合附图和事例对本发明中技术核心作进一步的详细说明。
52.本实施例提供一种基于深度学习的内存驻留恶意代码检测方法,如图1所示流程图,具体包括以下步骤:
53.步骤100:获取待检测的良性软件与内存驻留恶意代码。
54.步骤200:修改要运行待检测的良性软件样本与内存驻留恶意代码样本的虚拟机
配置,包括mac地址、屏幕分辨率、bios序列号等,将待检测的样本放入虚拟机中运行,保存运行时的快照文件作为内存转储文件,并删除其中的冗余数据。
55.步骤300:将获取到的内存转储文件转换为rgb图片,每次读取文件的三个字节分别填充进r,g,b通道,生成一张内存转储图片,使用非重叠滑动窗口方法将超高分辨率的内存转储图片裁剪成多张子图片,作为一组保存。
56.步骤400:将待测内存转储图片的子图片分为训练集和测试集,作为预训练的resnet-18模型的输入,深度学习模型提取待测子图片的特征并进行向量化,取其平均池化层的输出作为子图片的特征向量,随后输入基于注意力的lstm网络,训练并最终得到一个内存驻留型恶意代码检测模型。
57.步骤500:待检测内存转储图片的子图片输入训练好的检测模型,输出每张子图片的检测结果,检测结果用0或1表示,0表示该子图片来自良性样本,1表示该子图片来自内存驻留恶意代码,随后计算一个样本对应的全部子图片检测结果的均值,作为待测程序的最终检测分值。
58.步骤600:根据程序的检测分值,设置一个阈值,当待测程序的检测分值大于该阈值时,判断该程序为内存驻留恶意代码,否则,为良性程序。
59.可以理解的,同样可以使用0表示该子图片来自内存驻留恶意代码,1表示该子图片来自良性样本,然后使用另一个阈值,断该程序为内存驻留恶意代码,否则,为良性程序。
60.图2所示为内存转储数据收集与处理流程图,具体说明如下:
61.步骤210:对虚拟机的配置进行修改,包括卸载vmware tools、修改mac地址、修改屏幕分辨率、修改bios序列号为与物理机相同等,目的是防止运行待测样本时因检测出虚拟环境而停止运行或自删除。
62.步骤220:将从收集的数据集中的恶意和良性样本逐个放入修改好配置的虚拟机中运行,并使用脚本控制vmrun程序自动化地保存程序运行时虚拟机的内存映像。
63.步骤230:删除内存转储文件中的重复数据,包括删除样本的内存转储文件与未运行恶意样本时虚拟机初始状态的内存转储相比完全相同的内存页面,以及对于样本的内存转储文件中完全相同的n个内存页面,删除n-1个,仅保留一个。最后得到仅与样本在内存中的行为相关的内存页面,以便在深度学习算法中使用。
64.图3所示为rgb内存转储图片生成流程图,具体说明如下:
65.步骤310:逐个读取删除重复数据后的内存转储文件,将内存转储文件的每8位(1字节)转换成一个像素值(0x00转换为像素值0,0xff转换为像素值255)。每次从一个内存转储文件中读取三个像素值,并将它们填入一个三维数组,三个维度分别填入r、g、b通道,生成一个rgb图片。图片的最终大小由图片中的像素数决定,内存转储图片的分辨率从6000
×
6000像素到10000
×
10000像素不等,大小为20mb-70mb,为超高分辨率图片。
66.步骤320:首先使用双三次插值法将所有rgb内存转储图片调整为5600
×
5600像素,再使用非重叠滑动窗口机制将rgb内存转储图片逐一裁剪成多个子图片。
67.图4所示为内存转储特征提取和内存驻留恶意代码检测算法流程图,具体说明如下:
68.步骤410:依次将内存转储图片的子图片输入resnet-18模型,取模型平均池化层输出的长度为512的一维向量作为一个子图片特征提取的结果。
69.步骤420:将提取出的子图片特征向量按照6:2:2的比例划分为训练集、验证集和测试集,作为基于attention的gru网络的输入,训练内存驻留型恶意代码检测模型。其中,训练时,为特征向量添加一个标签,表示其来源的程序为良性或者恶意。
70.步骤430:在基于attention的gru网络训练过程中,通过参数调节优化模型的内存驻留型恶意代码检测效果,并找到最佳参数,训练出最终检测模型。生成检测模型后,封装模型及其参数,用于后续对待检测文件的分类、检测。
71.图5所示为待测程序检测分值计算和检测结果判定流程图,具体说明如下:
72.步骤510:基于attention的gru网络输出每个子图片的预测结果后,首先计算每个625个输出结果的总和,输出数值为1或0,即每个子图片对内存转储的最终分类进行投票,数值1表示驻留型恶意代码,数值0表示良性软件。然后计算子图片投票的平均值,作为被测样本最终的检测结果。
73.步骤520:将最终被测样本的检测结果与预先设定的阈值进行对比,如果最终检测结果大于等于阈值,判定该被测样本为内存驻留恶意代码,如果小于阈值则判定为良性软件。最终,系统输出对被测样本的检测结果。
74.其中,该阈值被设定为分类效果最好时的数值,计算出一个内存转储图片对应所有子图片的检测结果的均值,作为待测程序的检测分值,分值越高,则其对应的程序被模型判断为内存驻留型木马的概率越高,若检测分值大于等于阈值,即可在此基础上确定该程序为内存驻留型木马,根据实验结果,阈值被设置为0.6时效果最佳。
75.最后所应说明的是,以上实施案例仅用以说明本发明的技术方案而非限制,尽管使用事例对本发明进行了详细说明,本领域的普通技术人员应当理解,可对本发明的技术方案进行修改或者等价替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

技术特征:
1.一种基于深度学习的内存驻留恶意代码检测方法,其特征在于,所述方法包括:在虚拟机中运行待检测软件,得到该待检测软件对应的内存转储文件;每次读取的所述内存转储文件的三个字节,将所述三个字节分别填充进r通道、g通道和b通道,得到该待检测软件对应的一内存转储图片;将所述内存转储图片剪切为若干张子图片;提取每一子图片的特征且向量化,并对得到的特征向量进行分类,得到该子图片的分类结果;根据所述待检测软件对应的所有子图片的分类结果,得到该待检测软件的内存驻留恶意代码检测结果。2.如权利要求1所述的方法,其特征在于,所述在虚拟机中运行待检测软件,得到该待检测软件对应的内存转储文件,包括:修改虚拟机的配置;所述配置包括:mac地址、屏幕分辨率和bios序列号;将未运行任何待检测程序时的虚拟机快照作为参考内存转储,将运行任何待检测程序时的虚拟机快照作为待测内存转储文件;逐个对比所述参考内存转储与所述待测内存转储文件的数据,并删除待测内存转储文件中的重复数据,以得到该待检测软件对应的内存转储文件。3.如权利要求2所述的方法,其特征在于,所述修改虚拟机的配置,包括:卸载vmware tools;和,将虚拟机序列号修改为与物理机相同的bios序列号;和,将mac地址修改除默认vmware mac地址外的任何值;和,将屏幕分辨率修改为除默认值外的任何值。4.如权利要求2所述的方法,其特征在于,所述逐个对比所述参考内存转储与所述待测内存转储文件的数据,并删除待测内存转储文件中的重复数据,以得到该待检测软件对应的内存转储文件之前,还包括:针对同一所述参考内存转储与所述待测内存转储文件中多次出现的共享页面,只保留一组共享页面中的一个。5.如权利要求1所述的方法,其特征在于,所述每次读取的所述内存转储文件的三个字节,将所述三个字节分别填充进r通道、g通道和b通道,得到该待检测软件对应的一内存转储图片,包括:针对每次读取的所述内存转储文件的三个字节,将每一字节转换为一像素后,填入一个三维数组;将所述三维数组的三个维度分别填入r通道、g通道和b通道,生成一rgb图片;其中,所述rgb图片的分辨率在6000
×
6000-10000
×
10000像素之间;通过双三次插值技术将所述rgb图片的分辨率调整统一后,得到内存转储图片。6.如权利要求1所述的方法,其特征在于,所述将所述内存转储图片剪切为若干张子图片的方法,包括:基于非重叠滑动窗口机制的图像剪裁方法。
7.如权利要求1所述的方法,其特征在于,所述提取每一子图片的特征且向量化,并对得到的特征向量进行分类,得到该子图片的分类结果,包括:将所述子图片输入训练后的resnet-18网络,并取所述resnet-18网络的平均池化层的输出作为子图片的特征向量;利用训练后的基于注意力机制的gru网络,对所述特征向量进行分类,得到该子图片的分类结果。8.如权利要求1所述的方法,其特征在于,所述根据所述待检测软件对应的所有子图片的分类结果,得到该待检测软件的内存驻留恶意代码检测结果,包括:计算所有子图片的分类结果的均值;其中,在一子图片来自良性代码的情况下,所述子图片的分类结果对应的取值为a,在一子图片来自良性代码的情况下,所述子图片的分类结果对应的取值为b;将所述均值与一阈值进行比较,以得到该待检测软件的内存驻留恶意代码检测结果。9.一种基于深度学习的内存驻留恶意代码检测系统,其特征在于,所述系统包括:内存数据收集与预处理模块,用于运行待检测软件,得到该待检测软件对应的内存转储文件;可视化与图片切割模块,用于每次读取的所述内存转储文件的三个字节,将所述三个字节分别填充进r通道、g通道和b通道,得到该待检测软件对应的一内存转储图片;将所述内存转储图片剪切为若干张子图片;视觉特征提取与检测模块,用于提取每一子图片的特征且向量化,并对得到的特征向量进行分类,得到该子图片的分类结果;根据所述待检测软件对应的所有子图片的分类结果,得到该待检测软件的内存驻留恶意代码检测结果。10.一种计算机设备,其特征在于,所述计算机设备包括:处理器以及存储有计算机程序指令的存储器;所述处理器执行所述计算机程序指令时实现如权利要求1-8任一项所述的方法。

技术总结
本发明公开了一种基于深度学习的内存驻留恶意代码检测方法及系统,所述方法包括:在虚拟机中运行待检测软件,得到该待检测软件对应的内存转储文件;每次读取的内存转储文件的三个字节,将三个字节分别填充进R通道、G通道和B通道,得到该待检测软件对应的一内存转储图片;将内存转储图片剪切为若干张子图片;提取每一子图片的特征且向量化,并对得到的特征向量进行分类,得到该子图片的分类结果;根据待检测软件对应的所有子图片的分类结果,得到该待检测软件的内存驻留恶意代码检测结果。本发明提升了Windows系统中恶意代码检测效率,降低了恶意代码分析的人工成本和时间成本。降低了恶意代码分析的人工成本和时间成本。降低了恶意代码分析的人工成本和时间成本。


技术研发人员:刘奇旭 刘嘉熹 冯云 陈艳辉 谭儒 代峰 靳泽
受保护的技术使用者:中国科学院信息工程研究所
技术研发日:2023.06.01
技术公布日:2023/10/7
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐