基于虚拟主机行为分析的病毒检测方法和装置与流程

文档序号:32310158发布日期:2022-11-23 11:18阅读:31来源:国知局
基于虚拟主机行为分析的病毒检测方法和装置与流程

1.本发明涉及工控安全技术领域,具体涉及一种基于虚拟主机行为分析的病毒检测方法和装置。


背景技术:

2.虚拟主机(virtual machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟主机中都能够实现。在计算机中创建虚拟主机时,需要将实体机的部分硬盘和内存容量作为虚拟主机的硬盘和内存容量。每个虚拟主机都有独立的cmos、硬盘和操作系统,可以像使用实体机一样对虚拟主机进行操作。在目前的计算机技术中,虚拟主机被应用于多种领域中,例如模拟计算机系统、测试恶意软件或病毒、云场景部署等,用于提高数据的运算效率。
3.虚拟主机行为分析是病毒检测的一种有效手段。基于虚拟主机所模拟的实体机软硬件环境,可以使病毒程序在该环境中充分运行,记录并分析病毒程序驱动下的虚拟主机的执行行为,并基于执行行为提取其特征码,实现对病毒程序的甄别。基于虚拟主机行为分析的病毒检测能够完全复原病毒程序,包括对加密后的病毒程序实现解密,从而提高了检测的强度,破解了大部分病毒程序的隐蔽手段,检测速度快,识别准确率高。
4.然而,虽然基于虚拟主机行为分析的病毒检测拥有很多优点,但是也同时存在着诸多局限。现有虚拟主机一般都是以实体机的部分硬盘和内存容量作为虚拟主机的硬盘和内存容量,因此在虚拟主机中运行程序时,避免不了从磁盘数据库中读写数据,虽然磁盘数据库也有一定的缓存机制,但是仍旧无法完全避免从外设到内存的数据交换,而这样的数据交换不但造成性能的损失,降低了病毒检测响应的实时性,而且也造成虚拟主机未能完全与实体机分隔,存在一定的外溢安全风险。


技术实现要素:

5.本发明提供的一种基于虚拟主机行为分析的病毒检测方法和装置,能够解决上述过程中的技术问题。
6.本发明解决上述技术问题的技术方案如下:第一方面,本发明提供了一种基于虚拟主机行为分析的病毒检测方法,包括以下步骤:主机在内存数据库中配置内存表,并将内存表共享给虚拟主机;检测虚拟主机中的被测程序所启动的主机行为相关线程,所述主机行为相关线程包括系统线程以及应用线程;利用lru算法对应用线程的活跃程度进行排序;并且,对虚拟主机的所述主机行为相关线程进行特征码提取,其中,根据应用线程的活跃程度采用相应的特征码提取规则;根据应用线程的活跃程度的排序,将不活跃状态的应用线程置换到内存表中。
7.优选的是,通过主机将内存表给各个虚拟主机共享,使得虚拟主机中的线程数据
能够按照内存表结构直接存储在内存之中并直接调用,当虚拟主机释放内存时,这些内存数据会归还至内存表中。
8.优选的是,所述系统线程为虚拟主机操作系统运行时必要的线程;所述应用线程为虚拟主机非操作系统的线程。
9.优选的是,通过所述lru算法对虚拟主机中的应用线程的活跃程度进行检测,并按照活跃程度从小到大排序,具体包括:对虚拟主机所有应用线程进行标记;按照应用线程的调用时间次序,在预设的时间窗口范围内,将该时间窗口中最后一次调用的应用线程标记为最活跃线程,其活跃程度赋值最高,最开始调用的应用线程标记为最不活跃线程,其活跃程度赋值最低,其余应用线程按照调用的时间先后依序赋值,并按照活跃程度从小到大排序。
10.优选的是,对虚拟主机的所述主机行为相关线程进行特征码提取,具体包括:针对虚拟主机的主机行为相关线程在内存中吞吐的数据块单元,通过哈希计算,计算该主机行为相关线程的特征码。
11.优选的是,对于系统线程,对于其在内存中吞吐的每个数据块单元均计算其哈希值,从而形成系统线程的特征码。
12.优选的是,对于应用线程,则根据应用线程的活跃程度,采用相应的特征码提取规则,按照与活跃程度成正比的抽样率,抽取应用线程在内存中吞吐的数据块单元,并计算所抽取的数据块单元的哈希值,形成所述特征码。
13.优选的是,将活跃程度小于活跃程度阈值的应用线程进行内存回收。
14.本发明提供了一种基于虚拟主机行为分析的病毒检测装置,包括:内存表配置模块、线程检测模块、线程特征码提取模块、线程内存管理模块;内存表配置模块,用于使主机在内存数据库中配置内存表,并将内存表共享给虚拟主机;线程检测模块,用于检测虚拟主机中的被测程序所启动的主机行为相关线程,所述主机行为相关线程包括系统线程以及应用线程;线程特征码提取模块,用于利用lru算法对应用线程的活跃程度进行排序;并且,对虚拟主机的所述主机行为相关线程进行特征码提取,其中,根据应用线程的活跃程度采用相应的特征码提取规则;线程内存管理模块, 用于根据应用线程的活跃程度的排序,将不活跃状态的应用线程置换到内存表中。
15.优选的是,对于系统线程和应用线程,线程特征码提取模块采用不同的特征码提取规则;其中,对于系统线程,对于其在内存中吞吐的每个数据块单元均计算其哈希值,从而形成系统线程的特征码;对于应用线程,则根据应用线程的活跃程度,采用相应的特征码提取规则,按照与活跃程度成正比的抽样率,抽取应用线程在内存中吞吐的数据块单元,并计算所抽取的数据块单元的哈希值,形成所述特征码。
16.本技术的有益效果是:本技术提供一种基于虚拟主机行为分析的病毒检测方法和装置,能够通过内存表的优势,并利用lru算法,将虚拟主机中的非系统的应用线程进行活跃程度排序,从而标记虚拟主机中不活跃的非系统应用线程,在行为分析过程中,对系统线程、活跃的应用线程、不活跃的应用线程采用不同的规则提取其特征码,从而增强了病毒甄
别的效率;并将这些非系统应用线程回收至内存表之中,进而减少虚拟主机的内存占用,提供空间利用率,同时提高了虚拟主机的运行速度,增强了虚拟主机和实体机的隔离特性,提升了病毒检测过程的安全性。
附图说明
17.图1为本技术的一种基于虚拟主机行为分析的病毒检测方法流程图;图2为本技术步骤s3的子流程图;图3为本技术步骤s31的子流程图;图4为本技术的一种基于虚拟主机行为分析的病毒检测装置框图。
具体实施方式
18.以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
19.为了能够更清楚地理解本技术的上述目的、特征和优点,下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。此处所描述的具体实施例仅仅用于解释本公开,而非对本技术的限定。基于所描述的本技术的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本技术保护的范围。
20.图1为本技术的一种基于虚拟主机行为分析的病毒检测方法,包括以下步骤:s1:主机在内存数据库中配置内存表,并将内存表共享给虚拟主机;在一些实施例中,所述内存表中存储的数据存放于内存之中,能够直接通过内存调用;所述虚拟主机在释放内存时,将内存数据直接归还于所述内存表中。
21.具体的,本方案中的内存表,也可称为内存数据库中的表,是数据库把表中的数据完全放在内存之中,可以通过内存直接点用,当重启数据库后,内存表中的数据会消失,但是内存表的表结构仍旧存在,而内存表的优点在于可以直接从内存之中读取数据,从而使内存表读取程序时和程序直接在内存中的操作速度是一样的。同时,通过主机将内存表给各个虚拟主机共享,使得虚拟主机中的线程数据能够按照内存表结构直接存储在内存之中并直接调用,当虚拟主机释放内存时,这些内存数据会归还至内存表中。
22.s2:检测虚拟主机中的被测程序所启动的主机行为相关线程,所述主机行为相关线程包括系统线程以及应用线程;在一些实施例中,所述检测虚拟主机中的被测程序所启动的主机行为相关线程,具体包括:s21:检测虚拟主机中的系统线程;s22:检测虚拟主机中的应用线程;其中,所述系统线程为虚拟主机操作系统运行时必要的线程;所述应用线程为虚拟主机非操作系统的线程。
23.在虚拟主机响应被测程序所下达的指令而新启动一个主机行为阶段,对该主机行为在所述虚拟主机所分配到的内存中新建的线程进行检测,这些线程被称之为主机行为相关线程;通过检测,从主机行为相关线程当中,识别出其中的系统线程,其他线程为应用线
程。
24.为了管理内存,提高空间利用率,可以选择首先通过检测区分系统线程和应用线程,进而,将系统线程与应用线程分开处理,即对虚拟主机中的线程进行检测,标记出虚拟主机操作系统运行时必要的线程与虚拟主机非操作系统的线程,同时对非操作系统的线程即应用线程进行管理。
25.s3:利用lru算法对应用线程的活跃程度进行排序;并且,对虚拟主机的所述主机行为相关线程进行特征码提取,其中,根据应用线程的活跃程度采用相应的特征码提取规则。
26.在一些实施例中,结合图2,即本方案s3的子流程图,所述s3包括:s31:利用lru算法对应用线程的活跃程度进行检测,并按照从小到大排序;在一些实施例中,结合图3,即本方案s31的子流程图,所述通过lru算法对虚拟主机中的应用线程的活跃程度进行检测,并从小到大排序包括:s311:对虚拟主机所有应用线程进行标记;s312:按照应用线程的调用时间次序,在预设的时间窗口范围内,将该时间窗口中最后一次调用的线程标记为最活跃线程,其活跃程度赋值最高,最开始调用的应用线程标记为最不活跃线程,其活跃程度赋值最低,其余应用线程按照调用的时间先后依序赋值,并按照活跃程度从小到大排序。
27.具体的,lru算法是一种缓存淘汰算法,其名称为least recently used(最近最少使用),即将最近最少使用的线程淘汰,例如,一块内存能够存储五个数据,在此内存中依次放入abcde五个数据,按照调用时间排序,e数据块为最近使用的数据,而a数据块为预设时间窗口内最先使用的数据块,当在这个内存中新插入一个数据f时,a数据则会被淘汰,在本方案中,已经对虚拟主机中应用线程的活跃程度进行了标记并排序。
28.s32:针对虚拟主机的主机行为相关线程在内存中吞吐的数据块单元,通过哈希计算,计算该主机行为相关线程的特征码。
29.对于上文提到的系统线程和应用线程,均以预定数据大小的数据块单元为基本单位;对于每个线程在内存中吞吐的数据块单元,即每个线程写入内存或者从内存中读出的数据块单元,将数据块单元执行哈希计算以获得与该数据块单元对应的一个固定比特长度的哈希值,并且将每个线程在内存中所吞吐的全部或部分数据块单元的哈希值数组作为该线程的特征码。
30.其中,对于步骤s2中检测并标记的系统线程和应用线程,步骤s32中采用不同的特征码提取规则。其中,对于系统线程,对于其在内存中吞吐的每个数据块单元均计算其哈希值,从而形成系统线程的特征码。对于应用线程,则根据应用线程的活跃程度,采用相应的特征码提取规则,按照与活跃程度成正比的抽样率,抽取应用线程在内存中吞吐的数据块单元,并计算所抽取的数据块单元的哈希值,形成所述特征码;从而,应用线程的活跃程度越高,则该应用线程用于计算特征码哈希值的数据块单元的数量越多,反之,应用线程的活跃程度越低,则用于计算特征码哈希值的数据块单元数量越少。
31.s4:根据应用线程的活跃程度的排序,将不活跃状态的应用线程置换到内存表中。
32.在一些实施例中,将活跃程度小于活跃程度阈值的应用线程进行内存回收。
33.具体的,本方案在上述线程淘汰的基础上,还能够对线程的活跃程度设置一个活
跃程度阈值,例如如果最不活跃线程的活跃程度为1,其余活跃程度依序加1,且将活跃程度阈值设为2,即将活跃程度后2位的两个线程进行淘汰处理,将这两个线程数据存放进内存表中,待需要时再调取使用,从而进一步提高空间利用率。从而,根据lru算法,将活跃程度处于末尾的线程数据淘汰掉,并将淘汰掉的数据存放进内存表之中,从而提高了空间利用率,而淘汰掉的数据在调用时还能够直接通过内存调用,从而提高了数据调用的速度。
34.本发明第二方面还提供了一种基于虚拟主机行为分析的病毒检测装置,如图4所示,包括:内存表配置模块、线程检测模块、线程特征码提取模块、线程内存管理模块。
35.具体而言,内存表配置模块,用于使主机在内存数据库中配置内存表,并将内存表共享给虚拟主机。
36.具体而言,在一些实施例中,所述内存表中存储的数据存放于内存之中,能够直接通过内存调用;所述虚拟主机在释放内存时,将内存数据直接归还于所述内存表中。
37.具体的,本方案中的内存表,也可称为内存数据库中的表,是数据库把表中的数据完全放在内存之中,可以通过内存直接点用,当重启数据库后,内存表中的数据会消失,但是内存表的表结构仍旧存在,而内存表的优点在于可以直接从内存之中读取数据,从而使内存表读取程序时和程序直接在内存中的操作速度是一样的。同时,通过主机将内存表给各个虚拟主机共享,使得虚拟主机中的线程数据能够按照内存表结构直接存储在内存之中并直接调用,当虚拟主机释放内存时,这些内存数据会归还至内存表中。
38.线程检测模块,用于检测虚拟主机中的被测程序所启动的主机行为相关线程,所述主机行为相关线程包括系统线程以及应用线程。
39.所述系统线程为虚拟主机操作系统运行时必要的线程;所述应用线程为虚拟主机非操作系统的线程。
40.线程检测模块在虚拟主机响应被测程序所下达的指令而新启动一个主机行为阶段,对该主机行为在所述虚拟主机所分配到的内存中新建的线程进行检测,这些线程被称之为主机行为相关线程;通过检测,从主机行为相关线程当中,识别出其中的系统线程,其他线程为应用线程。
41.为了管理内存,提高空间利用率,可以选择首先通过检测区分系统线程和应用线程,进而,将系统线程与应用线程分开处理,即对虚拟主机中的线程进行检测,标记出虚拟主机操作系统运行时必要的线程与虚拟主机非操作系统的线程,同时对非操作系统的线程即应用线程进行管理。
42.线程特征码提取模块,用于利用lru算法对应用线程的活跃程度进行排序;并且,对虚拟主机的所述主机行为相关线程进行特征码提取,其中,根据应用线程的活跃程度采用相应的特征码提取规则。
43.线程特征码提取模块利用lru算法对应用线程的活跃程度进行检测,并按照从小到大排序。具体包括:对虚拟主机所有应用线程进行标记;按照应用线程的调用时间次序,在预设的时间窗口范围内,将该事件窗口中最后一次调用的应用线程标记为最活跃线程,其活跃程度赋值最高,最开始调用的应用线程标记为最不活跃线程,其活跃程度赋值最低,其余应用线程按照调用的时间先后依序赋值,并按照活跃程度从小到大排序。
44.线程特征码提取模块针对虚拟主机的主机行为相关线程在内存中吞吐的数据块单元,通过哈希计算,计算该主机行为相关线程的特征码。
45.对于上文提到的系统线程和应用线程,均以预定数据大小的数据块单元为基本单位;对于每个线程在内存中吞吐的数据块单元,即每个线程写入内存或者从内存中读出的数据块单元,将数据块单元执行哈希计算以获得与该数据块单元对应的一个固定比特长度的哈希值,并且将每个线程在内存中所吞吐的全部或部分数据块单元的哈希值数组作为该线程的特征码。
46.其中,对于线程检测模块检测并标记的系统线程和应用线程,线程特征码提取模块采用不同的特征码提取规则。其中,对于系统线程,对于其在内存中吞吐的每个数据块单元均计算其哈希值,从而形成系统线程的特征码。对于应用线程,则根据应用线程的活跃程度,采用相应的特征码提取规则,按照与活跃程度成正比的抽样率,抽取应用线程在内存中吞吐的数据块单元,并计算所抽取的数据块单元的哈希值,形成所述特征码;从而,应用线程的活跃程度越高,则该应用线程用于计算特征码哈希值的数据块单元的数量越多,反之,应用线程的活跃程度越低,则用于计算特征码哈希值的数据块单元数量越少。
47.线程内存管理模块, 用于根据应用线程的活跃程度的排序,将不活跃状态的应用线程置换到内存表中。
48.进而,线程内存管理模块将活跃程度小于活跃程度阈值的应用线程进行内存回收。
49.具体的,本方案在上述线程淘汰的基础上,还能够对线程的活跃程度设置一个活跃程度阈值,例如如果最不活跃线程的活跃程度为1,其余活跃程度依序加1,且将活跃程度阈值设为2,即将活跃程度后2位的两个线程进行淘汰处理,将这两个线程数据存放进内存表中,待需要时再调取使用,从而进一步提高空间利用率。从而,根据lru算法,将活跃程度处于末尾的线程数据淘汰掉,并将淘汰掉的数据存放进内存表之中,从而提高了空间利用率,而淘汰掉的数据在调用时还能够直接通过内存调用,从而提高了数据调用的速度。
50.本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本技术的范围之内并且形成不同的实施例。
51.本领域的技术人员能够理解,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
52.虽然结合附图描述了本技术的实施方式,但是本领域技术人员可以在不脱离本技术的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
53.以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1