具体实施方式
由于恶意代码在虚拟机上的执行时,无论是恶意代码读写宿主机存储器的操作、还是访问CPU的操作都由虚拟化平台转发给宿主机的物理硬件,所以恶意代码执行时实际发生作用的场所是宿主机的物理硬件,并不是逻辑上的虚拟机。而现有虚拟机恶意代码检测方案要求在同一宿主机上的所有虚拟机上都分别安装杀毒软件执行恶意代码检测,因此现有技术存在着检测效率低下、占用宿主机资源较多的问题。
另外,在升级杀毒软件时要保证同步升级所有虚拟机上的杀毒软件,否则杀毒软件版本较低的虚拟机仍然可能被感染恶意代码,因此现有技术还存在着管理更新维护较为复杂的问题。
本发明实施例一至实施例五从宿主机的角度对恶意代码的检测方法进行介绍。实施例六、实施例七从集群查杀设备的角度对恶意代码的检测方法进行介绍。
下面结合各个附图对本发明实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细的阐述。
实施例一
附图1为本实施例中硬件虚拟化场景下的宿主机的结构原理示意图。为了便于描述,这里将宿主机抽象为三层逻辑架构,分别为上层的各个虚拟机VM1~VMn、中间层的虚拟机监视器(hypervisor)和底层硬件。底层硬件包括中央处理器(CPU,Center Processing Unit)、内存、网络适配器、磁盘等等。
请参照附图2a,对本发明实施例提供的恶意代码的检测方法的流程进行详细描述:
步骤201,在宿主机的虚拟机监视器中监控指令的执行情况;
具体地,当虚拟机上执行程序代码时,对各种物理硬件设备的读写访问请求被发送到虚拟机监视器时,会被转义为所述虚拟机所在的宿主机虚拟机监视器中的执行指令,并通过虚拟机监视器来真正地访问物理硬件设备。
其中,转义操作是现有虚拟机监视器本身的功能,转义操作将虚拟机对虚拟硬件设备的访问转换成虚拟机监视器对真正物理硬件设备的访问,是虚拟机中的程序代码在执行过程中不可缺少的一个环节,其详细的技术细节在这里不再赘述。
需要说明的是,本发明实施例在宿主机的虚拟机监视器中所监控的指令的执行情况,是指虚拟机监视器转义后的指令的执行情况,而并非转义前虚拟机中程序代码的执行情况。
步骤202,根据所述指令的执行情况,获得所述程序代码的执行特征;
其中,程序代码的执行特征包括:执行该程序代码时产生的读写访问请求转义生成的指令的内容、所述指令在所述虚拟机监视器中的行为特征、或所述指令访问物理硬件设备的行为特征。
其中,所述指令在虚拟机监视器中的行为特征包括:该指令所要修改的该虚拟机监视器中的系统文件的内容、存储位置、或者文件参数信息等,文件参数信息包括系统文件的名称标识、生成时间、版本号、访问权限等等。
所述指令访问物理硬件设备的行为特征,包括:访问内存、硬盘、闪存等存储设备的存储空间超过第一设定阈值的情况所持续时间、占用CPU比例超过第二设定阈值的持续时间、是否读写设定范围的输入输出接口等等。可选地,所述第一设定阈值可以为预先根据已知恶意代码转义后的指令访问存储设备的情况统计得出的,所述第二设定阈值可以为预先根据已知恶意代码转义后的指令执行时占用CPU的情况统计得出的。
下面将结合附图2b所示的实例,对获得所述程序代码的执行特征的具体过程进行介绍。
虚拟机中的程序代码a1.exe在执行时所产生的读写访问请求集被转义后的指令集为a1’,其中包含cmd0~cmd9总共10个指令;
通过读取监控到的指令的内容,可以获得执行所述程序代码时产生的读写请求所转义生成的指令的内容(如表1所示),可选地,可以只读取其中部分指令的内容,例如读取cmd1的内容为“0x195fd3”,读取cmd6的内容为“0x13457e”。
表1
指令标识 |
指令内容 |
cmd0 |
0x19256d |
cmd1 |
0x195fd3 |
cmd2 |
0x193546 |
cmd3 |
0x45678f |
cmd4 |
...... |
cmd5 |
...... |
cmd6 |
0x13457e |
cmd7 |
...... |
cmd8 |
...... |
cmd9 |
...... |
可选地,通过以下方式可以获得转义生成的指令在所述虚拟机监视器中的行为特征或所述指令访问物理硬件设备的行为特征:
监控虚拟机监视器中预定应用程序编程接口(API,ApplicationProgramming Interface),例如文件系统API、Input/Output操作API等等,是否被转义生成的指令所调用,若被转义生成的指令cmd1~cmd10所调用,则根据指令调用所述API时传入的参数,获得转义生成的指令在所述虚拟机监视器中的行为特征或所述指令访问物理硬件设备的行为特征。所述传入的参数包括文件路径、文件标识等文件参数信息,或者所要读取或写入的接口的标识、读取或写入文件或接口的数据等等。例如根据cmd2调用文件系统API时传入的参数可以得到,cmd2要修改路径/boot/下的名称为xen.gz的系统文件的内容。
此外,也可以通过监控预定的API获知所述指令执行过程中,宿主机上存储资源或处理资源使用情况,从而进一步获得所述指令访问硬件的行为特征,如存储设备的存储空间的大小、及占用CPU的比例。
步骤203,将获得的所述执行特征与预先存储的已知恶意代码的执行特征进行比对,并根据比对结果确定所述程序代码是否为恶意代码。
其中,在设置具体的比对方式时可以根据安全等级的需求、宿主机的处理性能等因素综合考虑,例如,如果对安全等级的需求较高,可以设置只要获得的执行特征中存在至少一个执行特征与已知恶意代码的执行特征一致,就说明比对结果相符,判定所述程序代码为恶意代码,如只要程序代码的标识与已知恶意代码的标识一致,就判定所述程序代码为恶意代码;或者如果宿主机的处理性能较低,则可以只比对部分容易获得的执行特征是否一致,若一致则说明比对结果相符,否则比对结果不相符。如只比对程序代码的标识、数字签名、发布者标识,省略比对相对获取难度较大的执行特征,如上述访问物理硬件设备的行为特征等。在这里不再一一列举。
其中,比对流程包括但不限于:
流程一:宿主机的本地数据库中存储黑名单,黑名单中包含已知恶意代码的执行特征。
宿主机将获得的所述程序代码的执行特征与本地数据库黑名单中已知恶意代码的执行特征进行比对;若比对结果相符,确定所述程序代码为恶意代码,否则确定所述程序代码为非恶意代码。
例如,黑名单中包含已知恶意代码malware1.exe、malware2.exe和malware3.exe的执行特征,宿主机将上述获得的程序代码a1.exe的执行特征与黑名单中3个恶意代码的执行特征逐一进行比对,以程序代码a1.exe的执行特征与malware1.exe的比对为例:
已知恶意代码malware1.exe的执行特征包括:
(1)转义生成的指令集malware1’中cmd1的内容为“0x195fd3”,cmd6的内容为“0x13457e”,
(2)转义生成的指令在虚拟机监视器中的行为特征为“修改路径/boot/下的名称为xen.gz的系统文件的内容”。
将程序代码a1.exe执行时转义生成的指令集a1’中cmd1、cmd6的内容与指令集malware1’中cmd1、cmd6的内容进行比对、并将指令集a1’中的指令在所述虚拟机监视器中的行为特征与malware1’中的指令在所述虚拟机监视器中的行为特征进行比对;比对结果为cmd1、cmd6的内容一致,且指令集a1’中的指令在所述虚拟机监视器中的行为特征与mal1’中的指令在所述虚拟机监视器中的行为特征均为“修改路径/boot/下的名称为xen.gz的系统文件的内容”。故比对结果为程序代码a1.exe与恶意代码mal1.exe的执行特征相符,说明程序代码a1.exe为恶意代码。
可选地,所述本地数据库可以定时更新。
可选地,在比对结果不相符时,还可以提醒用户是否运行所述程序代码。
可选地,上述步骤201~步骤203可以是宿主机中的恶意代码的检测装置来执行的。
本发明实施例提供的恶意代码的检测方法在宿主机的虚拟机监视器中监控转义生成的指令,并根据指令获得所述程序代码的执行特征;将获得的执行特征与预先存储的已知恶意代码的执行特征进行比对,并根据比对结果确定所述程序代码是否为恶意代码。无需在每个虚拟机中都安装杀毒软件,从而提高了检测效率,减少了重复安装杀毒软件所占用的宿主机的存储资源、以及各虚拟机分别运行杀毒软件所占用的宿主机的处理资源。
实施例二
为了提高恶意代码检测的准确性,本实施例提供了实施例一中步骤203的另一种确定所述程序代码是否为恶意代码的流程,宿主机的本地数据库中还存储有白名单,宿主机根据黑白名单的比对结果来确定所述程序代码是否为恶意代码,并在根据本地数据库比对结果无法确定所述程序代码是否为恶意代码时,将执行特征或者程序代码发送给集群查杀设备进行判定,并接收集群查杀设备返回的判定结果,具体如附图3所示。
在宿主机的本地数据库中不仅存储黑名单,还存储白名单,白名单中包含已知正常代码的执行特征。
步骤301,宿主机将获得的所述程序代码的执行特征与本地数据库黑名单中的已知恶意代码的执行特征进行第一次比对,若比对结果相符,则确定所述程序代码为恶意代码,否则进入步骤302;
本实施例中的具体的比对方式参照实施例一。
步骤302,若第一次比对结果不相符,将获得的所述执行特征与本地数据库白名单中的已知正常代码的执行特征进行第二次比对;
若第二次比对结果相符,则确定所述程序代码为非恶意代码;
若第二次比对结果不相符,则进入步骤303a或步骤303b;
步骤303a,宿主机将获得的所述执行特征发送给集群查杀设备,进入304a。
步骤304a,宿主机接收所述集群查杀设备返回的所述程序代码是否为恶意代码的判定结果,所述判定结果是所述集群查杀设备将所述特征与该集群查杀设备扩展数据库中已知恶意代码的执行特征进行比对确定出的。
与宿主机相比,集群查杀设备可以利用分布式计算技术的计算性能优势、或分布式存储的存储容量优势,将宿主机发来的执行特征与扩展数据库黑名单中已知恶意代码的执行特征进行比对,从而得到判定结果,具体比对的方式与宿主机相类似,在这里不再重复介绍。
步骤303b,宿主机将所述程序代码发送给集群查杀设备,进入步骤304b。
步骤304b,宿主机接收所述集群查杀设备返回的所述程序代码是否为恶意代码的判定结果,所述判定结果是所述集群查杀设备利用沙箱技术或者其他类似沙箱的技术执行所述程序代码后,根据执行结果确定出的。
沙箱(或称沙盘)技术是一种现有虚拟化安全隔离技术,该技术按照安全策略限制程序行为的执行环境,在沙箱中运行的代码不能够修改或查看用户系统。集群查杀设备采用沙箱技术模拟运行可疑代码,根据运行结果给出可疑代码是否为恶意代码的判定结果。
可选地,上述各个步骤可以是宿主机中的恶意代码的检测装置来执行的。
进一步地,在步骤303a、步骤303b中,恶意代码的检测装置可以指示执行所示程序代码的虚拟机将所述程序代码发送给集群查杀设备,如恶意代码的检测装置可以通过向虚拟机中的查杀代理发送通知消息,来指示虚拟机将所述程序代码发送给集群查杀设备;恶意代码的检测装置也可以从虚拟机中获得所述程序代码,并将获得的所述程序代码发送给集群查杀设备,如恶意代码的检测装置可以通过向虚拟机中的查杀代理发送请求消息,并从接收到的对应的响应消息中获得所述程序代码。
除了实施例一和本实施例中提供的宿主机中的比对方案,还可以有其他比对方案,如宿主机中先将获得的程序代码的执行特征与白名单中的执行特征进行比对,在比对结果不相符时再与黑名单中的执行特征进行第二次比对;或者并行地将程序代码的执行特征分别与黑名单中已知恶意代码的执行特征、白名单中已知正常代码的执行特征进行比对等等,在这里不再一一列举。
另外,在本发明实施例中本地数据库中也可以不存储白名单或者不与白名单进行比对,在步骤301比对结果不相符时,可以跳过步骤302,直接进入步骤303a或步骤303b。这样,可以减少本地数据库占用的存储空间,但是可能会造成宿主机与集群查杀设备之间的交换消息较多。实际应用中可以根据宿主机的存储资源、网络传输资源等因素灵活选择。
在本发明实施例提供的恶意代码的检测方法中,宿主机根据本地数据库比对结果无法确定所述程序代码是否为恶意代码时,将执行特征或者程序代码发送给集群查杀设备进行判定,并接收集群查杀设备返回的判定结果。利用集群查杀设备分布式计算系统的性能优势,根据扩展数据库或者沙箱来确认宿主机发来的程序代码是否为恶意代码,从而提高了检测的准确性。
实施例三
在实施例二中,步骤303a、304a的分布式行为特征比对判定方式与步骤303b、304b的沙箱判定方式相比,前者处理效率较高、但无法识别出之前未出现过的新的恶意代码;后者能够识别出之前未出现过的新的恶意代码,但处理效率较低。为了能够结合这两种判定方式的优势,既具有较高的处理效率,同时也能识别出新的恶意代码,本实施例又提供了一种将所述程序代码的执行特征与预先存储的已知恶意代码的执行特征进行比对,并根据比对结果确定所述程序代码是否为恶意代码方法,具体流程如附图4a所示。
在附图4a中,步骤401与附图3中步骤301类似、步骤402与附图3中步骤302类似。
步骤401,宿主机将获得的所述程序代码的执行特征与本地数据库黑名单中的已知恶意代码的执行特征进行第一次比对,若比对结果相符,则确定所述程序代码为恶意代码,否则进入步骤402;本实施例中的具体的比对方式参照实施例一。
步骤402,若第一次比对结果不相符,将获得的所述执行特征与本地数据库白名单中的已知正常代码的执行特征进行第二次比对;
若第二次比对结果相符,则确定所述程序代码为非恶意代码;
若第二次比对结果不相符,则进入步骤403;
步骤403,宿主机将获得的所述执行特征发送给集群查杀设备;
步骤404,宿主机接收所述集群查杀设备返回的所述程序代码为恶意代码或非恶意代码的判定结果、或者用于表明程序代码无法识别的标识,若宿主机接收到用于表明程序代码无法识别的标识,则进入步骤405;
其中,若所述集群查杀设备确定接收到的所述执行特征和扩展数据库黑名单中已知恶意代码的执行特征符合,则能够判定所述程序代码为恶意代码,则返回所述程序代码为恶意代码的判定结果;
若所述集群查杀设备确定接收到的所述执行特征和扩展数据库白名单中已知正常代码的执行特征符合,则能够判定所述程序代码为非恶意代码,则返回所述程序代码为非恶意代码的判定结果;
若所述集群查杀设备确定接收到的所述执行特征与扩展数据库黑名单中已知恶意代码的执行特征、扩展数据库白名单中已知正常代码的执行特征均不符合,则返回用于表明程序代码无法识别的标识。
步骤405,宿主机将所述程序代码发送给集群查杀设备;
步骤406,宿主机接收所述集群查杀设备返回的所述程序代码是否为恶意代码的判定结果,所述判定结果是所述集群查杀设备利用沙箱技术执行所述程序代码后,根据执行结果确定出的。
请参照附图4b,本发明实施例提供的上述检测方法也可以进行如下调整,用步骤410~步骤411替换附图4a中的步骤403~步骤406;
步骤410,宿主机将所述程序代码、以及获得的所述执行特征发送给集群查杀设备;
集群查杀设备可以首先将接收到的执行特征与扩展数据库黑名单中已知恶意代码的执行特征进行比对,若比对结果相符,能够确定出所述程序代码为恶意代码,则直接返回所述程序代码为恶意代码的判定结果;若比对结果不相符,则进一步在沙箱中执行所述程序代码,根据执行结果判定所述程序代码是否为恶意代码。
步骤411,宿主机接收集群查杀设备返回的判定结果。
实施例四
在实施例一至实施例三中,当宿主机根据本地数据库、或者集群查杀设备返回的判定结果确定出所述程序代码为恶意代码后,还包括:阻止执行所述程序代码的读写请求转义的指令;
可选地,还可以隔离所述程序代码的读写请求转义的指令,或者提示用户删除所述程序代码。
当确定出所述程序代码为非恶意代码时,还包括:继续执行所述程序代码的读写请求转义的指令。
本发明实施例宿主机在检测出恶意代码后,可以阻止执行恶意代码发起的读写请求转义的指令,从而解决宿主机上多个虚拟机之间的恶意代码传播问题,提高安全性。
实施例五
请参照附图5,在实施例一至实施例四中,若宿主机根据本地数据库、或者根据集群查杀设备返回的判定结果确定出所述程序代码为恶意代码后,还包括:
步骤501,记录该程序代码的标识,继而统计设定时间段内该程序代码的标识被检测出的次数,所述设定时间段可以根据此前恶意代码被检测频度的历史记录、或者宿主机的性能等因素来确定;
步骤502,定期或不定期地将记录的程序代码的标识及设定时间段内该程序代码的标识被记录的次数发送给集群查杀设备;
步骤503,接收集群查杀设备返回的数据库内容,所述接收到的数据库内容是所述集群查杀设备根据宿主机发送所述程序代码的标识及所述次数确定出的;
步骤504,根据接收到数据库内容替换本地数据库的内容,从而更新本地数据库。
可选地,所述接收到的数据库内容是所述集群查杀设备根据设定地理区域、或者网络区域(例如某一局域网、某大学的网络、或某城市的网络)中各宿主机发送的程序代码的标识及对应被记录的次数更新的。
通过上述方案,使得宿主机的本地数据库能够被及时更新,一方面可以提高实施例一中检测恶意代码的准确率;另一方面可以提高宿主机将获得的所述程序代码的执行特征与本地数据库黑名单中恶意代码的执行特征进行比对,即可判定出所述程序代码为恶意代码的几率,从而减少实施例二、实施例三中宿主机频繁将程序代码、或程序代码的执行特征发送给集群查杀设备所耗费的网络传输资源,提高了检测效率。
本发明实施例中宿主机的本地数据库可以用以检测各虚拟机中的程序代码是否为恶意代码,不但本地数据库中数据的利用率高,并且更新升级方案较为简便,避免了现有技术在每个虚拟机上分别安装杀毒软件所带来的更新维护较为复杂的问题。
实施例六
请参照附图6a,本发明实施例从集群查杀设备的角度,对恶意代码的检测方法进行描述。
步骤601,集群查杀设备接收宿主机发来的程序代码、或程序代码的执行特征,若接收到得是程序代码,则进入步骤602;若接收到得是程序代码的执行特征,则进入步骤605;
步骤602,集群查杀设备利用沙箱技术或者其他类似沙箱的技术执行所述程序代码,获得执行结果,进入步骤603;
步骤603,集群查杀设备根据执行结果中预设参数的参数值、以及预设的判别规则的集合,判定所述程序代码是否为恶意代码,所述判别规则中包含至少一个所述预设参数的阈值判断范围;
具体地,所述预设参数可以是沙箱的环境参数(如注册表中的某些参数),或者预定范围(例如预定路径下的文件夹)内文件的数量、文件大小、文件的链接、文件的读写权限等等。如,其中的一个预设规则:R1=(if path=/boot/xen.gz,operation=writing or changing link,then Malware),即“若路径/boot/下名称为xen.gz的文件、在程序代码的执行过程中被执行的操作是修改文件内容、或修改文件的链接,则为恶意代码”。在沙箱中执行所述程序代码后执行结果命中规则R1,则说明所述程序代码为恶意代码;
可选地,所述预设规则是根据已知恶意代码的执行结果分析得到的。
步骤604,集群查杀设备将步骤603的判定结果发送给宿主机;
步骤605,集群查杀设备将宿主机发来的执行特征与扩展数据库黑名单中已知恶意代码的执行特征进行比对,若与黑名单中已知恶意代码的执行特征相符,则进入步骤606,若不相符,则进入步骤607;
步骤606,集群查杀设备返回所述程序代码为恶意代码的判定结果;
步骤607,集群查杀设备将宿主机发来的执行特征与扩展数据库白名单中已知正常代码的执行特征进行比对,若与白名单中已知正常代码的执行特征相符,则进入步骤608,若不相符,则进入步骤609;
步骤608,集群查杀设备返回所述程序代码为非恶意代码的判定结果;
步骤609,集群查杀设备返回用于表明所述程序代码返回无法识别的标识。
这里需要特别说明的是:步骤601、步骤602、步骤603和步骤604组成的利用沙箱技术判定宿主机中的程序代码是否为恶意代码的方案、与步骤601、步骤605~步骤609组成的通常查询扩展数据库的方式判定宿主机中的程序代码是否为恶意代码的方案可以独立实施,并无相互依赖关系。
请参照附图6b,本发明实施例附图6a中提供的上述检测方法也可以进行如下调整。
步骤610,集群查杀设备接收宿主机发来的程序代码、以及该程序代码的执行特征;
步骤611,集群查杀设备将接收到的执行特征与扩展数据库黑名单中已知恶意代码的执行特征进行比对,若与黑名单中已知恶意代码的执行特征相符,则进入步骤612,否则进入步骤613;
步骤612,集群查杀设备返回的所述程序代码为恶意代码的判定结果。
步骤613,集群查杀设备将宿主机发来的执行特征与扩展数据库白名单中已知正常代码的执行特征进行比对,若与白名单中已知正常代码的执行特征相符,则进入步骤614,若不相符,则进入步骤615;
步骤614,集群查杀设备返回所述程序代码为非恶意代码的判定结果。
步骤615,集群查杀设备利用沙箱技术执行所述程序代码,获得执行结果,进入步骤616;
步骤616,集群查杀设备根据执行结果中预设参数的参数值、以及预设的判别规则的集合,判定所述程序代码是否为恶意代码,所述判别规则中包含至少一个所述预设参数的参数值范围;
步骤617,集群查杀设备将步骤616的判定结果发送给宿主机。
附图6a所提供的方案,宿主机与集群查杀设备单次传输的数据量较小,但交互的次数较多;附图6b所提供的方案,宿主机与集群查杀设备单次传输的数据量较大,但可以减少交互次数。在实施时可以根据实际网络情况灵活选择。
可选地,在附图6a的步骤602、或附图6b的步骤615中,集群查杀设备利用沙箱技术执行所述程序代码,获得执行结果的具体方式包括但不限于以下方式或者方式的组合:
方式一:在预先构建的用于模拟虚拟机监视器环境的第一沙箱中执行所述程序代码,获得的执行结果为执行结束后所述第一沙箱的安全状态报告。依据方式一,可以发现虚拟机利用宿主机传播恶意代码的行为。
方式二:在预先构建的用于模拟虚拟机环境的第二沙箱中执行所述程序代码,获得的执行结果为执行结束后所述第二沙箱的安全状态报告。依据方式二,可以获得恶意代码在虚拟机、或虚拟机对应的虚拟硬件设备中的运行情况。
本发明实施例提供的恶意代码的检测方法能够利用集群查杀设备分布式计算系统的性能优势,将宿主机发来的程序代码的执行特征和扩展数据库中已知恶意代码的执行特征进行比对,判定所述程序代码是否为恶意代码;或者,或者利用沙箱技术虚拟执行宿主机发来的程序代码,根据执行结果来确认宿主机发来的程序代码是否为恶意代码,从而提高了检测的准确性。
实施例七
本发明实施例提供的集群查杀设备中数据库的更新方式如附图7所示。
步骤701,根据沙箱技术的执行结果,判定宿主机发来的程序代码是否为恶意代码后,根据所述判定结果更新集群查杀设备中的数据库;
集群查杀设备若判定所述程序代码为恶意代码,则将该程序代码的标识和对应的执行特征添加到数据库的黑名单中;
可选地,集群查杀设备若判定所述程序代码为非恶意代码,将该程序代码的标识和对应的执行特征添加到数据库的白名单中。
步骤702,接收宿主机发来的程序代码的标识和设定时间段内该程序代码的标识被检测到的次数;
步骤703,根据预定的筛选规则、以及接收到得所述程序代码的标识和所述次数,从所述数据库中筛选出部分内容,所述筛选规则包括统计指标判断阈值,所述统计指标的值可以根据所述程序代码的标识和设定时间段内该程序代码被检测到的次数确定出;
步骤704,将筛选出的数据库的内容发送给宿主机,以便宿主机更新本地数据库。
本发明实施例还提供了一种集群查杀设备中数据库的具体架构,如附图8所示。集群查杀设备中数据库包括更新规则库、扩展数据库和基本数据库,其中更新规则库中存储有至少一个更新规则。扩展数据库和基本数据库的形成流程如附图9所示。
步骤901,集群查杀设备利用沙箱技术执行宿主机发来的程序代码,并根据执行结果判定所述程序代码是否为恶意代码后(利用沙箱执行程序代码并根据执行结果判定是否为恶意代码的具体实现方式请参照实施例六中的内容),根据所述判定结果更新扩展数据库;
可选地,集群查杀设备在判定结果为所述程序代码为恶意代码时,将该程序代码的标识和对应的执行特征添加到扩展数据库的黑名单中;
可选地,集群查杀设备在判定结果为所述程序代码为非恶意代码时,将该程序代码的标识和对应的执行特征添加到扩展数据库的白名单中。
步骤902,接收宿主机定期或不定期发来的程序代码的标识、以及设定时间段内该程序代码的标识被检测出的次数;
可选地,集群查杀设备还可以从宿主机发来的承载有程序代码的标识和被检测出的次数的数据包的包头中获取宿主机的标识、发送时间等附加信息。
步骤903,集群查杀设备根据宿主机发来的程序代码的标识和对应的次数,计算扩展数据库中各程序代码的预定统计指标值;
可选地,所述统计指标包括:恶意代码被各宿主机检测出的总次数(也可以理解为恶意代码感染虚拟机的总次数)、或者恶意代码被各宿主机检测出的速度(也可以理解为恶意代码感染虚拟机的速度)、恶意代码被不同宿主机检测出的情况(也可以理解为恶意代码感染虚拟机的普遍性,即传播的广度)、恶意代码被各个虚拟机检测出的时间、恶意代码被第一个宿主机检测出的时间等等(也可以理解为恶意代码首次感染虚拟机的时间)。
步骤904,集群查杀设备根据预定的筛选规则从扩展数据库筛选出符合所述筛选规则的恶意代码的标识、及对应的执行特征,更新到基本数据库中,所述筛选规则包括至少一个所述统计指标判断阈值;
下面将对筛选规则进行举例说明:
1、根据恶意代码被各宿主机检测出的总数设定的筛选规则R11:若恶意代码被检测出的总次数超过1000次,则更新该恶意代码的标识和执行特征到基本数据库。
2、根据恶意代码被各宿主机检测出的速度设定的筛选规则R12:若恶意代码被检测出的速度超过每天500次,则更新该恶意代码的标识和执行特征到基本数据库;通过该类筛选规则,集群查杀设备可以筛选出传播速度快的恶意代码。
3、根据恶意代码被不同宿主机检测出的情况设定的筛选规则R13:若恶意代码被超过80%的宿主机检测到,则更新该恶意代码的标识和执行特征到基本数据库;通过该类筛选规则,集群查杀设备可以筛选出传播范围广的恶意代码。
4、根据恶意代码被宿主机首次检测出的时间设定的筛选规则R14:若恶意代码被首次检测到的时间至今超过1个月(即持续感染宿主机的时间超过1个月),则更新该恶意代码的标识和执行特征到基本数据库;通过此类筛选规则,集群查杀设备可以筛选出感染时间长的恶意代码。
步骤905,集群查杀设备将所述基本数据库的内容发送给各宿主机,以便宿主机更新本地数据库。
可选地,为了有效控制各宿主机本地数据库的容量,节约各宿主机的存储资源,在步骤904之前,还包括:
步骤906,根据预定的更新规则,从基本数据库中删除符合所述更新规则的程序代码的标识、及该程序代码的执行特征,所述更新规则包括至少一个所述统计指标判断阈值。
下面也对更新规则进行举例说明:
1、根据恶意代码近期感染虚拟机的强度设定的更新规则R21:若恶意代码在最近设定时间段内感染虚拟机的次数小于设定次数(如10次或100次),则从基本数据库黑名单中剔除该恶意代码的标识及对应的执行特征;
2、根据恶意代码近期感染虚拟机的广度设定的更新规则R22:若恶意代码在最近设定时间段内感染不同虚拟机的数量小于设定次数(如10个或100个),则从基本数据库黑名单中剔除该恶意代码的标识及对应的执行特征。
所述恶意代码在最近设定时间段内感染不同虚拟机的数量可以根据接收到宿主机发送程序代码和次数的时间、以及宿主机的标识来确定。
3、根据恶意代码的处于非激活状态的时间设定的更新规则R23:若恶意代码在最近设定时间段内(如3个月或1年)在所有虚拟机中从未再次出现,则从基本数据库黑名单中剔除该恶意代码的标识及对应的执行特征。
本发明实施例提供的更新方案能够从集群查杀设备的数据库中筛选出检测率较高的数据库内容,根据筛选出的数据库内容更新宿主机的本地数据库,从而提高宿主机根据本地数据库就可以判定虚拟机中执行的程序代码是否为恶意代码的几率,减少将程序代码或程序代码的执行特征发送给集群查杀设备进行判定的次数,从而降低所占用的宿主机与集群查杀设备之间的传输带宽,缩短判定时间,提高判定效率。
实施例八
请参照附图10,本发明实施例提供了一种宿主机设备101,包括虚拟机监视器102和至少一个虚拟机103,还包括恶意代码的检测装置104,其中:
所述恶意代码的检测装置104,用于在宿主机101的虚拟机监视器102中监控指令的执行情况,所述指令是该宿主机的虚拟机103中执行程序代码时产生的读写请求被下发至虚拟机监视器时,转义生成的;根据所述指令的执行情况,获得所述程序代码的执行特征;将获取单元获得的所述执行特征与预先存储的已知恶意代码的执行特征进行比对,并在比对结果不相符时确定所述程序代码为恶意代码。
相应地,本发明实施例还提供了一种恶意代码的检测装置,其结构示意图如图11所示,该装置包括监控单元1041、获取单元1042和确定单元1043,具体如下:
监控单元1041,用于在宿主机的虚拟机监视器中监控指令的执行情况,所述指令是该宿主机的虚拟机中执行程序代码时产生的读写请求被下发至虚拟机监视器时,转义生成的;
获取单元1042,用于根据监控单元1041监控得到的所述指令的执行情况,获得所述程序代码的执行特征;
确定单元1043,用于将获取单元1042获得的所述执行特征与预先存储的已知恶意代码的执行特征进行比对,并在比对结果相符时确定所述程序代码为恶意代码。
进一步地,所述恶意代码的检测装置还包括:
第一发送单元1046,用于在确定单元1043的比对结果不相符时,将获得的所述执行特征发送给集群查杀设备,或者将所述程序代码发送给集群查杀设备;
第一接收单元1047,用于接收所述集群查杀设备根据第一发送单元1046发送的所述执行特征,返回的所述程序代码是否为恶意代码的判定结果,所述判定结果是所述集群查杀设备将所述特征与该集群查杀设备数据库中已知恶意代码的执行特征进行比对确定出的;或者
接收所述集群查杀设备根据第一发送单元1046发送的程序代码,返回的所述程序代码是否为恶意代码的判定结果,所述判定结果是所述集群查杀设备利用沙箱技术执行所述程序代码后,根据执行结果确定出的。
可选地,附图11中的确定单元1043具体包括:
第一确定子单元1044,用于将获得的所述执行特征与本地数据库黑名单中的已知恶意代码的执行特征进行比对,若比对结果相符,则确定所述程序代码为恶意代码;
第二确定子单元1045,用于在第一确定子单元1044的比对结果不相符时,将获得的所述执行特征与本地数据库白名单中的已知正常代码的执行特征进行第二次比对,若第二次比对结果相符,则确定所述程序代码为非恶意代码;
所述第一发送单元1046还用于若第二确定子单元1045第二次比对结果不相符,则将获得的所述执行特征发送给集群查杀设备,或者将所述程序代码发送给集群查杀设备。
可选地,请参照附图12,附图11中的所述恶意代码的检测装置还包括:
记录统计单元1048,用于在确定单元1043确定出所述程序代码为恶意代码后,记录该程序代码的标识,并根据记录结果统计设定时间段内该程序代码被检测到的次数;
第二发送单元1049,用于将记录统计单元1048得到的所述程序代码的标识及所述次数发送给集群查杀设备;
第二接收单元1040,用于接收集群查杀设备返回的数据库内容,并根据接收到数据库内容替换本地数据库的内容,所述接收到的数据库内容是所述集群查杀设备根据所述程序代码的标识及所述次数确定出的,所述数据库内容包含已知恶意代码的执行特征。
可选地,第一发送单元1046具体包括:通知子单元用于通过向虚拟机中的查杀代理发送通知消息,来指示虚拟机将所述程序代码发送给集群查杀设备;
或者第一发送单元1046具体包括:第一发送子单元、第一接收子单元和第二发送子单元,其中:
第一发送子单元,用于向虚拟机中的查杀代理发送请求消息;
第一接收子单元,用于接收虚拟机中的查杀代理根据所述请求消息,返回的响应消息;
第二发送子单元,用于从所述响应消息中获得程序代码,并将获得的程序代码发送给集群查杀设备。
本发明实施例提供的恶意代码的检测装置可以集成在宿主机的虚拟机监视器中,也可以由独立的硬件或软件模块来实现。
本发明实施例提供了一种宿主机设备、以及一种宿主机中的恶意代码的检测装置。该装置在宿主机的虚拟机监视器中监控转义生成的指令,并根据指令获得所述程序代码的执行特征;将获得的执行特征与预先存储的已知恶意代码的执行特征进行比对,并根据比对结果确定所述程序代码是否为恶意代码。与现有的在每个虚拟机中都安装杀毒软件来实现恶意代码检测的方案相比,提高了检测效率,减少了在所有虚拟机上重复安装杀毒软件所占用的宿主机的存储资源、以及各虚拟机分别运行杀毒软件所占用的宿主机的处理资源。
实施例九
请参照附图13,本发明实施例提供了一种恶意代码的检测装置,该恶意代码的检测装置可以为集群查杀设备,该装置包括第一接收单元131、执行单元132、判定单元133和第一发送单元134,其中:
第一接收单元131,用于接收宿主机发来的程序代码;
执行单元132,用于利用沙箱技术执行第一接收单元131接收的所述程序代码,获得执行结果;
判定单元133,用于根据所述执行结果中预设参数的参数值、以及预设的判别规则的集合,判定所述程序代码是否为恶意代码,所述判别规则中包含至少一个所述预设参数的阈值判断范围;
第一发送单元134,用于将判定单元133的判定结果发送给所述宿主机。
可选地,所述执行单元132具体用于在预先构建的用于模拟虚拟机监视器环境的第一沙箱中执行所述程序代码,获得的执行结果为执行结束后所述第一沙箱的安全状态报告;和/或,在预先构建的用于模拟虚拟机环境的第二沙箱中执行所述程序代码,获得的执行结果为执行结束后所述第二沙箱的安全状态报告。
可选地,所述集群查杀设备还包括:
数据库130,该数据库130中的黑名单用于保存已知恶意代码的标识及对应的执行特征,可选地,该数据库130中的白名单用于保存已知正常代码的标识及对应的执行特征。
第一更新单元135,用于在判定单元133判定所述程序代码为恶意代码时,则将该程序代码的标识和对应的执行特征添加到数据库的黑名单中;
可选地,为了提高检测效果,还可以包括第二更新单元136,用于在判定单元133判定所述程序代码为非恶意代码时,将该程序代码的标识和对应的执行特征添加到数据库的白名单中。
进一步地,为了能够及时更新宿主机的本地数据库,所述集群查杀设备还包括:
第二接收单元137,用于接收宿主机发来的程序代码的标识和设定时间段内该程序代码的标识被检测到的次数;
筛选单元138,用于根据第二接收单元137接收的所述程序代码的标识、所述次数、以及所述集群查杀设备中预定的筛选规则,从所述数据库130中筛选出部分内容,所述筛选规则包括统计指标判断阈值,所述统计指标的值根据所述程序代码的标识和所述次数确定出;
第二发送单元139,用于将所述筛选单元138筛选出的内容发送给宿主机,以便宿主机更新本地数据库。
本发明实施例提供的集群查杀设备能够利用分布式计算系统的性能优势,将宿主机发来的程序代码的执行特征和扩展数据库中已知恶意代码的执行特征进行比对,判定所述程序代码是否为恶意代码;或者,或者利用沙箱技术虚拟执行宿主机发来的程序代码,根据执行结果来确认宿主机发来的程序代码是否为恶意代码,从而提高了检测的准确性。
实施例十
请参照附图14,本发明实施例提供了一种恶意代码的检测系统,其中包括至少一个实施例八中所给出的宿主机101,其中的每个所述宿主机用于在该宿主机的虚拟机监视器中捕获指令,所述执行指令是该宿主机的虚拟机中执行程序代码时产生的读写请求被下发至虚拟机监视器时,转义生成的;根据所述指令获得所述程序代码的执行特征;将获得的所述执行特征与预先存储的已知恶意代码的执行特征进行比对,并在比对结果相符时确定所述程序代码为恶意代码。
进一步,所述恶意代码的检测系统还包括至少一个集群查杀设备100:
所述宿主机101,还用于将获得的所述执行特征与本地数据库黑名单中的已知恶意代码的执行特征进行比对,若比对结果不相符,则将所述程序代码或执行特征发送给集群查杀设备100,并接收所述集群查杀设备返回的所述程序代码是否为恶意代码的判定结果;所述判定结果是所述集群查杀设备将所述特征与该集群查杀设备数据库中已知恶意代码的执行特征进行比对确定出的,或者利用沙箱技术执行所述程序代码后,根据执行结果确定出的。
具体地,宿主机可以在比对结果不相符时,将获得的所述执行特征与本地数据库白名单中的已知正常代码的执行特征进行第二次比对,若第二次比对结果相符,则确定所述程序代码为非恶意代码;若第二次比对结果不相符,则将所述程序代码或执行特征发送给集群查杀设备100,或者,
宿主机可以在第一次比对结果不相符时,直接将所述程序代码或执行特征发送给集群查杀设备100。
所述集群查杀设备100,用于接收宿主机101发来的程序代码,利用沙箱技术执行所述程序代码,获得执行结果;根据所述执行结果中预设参数的参数值、以及预设的判别规则的集合,判定所述程序代码是否为恶意代码,所述判别规则中包含至少一个所述预设参数的参数值范围;将判定结果发送给所述宿主机101。
所述集群查杀设备100利用沙箱技术执行所述程序代码,获得执行结果的过程请参照实施例六、实施例九中的描述。
本发明实施例提供的恶意代码的检测系统,利用集群查杀设备分布式计算系统的性能优势,提高宿主机中恶意代码检测的准确性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:ROM/RAM、磁碟、光盘等。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。