CN108351936B - 检测虚拟机或者仿真器的程序规避 - Google Patents
检测虚拟机或者仿真器的程序规避 Download PDFInfo
- Publication number
- CN108351936B CN108351936B CN201680065519.5A CN201680065519A CN108351936B CN 108351936 B CN108351936 B CN 108351936B CN 201680065519 A CN201680065519 A CN 201680065519A CN 108351936 B CN108351936 B CN 108351936B
- Authority
- CN
- China
- Prior art keywords
- program
- virtual environment
- computing device
- attempting
- executed
- 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.)
- Active
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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2105—Dual mode as a secondary aspect
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
各种实施例包括在计算设备上实现的用于分析在所述计算设备上的虚拟环境内执行的程序的方法。所述方法可以包括:确定所述程序是否正在尝试检测是否它正在所述虚拟环境内被执行;以及,响应于确定所述程序正在尝试检测其是否正在所述虚拟环境内被执行,在所述计算设备的受保护模式内分析所述程序。
Description
背景技术
包括台式计算机、膝上型计算机、平板型计算机和移动计算设备(例如,智能电话)的各种计算设备根据存储在存储器中的软件指令执行程序和过程。诸如是恶意软件的某些程序当在计算设备上运行时执行恶意代码。存在各种用于对程序进行检测和分析以确定那些程序是否是恶意的方法。
一种对程序进行分析的方法是,在诸如是虚拟机或者仿真器的计算设备上的虚机环境内执行程序。虚拟环境提供人造的独立的环境以用于执行程序。反恶意软件应用或者其它程序分析器可以在虚拟环境内对程序的行为进行观察和分析以确定它是否是恶意的。
然而,某些恶意程序可能通过尝试检测程序是否正在虚拟环境内执行来试图规避虚拟环境测试。例如,程序可能尝试调用特定函数或者访问指示虚拟操作环境的特定数据结构。如果程序检测到它正在虚拟环境内执行,则该程序可以以良性的方式表现,并且因此逃避检测。当程序在计算设备的正常操作系统内被释放并且执行时,该程序可以然后恶意地行动。
发明内容
各种实施例包括在计算设备上实现的用于分析在所述计算设备上的虚拟环境内执行的程序的方法。各种实施例的方法可以包括:确定所述程序是否正在尝试检测所述程序是否正在所述虚拟环境内被执行。响应于确定所述程序正在尝试检测所述程序是否正在所述虚拟环境内被执行,可以在所述计算设备的受保护模式内对所述程序进行分析。
在某些实施例中,所述受保护模式可以是系统管理模式。某些实施例还可以包括:响应于确定所述程序不是正在尝试检测所述程序是否正在所述虚拟环境内被执行,在所述虚拟环境内继续对所述程序的分析。
在某些实施例中,确定所述程序是否正在尝试检测所述程序是否正在所述虚拟环境内被执行可以包括:监控所述程序对所述虚拟环境的应用编程接口(API)属性的访问。在某些实施例中,所述API属性可以包括从由以下各项组成的组中选择的至少一个成员:模型专用的寄存器、指令的长度、存储中断描述符表寄存器、调试器函数和用于主机-客机通信的指令。在某些实施例中,所述虚拟环境可以是虚拟机或者仿真器。
进一步的实施例包括计算设备,所述计算设备包括存储器和处理器,其被配置为具有处理器可执行指令以执行本文中描述的方法的操作。进一步的实施例包括具有存储在其上的处理器可执行软件指令的非暂时性处理器可读存储介质,所述处理器可执行软件指令被配置为使处理器执行本文中描述的方法的操作。进一步的实施例包括计算设备,所述计算设备包括用于执行本文中描述的方法的操作的功能的单元。
附图说明
被并入本文并且构成本说明书的一部分的附图示出了示例性实施例,并且与上面给出的一般性描述和下面给出的详细描述一起用于解释权利要求的特征。
图1是用于与各种实施例一起使用的计算设备的框图。
图2是示出根据各种实施例的在计算设备上的虚拟环境内的程序分析的框图。
图3是说明根据各种实施例的在计算设备上的受保护模式内的程序分析的框图。
图4是说明根据各种实施例的用于对计算设备上的程序进行分析的方法的过程流图。
图5是适用于实现某些实施例方法的移动计算设备的部件框图。
图6是适用于实现某些实施例方法的计算设备的部件框图。
具体实施方式
将参考附图详细描述各种实施例。每当可能时,相同的附图标记将贯穿附图被用于指代相同或者相似的部分。对特定示例和实现方式作出的参考是出于说明目的的,并且不旨在限制书面的说明书或者权利要求的范围。
如本文中使用的,术语“计算设备”指以下各项中的任意一项或者全部项:蜂窝电话、智能电话、个人或者移动多媒体播放器、个人数据助理、台式计算机、膝上型计算机、平板型计算机、服务器、智能手表、智能书、掌上型计算机、无线电子邮件接收机、多媒体启用互联网的蜂窝电话、无线游戏控制器和类似的包括可编程的处理器和存储器的个人或者企业电子设备。
计算设备执行为用户提供多个功能和服务的程序和应用。对计算设备和被提供给用户的服务的一个威胁是恶意软件,所述恶意软件指被编写为执行未经授权的操作(其在许多情况下是恶意的)的多种多样的程序。例如,在计算设备上执行的恶意软件可以被设计为取得对计算设备的控制、删除或者污染计算设备上的至关重要的文件、暗中监视或者跟踪计算设备上的用户动作、向用户提供不想要的广告、或者敲诈或者欺骗用户付钱或者泄露金融或者个人信息。因此,进行检测和保护以防范恶意软件的方法已接收很多关注。
存在多种用于检测恶意程序的方法。一种方法是在诸如是虚拟机或者仿真器的计算设备上的虚拟环境内执行潜在恶意的程序。虚拟环境可以提供与计算设备的正常操作系统类似的独立环境。程序操作可以在虚拟环境内被分析,以确定它是否展现恶意的行为。然而,存在某些恶意软件程序取决于它们是否正在虚拟环境内被执行而改变它们的行为的风险。这些程序可以在虚拟环境中良性地表现,但在正常操作系统环境中恶意地表现。
概括地说,各种实施例提供用于分析在计算设备上的虚拟环境内执行的程序的系统和方法。各种实施例可以包括:确定程序是否正在执行指示该程序正在尝试检测它是否正在虚拟环境内被执行的操作。响应于确定程序正在尝试检测它是否正在虚拟环境内被执行,可以在计算设备的受保护模式内对程序进行分析。响应于确定程序不是正在尝试检测它是否正在虚拟环境内被执行,对程序的分析可以在虚拟环境内继续。虚拟环境可以是虚拟机或者仿真器。受保护模式可以是所述计算设备或者另一个计算设备上的与其它网络部件和/或敏感信息隔离的系统管理模式。
用于识别程序何时正在尝试检测它是否正在虚拟环境内被执行的方法可以包括:监控程序对虚拟环境的应用编程接口(API)属性的访问。被监控的API属性可以包括以下各项中的至少一项:模型专用的寄存器、指令的长度、存储中断描述符表寄存器、调试器函数和用于主机-客机(host-guest)通信的指令(例如,用于访问来自输入/输出端口的数据的IN/OUT指令和在虚拟环境内对非法操作码的使用)。
图1是适用于实现各种实施例的计算设备100的功能框图。计算设备100除了其它设备以外可以是台式计算机、膝上型计算机、平板型计算机、任何类型的移动电子设备、服务器或者任何类型的消费者或者企业电子设备。计算设备100包括用于执行软件指令的中央处理单元(CPU)102和用于存储代码和数据的存储器104。存储器104可以是存储处理器可执行指令的非暂时性计算机可读存储介质。存储器104可以存储操作系统106。
虚拟环境108可以在操作系统106内被创建和执行。虚拟环境108可以是虚拟机或者仿真器——即,虚拟环境108可以用于模拟另一个计算系统的软件和/或硬件环境和功能。虚拟环境108可以是基于虚拟环境108正在尝试模拟的计算系统的计算机架构、硬件和/或软件的。虚拟环境108可以用于多个不同的目的。虚拟环境108的一种用途可以是作为用于对潜在恶意的程序的行为进行分析的测试场地或者人造环境。
计算设备100还可以包括受保护模式110。受保护模式110可以是计算设备100的特殊模式,其当被激活时暂停操作系统106的操作,或者以其它方式使计算设备与由恶意软件作出的恶意行动隔离。受保护模式110可以是CPU 102的具有关于计算设备100上的硬件和软件功能的特殊特权的特定操作模式。受保护模式110可以被实现在计算设备100上的固件或者硬件辅助的调试器内。受保护模式110的一个示例是系统管理模式(SMM),其可以在特定的CPU芯片集中被提供。SMM可以通过断言CPU 102上的系统管理中断(SMI)管脚而被触发。用于SMM的处理程序(handler)可以被存储在仅可由SMM访问的特殊存储器中。
受保护模式110可以用于执行诸如是功率管理或者错误处理的特殊任务。受保护模式110是“真实的”计算环境,这在于它在计算设备100上的实际硬件内运行,而非如在虚拟环境108中那样在模拟的硬件内运行。受保护模式110还可以提供特定防护措施以防范恶意代码,例如,将程序锁定在高级别访问(例如,根访问)之外。因此,在各种实施例中,受保护模式110可以充当用于潜在的恶意程序的替换的测试环境(特别如果该程序被设计为规避虚拟环境108的话)。
计算设备100还可以包括未在图1中示出的各种其它的部件。例如,计算设备100可以包括多个输入、输出和处理部件,例如,扬声器、麦克风、调制解调器、收发机、用户标识模块(SIM)卡、键区、鼠标、显示屏或者触摸屏、各种连接端口、音频或者图形处理器、额外的硬盘驱动器和本领域中已知的许多其它部件。
图2包括示出了使用计算设备上的虚拟环境进行的程序分析的框图200。计算设备可以包括操作系统202。虚拟环境204可以在操作系统202内运行。虚拟环境204可以在操作系统202内提供独立的计算环境。例如,虚拟环境204可以是模拟另一个计算系统的软件和/或硬件功能的虚拟机或者仿真器。虚拟环境204可以用于对程序206进行分析以确定是否它是恶意的。在虚拟环境204内被执行的程序206不能够访问操作系统202或者计算设备的处在虚拟环境之外的其它资源。因此,如果程序206是恶意的,则程序206不能够强占或者破坏虚拟环境204在其上执行的操作系统202或者计算设备。
虚拟环境204可以包括应用编程接口(API)208,其被操作系统202用于与虚拟环境204交互和控制虚拟环境204。API 208可以包括多个函数、例程、协议和数据结构。
某些恶意程序(例如,程序206)可以被设计为尝试发现它们正在虚拟机内还是在操作系统内执行。这样的程序可以当在虚拟环境204内执行时良性地表现,并且因此可以规避恶意代码检测。一旦程序被释放到操作系统202中,程序就可以开始恶意地行动。
恶意程序206可以例如通过尝试调用API 208中的特定函数或者访问API 208中的特定数据结构来尝试发现它是否正在虚拟环境204内执行。来自所调用的API 208的函数的特定返回值或者API 208的数据结构可以确认程序206正在虚拟环境204内执行。因此,在各种实施例中,虚拟环境204或者操作系统202可以被配置为监控程序206在虚拟环境204内的操作和行为,以确定程序206是否正在调用API 208中的特定函数或者访问API 208中特定数据结构,以尝试发现它是否正在虚拟环境204内执行。存在恶意程序206在企图检测虚拟环境时可能执行或者尝试访问并且虚拟环境204可以被配置为对其进行检测的若干种类型的函数和/或数据结构。
恶意程序206可能执行并且虚拟环境204可以被配置为对其进行检测的动作的一个非限制性的示例包括:访问在快速仿真器(QEMU)模拟器上有效但当在实际的计算设备中被调用时返回异常的模型专用的寄存器。
恶意程序206可能执行并且虚拟环境204可以被配置为对其进行检测的动作的另一个非限制性的示例包括:访问指令的长度。这是因为指令的长度在实际的计算设备中将是有限的,但是在虚拟环境中可以是任意长的。
恶意程序206可能执行并且虚拟环境204可以被配置为对其进行检测的动作的另一个非限制性的示例包括:访问存储中断描述符表寄存器。这是因为虚拟环境中的基址可以与实际计算设备不同,并且可以超过特定的函数。
恶意程序206可能执行并且虚拟环境204可以被配置为对其进行检测的动作的另一个非限制性的示例包括:调用调试器函数。例如,环境204可以被配置为检测程序何时调用IsDebuggerPresent()或者CheckRemoteDebuggerPresent()。
恶意程序206可能执行并且虚拟环境204可以被配置为对其进行检测的动作的另一个非限制性的示例包括:执行在主机-客机通信期间使用的用于从输入/输出端口读或者写数据的IN或者OUT指令。这样的IN或者OUT指令可以涉及从存在于虚拟环境内但当在底层计算设备中被调用时将产生异常的端口地址读/写数据。
恶意程序206可能执行并且虚拟环境204可以被配置为对其进行检测的动作的另一个非限制性的示例包括:在主机-客机通信期间对执行非法操作码的尝试。这是因为底层计算设备的错误处理程序可以处置对非法操作码的调用,但虚拟环境可能不具有错误处理程序。例如,非法操作码可以包括未定义的操作码或者对现有操作码的非法编码。哪些操作码是非法的可以取决于特定的虚拟环境204和/或计算设备的硬件或者软件。
如果虚拟环境204检测到程序正在尝试检测其是否正在虚拟环境204内执行(即,程序正在试图规避虚拟环境中的测试),则虚拟环境204可以将程序206标记或者标示为规避的程序,并且终止程序206。虚拟环境204或者操作系统202可以然后用信号通知计算设备,程序206应当在计算设备上的受保护模式内被执行和分析。在图3中对此进行了说明。
图3是示出了使用计算设备上的受保护模式进行的程序分析的框图300。计算设备可以包括操作系统302。虚拟环境304可以在操作系统302内操作,以对诸如是程序306的潜在恶意的程序进行分析。如参考图2描述的那样,虚拟环境304可以检测到程序306正在尝试检测它是否正在虚拟环境304内被执行。虚拟环境304可以将程序306标示为规避的,并且终止程序306。计算设备可以然后启动诸如是SMM的受保护模式310。受保护模式310可以通过系统中断(例如,用于SMM的SMI)被触发。程序306可以在受保护模式310内被重新执行。
受保护模式310还可以提供用于对程序306进行分析的独立的环境,但是是基于实际计算设备的环境,而不是对另一个计算设备的模拟。因此,可以被设计为规避虚拟环境304的程序306将不检测到它正在虚拟环境中执行,并且因此将不以被设计为规避受保护模式310的方式表现(即,程序306正常地表现,而不是假装是良性的)。受保护模式310可以防止程序306访问计算设备的至关重要的部分,例如防止根访问。反恶意软件应用或者另一个程序分析器可以在受保护模式310内对程序306进行分析,以确定它是否是恶意的。受保护模式310可能利用比虚拟环境304多的计算资源,因此在某些实施例中,仅规避虚拟环境304的程序可以在受保护模式310内被分析。
图4示出了根据各种实施例的用于分析在计算设备上的虚拟环境内执行的程序的方法400。参考图1-4,方法400可以利用能够运行虚拟环境(例如,虚拟机或者仿真器)和受保护模式(例如,SMM)的计算设备(诸如是计算设备100)的处理器(例如,CPU 102等)来实现。
在框402中,处理器可以对在计算设备上的虚拟环境内执行的程序进行分析。程序可以是潜在的恶意软件或者任何其它的未知程序,并且处理器可以正在对程序进行分析以确定它是否是恶意的。虚拟环境可以是模拟另一个计算系统的软件和/或硬件环境的虚拟机或者仿真器。虚拟环境可以包括被计算设备用于控制虚拟环境和与虚拟环境交互的API。
在框404中,处理器可以监控由程序尝试的对可能泄露虚拟环境的属性的特定API和数据结构的访问。由程序对访问这样的API和/或数据结构属性作出的尝试可以指示程序正在尝试检测该程序是否正在虚拟环境内被执行。可以在框404中被监控的API属性的一个非限制性的示例是模型专用的寄存器(其在快速仿真器(QEMU)模拟器上是有效的,但当在实际计算设备中被调用时返回异常)。可以在框404中被监控的API属性的另一个非限制性的示例是指令的长度(其在虚拟环境中可以是任意长的)。可以在框404中被监控的API属性的另一个非限制性的示例是存储中断描述符表寄存器(基址在虚拟环境中可以是不同的,并且还可以超过特定的函数)。可以在框404中被监控的API属性的另一个非限制性的示例是调试器函数(例如,IsDebuggerPresent()或者CheckRemoteDebuggerPresent())。可以在框404中被监控的API属性的另一个非限制性的示例是用于主机-客机通信的IN/OUT指令。可以在框404中被监控的API属性的另一个非限制性的示例是用于主机-客机通信的非法操作码处置。
在确定框406中,处理器可以根据被监控的行为来确定程序是否正在尝试发现它是否正在虚拟环境内被执行。例如,处理器可以确定程序正在尝试访问可能泄露对于虚拟环境来说是唯一的的属性的被监控的API。
响应于确定程序不是正在尝试检测是否它正在虚拟环境内被执行(即,确定框406=“否”),处理器可以在框408中继续在虚拟环境内对程序的分析。即,如果程序不是正在试图规避虚拟环境测试,则处理器可以继续在虚拟环境中对程序进行分析。
响应于确定程序正在尝试检测它是否正在虚拟环境内被执行(即,确定框406=“是”),处理器可以在框410中终止程序,并且在计算设备上的受保护模式内重新执行并且分析程序。例如,处理器可以标示或者以其它方式标识程序具有规避行为,并且触发受保护模式。受保护模式可以是计算设备上的SMM,其可以使用SMI来触发。受保护模式可以允许在基于实际计算设备的环境中而不是对另一个计算系统的模拟中的继续的对程序的分析,但是仍然防止程序访问和破坏计算设备的至关重要的部分。以这样的方式,方法400提供了一种用于对规避虚拟环境测试的潜在恶意的程序进行分析的方法。
包括在图4中示出的实施例的各种实施例可以在多种多样的计算设备中的任何计算设备中被实现,在图5中示出了所述计算设备的一个示例(例如,计算设备500)。根据各种实施例,计算设备500可以是与如参考图1描述的计算设备100类似的。同样地,计算设备500可以实现图4中的方法400。
计算设备500可以包括耦合到触摸屏控制器504和内部存储器506的处理器502。处理器502可以是一个或多个被设计为用于通用或者专用处理任务的多核集成电路。内部存储器506可以是易失性或者非易失性存储器,并且还可以是安全和/或经加密的存储器、或者非安全和/或未经加密的存储器、或者其任意组合。触摸屏控制器504和处理器502还可以耦合到触摸屏面板512,例如,电阻感应触摸屏、电容感应触摸屏、红外线感应触摸屏等。额外地,计算设备500的显示器不需要具有触摸屏能力。
计算设备500可以具有耦合到处理器502和天线510并且被配置为用于发送和接收蜂窝通信的蜂窝网络收发机508。收发机508和天线510可以与上面提到的电路一起被用于实现各种实施例方法。计算设备500可以包括一个或多个耦合到收发机508和/或处理器502并且可以如本文中描述的那样被配置的SIM卡516。计算设备500可以包括使处理器能够经由蜂窝网络进行通信的蜂窝网络无线调制解调器芯片517。
计算设备500还可以包括用于提供音频输出的扬声器514。计算设备500还可以包括由塑料、金属或者材料的组合构成的用于包含本文中讨论的部件中的全部部件或者一些部件的外壳520。计算设备500可以包括耦合到处理器502的诸如是一次性或者可再充电电池的电源522。可再充电电池还可以耦合到用于从计算设备500外部的源接收充电电流的外围设备连接端口。计算设备500还可以包括用于接收用户输入的物理按钮524。计算设备500还可以包括用于开启和关闭计算设备500的电源按钮526。
包括被图4中示出的实施例的各种实施例可以在多种多样的计算设备中的任何计算设备中被实现,在图6中示出了所述计算设备的一个示例(例如,计算设备600)。根据各种实施例,计算设备600可以是与如参考图1描述的计算设备100类似的。同样地,计算设备600可以实现图4中的方法400。
计算设备600(其可以例如与图1中的计算设备100相对应)可以包括触摸板触摸表面617,所述触摸板触摸表面617充当计算设备600的指点设备,并且因此可以接收与配备有触摸屏显示器的无线设备上实现并且在下面被描述的那些手势类似的拖拽、滚动和轻击手势。计算设备600将通常包括耦合到易失性存储器612和大容量非易失性存储器(例如,闪速存储器的磁盘驱动器613)的处理器611。计算设备600还可以包括耦合到处理器611的软盘驱动器614和压缩盘(CD)驱动器615。计算设备600还可以包括多个耦合到处理器611的用于建立数据连接或者接收外部的存储器设备的连接器端口,例如,通用串行总线(USB)或者火线连接器插座或者其它的用于将处理器611耦合到网络的网络连接电路。在笔记本配置中,设备外壳包括全部都耦合到处理器611的触摸板617、键盘618和显示器619。计算设备600的其它配置可以包括公知的(例如,经由USB输入)耦合到处理器的计算机鼠标或者轨迹球,其也可以结合各种实施例被使用。
前述方法描述和过程流程图仅作为说明性示例被提供,并且不旨在要求或者暗示各种实施例的操作必须按照所给出的次序来执行。如本领域的技术人员将认识到的,前述实施例中的操作的次序可以按照任何次序被执行。诸如是“之后”、“然后”、“接下来”等的词语不旨在限制操作的次序;这些词语仅用于引导读者通过对方法的描述。进一步地,任何例如使用冠词“一”、“一个”或者“那个”以单数形式对权利要求要素的引用不应当理解为将要素限于单数。
结合本文中公开的实施例描述的各种说明性逻辑框、模块、电路和算法操作可以被实现为电子硬件、计算机软件或者这两者的组合。为清楚地说明硬件和软件的该可互换性,各种说明性部件、框、模块、电路和操作已在上面按照它们的功能进行了总体描述。这样的功能被实现为硬件还是软件取决于特定的应用和被施加于整体系统的设计约束。技术人员可以针对每个特定的应用以变通的方式实现所描述的功能,但这样的实现决策不应当理解为导致脱离当前的实施例的范围。
用于实现结合各种实施例描述的各种说明性逻辑单元、逻辑框、模块和电路的硬件可以利用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其它可编程逻辑设备、分立的门或者晶体管逻辑单元、分立的硬件部件、或者被设计为执行本文中描述的功能的其任意组合来实现或者执行。通用处理器可以是微处理器,但是或者,该处理器可以是任何常规的处理器、控制器、微控制器或者状态机。处理器还可以被实现为计算设备的组合,例如DSP与微处理器、多个微处理器、与DSP核心相结合的一个或多个微处理器的组合或者任何其它这样的配置。替换地,某些操作或者方法可以由专用于给定的功能的电路来执行。
在一个或多个示例性实施例中,所描述的功能可以用硬件、软件、固件或者其任意组合来实现。如果用软件来实现,则功能可以作为非暂时性计算机可读存储介质或者非暂时性处理器可读存储介质上的一个或多个指令或者代码被存储。本文中公开的方法或者算法的操作可以被包含在处理器可执行软件模块中,所述处理器可执行软件模块可以位于非暂时性计算机可读或者处理器可读存储介质上。非暂时性计算机可读或者处理器可读存储介质可以是任何可以由计算机或者处理器访问的存储介质。作为示例而非限制,这样的非暂时性计算机可读或者处理器可读存储介质可以包括RAM、ROM、EEPROM、闪速存储器、CD-ROM或者其它光盘存储器、磁盘存储器或者其它磁存储设备、或者任何其它可以用于以指令或者数据结构的形式存储期望的程序代码并且可以由计算机访问的介质。如本文中使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘利用激光光学地复制数据。以上各项的组合也被包括在非暂时性计算机可读和处理器可读介质的范围内。额外地,方法或者算法的操作可以作为代码和/或指令中的一项或者任意组合或者集合而位于非暂时性处理器可读存储介质和/或计算机可读存储介质上,所述非暂时性处理器可读存储介质和/或计算机可读存储介质可以被并入计算机程序产品。
提供对各种实施例的前述描述以使本领域的任何技术人员能够制作和使用权利要求。对这些实施例的各种修改对于本领域的技术人员将是显而易见的,并且本文中定义的一般原理可以被应用于一些实施例,而不会脱离权利要求的范围。因此,本公开内容不旨在限于本文中示出的实施例,而要符合与下面的权利要求和本文中公开的原理和新颖特征一致的最宽范围。
Claims (24)
1.一种用于分析在计算设备上的虚拟环境内执行的程序的方法,包括:
根据被监控的行为来确定所述程序是否在尝试检测所述程序是否在所述虚拟环境内被执行;以及
响应于确定所述程序在尝试检测所述程序是否在所述虚拟环境内被执行而进行以下操作:
终止所述程序在所述虚拟环境内的执行;
在所述计算设备的受保护模式下重新执行所述程序;以及
在所述计算设备的所述受保护模式内分析所述程序。
2.根据权利要求1所述的方法,其中,所述受保护模式是系统管理模式。
3.根据权利要求1所述的方法,还包括:响应于确定所述程序不是在尝试检测所述程序是否在所述虚拟环境内被执行,在所述虚拟环境内继续对所述程序的分析。
4.根据权利要求1所述的方法,其中,确定所述程序是否在尝试检测所述程序是否在所述虚拟环境内被执行包括:
监控所述程序对所述虚拟环境的应用编程接口(API)属性的访问。
5.根据权利要求4所述的方法,其中,所述API属性包括从由以下各项组成的组中选择的至少一个成员:模型专用的寄存器、指令的长度、存储中断描述符表寄存器、调试器函数和用于主机-客机通信的指令。
6.根据权利要求1所述的方法,其中,所述虚拟环境包括虚拟机或者仿真器。
7.一种计算设备,包括:
处理器,其被配置为具有用于以下各项的处理器可执行指令:
根据被监控的行为来确定在所述计算设备上的虚拟环境内执行的程序是否在尝试检测所述程序是否在所述虚拟环境内被执行;以及
响应于确定所述程序在尝试检测所述程序是否在所述虚拟环境内被执行而进行以下操作:
终止所述程序在所述虚拟环境内的执行;
在所述计算设备的受保护模式下重新执行所述程序;以及
在所述计算设备的所述受保护模式内分析所述程序。
8.根据权利要求7所述的计算设备,其中,所述受保护模式是系统管理模式。
9.根据权利要求7所述的计算设备,其中,所述处理器还被配置为具有用于响应于确定所述程序不是在尝试检测所述程序是否在所述虚拟环境内被执行,在所述虚拟环境内继续对所述程序的分析的处理器可执行指令。
10.根据权利要求7所述的计算设备,其中,所述处理器被配置为具有用于通过监控所述程序对所述虚拟环境的应用编程接口(API)属性的访问来确定所述程序是否在尝试检测所述程序是否在所述虚拟环境内被执行的处理器可执行指令。
11.根据权利要求10所述的计算设备,其中,所述API属性包括从由以下各项组成的组中选择的至少一个成员:模型专用的寄存器、指令的长度、存储中断描述符表寄存器、调试器函数和用于主机-客机通信的指令。
12.根据权利要求7所述的计算设备,其中,所述虚拟环境包括虚拟机或者仿真器。
13.一种具有存储在其上的处理器可执行软件指令的非暂时性计算机可读存储介质,所述处理器可执行软件指令被配置为使计算设备的处理器执行包括以下操作的操作:
根据被监控的行为来确定在所述计算设备上的虚拟环境内执行的程序是否在尝试检测所述程序是否在所述虚拟环境内被执行;以及
响应于确定所述程序在尝试检测所述程序是否在所述虚拟环境内被执行而进行以下操作:
终止所述程序在所述虚拟环境内的执行;
在所述计算设备的受保护模式下重新执行所述程序;以及
在所述计算设备的所述受保护模式内分析所述程序。
14.根据权利要求13所述的非暂时性计算机可读存储介质,其中,所述受保护模式是系统管理模式。
15.根据权利要求13所述的非暂时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使所述处理器执行还包括以下操作的操作:响应于确定所述程序不是在尝试检测所述程序是否在所述虚拟环境内被执行,在所述虚拟环境内继续对所述程序的分析。
16.根据权利要求13所述的非暂时性计算机可读存储介质,其中,所存储的处理器可执行软件指令还被配置为使所述处理器执行操作,以使得确定所述程序是否在尝试检测所述程序是否在所述虚拟环境内被执行包括:
监控所述程序对所述虚拟环境的应用编程接口(API)属性的访问。
17.根据权利要求16所述的非暂时性计算机可读存储介质,其中,所述API属性包括从由以下各项组成的组中选择的至少一个成员:模型专用的寄存器、指令的长度、存储中断描述符表寄存器、调试器函数和用于主机-客机通信的指令。
18.根据权利要求13所述的非暂时性计算机可读存储介质,其中,所述虚拟环境包括虚拟机或者仿真器。
19.一种计算设备,包括:
用于根据被监视的行为来确定在所述计算设备上的虚拟环境内执行的程序是否在尝试检测所述程序是否在所述虚拟环境内被执行的单元;
用于响应于确定所述程序在尝试检测所述程序是否在所述虚拟环境内被执行而终止所述程序在所述虚拟环境内的执行的单元;
用于响应于确定所述程序在尝试检测所述程序是否在所述虚拟环境内被执行而在所述计算设备的受保护模式下重新执行所述程序的单元;以及
用于响应于确定所述程序在尝试检测所述程序是否在所述虚拟环境内被执行而在所述计算设备的所述受保护模式内分析所述程序的单元。
20.根据权利要求19所述的计算设备,其中,所述受保护模式是系统管理模式。
21.根据权利要求19所述的计算设备,还包括:用于响应于确定所述程序不是在尝试检测所述程序是否在所述虚拟环境内被执行而在所述虚拟环境内继续对所述程序的分析的单元。
22.根据权利要求19所述的计算设备,其中,所述用于确定所述程序是否在尝试检测所述程序是否在所述虚拟环境内被执行的单元包括:
用于监控所述程序对所述虚拟环境的应用编程接口(API)属性的访问的单元。
23.根据权利要求22所述的计算设备,其中,所述API属性包括从由以下各项组成的组中选择的至少一个成员:模型专用的寄存器、指令的长度、存储中断描述符表寄存器、调试器函数和用于主机-客机通信的指令。
24.根据权利要求19所述的计算设备,其中,所述虚拟环境包括虚拟机或者仿真器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/937,949 US9984231B2 (en) | 2015-11-11 | 2015-11-11 | Detecting program evasion of virtual machines or emulators |
US14/937,949 | 2015-11-11 | ||
PCT/US2016/056443 WO2017083044A1 (en) | 2015-11-11 | 2016-10-11 | Detecting program evasion of virtual machines or emulators |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108351936A CN108351936A (zh) | 2018-07-31 |
CN108351936B true CN108351936B (zh) | 2021-11-23 |
Family
ID=57223762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680065519.5A Active CN108351936B (zh) | 2015-11-11 | 2016-10-11 | 检测虚拟机或者仿真器的程序规避 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9984231B2 (zh) |
EP (1) | EP3374920B1 (zh) |
JP (1) | JP2018534695A (zh) |
KR (1) | KR20180081726A (zh) |
CN (1) | CN108351936B (zh) |
TW (1) | TWI735475B (zh) |
WO (1) | WO2017083044A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190014796A1 (en) * | 2015-12-30 | 2019-01-17 | Hill's Pet Nutrition, Inc. | Pet Food Compositions |
US10783239B2 (en) * | 2017-08-01 | 2020-09-22 | Pc Matic, Inc. | System, method, and apparatus for computer security |
US10621348B1 (en) * | 2017-08-15 | 2020-04-14 | Ca, Inc. | Detecting a malicious application executing in an emulator based on a check made by the malicious application after making an API call |
US10546128B2 (en) * | 2017-10-06 | 2020-01-28 | International Business Machines Corporation | Deactivating evasive malware |
TWI650671B (zh) * | 2017-10-17 | 2019-02-11 | 中華電信股份有限公司 | 惡意程式分析方法及裝置 |
US11853425B2 (en) * | 2020-10-09 | 2023-12-26 | Sophos Limited | Dynamic sandbox scarecrow for malware management |
US11934515B2 (en) * | 2021-12-02 | 2024-03-19 | Bank Of America Corporation | Malware deterrence using computer environment indicators |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515320A (zh) * | 2009-04-10 | 2009-08-26 | 中国科学院软件研究所 | 一种攻击时漏洞检测方法及其系统 |
CN101946466A (zh) * | 2007-12-21 | 2011-01-12 | 英特尔公司 | 多个应用的对等流传输和api服务 |
CN102034050A (zh) * | 2011-01-25 | 2011-04-27 | 四川大学 | 基于虚拟机和敏感Native API调用感知的恶意软件动态检测方法 |
CN102682229A (zh) * | 2011-03-11 | 2012-09-19 | 北京市国路安信息技术有限公司 | 一种基于虚拟化技术的恶意代码行为检测方法 |
WO2013067505A1 (en) * | 2011-11-03 | 2013-05-10 | Cyphort, Inc. | Systems and methods for virtualization and emulation assisted malware detection |
CN103500308A (zh) * | 2012-09-28 | 2014-01-08 | 卡巴斯基实验室封闭式股份公司 | 用于对抗由恶意软件对仿真的检测的系统和方法 |
JP2014071796A (ja) * | 2012-10-01 | 2014-04-21 | Nec Corp | マルウェア検知装置、マルウェア検知システム、マルウェア検知方法、及びプログラム |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6697971B1 (en) * | 2000-10-24 | 2004-02-24 | Hewlett-Packard Development Company, L.P. | System and method for detecting attempts to access data residing outside of allocated memory |
US7552426B2 (en) * | 2003-10-14 | 2009-06-23 | Microsoft Corporation | Systems and methods for using synthetic instructions in a virtual machine |
US8763125B1 (en) * | 2008-09-26 | 2014-06-24 | Trend Micro, Inc. | Disabling execution of malware having a self-defense mechanism |
TW201137660A (en) * | 2009-12-23 | 2011-11-01 | Ibm | Method and system for protecting an operating system against unauthorized modification |
US9501644B2 (en) * | 2010-03-15 | 2016-11-22 | F-Secure Oyj | Malware protection |
US8904537B2 (en) | 2011-05-09 | 2014-12-02 | F—Secure Corporation | Malware detection |
US8826440B2 (en) * | 2011-10-19 | 2014-09-02 | Google Inc. | Defensive techniques to increase computer security |
US9104870B1 (en) * | 2012-09-28 | 2015-08-11 | Palo Alto Networks, Inc. | Detecting malware |
JP6176868B2 (ja) * | 2013-02-10 | 2017-08-09 | ペイパル・インク | 予測的なセキュリティ製品を提供し、既存のセキュリティ製品を評価する方法と製品 |
US9342343B2 (en) * | 2013-03-15 | 2016-05-17 | Adventium Enterprises, Llc | Wrapped nested virtualization |
WO2015029037A2 (en) * | 2013-08-27 | 2015-03-05 | MINERVA LABS LTD. No:515155356 | Method and system handling malware |
US9185128B2 (en) * | 2013-08-30 | 2015-11-10 | Bank Of America Corporation | Malware analysis methods and systems |
US9223964B2 (en) | 2013-12-05 | 2015-12-29 | Mcafee, Inc. | Detecting JAVA sandbox escaping attacks based on JAVA bytecode instrumentation and JAVA method hooking |
US9355246B1 (en) * | 2013-12-05 | 2016-05-31 | Trend Micro Inc. | Tuning sandbox behavior based on static characteristics of malware |
US9294486B1 (en) * | 2014-03-05 | 2016-03-22 | Sandia Corporation | Malware detection and analysis |
US10084813B2 (en) * | 2014-06-24 | 2018-09-25 | Fireeye, Inc. | Intrusion prevention and remedy system |
US9992225B2 (en) * | 2014-09-12 | 2018-06-05 | Topspin Security Ltd. | System and a method for identifying malware network activity using a decoy environment |
US9411959B2 (en) * | 2014-09-30 | 2016-08-09 | Juniper Networks, Inc. | Identifying an evasive malicious object based on a behavior delta |
US9413774B1 (en) * | 2014-10-27 | 2016-08-09 | Palo Alto Networks, Inc. | Dynamic malware analysis of a URL using a browser executed in an instrumented virtual machine environment |
US10339300B2 (en) * | 2015-03-23 | 2019-07-02 | Binary Guard Corp. | Advanced persistent threat and targeted malware defense |
US20160357965A1 (en) * | 2015-06-04 | 2016-12-08 | Ut Battelle, Llc | Automatic clustering of malware variants based on structured control flow |
US9703956B1 (en) * | 2015-06-08 | 2017-07-11 | Symantec Corporation | Systems and methods for categorizing virtual-machine-aware applications for further analysis |
US9935972B2 (en) * | 2015-06-29 | 2018-04-03 | Fortinet, Inc. | Emulator-based malware learning and detection |
-
2015
- 2015-11-11 US US14/937,949 patent/US9984231B2/en active Active
-
2016
- 2016-10-11 CN CN201680065519.5A patent/CN108351936B/zh active Active
- 2016-10-11 WO PCT/US2016/056443 patent/WO2017083044A1/en active Application Filing
- 2016-10-11 EP EP16790469.7A patent/EP3374920B1/en active Active
- 2016-10-11 JP JP2018523489A patent/JP2018534695A/ja not_active Ceased
- 2016-10-11 KR KR1020187012862A patent/KR20180081726A/ko unknown
- 2016-10-13 TW TW105132990A patent/TWI735475B/zh not_active IP Right Cessation
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101946466A (zh) * | 2007-12-21 | 2011-01-12 | 英特尔公司 | 多个应用的对等流传输和api服务 |
CN101515320A (zh) * | 2009-04-10 | 2009-08-26 | 中国科学院软件研究所 | 一种攻击时漏洞检测方法及其系统 |
CN102034050A (zh) * | 2011-01-25 | 2011-04-27 | 四川大学 | 基于虚拟机和敏感Native API调用感知的恶意软件动态检测方法 |
CN102682229A (zh) * | 2011-03-11 | 2012-09-19 | 北京市国路安信息技术有限公司 | 一种基于虚拟化技术的恶意代码行为检测方法 |
WO2013067505A1 (en) * | 2011-11-03 | 2013-05-10 | Cyphort, Inc. | Systems and methods for virtualization and emulation assisted malware detection |
CN103500308A (zh) * | 2012-09-28 | 2014-01-08 | 卡巴斯基实验室封闭式股份公司 | 用于对抗由恶意软件对仿真的检测的系统和方法 |
JP2014071796A (ja) * | 2012-10-01 | 2014-04-21 | Nec Corp | マルウェア検知装置、マルウェア検知システム、マルウェア検知方法、及びプログラム |
Non-Patent Citations (1)
Title |
---|
Bare-metal Analysis-based Evasive Malware Detection;Kirat, D;《23rd USENIX Security Symposium》;20140822;第287-301页 * |
Also Published As
Publication number | Publication date |
---|---|
TW201717087A (zh) | 2017-05-16 |
JP2018534695A (ja) | 2018-11-22 |
WO2017083044A1 (en) | 2017-05-18 |
KR20180081726A (ko) | 2018-07-17 |
EP3374920A1 (en) | 2018-09-19 |
CN108351936A (zh) | 2018-07-31 |
EP3374920B1 (en) | 2020-04-22 |
US20170132411A1 (en) | 2017-05-11 |
TWI735475B (zh) | 2021-08-11 |
US9984231B2 (en) | 2018-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108351936B (zh) | 检测虚拟机或者仿真器的程序规避 | |
US9507939B1 (en) | Systems and methods for batch processing of samples using a bare-metal computer security appliance | |
US9354951B2 (en) | Method and device for browsing webpage | |
Yan et al. | Understanding and detecting overlay-based android malware at market scales | |
US20180060569A1 (en) | Detection and Prevention of Malicious Shell Exploits | |
US10986103B2 (en) | Signal tokens indicative of malware | |
JP2018520446A (ja) | 非同期イントロスペクション例外を使用するコンピュータセキュリティシステムおよび方法 | |
EP2891104B1 (en) | Detecting a malware process | |
US20160094574A1 (en) | Determining malware based on signal tokens | |
CN112541178A (zh) | 控制流完整性实施的设备和方法 | |
US10210331B2 (en) | Executing full logical paths for malware detection | |
Mohsen et al. | Android keylogging threat | |
US11126721B2 (en) | Methods, systems and apparatus to detect polymorphic malware | |
Gong et al. | Overlay-based android malware detection at market scales: systematically adapting to the new technological landscape | |
Kim et al. | Large-scale analysis on anti-analysis techniques in real-world malware | |
Yang et al. | Eavesdropping user credentials via GPU side channels on smartphones | |
US10290033B1 (en) | Method, system, and computer-readable medium for warning users about untrustworthy application payment pages | |
CN111062035A (zh) | 一种勒索软件检测方法、装置、电子设备及存储介质 | |
Jia et al. | Defending return‐oriented programming based on virtualization techniques | |
CN114531294A (zh) | 一种网络异常感知方法、装置、终端及存储介质 | |
US11636205B2 (en) | Method and system for detecting malware using memory map | |
Wapet | Preventing the release of illegitimate applications on mobile markets | |
Fattori | Hardware-Assisted Virtualization and its Applications to Systems Security | |
KR20160052044A (ko) | 온라인 게임에서의 해킹 툴 분석을 이용한 해킹 방지 방법 | |
CN114861183A (zh) | 一种文档宏安全检测方法、装置、电子设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |