CN111444504A - 一种用于软件运行时自动识别恶意代码的方法及装置 - Google Patents
一种用于软件运行时自动识别恶意代码的方法及装置 Download PDFInfo
- Publication number
- CN111444504A CN111444504A CN202010234123.7A CN202010234123A CN111444504A CN 111444504 A CN111444504 A CN 111444504A CN 202010234123 A CN202010234123 A CN 202010234123A CN 111444504 A CN111444504 A CN 111444504A
- Authority
- CN
- China
- Prior art keywords
- behavior
- software
- malicious code
- cpu
- guest mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种用于软件运行时自动识别恶意代码的方法及装置,所述方法包括:开启和替换步骤,所述开启和替换步骤包括:CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;将Guest模式的特定寄存器的值替换为第一监听函数;或,初始化CPU在Guest模式的特定寄存器的值为第一监听函数;CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;第一收集步骤,所述第一监听函数收集待检测软件在Guest模式运行时的行为集合;检测步骤,利用预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。根据本发明的方案,可以全面监控软件的运行行为,并基于软件的运行行为自动识别恶意代码。
Description
技术领域
本发明涉及计算机信息安全领域,尤其涉及一种用于软件运行时自动识别恶意代码的方法及装置。
背景技术
当前识别恶意代码的方法一般包括文件静态检测、启发式检测、AI学习等方法,这些方法都是针对磁盘中的静态文件,而对运行中的程序一般使用主动防御技术识别恶意代码,使用主动防御技术虽然对识别恶意代码具有一定的效果,但是虚警较多。由于主动防御技术无法精准识别恶意代码,只能一味地对可疑行为报警,这会增加用户的困扰。
现有的主动防御技术主要是通过系统提供的标准接口或通过挂钩子(Hook)来监控程序的行为,然而越来越多的操作系统越来越注重自身的安全,已经不允许Patch内核代码了,这导致无法通过挂钩子(Hook)的方法来监控分析程序的行为。而且由于部分操作系统比较封闭,提供的用于监控程序行为的接口很有限,这导致很多程序行为无法被监控。无法监控或只能有限地监控程序行为,大大限制基于行为的恶意代码识别软件的识别能力。
此外,传统的恶意代码识别软件在监控到程序行为后,对程序行为的处理比较单一:当发现单个可疑动作的时候就告警;或结合从既往病毒木马分析中提取的应用程序接口(Application Programming Interface,API)调用序列来匹配识别这些行为,只要匹配上就告警,这导致传统方法无法有效、精准地通过程序行为来识别恶意代码。
发明内容
为解决上述技术问题,本发明提出了一种用于软件运行时自动识别恶意代码的方法及装置,用以解决现有技术中安全软件由于无法有效地监控程序行为导致识别恶意代码的识别能力低,误报较多的技术问题。
根据本发明的第一方面,提供一种用于软件运行时自动识别恶意代码的方法,所述方法包括以下步骤:
开启和替换步骤,所述开启和替换步骤包括:CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;将Guest模式的特定寄存器的值替换为第一监听函数;或,
所述开启和替换步骤包括:初始化CPU在Guest模式的特定寄存器的值为第一监听函数;CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;
其中,所述特定寄存器为系统调用时从应用层进入内核层必须访问的寄存器;
第一收集步骤,所述第一监听函数收集待检测软件在Guest模式运行时的行为集合;
检测步骤,利用预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。
进一步地,在一个实施例中,在所述开启和替换步骤中,CPU开启硬件虚拟化功能之前,还包括函数设置步骤,设置CPU在Host模式的第二监听函数;所述第二监听函数用于监听待检测软件在Guest模式的敏感指令执行行为和异常内存访问行为;
第二收集步骤,将所述待检测软件的敏感指令执行行为和异常内存访问行为加入所述行为集合;
所述检测步骤,利用所述预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。
进一步地,所述检测步骤中,所述恶意代码行为检测模型包括恶意代码行为特征库检测模型;和/或恶意代码行为知识库检测模型;和/或恶意代码行为识别专家系统检测模型;和/或机器学习检测模型。
进一步地,所述CPU是x86架构;或ARM架构;或mips架构;或alpha架构。
根据本发明第二方面,提供一种用于软件运行时自动识别恶意代码的装置,所述装置包括:
开启和替换模块,所述开启和替换模块,用于CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;将Guest模式的特定寄存器的值替换为第一监听函数;或,
所述开启和替换模块,用于初始化CPU在Guest模式的特定寄存器的值为第一监听函数;CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;
其中,所述特定寄存器为系统调用时从应用层进入内核层必须访问的寄存器;
第一收集模块,用于所述第一监听函数收集待检测软件在Guest模式运行时的行为集合;
检测模块,用于利用预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。
进一步地,在一个实施例中,所述开启和替换模块进一步包含函数设置模块,用于CPU开启硬件虚拟化功能之前,设置CPU在Host模式的第二监听函数;所述第二监听函数用于监听待检测软件在Guest模式的敏感指令执行行为和异常内存访问行为;
第二收集模块,用于将所述待检测软件的敏感指令执行行为和异常内存访问行为加入所述行为集合;
所述检测模块,用于利用所述预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。
进一步地,所述检测模块中,所述恶意代码行为检测模型包括恶意代码行为特征库检测模型;和/或恶意代码行为知识库检测模型;和/或恶意代码行为识别专家系统检测模型;和/或机器学习检测模型。
进一步地,所述CPU是x86架构;或ARM架构;或mips架构;或alpha架构。
根据本发明第三方面,提供一种用于软件运行时自动识别恶意代码的系统,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如前所述的用于软件运行时自动识别恶意代码的方法。
根据本发明第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序用于由处理器加载并执行如前所述的用于软件运行时自动识别恶意代码的方法。
根据本发明的上述方案,能够获得以下技术效果:无须通过系统提供的接口或者挂钩子就可以全面监控软件的运行行为,并基于软件的运行行为自动识别恶意代码,识别率高,误报率低。此外,本发明还可以应用于其他领域,比如用于软件行为分析领域,用以监控软件的行为动作。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明提供如下附图进行说明。在附图中:
图1为本发明一个实施方式的用于软件运行时自动识别恶意代码的方法流程图;
图2为本发明一个实施方式的用于软件运行时自动识别恶意代码的装置结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先结合图1说明本发明一个实施方式的用于软件运行时自动识别恶意代码的方法流程图。如图1所示,所述方法包括以下步骤:
开启和替换步骤,所述开启和替换步骤包括:CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;将Guest模式的特定寄存器的值替换为第一监听函数;其中,所述特定寄存器为系统调用时从应用层进入内核层必须访问的寄存器。
在该步骤中,首先检查计算机系统是否允许CPU使用硬件虚拟化功能,如果允许则对系统中的每个CPU核心启用硬件虚拟化功能,并把计算机当前使用的操作系统置于Guest模式运行。
在该步骤中,让每个CPU核心启用硬件虚拟化功能前需要设置开启硬件虚拟化的一些配置控制信息,配置控制信息主要是设置如下信息:设置CPU在Guest模式和Host模式的运行环境,由于CPU在Guest模式和Host模式使用的都是当前的操作系统,因此它们的段选择子、段描述符、GDTR、IDTR等配置信息都是差不多的;设置CPU在Host模式的入口执行函数、堆栈、段寄存器,该入口执行函数就是第二监听函数,是一个在Host模式处理VMExit(也作VM-Exit)事件的函数;设置为了正确使用CPU硬件虚拟化功能而必备的部分配置。
在该步骤中,替换Guest模式的特定寄存器的值,所述特定寄存器为系统调用时从应用层进入内核层必须访问的寄存器,新替换的这个值是一个接管操作系统由应用层进入内核层的监听函数,即第一监听函数。一旦Guest模式运行的待检测软件调用API由应用层进入内核层的时候就会被第一监听函数监控到。
由于替换了Guest模式的特定寄存器的值,部分操作系统检测到特定寄存器的值被替换了,系统将会自动重启,为了避免系统重启,有必要让操作系统认为特定寄存器的值未被替换,因此在该步骤中,还设置所述特定寄存器的模拟寄存器,CPU在Host模式执行的第二监听函数,用于在监听到对特定寄存器的读、写操作时,将其重定位到模拟寄存器进行读、写操作。通过设置特定寄存器的模拟寄存器,如果监控到的是写特定寄存器则不真实写此寄存器,而是将其记录到模拟寄存器中或不处理,当要读取特定寄存器的值时,则不真实读取该特定寄存器的值,而是直接返回模拟寄存器的值或原来操作系统默认填充的值。对特定寄存器设置模拟寄存器的目的主要是为了替换操作系统的特定寄存器的默认值,但又想让系统认为特定寄存器的值没被替换,防止部分操作系统自动重启。
其中,该步骤中,设置特定寄存器的值为第一监听函数可以在CPU开启硬件虚拟化功能之前执行,即,所述开启和替换步骤也可以是:初始化CPU在Guest模式的特定寄存器的值为第一监听函数;CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;其中,所述特定寄存器为系统调用时从应用层进入内核层必须访问的寄存器。
第一收集步骤,所述第一监听函数收集待检测软件在Guest模式运行时的行为集合;
由于在开启和替换步骤中,替换了Guest模式的特定寄存器的值,新替换的这个值是一个接管操作系统由应用层进入内核层的第一监听函数,一旦Guest模式运行的待检测软件调用API由应用层进入内核层的时候就会被该第一监听函数监控到,在该第一监听函数里结合操作系统内核特性和CPU此时的上下文环境,就能得知是哪个进程在调用哪个API,调用这个API时的参数是什么,这样就能得知待检测软件运行时发生了哪些行为,从而收集待检测软件的这些行为得到行为集合。
具体地,要在第一监听函数里分析得知是哪个进程调用了哪个API,发生了哪类行为,需要结合CPU架构类型特性和操作系统内核特性来分析。下面举例说明:以X86架构的CPU为例,假设在X86架构的CPU上,安装了32位的Window 7操作系统,进程调用API由应用层进入内核层时执行的CPU指令是sysenter,这条指令会把本方案先前设置的特定寄存器的值取出来,然后执行它,这样本方案设置的第一监听函数就被执行了,在第一监听函数里要注意保护当前进程的上下文,上下文一般是指寄存器等信息,否则可能导致系统异常,此时,eax寄存器存放的是API对应的系统调用号,edx寄存器存放的是调用API的线程的应用层栈顶指针,通过eax就能在操作系统内核中找到要调用的内核函数,通过edx就能从栈顶取出此API调用的参数,分析参数就能知道待检测软件具体的行为。在上述例子中,假如A进程调用OpenProcess函数打开另一个进程,由应用层进入内核时,eax里存放0xbe,edx指向的栈顶存放着要打开的进程的PID和打开进程的权限值,在第一监听函数里,发现eax是0xbe,而0xbe是32位Window 7系统里NtOpenProcess的序号,这样第一监听函数就知道调用的内核函数是NtOpenProcess,然后从edx指向的栈顶获取要打开的进程PID和打开的权限,然后根据Guest模式的cr3寄存器的值或根据操作系统提供的获取当前进程的原理获取当前行为是哪个进程触发的,这样就分析出来系统哪个进程发生了什么行为。
检测步骤,利用预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。
在之前的收集步骤中已经收集了软件在运行时的行为集合,比如创建一个文件,读取软件的敏感内存等行为,然后利用预先构建的恶意代码行为检测模型对上述的第一行为集合做检查,自动地识别正在运行的待检测软件是否含有恶意代码。进一步地,所述恶意代码行为检测模型可以为恶意代码行为特征库检测模型;和/或恶意代码行为知识库检测模型;和/或恶意代码行为识别专家系统检测模型;和/或机器学习检测模型。
其中,所述的恶意代码行为特征库检测模型包括预先收集的恶意代码行为特征,库里的特征样式可以是多样的,可以是API调用时的异常参数情况,也可以是API调用时的参数信息,也可以是API调用序列,也可以是内存数据移动特征,还可以是指令集特征。所述的恶意代码行为特征库检测模型就是利用这些特征做匹配的检测模型。
所述的恶意代码行为知识库检测模型是指根据以往的病毒木马分析后收集整理的恶意代码行为规则集合,病毒木马可以有无数种,但是病毒木马的行为是有限的,因此恶意代码行为规则集合也是很有限的,比如一个木马的行为是联网、下载可执行程序、执行下载的程序、添加启动项等行为,那么这个行为序列就可以归入恶意代码行为知识库中,或将恶意代码行为中恶意程序使用较多的一些行为做加权处理,当权重达到一定比值,就按恶意代码处理,这种方式需要不断修正、优化加权处理的逻辑,减少误报的发生。
所述的恶意代码行为识别专家系统检测模型是以所述的恶意代码行为特征库检测模型和所述的恶意代码行为知识库检测模型为基础,结合手工分析恶意代码积累的经验,构建的专家系统检测模型。
所述的机器学习检测模型主要是指对大量病毒木马行为数据和正常程序行为数据进行机器学习后得到的识别恶意代码的模型。该机器学习模型可以为线性分类器、支持向量机、朴素贝叶斯、K近邻、决策树、集成模型等,可以采用现有技术中的任何一种训练机器学习模型的方法得到本发明的机器学习模型,本发明对此不作限制。
本发明的CPU可以是x86架构;或ARM架构;或mips架构;或alpha架构。对于不同架构的CPU,使用硬件虚拟化功能时,都可以把该架构CPU在Guest模式的特定寄存器的值替换为本发明的第一监听函数;或者,在CPU开启硬件虚拟化功能之前,初始化CPU在Guest模式的特定寄存器的值为第一监听函数;所述特定寄存器为在该架构CPU上发生系统调用时,从应用层进入内核层必须访问的寄存器,从而可以在待检测软件运行时监控到待检测软件的行为。由于该第一监听函数是一个接管操作系统由应用层进入内核层的监听函数,一旦运行的待检测软件调用API由应用层进入内核层的时候就会被所述第一监听函数监控到,然后结合此时的CPU和操作系统上下文,就可以分析出是哪个程序调用了哪个API,发生了什么行为,从而收集待检测软件运行时的这些行为,得到行为集合,再利用预先构建的恶意代码行为检测模型对收集的行为集合进行检测,就可以自动识别出所述待检测软件是否含有恶意代码。由于本发明捕获软件运行时的行为以CPU提供的硬件虚拟化技术为基础,因此本发明的软件运行时自动识别恶意代码的方法可以运用于所有支持硬件虚拟化的CPU上。
应用本实施例的方案,无须通过系统提供的接口或者挂钩子就可以全面监控软件的运行行为,解决了传统的恶意代码识别软件无法监控或只能有限地监控程序行为的技术问题,并基于软件的运行行为自动识别恶意代码,识别率高,误报率低。此外,本发明还可以应用于其他领域,比如用于软件行为分析领域,用以监控软件的行为动作。
本发明还提供另一个实施方式的用于软件运行时自动识别恶意代码的方法。所述方法包括:
开启和替换步骤,所述开启和替换步骤包括:CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;将Guest模式的特定寄存器的值替换为第一监听函数;或,
所述开启和替换步骤包括:初始化CPU在Guest模式的特定寄存器的值为第一监听函数;CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;
其中,所述特定寄存器为系统调用时从应用层进入内核层必须访问的寄存器;
第一收集步骤,所述第一监听函数收集待检测软件在Guest模式运行时的行为集合;
检测步骤,利用预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。
其中,本实施例在前述实施例的基础上,在所述开启和替换步骤中,CPU开启硬件虚拟化功能之前,还包括函数设置步骤,设置CPU在Host模式的第二监听函数;所述第二监听函数用于监听待检测软件在Guest模式的敏感指令执行行为和异常内存访问行为;
第二收集步骤,将所述待检测软件的敏感指令执行行为和异常内存访问行为加入所述行为集合;
所述检测步骤,利用所述预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。
具体地,通过使用CPU的内存虚拟化功能,按CPU使用规范建立从当前系统所有物理内存到当前系统所有物理内存的一一映射的扩展页表,该扩展页表不用于寻址,因为在本方案中,Guest物理地址GPA经过扩展页表转换寻址后得到的Host物理地址HPA跟Guest物理地址GPA相同,本方案使用扩展页表,只为重新设置Guest物理内存的访问权限,对待检测软件的特定内存可以重新设置其在对应的Guest物理内存在扩展页表的对应项中的访问权限,比如某特定内存不允许写,那么就可以在扩展页表的对应项中把写权限去掉,这样一旦待检测软件去写这个内存就会被第二监听函数监听到。因此所述第二监听函数是可以用于监控待检测软件对特定内存的读、写和执行操作的,在该第二监听函数中,分析处理VMExit事件,按事件发生的原因找出由于扩展页表中内存访问权限触发的VMExit事件,分析这些VMExit事件有助于发现异常的内存读、写和执行行为。在启用硬件虚拟化时,设置好哪些敏感指令需要被监控,并启用内存虚拟化功能,建立相应的扩展页表,当CPU执行敏感指令或访问特定内存时,第二监听函数将被执行,第二监听函数根据CPU执行环境和操作系统里的上下文,确定具体哪个进程发生了哪类行为,并把该行为加入行为集合中。敏感指令一般是指系统中的一些特权指令,比如读、写端口的指令,在X86架构的CPU上可以通过in、out类指令读、写0x60端口来操控键盘。特定内存一般是指进程的环境变量块、进程环境块PEB、线程环境块TEB等配置信息内存、不可读、写或执行的内存。对于不可读、写或执行的特定内存,在CPU内存虚拟化的扩展页表中设置相关内存访问权限,当不可写的内存被改写时,说明发生了内存异常写行为;当不可读的内存被读取时,说明发生了内存异常读行为;当在不可执行的内存上发生执行行为,说明发生了内存异常执行行为。
将监听到的敏感指令执行行为和内存异常访问行为加入到所述行为集合,利用预先构建的恶意代码行为检测模型对该行为集合进行检测,这样就可以自动识别所述待检测软件是否含有恶意代码。
前述实施例中,使用第一监听函数收集待检测软件在Guest模式运行时的行为集合,自动识别待检测软件是否含有恶意代码。而在本实施例中,除了使用第一监听函数收集待检测软件在Guest模式运行时的行为集合,还通过第二监听函数,进一步监听待检测软件的敏感指令执行行为和异常内存访问行为,将检测到的敏感指令执行行为和内存异常访问行为加入到该行为集合,因此本实施例中收集的待检测软件的行为更加全面,检测效果也会更好,对恶意代码的识别率也会更高。
本发明实施例进一步给出一种用于软件运行时自动识别恶意代码的装置,如图2所示,所述装置包括:
开启和替换模块,所述开启和替换模块,用于CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;将Guest模式的特定寄存器的值替换为第一监听函数;或,
所述开启和替换模块,用于初始化CPU在Guest模式的特定寄存器的值为第一监听函数;CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;
其中,所述特定寄存器为系统调用时从应用层进入内核层必须访问的寄存器;
第一收集模块,用于所述第一监听函数收集待检测软件在Guest模式运行时的行为集合;
检测模块,用于利用预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。
进一步地,在另一个实施例中,所述开启和替换模块进一步包含函数设置模块,用于CPU开启硬件虚拟化功能之前,设置CPU在Host模式的第二监听函数;所述第二监听函数用于监听待检测软件在Guest模式的敏感指令执行行为和异常内存访问行为;
第二收集模块,用于将所述待检测软件的敏感指令执行行为和异常内存访问行为加入所述行为集合;
所述检测模块,用于利用所述预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。
进一步地,所述检测模块中,所述恶意代码行为检测模型包括恶意代码行为特征库检测模型;和/或恶意代码行为知识库检测模型;和/或恶意代码行为识别专家系统检测模型;和/或机器学习检测模型。
进一步地,所述CPU是x86架构;或ARM架构;或mips架构;或alpha架构。
本实施例中的用于软件运行时自动识别恶意代码的装置各功能模块所执行的功能与前述两个实施例中的用于软件运行时自动识别恶意代码方法的步骤相对应,在此不再赘述。
本发明实施例进一步给出一种用于软件运行时自动识别恶意代码的系统,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如前所述的用于软件运行时自动识别恶意代码的方法。
本发明实施例进一步给出一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序用于由处理器加载并执行如前所述的用于软件运行时自动识别恶意代码的方法。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括计算机程序用以使得一台计算机装置(可以是个人计算机,实体机服务器,或者网络云服务器等,需安装Windows、WindowsServer、Linux所有版本操作系统)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (10)
1.一种用于软件运行时自动识别恶意代码的方法,其特征在于,所述方法包括以下步骤:
开启和替换步骤,所述开启和替换步骤包括:CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;将Guest模式的特定寄存器的值替换为第一监听函数;或,
所述开启和替换步骤包括:初始化CPU在Guest模式的特定寄存器的值为第一监听函数;CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;
其中,所述特定寄存器为系统调用时从应用层进入内核层必须访问的寄存器;
第一收集步骤,所述第一监听函数收集待检测软件在Guest模式运行时的行为集合;
检测步骤,利用预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。
2.如权利要求1所述的用于软件运行时自动识别恶意代码的方法,其特征在于,在所述开启和替换步骤中,CPU开启硬件虚拟化功能之前,还包括函数设置步骤,设置CPU在Host模式的第二监听函数;所述第二监听函数用于监听待检测软件在Guest模式的敏感指令执行行为和异常内存访问行为;
第二收集步骤,将所述待检测软件的敏感指令执行行为和异常内存访问行为加入所述行为集合;
所述检测步骤,利用所述预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。
3.如权利要求1所述的用于软件运行时自动识别恶意代码的方法,其特征在于,所述检测步骤中,所述恶意代码行为检测模型包括恶意代码行为特征库检测模型;和/或恶意代码行为知识库检测模型;和/或恶意代码行为识别专家系统检测模型;和/或机器学习检测模型。
4.如权利要求1-3任一项所述的用于软件运行时自动识别恶意代码的方法,其特征在于,所述CPU是x86架构;或ARM架构;或mips架构;或alpha架构。
5.一种用于软件运行时自动识别恶意代码的装置,其特征在于,所述装置包括:
开启和替换模块,所述开启和替换模块,用于CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;将Guest模式的特定寄存器的值替换为第一监听函数;或,
所述开启和替换模块,用于初始化CPU在Guest模式的特定寄存器的值为第一监听函数;CPU开启硬件虚拟化功能,将当前的操作系统置于Guest模式运行;
其中,所述特定寄存器为系统调用时从应用层进入内核层必须访问的寄存器;
第一收集模块,用于所述第一监听函数收集待检测软件在Guest模式运行时的行为集合;
检测模块,用于利用预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。
6.如权利要求5所述的用于软件运行时自动识别恶意代码的方法,其特征在于,所述开启和替换模块进一步包含函数设置模块,用于CPU开启硬件虚拟化功能之前,设置CPU在Host模式的第二监听函数;所述第二监听函数用于监听待检测软件在Guest模式的敏感指令执行行为和异常内存访问行为;
第二收集模块,用于将所述待检测软件的敏感指令执行行为和异常内存访问行为加入所述行为集合;
所述检测模块,用于利用所述预先构建的恶意代码行为检测模型对所述行为集合进行检测,自动识别出所述待检测软件是否含有恶意代码。
7.如权利要求5所述的用于软件运行时自动识别恶意代码的装置,其特征在于,所述检测模块中,所述恶意代码行为检测模型包括恶意代码行为特征库检测模型;和/或恶意代码行为知识库检测模型;和/或恶意代码行为识别专家系统检测模型;和/或机器学习检测模型。
8.如权利要求5-7任一项所述的用于软件运行时自动识别恶意代码的装置,其特征在于,所述CPU是x86架构;或ARM架构;或mips架构;或alpha架构。
9.一种用于软件运行时自动识别恶意代码的系统,包括处理器和存储器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1-4任一项所述的用于软件运行时自动识别恶意代码的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序用于由处理器加载并执行如权利要求1-4任一项所述的用于软件运行时自动识别恶意代码的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010234123.7A CN111444504A (zh) | 2020-03-30 | 2020-03-30 | 一种用于软件运行时自动识别恶意代码的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010234123.7A CN111444504A (zh) | 2020-03-30 | 2020-03-30 | 一种用于软件运行时自动识别恶意代码的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111444504A true CN111444504A (zh) | 2020-07-24 |
Family
ID=71652517
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010234123.7A Pending CN111444504A (zh) | 2020-03-30 | 2020-03-30 | 一种用于软件运行时自动识别恶意代码的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111444504A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685744A (zh) * | 2020-12-28 | 2021-04-20 | 安芯网盾(北京)科技有限公司 | 一种利用栈相关寄存器检测软件漏洞的方法及装置 |
CN113076540A (zh) * | 2021-04-16 | 2021-07-06 | 顶象科技有限公司 | 一种攻击检测的方法、装置、电子设备及存储介质 |
CN114969731A (zh) * | 2022-03-28 | 2022-08-30 | 慧之安信息技术股份有限公司 | 基于操作系统的恶意软件检测方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096786A (zh) * | 2011-03-04 | 2011-06-15 | 上海交通大学 | 基于硬件虚拟化的跨平台安全保护系统 |
CN103632101A (zh) * | 2013-12-09 | 2014-03-12 | 北京奇虎科技有限公司 | 一种拦截系统调用的方法和装置 |
CN106934281A (zh) * | 2017-03-30 | 2017-07-07 | 兴华永恒(北京)科技有限责任公司 | 一种基于硬件虚拟化技术的虚拟机对抗技术的建立方法 |
CN107368739A (zh) * | 2017-07-26 | 2017-11-21 | 北京理工大学 | 一种内核驱动的监视方法和装置 |
CN109086602A (zh) * | 2017-06-13 | 2018-12-25 | 中国移动通信集团四川有限公司 | 针对内核数据修改的拦截方法、装置及计算机存储介质 |
-
2020
- 2020-03-30 CN CN202010234123.7A patent/CN111444504A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096786A (zh) * | 2011-03-04 | 2011-06-15 | 上海交通大学 | 基于硬件虚拟化的跨平台安全保护系统 |
CN103632101A (zh) * | 2013-12-09 | 2014-03-12 | 北京奇虎科技有限公司 | 一种拦截系统调用的方法和装置 |
CN106934281A (zh) * | 2017-03-30 | 2017-07-07 | 兴华永恒(北京)科技有限责任公司 | 一种基于硬件虚拟化技术的虚拟机对抗技术的建立方法 |
CN109086602A (zh) * | 2017-06-13 | 2018-12-25 | 中国移动通信集团四川有限公司 | 针对内核数据修改的拦截方法、装置及计算机存储介质 |
CN107368739A (zh) * | 2017-07-26 | 2017-11-21 | 北京理工大学 | 一种内核驱动的监视方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685744A (zh) * | 2020-12-28 | 2021-04-20 | 安芯网盾(北京)科技有限公司 | 一种利用栈相关寄存器检测软件漏洞的方法及装置 |
CN113076540A (zh) * | 2021-04-16 | 2021-07-06 | 顶象科技有限公司 | 一种攻击检测的方法、装置、电子设备及存储介质 |
CN114969731A (zh) * | 2022-03-28 | 2022-08-30 | 慧之安信息技术股份有限公司 | 基于操作系统的恶意软件检测方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4901842B2 (ja) | ソフトウェアコンポーネントをホワイトリストに登録する方法およびシステム | |
US20200311268A1 (en) | Methods and systems for performing a dynamic analysis of applications for protecting devices from malwares | |
Azab et al. | HIMA: A hypervisor-based integrity measurement agent | |
CN106055385B (zh) | 监控虚拟机进程的系统和方法、过滤page fault异常的方法 | |
US20120079594A1 (en) | Malware auto-analysis system and method using kernel callback mechanism | |
Oyama | Trends of anti-analysis operations of malwares observed in API call logs | |
Pan et al. | Digtool: A {virtualization-based} framework for detecting kernel vulnerabilities | |
US20140053272A1 (en) | Multilevel Introspection of Nested Virtual Machines | |
CN109923546A (zh) | 虚拟机安全性应用程序的事件过滤 | |
US20220035905A1 (en) | Malware analysis through virtual machine forking | |
US9424427B1 (en) | Anti-rootkit systems and methods | |
CN111444504A (zh) | 一种用于软件运行时自动识别恶意代码的方法及装置 | |
EP3063692B1 (en) | Virtual machine introspection | |
KR101064164B1 (ko) | 리눅스 커널 기반 스마트 플랫폼 내에서의 커널 무결성 검사 및 변조된 커널 데이터 복구 방법 | |
CN104715202A (zh) | 一种虚拟机中的隐藏进程检测方法和装置 | |
CN109857520B (zh) | 一种虚拟机自省中的语义重构改进方法及系统 | |
US8407787B1 (en) | Computer apparatus and method for non-intrusive inspection of program behavior | |
Kim et al. | Large-scale analysis on anti-analysis techniques in real-world malware | |
CN113176926B (zh) | 一种基于虚拟机自省技术的api动态监控方法及系统 | |
Royal | Alternative medicine: The malware analyst’s blue pill | |
More et al. | Dynamic malware detection and recording using virtual machine introspection | |
Paakkola | Assessing performance overhead of Virtual Machine Introspection and its suitability for malware analysis | |
Yi et al. | DADE: a fast data anomaly detection engine for kernel integrity monitoring | |
Yin et al. | A dynamic malware detection mechanism based on deep learning | |
Nep et al. | A research on countering virtual machine evasion techniques of malware in dynamic analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200724 |
|
RJ01 | Rejection of invention patent application after publication |