本发明涉及计算机网络安全领域,特别涉及一种动态提取可执行文件内存映像的方法及系统。
背景技术:
随着计算机技术的发展,恶意代码与反病毒程序之间的对抗逐渐升级,恶意代码利用越来越多的手段隐藏自身,通过加密变形等手段逃避反病毒程序的查杀, 使得同样一个恶意代码经过变换,在最终二进制层面可以获得海量的不同形势,导致反病毒程序通过静态特征码检测的手段遇到极大的挑战。为了对抗这种加密变形,防病毒程序可以采用一种延迟检测的手段,即等待恶意代码在内存中加载完成,将原始二进制代码完全解密释放到内存种,再从内存中将恶意代码的映像文件提取出来进行检测。但是,很多恶意代码使用了用后删除这样的手段,即将变换后代码释放到内存使用后便将其释放掉,这样传统的提取内存映像的方法就失去了作用。
同时,一部分恶意代码并不将变换后的恶意代码释放到可执行文件的内存空间内,而是将代码释放到栈空间或者后期分配的堆空间(例如使用堆喷射或栈喷射技术的shellcode)。那么传统的方法由于只提取可执行文件本身而无法获取目标进程动态分配的内存空间,就无法对这些动态分配出来的内存地址空间里面的恶意代码进行检测。
技术实现要素:
本发明提出一种动态提取可执行文件内存映像的方法及系统,利用一种随程序运行轨迹,动态提取可执行文件内存映像的方法来解决解密变形后的恶意代码释放到动态分配的内存空间来躲避反病毒软件通过提取可执行文件内存映像来进行查杀的问题。
一种动态提取可执行文件内存映像的方法,包括:
利用虚拟机加载目标可执行文件;
根据预设间隔频率定时提取目标可执行文件的内存映像;
对提取出来的内存映像进行消重;
将消重后的所有内存映像保存并提交检测程序检测。
所述的方法中,所述预设间隔频率包括预设执行步数间隔或预设时间间隔。
所述的方法中,所述目标可执行文件的内存映像包括:目标可执行文件、进程的栈内存及动态分配的堆内存。
所述的方法中,对提取出来的内存映像进行消重具体为:将提取出来的内存映像计算哈希,删除哈希相同的内存映像。
一种动态提取可执行文件内存映像的系统,包括:
目标加载模块,用于利用虚拟机加载目标可执行文件;
内存映像提取模块,用于根据预设间隔频率定时提取目标可执行文件的内存映像;
消重模块,用于对提取出来的内存映像进行消重;
存储模块,用于将消重后的所有内存映像保存并提交检测程序检测。
所述的系统中,所述预设间隔频率包括预设执行步数间隔或预设时间间隔。
所述的系统中,所述目标可执行文件的内存映像包括:目标可执行文件、进程的栈内存及动态分配的堆内存。
所述的系统中,对提取出来的内存映像进行消重具体为:将提取出来的内存映像计算哈希,删除哈希相同的内存映像。
本发明的优势在于不会遗漏可执行文件本身内存映像之外的恶意代码,解决了恶意代码按需释放真实恶意代码躲避查杀的问题,并且通过哈希去重的方法避免了大量重复内存片段的出现,节省了资源消耗。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种动态提取可执行文件内存映像的方法流程图;
图2为本发明一种动态提取可执行文件内存映像的系统结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明。
本发明提出一种动态提取可执行文件内存映像的方法及系统,利用一种随程序运行轨迹,动态提取可执行文件内存映像的方法来解决解密变形后的恶意代码释放到动态分配的内存空间来躲避反病毒软件通过提取可执行文件内存映像来进行查杀的问题。
一种动态提取可执行文件内存映像的方法,如图1所示,包括:
S101:利用虚拟机加载目标可执行文件;所述虚拟机可以为VMWare、VirtualBox等;
S102:从程序的入口点开始,根据预设间隔频率定时提取目标可执行文件的内存映像;
S103:对提取出来的内存映像进行消重;
S104:将消重后的所有内存映像保存并提交检测程序检测。
所述的方法中,所述预设间隔频率包括预设执行步数间隔或预设时间间隔。
所述的方法中,所述目标可执行文件的内存映像包括:目标可执行文件、进程的栈内存及动态分配的堆内存。
所述的方法中,对提取出来的内存映像进行消重具体为:将提取出来的内存映像计算哈希,删除哈希相同的内存映像。
本发明还提出一种动态提取可执行文件内存映像的系统,如图2所示,包括:
目标加载模块201,用于利用虚拟机加载目标可执行文件;
内存映像提取模块202,用于根据预设间隔频率定时提取目标可执行文件的内存映像;
消重模块203,用于对提取出来的内存映像进行消重;
存储模块204,用于将消重后的所有内存映像保存并提交检测程序检测。
所述的系统中,所述预设间隔频率包括预设执行步数间隔或预设时间间隔。
所述的系统中,所述目标可执行文件的内存映像包括:目标可执行文件、进程的栈内存及动态分配的堆内存。
所述的系统中,对提取出来的内存映像进行消重具体为:将提取出来的内存映像计算哈希,删除哈希相同的内存映像。
本发明的优势在于不会遗漏可执行文件本身内存映像之外的恶意代码,解决了恶意代码按需释放真实恶意代码躲避查杀的问题,并且通过哈希去重的方法避免了大量重复内存片段的出现,节省了资源消耗。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。