CN104769604A - 实时模块保护 - Google Patents
实时模块保护 Download PDFInfo
- Publication number
- CN104769604A CN104769604A CN201380048780.0A CN201380048780A CN104769604A CN 104769604 A CN104769604 A CN 104769604A CN 201380048780 A CN201380048780 A CN 201380048780A CN 104769604 A CN104769604 A CN 104769604A
- Authority
- CN
- China
- Prior art keywords
- trial
- segmentation
- security agent
- svmm
- access
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- 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
- 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/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- 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/567—Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
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)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
一种用于保护电子设备的技术,包括捕获对所述电子设备的受保护的系统资源的访问的尝试,确定与所述尝试相关联的模块,确定与所述尝试相关联的所述模块的分段,所述分段包括与所述尝试相关联的存储器位置,基于对所述模块的确定和对所述分段的确定,访问安全规则以确定是否允许所尝试的访问,并且基于所述安全规则而处理所述尝试。所述模块包括多个不同的分段。
Description
技术领域
本发明的实施例总体上涉及计算机安全和恶意软件保护,并且更具体地,涉及实时模块保护。
背景技术
本机操作系统服务可阻止安全软件在系统的内核中安装任意挂钩。因而可防止安全软件过滤电子设备的所有行为,包括恶意软件的潜在恶意行为。恶意软件可以包括但不限于,间谍软件、根程序病毒包(rootkits)、密码窃取器、垃圾邮件源、网络钓鱼攻击源、拒绝服务攻击源、病毒、记录器、木马、广告软件,或产生恶意行为的任何其他数字内容。
操作系统的过滤功能可能会受到限制,并且可能仅在由操作系统供应商所决定的时间轴上可用。恶意软件可与安全软件在相同的层级处操作和驻留,尤其是在操作系统内核中,并从而损害操作系统及安全软件本身的完整性。
多种形式的积极(aggressive)内核模式恶意软件篡改用户模式存储器以实现恶意任务,例如动态地注入恶意代码、修改用户模式代码分段(subsection)以改变执行路径并重定向到恶意代码、以及修改用户模式数据结构以使安全软件失效。此外,一些恶意软件可通过篡改进程存储器代码和数据分段以欺骗检测逻辑来从内核攻击反恶意软件应用程序及进程。
内核模式根程序病毒包及其他恶意软件采用各种方法从用户模式应用程序和内核模式设备驱动程序中隐藏自身的存在。根据感染所发生的位置,所使用的技术可以改变。例如,恶意软件能够攻击操作系统的内核活动进程列表从而从列表中清除或取消根程序病毒包或其他恶意软件进程。其他恶意软件可篡改进程访问和枚举函数的代码分段。
附图说明
为了更完整地理解本发明的实施例及其优点,现参考以下与附图相结合的书面描述,其中:
图1是用于保护电子设备避免恶意软件的系统的示例实施例;
图2是用于保护电子设备避免恶意软件的基于虚拟机监视器和基于安全规则的可配置安全解决方案的系统的示例实施例;
图3是用于保护电子设备避免恶意软件的基于虚拟机监视器的方法的示例实施例;
图4是用于在电子设备上使用操作系统下层捕获来调节软件访问以保护存储器的系统的示例实施例;
图5是存储器映射的示例实施例的示意图;
图6是用于使用对电子设备的尝试访问的操作系统下层捕获来保护存储器的方法的示例实施例;
图7是用于实时模块保护的系统的示例操作的示意图;
图8是用于实时模块保护的方法的示例实施例。
具体实施方式
图1是用于保护电子设备避免恶意软件的系统100的示例性实施例。系统100可包括操作系统(“O/S”)下层(below-O/S)捕获代理104,捕获代理104通信地耦合到触发事件处理器108。O/S下层捕获代理104可被配置为捕获(trap)对电子设备103的资源106的各种尝试访问。O/S下层捕获代理104可被配置为创建与所捕获的尝试访问相关联的触发事件,并将所述触发事件发送给触发事件处理器108。触发事件处理器108可被配置为查询一个或多个安全规则114或保护服务器102,以确定如何处理所述触发事件。触发事件处理器108还可被配置为评估所述触发事件的倾向是恶意软件或颠覆电子设备103的资源或操作的恶意尝试的指示。此外,触发事件处理器108可被配置为向O/S下层捕获代理104提供是否应当允许或拒绝触发事件的确定,或者可被配置为产生另一纠正动作。
可在比电子设备103中的操作系统更低的功能层级处实现O/S下层捕获代理104。例如,O/S下层捕获代理104可截获操作系统112、驱动程序111或应用程序110对资源106的尝试访问。O/S下层捕获代理104可在电子设备103的处理器上运行而无需使用操作系统。在一个实施例中,O/S下层捕获代理104可运行于裸机环境或执行层级。此外,O/S下层捕获代理104可运行于由电子设备103的处理器所限定的、比电子设备103的所有操作系统更高的执行优先级别。例如,在使用保护环的分级保护域模型的上下文中(其中较小的数字代表较高的优先级),操作系统112可运行于“环0”,而O/S下层捕获代理104可运行于“环-1”。驱动程序111或应用程序110可运行于“环0”或“环3”。在处理器的一些实施例中,“环-1”的概念可被称为“环0特权模式”,并且“环0”的概念可被称为“环0非特权模式”。相比“环0”或“环0特权模式”,“环-1”或“环0特权模式”下的操作可能需要更多的额外开销和费用。电子设备103的操作系统可运行于环0。在诸如INTEL处理器的处理器中,“VMX Root”模式可相当于“环0特权模式”,并且“VMX Non-root”模式可相当于“环0”。
O/S下层捕获代理104可对运行于“环0”或更高的实体透明地操作。因此,无论O/S下层捕获代理104是否存在,都可由操作系统112或另一实体以相同的方式请求对资源106的尝试访问。当执行所接收的动作时,O/S下层捕获代理104可允许所述请求发生、可拒绝所述请求,或者可采取其他纠正动作。为了拒绝所述请求,O/S下层捕获代理104可简单地不把请求发送给资源106或处理器,或者可向所述请求提供欺骗的或虚假的应答,以使操作系统112相信该动作已经发生。
通过在“环-1”、在比电子设备103的相关操作系统更高的优先级或低于电子设备103的相关操作系统运行,O/S下层捕获代理104可避免困扰诸如操作系统112的操作系统的大多数恶意软件。恶意软件可欺骗在“环0”运行的操作系统112或甚至反恶意软件的软件,这是因为恶意软件也可在“环0”优先级运行。然而,如果要执行恶意活动,电子设备103上的恶意软件仍然必须做出对资源106的请求。因而,捕获链接到敏感资源的操作可由在电子设备103中的操作系统的层级以下运行的捕获代理更好地完成。
可以任何合适的方式实现O/S下层捕获代理104。在一个实施例中,可在虚拟机监视器中实现O/S下层捕获代理104。如针对O/S下层捕获代理104所描述的,这种实施例可在操作系统的层级以下运行。例如,在下面的图2的描述中的可找到对安全虚拟机监视器216的这种实施例的示例的描述。在另一实施例中,可在固件中实现O/S下层捕获代理104。在又一实施例中,可在微代码中实现O/S下层捕获代理104。可在这些实施例的任意适合的组合中实现O/S下层捕获代理104。
触发事件处理器108可由通信地耦合在一起的一个或多个事件处理器或安全代理实现。触发事件处理器108和O/S下层捕获代理104可在同一安全代理中实现。在一个实施例中,触发事件处理器108可运行于与O/S下层捕获代理相同的优先级环。在另一实施例中,触发事件处理器108可运行于与操作系统112、驱动程序111或应用程序110相同的优先级。在又一实施例中,触发事件处理器108可由两个或更多个触发事件处理器实现,其中至少一个触发事件处理器运行于与O/S下层捕获代理相同的优先级环,并且至少一个触发事件处理器运行于操作系统112、驱动程序111或应程序用110的层级。通过在O/S下层捕获代理104的层级运行,触发事件处理器108可类似地避免“环0”或“环3”恶意软件感染代理本身的问题。然而,与操作系统112、驱动程序111或应用程序110一起在“环0”或“环3”运行的触发事件处理器108可以能够提供关于对资源106的尝试访问的上下文信息,该上下文信息是从“环-1”代理的角度来看无法获得的。
触发事件处理器108可以以任何合适的方式实现。在一个实施例中,触发事件处理器108可在虚拟机监视器或虚拟机监视器安全代理中实现。这种实施例可在操作系统的层级以下运行。例如,在下面的图2的描述中的可找到对安全虚拟机监视器216和安全虚拟机监视器安全代理217的这种实施例的示例的描述。在另一实施例中,触发事件处理器108可全部地或部分地在固件中实现。如针对触发事件处理器108所描述的,这种实施例可在操作系统的层级以下运行。在又一实施例中,触发事件处理器108可在微代码中实现。如针对触发事件处理器108所描述的,这种实施方式可在低于操作系统的层级以下运行。触发事件处理器108可在这些实施例的组合中实现。
在一个实施例中,触发事件处理器108可在多个模块中实现,其中,至少一个这种模块运行于操作系统以下的层级,并且至少一个这种模块运行于操作系统之内的层级。每个这种模块均可被配置为彼此进行通信。
在一个实施例中,操作系统下层捕获代理104和/或触发事件处理器108可在电子设备103的裸露的金属层运行。操作系统下层捕获代理104和/或触发事件处理器108可运行而无需使用它们与它们被配置为要进行保护的资源106之间的操作系统。资源106可包括处理器、处理器的功能部件、存储器、诸如数据结构的驻留在存储器中的实体,或者诸如函数、进程或应用程序的驻留在存储器中以供由处理器执行的实体。资源106可包括包含电子设备103的资源的系统资源。此外,资源106可被指定为受保护的,从而通过例如操作系统下层捕获代理104、触发事件处理器108或任何合适的反恶意软件机制或模块的操作进行保护。因此,资源106可包括受保护的系统资源。操作系统下层捕获代理104和/或触发事件处理器108可直接在电子设备103的硬件上运行。操作系统下层捕获代理104和/或触发事件处理器108可不需要使用诸如操作系统112的操作系统来执行或获得对资源106的完全访问。
电子设备103上可以存在其他操作系统,这些操作系统不参与处在操作系统112、操作系统下层捕获代理104和触发事件处理器108、以及资源106的层级处的多个实体之间的关系。例如,预引导操作系统可安全地启动电子设备的一些部分,但不参与电子设备在处理来自应用程序110、驱动程序111和操作系统112模式的对资源106的请求这方面的正常操作。在另一示例中,电子设备103可包含主板组件、插入式板卡、外围设备或其他组件,这些组件包含它们自己的操作系统和处理器组,以执行处于操作系统112、操作系统下层捕获代理104和触发事件处理器108与资源106的层级处的实体之间的关系之外的功能。这些操作系统可为嵌入式操作系统。这些操作系统中的任何一个均可不用于执行操作系统下层捕获代理104和触发事件处理器108。此外,这些操作系统中的任何一个均可不访问由捕获代理104和触发事件处理器108所保护的资源106。
操作系统112、驱动程序11或应用呈现110中的每一个可通过任何合适的模块、可执行文件、脚本、逻辑、指令、硬件、软件、固件或它们的组合来实现,以在操作100上运行。
系统100可包括一个或多个操作系统下层捕获代理104和一个或多个触发事件处理器108的任意组合。可在以下各图中的对捕获代理、事件处理器和安全代理的描述中找到对操作系统下层捕获代理104和触发事件处理器108的描述。
资源106可包括电子设备的任何合适的资源。例如,资源106可包括寄存器、存储器、控制器或I/O设备。例如,可在对图2的系统资源214或图4的虚拟存储器430或物理存储器403的描述中找到对资源106的示例实施例的描述。
安全规则114可包括任何合适的规则、逻辑、命令、指令、标志或用于告知O/S下层捕获代理104要捕获什么动作或用于告知触发事件处理器108基于所捕获的动作来处理事件的其他机制。触发事件处理器108可被配置为向O/S下层捕获代理提供安全规则114中的一个或多个。例如,可在对图2中的安全规则222、或安全规则421或安全规则408的描述中找到对安全规则114中的一些或全部的示例实施例的描述。
内核模式和用户模式实体(例如系统100的应用程序110、驱动程序111和操作系统112)可以任何合适的方式实现。例如,可在以下对图2的应用程序210、驱动程序211和操作系统212或图4的应用程序410、驱动程序411和操作系统413的描述中找到对系统100的应用程序110、驱动程序111和操作系统112的示例实施例的描述。
电子设备103可以任何合适的方式实现,例如计算机、个人数字助理、电话、移动设备、片上系统、服务器或可配置以解释和/或执行程序指令和/或进程数据的任何其他设备。例如,可在以下对图2的电子设备204或图4中的电子设备401的描述中找到对电子设备103的示例实施例的描述。
系统100可在用于捕获对在电子设备103的操作系统以下的层级处的资源的尝试访问的任何合适的系统中实现。系统100也可在用于通过查询安全规则以确定所尝试的访问是否是恶意的来处理所尝试的访问的任何合适的单元中实现。例如,系统100可由下面的图2-图8中所描述的系统和方法200、300、400、500、600、700和800实现。
图2是用于保护电子设备避免恶意软件的基于虚拟机监视器和基于安全规则的可配置安全解决方案的系统200的示例实施例。系统200可为系统100的示例实施例,其在虚拟机监视器中实现系统100的某些元件。系统200可包括由可配置安全解决方案保护而避免恶意软件的电子设备204。系统200的可配置安全解决方案可包括在所有操作系统下层运行的安全代理、安全虚拟机监视器、基于云的安全代理和O/S内行为安全代理。O/S下层安全代理和安全虚拟机监视器可被配置为防护对电子设备204的系统资源(包括由O/S内行为安全代理所使用的资源)的访问。O/S下层安全代理可在安全虚拟机监视器中运行。基于云的安全代理可被配置为向O/S下层安全代理和O/S内行为安全代理提供恶意软件检测信息,并从安全虚拟机监视器和O/S内行为安全代理接收关于可能与恶意软件相关联的可疑行为的信息。O/S内行为安全代理可被配置为针对在电子设备上运行的恶意软件的痕迹扫描电子设备204。系统200可包括一个或多个O/S下层安全代理,所述一个或多个O/S下层安全代理被配置为捕获对电子设备204的资源访问的尝试使用、生成对应于所述尝试的触发事件、查询关于所述触发事件的安全规则、并且如果有必要则采取关于所述尝试的纠正动作。
在一个实施例中,系统200可包括通信地耦合到一个或多个O/S内安全代理218和安全虚拟机监视器(“SVMM”)安全代理217的保护服务器202。SVMM安全代理217可驻留在SVMM 216中。SVMM 216可驻留在电子设备204中并运行在电子设备204上。O/S内安全代理218和SVMM安全代理217可通信地耦合。保护服务器202、O/S内安全代理218、SVMM安全代理217和SVMM 216可被配置为保护电子设备204免遭恶意软件的感染。
SVMM安全代理217可以是图中的触发事件处理器108的示例实施例。SVMM 216可以是图1的O/S下层捕获代理104的示例实施例。
电子设备204可包括耦合到处理器208的存储器206。电子设备204可包括用于任何合适的目的而在电子设备上执行的一个或多个应用呈现210或驱动程序211。电子设备204可包括操作系统212。操作系统212可被配置为向应用程序210或驱动程序211提供对电子设备204的系统资源214的访问。SVMM 216可被配置为截获操作系统212对系统资源214的这种调用。SVMM 216和SVMM安全代理217可在操作系统212的层级以下运行。例如,SVMM 216和SVMM安全代理217可以特权模式(例如,“环-1”直接在处理器208上运行。
处理器208可包括例如微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、或被配置为解释和/或执行程序指令和/或进程数据的任何其他数字电路或模拟电路。在一些实施例中,处理器208可解释和/或执行被存储在存储器206中的程序指令和/或进程数据。存储器206可部分地或整体地被配置为应用程序存储器、系统存储器、或两者。存储器206可包括被配置为持有和/或容纳一个或多个存储器模块的任何系统、设备或装置。每个存储器模块可包括被配置为将程序指令和/或数据保留一段时间的任何系统、设备或装置(例如,计算机可读存储介质)。用于配置系统200的操作的指令、逻辑或数据(例如,对诸如SVMM 216、SVMM安全代理217以及O/S内安全代理218的组件的配置)可驻留在存储器206中,以由处理器208执行。
存储器208可执行要由处理器的一个或多个内核执行的一个或多个代码指令。处理器内核可遵循由代码指令所指示的指令的程序顺序。每个代码指令可由处理器的一个或多个解码器来处理。解码器可生成诸如预先确定格式的固定宽度的微操作这样的微操作以作为其输出,或者可生成反映原始代码指令的其他指令、微指令或控制信号。处理器208还可包括寄存器重命名逻辑和调度逻辑,其通常分配资源并排列与转换指令相对应的操作以用于执行。在完成由所述代码指令所指定的操作的执行后,处理器208内的后端逻辑可使指令退出(retire)。在一个实施例中,处理器208可允许无序执行但需要指令有序退出。处理器208内的退出逻辑可采取本领域技术人员已知的各种形式(例如,重新排序缓冲器等)。因此在代码执行过程中,至少在由解码器所生成的输出、由寄存器重命名逻辑所利用的硬件寄存器和表格以及由执行逻辑所修改的任何寄存器方面,处理器208的处理器内核30发生变换。
保护服务器202可在网络244上运行。在网络244上运行的保护服务器202可实现云计算方案。保护服务器202可被配置为与电子设备204的元件进行通信来更新恶意软件检测规则和信息。保护服务器202可被配置为接收关于源自于电子设备204的可疑活动的信息,并确定这种可疑活动是否是恶意软件感染的指示。操作系统212可包括一个或多个O/S内安全代理218。O/S内安全代理218可被配置为从保护服务器202接收监视和检测规则,例如O/S内安全规则220。O/S内安全代理218可被配置为使用由保护服务器202接收到的O/S内安全规则220来监视和阻止电子设备上的可疑活动。O/S内安全代理218可被配置为将检测到的可疑活动报告给保护服务器202。O/S内安全代理218可被配置为阻止恶意软件操作并向保护服务器202报告这种阻止。如果系统200中存在一个以上的O/S内安全代理218,则每个O/S内安全代理218可被配置为执行捕获、证实或与O/S内安全代理218相关联的其他任务的指定部分。这些部分可由操作系统下层安全代理定义。例如,一个O/S内安全代理218可证实或调查MOV指令,而另一O/S内安全代理218可证实或调查JMP指令。O/S内安全代理218可被配置为确定存储器中特定页的生命周期。例如,O/S内安全代理218可知道通常由操作系统212所使用的用来分配存储器的页的过程和步骤。类似地,O/S内安全代理218可知道通常由操作系统212所使用的将应用程序的映像加载到其加载程序中的过程和步骤。这种过程可遵循操作的静态模式。因此,O/S内安全代理218可被配置为追踪操作系统212的操作以确定是否遵循了给定的动作标准规程。O/S内安全代理218可与SVMM安全代理217通信,以确定由SVMM安全代理217所捕获的操作是否生成了由O/S内安全代理218所观察到的对应的预期行为。差异可指示恶意软件已试图执行在操作系统212的正常操作之外的系统功能。因此,例如O/S内安全代理218和SVMM安全代理217可确定所讨论的页是由恶意软件直接加载到存储器中,还是由操作系统加载程序加载。这种行为可使得O/S内安全代理218或SVMM安全代理217向保护服务器202报告信息,采用更具侵略性的捕获和检查,或采取任何其他纠正动作。
在一个实施例中,O/S内安全代理219可被配置为通过将其自身嵌入到操作系统212中而提供上下文信息。例如,O/S内安全代理219可被配置为将其自身或子组件注册(register)为驱动程序过滤器,并将其自身附接到主驱动程序来确定该驱动程序看到或看不到什么。例如,通过作为附接到TFS.SYS的过滤器,O/S内安全代理219可被配置为报告操作系统212驱动程序所看到的文件I/O操作。
在另一实施例中,O/S内安全代理219可被配置为将从操作系统219内观察到的这些信息提供给SVMM安全代理216或其它O/S下层安全代理,以用于与在操作系统下层观察到的信息进行比较。两组信息之间的差异可表明存在试图隐藏其自身的恶意软件。例如,O/S内安全代理219可挂钩或过滤NDIS.SYS,并监视对特定文件的文件写入。SVMM安全代理216可监视输入和输出命令。如果SVMM安全代理216确定了比基于由O/S内安全代理219所看到的函数调用的列表而本应看到的写入更多的写入,则恶意软件可能在由操作系统所提供的功能之外秘密地写入到磁盘。
网络244可在用于通信的任何适当网络中实现,例如:因特网、内联网、广域网、局域网、回程网络(back-haul network)、点对点网络或其任意组合。保护服务器202可使用从在各种电子设备204运行上的各种安全代理218所提交的报告,通过应用流行程度和名声分析逻辑来进一步检测恶意软件。例如,可把在电子设备204上所识别的可疑行为综合到规则中,以供保护服务器202主动保护其他电子设备204。例如,可基于可疑驱动程序已被报告的次数确定这一规则。例如,具有窄或缓慢的散布模式的未知驱动程序可能与恶意软件有关。另一方面,具有宽泛和快速的分布的未知驱动程序可能与一些流行和广泛可用的应用程序有关。在另一示例中,这种检测到的驱动程序可已经被在另一电子设备上运行的安全软件确定为已经访问对主机恶意软件已知的网站。这种驱动程序可被确定为与恶意软件相关联。
SVMM 216可实现系统200的一些或全部安全虚拟机监视功能。SVMM216可被配置为截获对在电子设备上运行的一个或多个操作系统的系统资源(例如,寄存器、存储器或I/O设备)的访问。根据本发明内容的教导,可使用SVMM 216或被配置为保护电子设备204的其他任何虚拟机监视器来实现系统200的安全虚拟机监视功能。SVMM 216可被配置为在操作系统212代表其自身或代表通过操作系统212运行的应用程序210而尝试访问系统资源214的同时,控制和过滤由操作系统212采取的动作。SVMM 216可在电子设备204上的操作系统212之下运行,并且可具有对操作系统212和应用程序210或驱动程序211可用的一些或全部处理器资源的控制。应用程序210和驱动程序211中的每个均可由例如图1中的应用程序110和驱动程序111实现。应用程序210可包括适合在电子设备204上运行的任何应用程序。驱动程序211可包括适合在电子设备204上运行的任何驱动程序。使得可用于由SVMM 216控制的处理器资源可包括被指定为用于虚拟化的那些资源。在一个实施例中,SVMM 216可被配置为虚拟化系统资源214以供由操作系统212、应用程序210或驱动程序211访问。仅作为示例,这种系统资源214可包括输入-输出设备226、系统存储器228或处理器资源230。仅作为示例,处理器资源230可包括传统寄存器232、调试寄存器234、存储器片段(segmentation)236、存储器分页238、中断240或标志242。I/O设备226可包括对诸如键盘、显示器、鼠标或网卡这样的设备的访问。此外,系统资源214可包括系统存储器228内的特定存储器地址或者系统存储器228内的特定存储器页。系统存储器228可包括物理存储器或虚拟存储器。传统寄存器232和调试寄存器232可包括数据寄存器和控制寄存器。处理器资源230还可包括高速缓存、处理内核、例外或特定的操作代码或操作代码的组合。
SVMM 216可被配置为捕获源自于操作系统212的访问系统资源214的操作的执行。SVMM 216可包括被配置为捕获对系统资源214的特定尝试访问的控制结构。可使用任何合适的控制结构。在一个实施例中,这种控制结构可包括虚拟机控制结构(“VMCS”)221。SVMM 216可被配置为通过操纵VMCS 221内的标志来捕获这种执行。SVMM 216可被配置为捕获涉及访问系统资源214的操作系统212、应用程序210或驱动程序211的任何合适的操作。这种被捕获的操作可包括,例如:读取、写入和执行系统存储器228中的存储器的特定页;从处理器寄存器230加载值和向处理器寄存器230存储值;或从I/O设备226读取和向I/O设备226写入。任何这种操作可引起虚拟机退出(“VM Exit”),这可由SVMM 216捕获。SVMM216可被配置为捕获可由处理器208生成或由操作系统212的元件发起的中断240的生成。SVMM 216可被配置为通过捕获IN和OUT指令来捕获所尝试的从I/O设备226的读取和向I/O设备226的写入。SVMM可被配置为通过捕获对例如虚拟化技术引导的I/O(Virtualization Technology DirectedI/O,“VTd”)的机制的访问来捕获这种指令。VTd可根据处理器208而允许I/O设备虚拟化。通过访问VTd设施,SVMM安全代理217可被配置为确定由VTd连接的设备、确定来自操作系统212的元信息、I/O设备上的端口或其他合适的信息。SVMM安全代理217可被配置为控制或捕获这种虚拟化设备访问的操作。例如,SVMM安全代理217可被配置为确定I/O权限映射,I/O权限映射包含给予到可编程I/O端口的I/O分配。SVMM安全代理217可被配置为捕获可能由恶意软件做出的对这种权限映射的访问,或使用这种权限映射来确定操作系统212上的实体与I/O设备的请求的关系。
在一个实施例中,SVMM安全代理217可运行于SVMM 216中。在另一实施例中,SVMM安全代理217可运行在SVMM 216之外,但可通信地耦合到SVMM 216。在这种实施例中,SVMM安全代理217可运行在电子设备204的操作系统(例如,操作系统212)的层级以下。SVMM安全代理217可运行在与SVMM 216相同的层级和/或相同的优先级。SVMM安全代理217可被配置为处理由SVMM 216触发或捕获的事件。SVMM安全代理217可被配置为访问存储器228的内容或访问在操作系统212的层级以下的盘的内容,以便检查内容免受内核层级根程序病毒包的干扰。此外,SVMM安全代理217的一些操作可由SVMM 216实现,并且SVMM 216的一些操作可由SVMM安全代理217实现。
SVMM安全代理217可被配置为在将引起捕获或触发的动作方面来设置SVMM 216的操作。在一个实施例中,SVMM 216可被配置为将对所捕获的动作的检测传送给SVMM安全代理217。SVMM安全代理217可被配置为查询安全规则222来确定所捕获的动作是否指示恶意软件或恶意活动,并基于安全规则222可向SVMM 216提供关于随后采取何种动作的指示。这种随后的动作可包括允许所尝试的动作、不允许所尝试的动作或采取其他纠正步骤。
可通过由O/S内安全代理218所收集的信息来协调由SVMM 216和SVMM安全代理217对系统资源214的尝试访问和执行的捕获操作。O/S内安全代理218可被配置为把上下文提供给SVMM 216和SVMM安全代理217的捕获和处理操作。例如,特定的操作系统数据结构正常情况下仅由特定的应用程序或服务进行写入。O/S内安全代理218可确定当前在操作系统212上可见地运行的为何种应用程序或进程,并将该信息传送给SVMM安全代理217。如果特定的应用程序或服务未被列为可见地运行,则对数据结构的尝试写入可能来自未经授权的应用程序或进程。
O/S内安全代理218可被配置为经由超级调用与SVMM 216和/或SVMM安全代理217通信。超级调用可用定义了可被使用的可用请求及相关联的输入和输出参数的描述符表来实现。这种描述符表可定义对于O/S内安全代理218与SVMM 216和/或SVMM安全代理217进行通信的一个或多个可能的请求。这种描述符表还可定义对于这种请求的输入和输出参数在存储器中位于哪里。
O/S内安全代理218、SVMM安全代理217和保护服务器202可被配置为相互认证。安全代理212、SVMM安全代理217和保护服务器202中的每一个均可被配置为不继续相互通信,除非这些实体中的每个均经过认证。SVMM 216可被配置为在存储器206中定位O/S内安全代理218映像,并使用密码签名算法来验证存储器206中的O/S内安全代理218映像。保护服务器202、O/S内安全代理218和SVMM安全代理217之间的认证可采用任何合适的方法,包括密码散列和/或签名算法。在一个实施例中,这种认证可涉及私有密钥的交换。O/S内安全代理218可被配置为从保护服务器202接收密钥以验证SVMM安全代理217的实例。
O/S内安全代理218可具有与操作系统212的操作有关的上下文信息。O/S内安全代理218可被配置为与SVMM安全代理217通信以提供这种上下文信息。SVMM安全代理217可指示SVMM 216例如如何定义存储器的某些页或捕获哪些寄存器。
SVMM 216可被配置为捕获由SVMM安全代理217定义的对系统资源214的访问尝试。例如,为了捕获存储器访问,SVMM 216可被配置为捕获诸如读、写或执行的操作。为了捕获对处理器寄存器230的访问,SVMM 216可被指示以捕获包括加载、存储或读取寄存器值的操作。为了捕获I/O操作,I/O设备226、SVMM 216可被指示以捕获诸如对键盘、鼠标或其他外围设备的输入或输出的操作。以下各图中的SVMM安全代理217和/或其他操作系统下层安全代理,以及操作系统内安全代理联合可被配置用于为I/O操作确定目标I/O设备226的标识、要在I/O设备226上执行的目标操作以及要传输的数据。
SVMM安全代理217可被配置为确定上下文信息,例如操作系统212的什么实体已尝试访问电子设备204的资源,或者资源属于操作系统212的什么实体。SVMM安全代理217可被配置为通过任何合适的方法做出这种确定。在一个实施例中,SVMM安全代理217可被配置为从操作系统内安全代理218访问用于这种确定的上下文信息。在另一实施例中,SVMM安全代理217可被配置为直接地或间接地访问操作系统212的调用堆栈和/或处理器208的执行堆栈,以确定由操作系统212的不同进程或应用程序做出的调用顺序。执行指令指针可指向引起触发的指令,而执行堆栈指针和执行基址指针可指向堆栈帧。通过使执行基址指针穿过堆栈,可标识先前的函数调用,以为现在的操作提供上下文。这种堆栈可指示所尝试的操作以及源存储器位置。在又一实施例中,SVMM安全代理217可被配置为使用存储器映射并结合安全规则222来确定尝试是否是恶意的或指示恶意软件。例如,给定尝试访问的存储器位置,这种存储器映射可指示尝试访问资源的实体。例如,可在虚拟存储器页标识符和/或物理存储器地址中,定义这种存储器映射。在另一示例中,这种存储器映射可指示与所述尝试的目标的存储器位置相对应的实体。使用存储器映射,SVMM安全代理217可被配置为确定尝试访问的源和目标的标识或其实体所有者。可部分地由SVMM安全代理217或其他O/S下层安全代理,并结合操作系统内安全代理,通过监视系统的执行而创建存储器映射。SVMM安全代理217和/或其他操作系统下层安全代理,并结合操作系统内安全代理,可为给定的存储器页或物理地址确定这种位置是否属于特定的代码分段或数据分段;确定其属于哪些模块、进程、应用程序、映像或其他实体;或者确定其是否与用户模式或内核模式条目相关联。SVMM安全代理217和/或其他操作系统下层安全代理,并结合操作系统内安全代理,可为虚拟存储器和物理存储器的映射确定指示在电子设备204上运行的各种实体的标识、位置和权限的元数据。类似地,SVMM安全代理217和/或其他操作系统下层安全代理可使用大容量存储设备中的扇区的映射来确定这种实体的映像在大容量存储设备中的位置。结合操作系统内安全代理,SVMM安全代理217和/或其他操作系统下层安全代理,并结合操作系统内安全代理,可为给定的实体确定它们驻留于其上的扇区、文件、目录和卷。
SVMM安全代理217可被配置为如O/S内安全代理218、SVMM安全代理217和SVMM 216的操作所要求的而分配存储器,例如系统存储器228。SVMM安全代理217可被配置为请求SVMM 216保护这种所分配的存储器免遭未经授权的读取和写入操作。SVMM 216可被配置为在创建存储器的保护之后初始化所分配的存储器,以消除恶意软件在由O/S内安全代理218分配存储器和由SVMM 216建立保护的时间之间添加恶意代码的机会。
SVMM安全代理217可被配置为与保护服务器202进行通信以安全地接收SVMM安全规则222。SVMM安全规则222可包括指令、逻辑、规则、共享库、函数、模块或用于指示SVMM 216采用何种安全政策的任何其他合适的机制。SVMM安全代理217可被配置为向保护服务器202传输与来自电子设备204的可疑活动和检测到的恶意软件相关的信息。
O/S内安全代理218可被配置为与保护服务器202进行通信以接收O/S内安全规则220。O/S内安全规则220可包括指令、逻辑、规则、共享库、函数、模块或供O/S内安全代理218检测电子设备204上的恶意软件的任何其他合适的机制。O/S内安全代理218可被配置为向保护服务器202传输与电子设备204上的可疑活动和检测到的恶意软件相关的信息。
O/S内安全规则220和SVMM安全规则222均可包括用于保护电子设备204免受恶意软件感染、以及用于检测可能包括恶意软件的可疑活动的保护规则。O/S内安全代理安全规则可包含由O/S内安全代理218执行的并在O/S内安全代理218内部的规则。SVMM安全规则222可包含由SVMM216和/或SVMM安全代理217执行并在SVMM 216和/或SVMM安全代理217内部的规则。
SVMM安全规则222可被配置为向SVMM安全代理217提供具有如何观察和检测电子设备204的恶意软件感染的定义的信息。例如,SVMM安全规则222可包括来自实体(例如应用程序210或驱动程序211)的函数调用或行为的类型的分类,SVMM安全代理217可针对恶意软件的指示而监视所述函数调用或行为。作为另一示例,SVMM安全规则222可包括对SVMM安全代理217可如何处理这种触发的函数调用的定义,这包括使用什么参数、如何从这种调用中提取值、或者如何确证这种调用的操作。此外,SVMM安全规则222可包括用于SVMM安全代理217中的、关于如何监视诸如应用程序210或驱动程序211的电子设备中的实体的行为以及这种行为检测规则的例外的信息。作为又一示例,SVMM安全规则222可包括用于SVMM安全代理217的、关于如何阻止和修复通过这种行为检测规则检测到的恶意行为的信息。SVMM安全规则222可包括SVMM安全代理217应监视、收集什么数据并将其发送到保护服务器202的细节。
类似地,O/S内安全规则220可被配置为向O/S内安全代理218提供信息,这种信息具有如何观察和检测电子设备204的恶意软件感染以及如何将这种活动与SVMM安全代理217进行协调的定义。
SVMM安全规则222还可包括与SVMM 216将捕获哪些动作有关的规则。SVMM安全代理217可被配置为将这种规则应用到SVMM 216。例如,SVMM安全代理217可被配置为将要被捕获的函数的地址转换为存储器的可识别的虚拟或物理页、针对SVMM 216创建捕获对这样的页的执行、并且随后在捕获所述执行之后调用安全代理217的请求。SVMM安全代理217可被配置为通过其与SVMM 216的接口接收SVMM安全规则222。这种接口可包括基于超级调用的接口。SVMM安全代理217可被配置为通过相同的基于超级调用的接口而把任何得到的检测或报告推送给SVMM 216。
在一个实施例中,SVMM 216可被配置为处理触发的动作而无需查询SVMM安全代理217。在这样的实施例中,SVMM 216可被配置为安装在SVMM 216内进行处理的附加触发程序,所述触发程序可不被传送给SVMM安全代理217。这种附加触发程序可由SVMM安全规则222定义。在一个实施例中,SVMM安全规则222可为SVMM 216定义存储器页扫描规则。这种规则可包括恶意的且不应被允许驻留在存储器中的实体或修改的列表。这种规则还可包括被配置为包括专门允许存在于系统存储器228内的页的列表的白名单。在另一实施例中,SVMM安全规则222可向SVMM216定义存储器页访问规则。这种规则可包括对于允许或相反地禁止访问给定代码或数据页的代码页的定义。因此,SVMM安全规则222可被配置为指示SVMM 216作为存储器扫描器和/或控制对存储器页的访问。
SVMM 216可被配置为通过阻止对系统资源214中其各自的代码和数据页的未经授权的读取和写入来保护SVMM安全代理217、SVMM 216和O/S内安全代理218。例如,如果应用程序210或驱动程序211对系统存储器228、处理器寄存器230或I/O设备226的一部分作出请求(其将导致影响SVMM安全代理217、SVMM 216和O/S内安全代理218的完整性或操作)则SVMM 216可被配置为截获这种尝试请求,并且随后重新路由该请求、拒绝该请求或采取其他适当的动作。在另一示例中,SVMM 216可被配置为为存储器安全软件应用程序(例如,SVMM安全代理217本身或其他相应的或附属的程序)授权对系统存储器228、处理器寄存器230或I/O设备226的一部分的读取访问,该读取访问影响SVMM安全代理217、SVMM 216和O/S内安全代理218。这种授权可在SVMM安全规则222内定义,SVMM安全规则222可向SVMM 216定义如何处理对诸如系统存储器228的系统资源214的访问。在一个实施例中,SVMM安全规则222可包括可信安全程序的白名单,该白名单可包括SVMM安全代理217。
为了与保护服务器202通信,SVMM 216可包括受保护的网络接口224。受保护的网络接口224可被配置为在网络服务器(例如,保护服务器202)和电子设备204的元件(例如,SVMM 216或SVMM安全代理217)之间提供安全访问。SVMM 216可包括可实现受保护的网络接口224的逻辑TCP/IP驱动程序或其他通信接口。保护服务器202可被配置为经由受保护的网络接口224进行通信以指示SVMM 216或SVMM安全代理217更新其自身,并且提供保护规则,例如SVMM安全规则222或O/S内安全规则220。保护服务器202可被配置为递送用于特定电子设备204或特定SVMM 216的定制规则。这种定制可包括电子设备204上已经报告的恶意活动的类型以及电子设备204内的其他保护机制,例如抗病毒程序、防火墙或其他保护机制。在一个实施例中,保护服务器202可由(例如,在本地网络上的)电子设备204的管理员进行操作。在这种情况下,管理员可设置用于处理可疑行为的全局或个性化策略,这些策略可由从保护服务器202接收到的规则实现。SVMM 216可包括更新引擎,该更新引擎告知SVMM 216或SVMM安全代理217如何通过经由保护服务器202安全递送的新映像来更新自身。
O/S内安全规则220和SVMM安全规则222均可被配置为请求将电子设备204上所观察到的动作或操作的明细或者类别传送给保护服务器202。在那里,保护服务器可在允许该动作在电子设备204上进行之前检查和验证观察结果。保护服务器202可被配置为接受这种动作以便同步或异步地进行检查。在一个实施例中,O/S内安全代理218可被配置为将有问题的活动、代码或数据的片段或动作传送给SVMM 216以供保护服务器202进行验证。例如,O/S内安全代理218可通过检测在存储器内加载的未签名的驱动程序来检测恶意软件的可疑实例。SVMM 216可从O/S内安全代理218接收关于可疑软件的信息,并将其提供给保护服务器202。
SVMM安全规则222可被配置为允许或拒绝对电子设备的任何合适的系统资源的访问。这种可被监视的资源可取决于由处理器208所公开的资源。例如,在一个实施例中,SVMM安全规则222可被配置为允许SVMM216来限制对系统存储器228、I/O设备226和中断140的访问。可例如使用EPT或操作系统的页表而完成所限制的对系统存储器228的访问。这种限制可防止对诸如键盘、显示器或可移动磁盘的I/O设备的未经授权的访问。在另一实施例中,SVMM安全规则222可被配置为允许SVMM 216来限制对中断描述符表条目的访问,包括在处理器寄存器中的条目,例如中断240。在又一实施例中,SVMM安全规则222可被配置为允许SVMM 216监视扩展页表(“EPT”)或处理虚拟存储器(从客户操作系统的角度来看是真实存储器)到主机物理存储器的映射的任何其他机制的访问。权限的改变或EPT中的其它访问可触发VMCS中的事件。
如果电子设备204除了处理器208之外还包含支持虚拟化的一个或多个处理器,则SVMM 216或SVMM 216的另一实例可被配置为截获对访问其他这样的处理器的虚拟资源的尝试。如果电子设备204包含例如包括处理器208的四核处理器,则该四核处理器的资源可由SVMM 216保护。如果一个或多个其他处理器不支持虚拟化,则SVMM 216可能无法保护对它们的资源的访问。如果一个或多个其他处理器支持与处理器208不同的虚拟化技术,则SVMM 216可被配置为保护对它们的资源的访问,但是与保护处理器208的方式不同,这是由于在其中资源被虚拟化的方式不同。
在操作中,保护服务器可在网络244上运行。O/S内安全代理218可在电子设备204上运行,以通过针对恶意软件而扫描电子设备204、针对可疑行为而观察诸如电子设备204上的应用程序210和驱动程序211的实体的行为,并通过修复所发现的任何这种感染,来保护电子设备204免受恶意软件感染。O/S内安全代理218可运行在与操作系统212相同的优先级或层级处,并可运行在操作系统212中。SVMM 216可在电子设备204上运行,以通过捕获对电子设备204的系统资源的尝试访问来保护电子设备204免受恶意软件感染。SVMM安全代理217可运行在电子设备204或另一合适的电子设备上,以设置SVMM 216的捕获操作并处理所捕获的对系统资源的尝试访问中的一些或全部。SVMM 216和SVMM安全代理217可运行在操作系统212以下,并具有优先级“环-1”。SVMM安全代理217可运行在SVMM 216上。
保护服务器202可将诸如SVMM安全规则222和O/S内安全规则220的安全规则发送到电子设备204。这种规则可由SVMM安全代理217接收,其可把O/S内安全规则220提供给SVMM 216。这种规则可由O/S内部安全代理218接收。
保护服务器202、安全代理218和SVMM安全代理217均可相互认证。SVMM安全代理217可在存储器中定位安全代理218的映像,并使用密码签名算法来验证驻留在存储器中的安全代理218的映像。保护服务器202和SVMM安全代理217可使用密码散列和签名算法相互认证以便彼此正确地识别。SVMM安全代理217和保护服务器202也可交换私有密钥以认证彼此的标识。安全代理218可从保护服务器202接收密钥以验证SVMM安全代理217的实例。不可完全建立安全代理218、SVMM安全代理217和SVMM安全代理202之间的通信,除非代理中的每一个都相互认证。类似地,如果SVMM安全代理217和SVMM 216作为分离的实体而运行,则它们可相互验证和认证。
SVMM 216和SVMM安全代理217可在操作系统212和电子设备204的所有操作系统之下运行。SVMM 216可监视由操作系统212、安全代理218、应用程序210和驱动程序211对包括I/O设备226、系统存储器228和处理器寄存器230在内的系统资源214的访问。SVMM 216可捕获由操作系统212、安全代理218、应用程序210、驱动程序211或电子设备204的任何其他实体所请求的关键操作的执行。SVMM 216可通过操纵在VMCS221中的标志来捕获这种执行。当VMCS 221截获对保护资源的请求时,操作可被移交给SVMM 216以供进一步操作、诊断和修复。在一个实施例中,操作可随后由SVMM安全代理217处理。在另一实施例中,所捕获的操作的处理可由SVMM 216本身来进行。SVMM 216可捕获电子设备204的任何必要操作以提供针对恶意软件的保护。这种操作可包括但不限于:对系统存储器228中特定代码或数据页的读取、写入和执行;从系统寄存器和处理器寄存器230加载和存储值;或者从I/O设备226读取或向I/O设备226写入。可由SVMM安全规则222来定义将由SVMM 216所捕获的特定操作。
保护服务器202可与SVMM安全代理217或O/S内安全代理218进行通信以向每一个提供安全规则。在一个实施例中,保护服务器202可将SVMM安全规则222递送给SVMM安全代理217。在另一实施例中,保护服务器202可将O/S内安全规则220递送给O/S内安全代理218。在又一实施例中,保护服务器202可将O/S内安全规则220递送给SVMM安全代理217,SVMM安全代理217随后可将该规则提供给O/S内安全代理218。
应用程序210、驱动程序211或操作电子设备204的其他实体可被O/S内安全代理218观察。O/S内安全代理218可使用O/S内安全规则220来观察这种处理实体的行为,以确定它们的行为是否构成了表明可能的恶意软件感染的可疑行为。基于对可疑活动的这种检测,O/S内安全代理218可将可疑信息提供给保护服务器202以供进一步分析和指示。O/S内安全规则220可向O/S内安全代理218指出这样的行为是可疑的,并且指出纠正措施。例如,应用210程序可与对主机恶意软件已知的网络目的地通信。O/S内安全代理218可注意到应用程序210的活动,并随后阻止应用程序210对网络目的地的网络访问。O/S内安全代理218也可针对恶意软件而扫描电子设备204。例如,O/S内安全代理218可针对对应于恶意软件的签名的模式而检查存储器206或系统存储器228的内容。这种检查可揭示,例如,应用程序210包含对应于恶意软件的已知片段的代码块。然后,O/S内安全代理218可通过修复应用程序210、移除应用程序210或采取任何其他合适的动作来清理电子设备204的恶意软件的感染。O/S内安全代理218可就任何检测到的可疑行为或恶意软件的其他指出而与保护服务器202进行通信,并可从保护服务器202接收关于如何处理这种恶意软件的指示。
在一个实施例中,SVMM安全代理217可被配置为基于做出尝试操作的实体的来源而评估所捕获的操作。例如,如果驱动程序是从未知域下载的,或具有来自未知担保者的证书,则该驱动程序随后进行操作的能力受到限制。例如,状态未知的驱动程序可被拒绝将其自身附接到另一驱动程序的能力。如果驱动程序是从对主机恶意软件已知的域下载的,或者包含欺诈凭证,则甚至可以不准许加载该驱动程序。类似地,如果已知驱动程序是来自特定的域或由特定的作者创建,则SVMM安全代理217可被配置为识别电子设备204中被授权为更新驱动程序的服务,并限制向那些服务写入或访问驱动程序的能力。例如,公司X的内核驱动程序仅可被驻留在电子设备204上的来自公司X的更新服务软件写入。SVMM安全代理217可被配置为证实更新服务的操作和完整性。在另一实施例中,SVMM安全代理217可被配置为基于尝试的目标而评估所捕获的操作。例如,可以为内核驱动程序,而不为应用软件捕获对来自服务的更新软件的尝试。
一旦实体被确定为是可疑的,或尝试被确定为指出恶意软件,则可链接引起该尝试的进程和容纳该进程的存储器。访问存储器的相同部分的其他进程可类似地被确定为恶意软件。所捕获的对访问资源的尝试可被存储,并且可根据原始事件评估随后对保护资源的访问尝试。例如,恶意操作可要求把代码写入到数据片段,然后执行代码。因而,SVMM安全代理217可捕获对该数据片段的原始写访问,允许该写入但是记录该写入访问的源。随后,SVMM安全代理217可捕获随后对执行该数据片段的尝试,并根据先前所捕获的操作、尝试该操作的实体、或其他合适的取证信息来评估所述尝试的恶意状态。
SVMM安全代理217指示SVMM 216关于SVMM 216要通过诸如VMCS 221或通过EPT的控制结构来捕获哪些系统资源214。然后,SVMM216可捕获源自电子设备204的实体(例如,操作系统212、应用程序210或驱动程序211)的对系统资源214的访问请求。例如,如果做出请求以读取、写入或执行系统存储器228的一些部分,则SVMM 216可通过在VMCS221中为系统存储器的指定部分所设置的标志或者通过截获由EPT检测到的改变来截获这种请求。在另一示例中,可由VMCS 221截获I/O设备226做出的访问请求,例如输入或输出操作。在又一示例,可由VMCS 221捕获进程寄存器230的请求(例如,加载或存储命令)。任何这种捕获都可导致通知SVMM 216所尝试的访问。一旦SVMM 216已捕获对系统资源214的所尝试的操作,SVMM 216就可将这种捕获的执行传输给SVMM安全代理217。
O/S内安全代理218和SVMM安全代理217可进行通信,以确定在操作系统212内进行的操作的上下文。例如,所捕获的来自操作系统212的对电子设备204的特定资源的系统调用可源自存储器的特定部分。SVMM安全代理217可与O/S内安全代理218进行通信以确定什么应用程序、进程或其他实体驻留在存储器的该特定部分内。
然后,基于SVMM安全规则222和来自O/S内安全代理218的所捕获的操作和/或上下文信息,SVMM安全代理217可确定这种访问是否构成了诸如那些表明恶意软件感染的可疑动作。例如,由未经授权的应用程序对保护存储器空间的系统存储器228的尝试改变可能是可疑活动,并且因而由SVMM 216检测到的这种尝试改变可由SVMM安全代理217解释为恶意软件的操作。这种活动可被报告给保护服务器202以用于进一步指示,或者可由O/S内安全规则220引导动作。这种检测的结果可以是阻止对系统存储器228的尝试改变,或触发对生成所述尝试改变的电子设备204的实体的额外清除操作。
SVMM 216可监视对系统资源214的额外调用,以保护SVMM 216、SVMM安全代理217和/或O/S内安全代理218的完整性。SVMM 216可进行由SVMM安全规则222定义的扫描操作,以扫描系统存储器228的一些部分来确定所述存储器的这些部分是否已经被恶意软件修改。SVMM 216可利用签名、散列或表明已知存储器的给定模式是不安全的还是安全的其他规则。
例如,通过阻止对与系统存储器228中的O/S内安全代理218相对应的代码和数据页的未经授权的读取和写入访问,SVMM 216可保护O/S内安全代理218。一些恶意软件可通过对与系统存储器228相关联的系统资源214做出存储器修改或其他修改来尝试攻击O/S内安全代理218。SVMM 216可读取SVMM安全规则222中所包含的已授权应用程序以及被准许改变代码或数据或对应于O/S内安全代理218的其他系统资源214的电子设备204的其他实体的白名单。如果修改源自未被包含在白名单内的实体,则SVMM216可确定这种修改与恶意软件相关联。对与O/S内安全代理218相对应的系统资源214的未经授权的访问可由SVMM以任何合适的方式处理,这些方式包括阻止访问、创建蜜罐进程、向保护服务器202报告违规或任何其他合适的补救。
SVMM 216也可捕获对属于电子设备204的其他实体的系统资源214的访问。例如,系统存储器228中的目标存储器页可包含属于操作系统212的内核操作的一部分的样本代码或数据。SVMM 216和SVMM安全规则222可把对这种目标页的访问限制于仅经过授权的代码分段。因此,如果系统存储器228中的代码页尝试读取或改变目标存储器页,并且所述代码页属于电子设备204的未经授权的实体,则这种访问可被SVMM 216阻止。因而,SVMM 216可用于控制对系统存储器228中的存储器页的访问。
SVMM安全代理217可以能够通过联系保护服务器202获得更新的规则来更新SVMM安全规则222或O/S内安全规则220。保护服务器202可以基于所观察到的特定恶意软件、管理员设置或电子设备204的其他特性来配置要递送给SVMM安全代理217的规则。SVMM安全代理217可根据用户的要求、周期性地或根据重大事件的发生(例如,遇到可链接到恶意软件的新的可疑活动)来更新电子设备204的规则。
SVMM安全代理217可在VMCS中设置对应于复合条件的标志。这种标志可跨越不同类型的资源而被捕获。例如,VMC可被配置为捕获把某些值写入到存储器中的页,以及随后把所述面移动到I/O设备的缓冲区的组合。
系统200可包含优于其他反恶意软件系统及软件的实施方式的一个或多个优点。例如,一些反恶意软件解决方案可挂钩操作系统的各个部分以捕获和评估应用程序的低层级操作。然而,这些解决方案自身可在操作系统中操作或者在两个客户操作系统的情况下在另一操作系统中操作3002通过在操作系统的界限(confine)内操作,甚至是在内核级的优先级操作,反恶意软件解决方案可能容易受到也来自在相同的操作系统上运行、或许在相同的优先级运行的恶意软件的攻击。如果在操作系统的层级进行对某些事件的捕获或触发,则这种捕获或触发可能被运行在与操作系统相同的或较低的优先级的恶意软件钓鱼、挂钩、逆向工程、损害或以其它方式击败。例如,在操作系统上运行的检测和移除操作系统中的恶意挂钩的反恶意软件解决方案可被在相同的优先级运行的恶意软件观察到。在另一示例中,注册为过滤器驱动程序以检测某些例程的操作的反恶意软件解决方案可被在比所述反恶意软件解决方案层级更低的驱动程序堆栈上注册恶意过滤器驱动程序的恶意软件击败。类似地,如果对某些所捕获的或触发的事件的处理发生在操作系统层级,则恶意软件可影响这种处理。例如,恶意软件可撤销反恶意软件解决方案的纠正,或甚至禁用反恶意软件解决方案的操作。
在另一示例中,管理程序可运行以虚拟化对诸如系统存储器228的系统资源的访问,但可以并非有条件地防护对系统资源的访问,并因而作为安全管理程序。这种管理程序可能不具有对诸如安全规则222中的行为规则的反恶意软件规则的访问以识别恶意活动、实体或对系统资源的恶意的尝试访问。这种管理程序可在操作系统自身内运行,这可能易于遭受在与操作系统相同的优先级运行的恶意软件。这种管理程序可能不是以“环0特权模式”运行,这是因为这种模式可要求管理程序截获太多对系统资源的尝试访问。管理程序可负责虚拟化客户操作系统的所有方面的任务,并且这种虚拟化的需求可能过于昂贵而无法同时访问安全规则以检查恶意行为。
模块可包括例如,逻辑、指令、代码、软件、固件、硬件或其任何合适的组合。
图3是用于保护电子设备避免恶意软件的基于虚拟机监视器的方法300的示例实施例。在步骤305,可认证O/S下层安全代理、O/S内安全代理、保护服务器和虚拟机监视器的标识和安全。可通过任何合适的方法完成这种认证,这些方法包括通过定位和检验位于存储器中的每个的映像、密码散列或密钥。其他步骤的操作可被中止(withhold),直到步骤305完成。
在步骤310,可访问保护服务器来确定安全规则。这种安全规则可用于在步骤315-380中做出判定。在步骤315,可指示虚拟机监视器捕获对系统资源的访问。这种访问可由在电子设备上运行的应用程序、驱动程序或操作系统而引起。虚拟机监视器可被指示关于要监视电子设备的何种系统资源。虚拟机监视器还可被指示关于要捕获在所监视的系统资源上的何种操作。例如,可捕获对系统存储器的读、写或执行操作。在另一示例中,可捕获对寄存器的加载或存储操作。在又一示例中,可捕获对I/O设备的输入或输出动作。
在步骤320,可设置在诸如虚拟机控制结构的控制结构中的对应于所要捕获的操作的标志。这种捕获的操作可生成VM退出,其中,在访问已标记资源时创建触发事件。在步骤325,由于系统存储器被分配给虚拟机监视器、O/S内安全代理和O/S下层安全代理,因此可保护这种存储器免于未经授权的读取和写入操作。
电子设备可运行并通过以下中的一种或多种而被保护:在步骤330-340中捕获对系统资源的访问、在步骤345-355中针对恶意软件的存在而扫描存储器、以及在步骤360-365中针对所尝试的存储器修改而扫描存储器。捕获对系统资源的访问、针对恶意软件的存在而扫描存储器以及针对所尝试的存储器修改而扫描存储器中的每一种可并行地进行。此外,可根据需要而重复这些中的每一种以保护电子设备的操作。
在步骤330,可捕获对诸如系统存储器、寄存器、或I/O设备的系统资源的访问。可使用生成VM退出的VMCS标志来捕获所述访问。可在在电子设备上运行的操作系统的层级以下进行这种捕获。在步骤335,可分析所述访问以确定请求实体是否具有访问所请求的资源的权限。可访问与所尝试的访问相关联的上下文信息来做出这样的确定。可访问安全规则做出这一确定。未经授权的访问可被确定为是可疑的。可在在电子设备上运行的操作系统的层级以下做出这样的处理和判定。如果访问是可疑的,则在步骤340,可阻止对系统资源的可疑的尝试访问。这种尝试可被报告给保护服务器。如果访问不是可疑的,则在步骤370可允许访问。
在步骤345,可针对恶意软件的存在而扫描电子设备的存储器页。在扫描电子设备的存储器时,可使用白名单来确定反映驻留在电子设备上的实体的存储器模式是否已知是安全的。如果遇到已知是安全的存储器模式,则在步骤370,可允许存储器继续拥有对电子设备的访问权,并可保留。当扫描电子设备的存储器时,可使用黑名单来确定存储器模式是否已知包括恶意软件或与恶意软件相关联。可通过访问安全规则来访问白名单和黑名单。在步骤350,如果找到了已知与恶意软件相关联的存储器模式,则在步骤375可通过修复、移除或废止(neutralize)来拒绝所述存储器模式对电子设备的访问。
在步骤355,可扫描存储器以确定是否已经或者正在尝试修改存储器。可在电子设备中的操作系统的层级以下进行这样的扫描。这种存储器可包括内核存储器、系统数据结构或可被恶意软件修改的电子设备的存储器的任何其他部分。例如,可修改在电子设备上运行的活动线程的列表以隐藏恶意进程的存在。如果检测到修改,则在步骤365可确定这种修改是允许的。可由安全规则来定义这种修改是否是许可的。例如,可保护反恶意软件进程的代码或数据页而免遭由任何其他进程的修改或访问。如果存储器修改被视为经过授权,则在步骤370,可允许修改。如果确定存储器修改未经授权且不被允许,则在步骤375,可拒绝修改。
在步骤370,如果允许访问或修改,则可存储该访问或修改以供后续引用。对恶意软件的一些检测可利用关于之前的访问或修改的信息来确定这种之前的访问和目前所检测的访问一起是否包括对资源的恶意访问。
在步骤375,如果修改、访问或其他操作被拒绝,则在步骤380可向保护服务器报告这种事件。这种报告可包括关于任何相关联的恶意软件或可疑行为的信息。
根据需要而重复方法300的各步骤以连续地、周期性地或根据需求来保护电子设备。
图4是系统400的示例性实施例,所述系统利用在电子设备401上的操作系统下层捕获而调整软件访问以保护存储器。系统400可包括O/S下层安全代理420,其被配置为在电子设备401上运行以检测来自在电子设备401的操作系统(例如,操作系统413)中运行的基于软件的实体对访问存储器的恶意尝试。此外,O/S下层安全代理420可被配置为使用一个或多个安全规则408和存储器映射406,来确定要捕获哪些对存储器的尝试访问,以及要如何处理与所捕获的操作相对应的所创建的触发事件。O/S下层安全代理420可被配置为允许、拒绝、或针对触发事件而采取其他纠正措施。
电子设备401可全部或部分地由图1中的电子设备103或图2中的电子设备实施204和/或其任意组合的功能来实现,或被配置为实现图1中的电子设备103或图2中的电子设备实施204和/或其任意组合的功能。电子设备401可包括耦合到诸如物理存储器403的存储器的一个或多个处理器402。处理器402可全部或部分地由图2中的处理器208的功能实现,或被配置为实现图2中的处理器208的功能。物理存储器403可全部或部分地由图2中的存储器206的功能实现,或被配置为实现图2中的存储器206的功能。电子设备401可包括操作系统413,操作系统可包括耦合到一个或多个安全规则421的O/S内安全代理419。操作系统413可全部或部分地利由图1中的操作系统112或图2中的操作系统212的功能实现,或被配置为实现图1中的操作系统112或图2中的操作系统212的功能。O/S内安全代理419可部分地由图1中的O/S内安全代理218或图2中的SVMM安全代理217或其任意组合的功能实现,或被配置为部分地实现图1中的O/S内安全代理218或图2中的SVMM安全代理217或其任意组合的功能。
O/S下层安全代理420可全部或部分由图1中的O/S下层捕获代理104或触发事件处理器108、图2中的SVMM 216或SVMM安全代理217、和/或其任意组合的功能实现,或被配置为实现图1中的O/S下层捕获代理104或触发事件处理器108、图2中的SVMM 216或SVMM安全代理217、和/或其任意组合的功能。
安全规则408可由图1中的安全规则114、图2中的安全规则222和/或其任意组合的功能实现,或被配置为实现图1中的安全规则114、图2中的安全规则222和/或其任意组合的功能。安全规则421可由图2中的安全规则220的功能实现,或被配置为实现图2中的安全规则220的功能。
O/S下层安全代理420可被配置为截获对电子设备401的存储器的访问。这种存储器可包括,例如,对物理存储器403的地址的尝试访问或对虚拟存储器404的页的尝试访问。这种尝试访问可源自操作系统413或利用操作系统413而在电子设备401上运行的实体,例如应用程序410或驱动程序411。
在一个实施例中,由O/S下层安全代理420保护的存储器可包括虚拟存储器404。虚拟存储器404可包括从物理存储器和/或存储设备抽象(abstract)出来的对实体(例如,操作系统413、应用程序410或驱动程序411)可用的存储器。尽管所使用的实际空间可跨越例如物理存储器403和/或例如盘上的存储等实际物理存储器而离散地分布,但是对诸如操作系统413、应用程序410或驱动程序411这样的实体来说,虚拟存储器404可表现为连续的存储器块。虚拟存储器404可根据处理器402的扩展被虚拟化。虚拟存储器404的地址空间可被分成存储器页。每个存储器页可尺寸相同,例如为四千字节。电子设备401可被配置为使用页表而将虚拟存储器404的虚拟地址转换成诸如物理存储器403的存储器的物理地址或存储设备的地址。电子设备401可包括存储器管理单元414(“MMU”),存储器管理单元414被配置为将虚拟存储器404的虚拟地址转换为诸如物理存储器403的存储器的物理地址和/或存储设备的地址。虚拟存储器404的页可被索引。对虚拟存储器404页的尝试访问可包括对页的尝试读取、写入或执行,并且O/S下层安全代理420可被配置为捕获所述尝试。在一个实施例中,虚拟存储器404的页可与物理存储器地址或存储设备的地址相对应。在另一实施例中,每个虚拟存储器404的页可对应于物理存储器地址。在又一实施例中,包含某些内容的页(例如,操作系统413的特定部分)可在电子设备401的操作期间被固定(pin)并且可不改变。
在另一实施例中,由O/S下层安全代理420保护的存储器可包括物理存储器403。可通过物理存储器的地址访问物理存储器403,所述地址如标记(A)、(B)、(C)、(D)、(E)、(F)、(G)、(H)、(I)、(J)和(K)所示出的,其表示物理存储器403中的特定地址,所述特定地址可以是包含已定义元素的存储器范围的基地址。可通过对特定的存储器地址尝试的读取、写入或执行来访问物理存储器403,并且O/S下层安全代理420可被配置为捕获所述尝试。例如,所尝试的写入可采取指令“MOV Addrl,Value(移动地址1,值)”的形式,其中,由变量“Value(值)”表示的值被写入到由“Addrl(地址1)”表示的特定存储器地址。可使用写入到物理存储器403地址的任何指令。所尝试的读取可采取例如“MOV Value,Addrl(移动值,地址1)”的指令的形式,其中,从由“Addrl”表示的特定存储器地址读取由变量“Value(值)”表示的值。可使用从物理存储器403地址读取的任何指令。所尝试的执行可采取在给定地址(例如,“Addrl”)处的指令的形式。可使用用于执行存储器中地址的任何指令。
O/S下层安全代理420可被配置为截获对虚拟存储器404的尝试访问。此外,下层O/S安全代理420可是被配置为截获对物理存储器403的尝试访问。在一个实施例中,可不截获对虚拟存储器404的请求,但截获在MMU已经把虚拟存储器404页转换成物理存储器403地址之后的对物理存储器403的随后的相对应的尝试访问,O/S下层安全代理420可被配置为截获对物理存储器的尝试访问。在另一实施例中,可直接做出对物理存储器403的尝试访问而不需要通过虚拟存储器404转换,并且O/S下层安全代理420可被配置为截获所尝试的访问。在又一实施例中,可截获对虚拟存储器404做出的尝试访问,但O/S下层安全代理420可不被配置为截获随后对物理存储器403地址的访问。
O/S下层安全代理420可通信地耦合到O/S内安全代理419。O/S下层安全代理420可被配置为从O/S内安全代理419接收关于对电子设备401的存储器的尝试访问的上下文信息。由O/S内安全代理419提供的上下文信息可包括已经尝试对电子设备401的存储器特定访问的实体的标识。
O/S下层安全代理420可通信地耦合到或包括存储器映射406。存储器映射406可在文件、记录、数据结构或其他合适的实体中实现。存储器映射406可包括关于电子设备401的各种实体在存储器中的位置的信息。例如,如果进程被加载到电子设备401的存储器中以供执行,则存储器映射406可以包括与虚拟存储器404中的哪些存储器页或物理存储器403中哪些的地址范围包含所述进程有关的信息。根据电子设备401中的存储器的虚拟化的实现,所述进程的所有内容可以或者可以不被加载到物理存储器403中,这是因为一些内容可被加载到诸如盘的存储设备中。对于这种要访问的内容,它们可被加载到物理存储器403中。在这种情况下,存储器映射406可包含关于内容所存储的地址是在物理存储器403中还是在诸如盘的存储设备中的信息。O/S下层安全代理420可被配置为使用存储器映射406来确定虚拟存储器404页或物理存储器403地址中的任何给定内容的标识或所有者。例如,O/S下层安全代理420可通过剖析(profile)操作系统413的操作并随后确定各种敏感的组件在存储器中的位置,来构建存储器映射406。当做出对存储器的尝试访问时(例如,加载操作系统413内核,或执行内核模式指令),O/S下层安全代理420可被配置为与O/S内安全代理419进行通信以确定正在加载或执行操作系统413的什么部分。在另一示例中,O/S下层安全代理420可被配置为确定这样的虚拟存储器404页的存储器范围的内容的散列或数字签名。可将散列或数字签名与可在安全规则408中所包含的或从保护服务器202获得的已知值进行比较。已知值可以是先前的特性化(characterization)的结果,其中例如已经标识操作系统413的一些部分。要映射的元素可由安全规则408确定。O/S下层安全代理420可被配置为在将元素从电子设备401中的存储器的一个位置复制到另一位置时,追踪该元素在存储器映射406中的移动。
图5示出了存储器映射的示例实施例。在一个实施例中,虚拟存储器映射502可包括要通过元素在虚拟存储器中的位置而被追踪的这些元素的映射。在另一实施例中,物理存储器映射504可包括要通过元素在物理存储器中的位置而被追踪的这些元素的映射。在各种实施例中,虚拟存储器映射502和物理存储器映射504可被映射到一起,从而可在两种映射中追踪元素。
虚拟存储器映射502可反映十个不同的虚拟存储器页。例如,虚拟存储器映射502可示出可在存储器页一和存储器页二中找到内核操作系统数据结构(例如,页目录)。在另一示例中,可在存储器页四到六中找到被称为“Fn1”的特定的进程、函数或例程的元素。在又一示例中,可在页八中找到针对系统服务调度表(“SSDT”)的权限(permission)的数据结构。在再一示例中,可在存储器页八和存储器页九中找到被称为“Fn2”的特定的进程、函数或例程的元素。
物理存储器映射504可用物理存储器反映元素的位置。物理存储器中的元素的一些部分可跨存储器分布在不邻近的片段或块中。此外,物理存储器中元素的一些部分可跨存储器以任意的顺序分布。每一片段的尺寸可改变。片段可在偏移于基地址的地址处开始。图5中示出的示例基地址是00x000,终止于地址FFxFFF处。表示物理存储器各片段开始的地址用(A)-(O)表示。对于被包含在物理存储器的多个片段内的元素,可记录元素的次序。在物理存储器中,元素的多个片段可由指针链接在一起,其中元素的一个片段的结束可指向元素的下一片段。
例如,Fn1可被映射到在(A)和(B)、(J)和(K)以及(M)和(N)之间的片段。在另一示例中,SSDT权限可被映射到在(G)和(H)之间的片段。在又一示例中,页目录数据结构可被映射到在(O)和FFxFFF、(F)和(G)、以及(I)和(J)之间的片段。在又一示例中,Fn2可被映射到在(H)和(I)、以及(B)和(C)之间的片段。
返回到图4,O/S下层安全代理420可被配置为查询安全规则408以确定要保护存储器的哪些部分、以及如何保护它们。例如,安全规则408可被配置为表明页目录数据结构仅可由电子设备401的某些特权实体写入。因而,可捕获对写入页目录数据结构的尝试,并可检查尝试该写入的元素以确定它们是安全的、未知的还是已知是不安全的。O/S下层安全代理420可被配置为查询存储器映射406以确定页目录数据结构在存储器中的位置。如果O/S下层安全代理420例如完全地或部分地在虚拟机监视器中实现,则O/S下层安全代理420可被配置为在控制结构中设置标志以捕获对虚拟存储器404的存储器页1和/或2的任何尝试写入。在另一示例中,如果下层O/S安全代理420完全地或部分地以微代码实现,则O/S下层安全代理420可被配置为在控制结构中设置标志以捕获对在物理存储器403的地址(O)和FFxFFF、(F)和(G)、以及(I)和(J)之间的地址范围内的存储器地址的任何尝试写入。
在另一示例中,安全规则408可被配置为表明Fn1仅可由电子设备的某些特权实体调用。因而,可捕获对执行Fn1的尝试,并可检查调用Fn1的元素以确定它们是安全的、未知的还是已知为不安全的。O/S下层安全代理420可被配置为查询存储器映射406以确定Fn1在存储器中驻留的位置。如果O/S下层安全代理420例如完全地或部分地在虚拟机监视器中实现,则O/S下层安全代理420可被配置为在控制结构中设置标志以捕获对虚拟存储器404的存储器页4、5和/或6的尝试执行。在另一示例中,如果下层O/S安全代理420完全地或部分地以微代码实现,则O/S下层安全代理420可被配置为在控制结构中设置标志以捕获对物理存储器403的存储器地址(A)的任何尝试执行。在一些情况下,其中Fn1的不同部分可被分离地执行,O/S下层安全代理420可被配置为捕获对在物理存储器403的(A)和(B)、(M)和(N)、地址(O)和FFxFFF、(F)和(G)、(J)和(K)或(I)和(J)之间的范围内的任何存储器地址的任何的尝试执行。
在一个实施例中,O/S下层安全代理420可被配置为查询O/S内安全代理419以确定哪个实体已经做出了调用以写入到存储器,随后这被用来确定该实体是否被授权而进行写入。在另一实施例中,O/S下层安全代理420可被配置为确定请求所来自的虚拟存储器404的存储器页、并查询存储器映射406以确定这样的存储器页是否与其中所映射的任何元素相关联。在又一实施例中,O/S下层安全代理420可被配置为确定请求元素的存储器页的散列或签名并将其与已知实体的散列和签名进行比较。
如果O/S下层安全代理420全部或部分地由微代码实现,则下层O/S安全代理420可被配置为确定尝试进行写入的指令的地址。在一个实施例中,O/S下层安全代理420可被配置为通过检查指令指针以确定在物理存储器403中的何处做出所述指令来做出这种确定。在另一实施例中,通过访问存储器映射406,O/S下层安全代理420可被配置为从存储器映射406确定与该地址相关联的元素。在又一实施例中,O/S下层安全代理420可被配置为确定请求元素的散列或签名并将其与已知实体的散列和签名进行比较。
一旦捕获了对存储器的尝试访问,则O/S下层安全代理420可被配置为访问安全规则408,以基于所标识的请求实体而确定如何处理所捕获的尝试。例如,安全规则408可定义仅操作系统413的某些指定的内核部分可调用和执行Fn1,或者仅已知为安全的且在白名单上的实体可写入SSDT的权限。O/S下层安全代理420随后可被配置为采取任何适当的动作,例如允许请求进行、拒绝请求、欺骗响应或所写的值、或执行校正进程。
在操作中,O/S下层安全代理420可在电子设备401的操作系统(例如,操作系统413)的层级以下运行。O/S下层安全代理420可访问安全规则408以确定要保护的电子设备401的哪些存储器资源。O/S下层安全代理420可确定、开发和/或填充存储器映射406的内容。为此,O/S下层安全代理420可访问安全规则408、保护服务器202或任何其他合适的信息源以在存储器映射406中填充信息。O/S下层安全代理420可截获来自处于操作系统层级的实体(例如,操作系统413、应用查询410或驱动程序411)的对物理存储器403或虚拟存储器404的请求,以在存储器映射406中映射存储器的所有权和内容。O/S下层安全代理420可访问O/S内安全代理419以确定什么实体被加载到存储器中从而使得可填充存储器映射406。存储器映射406可包含用于物理存储器403、虚拟存储器404和/或在两者之间的映射的存储器映射。
O/S下层安全代理420可查询安全规则408以确定要保护虚拟存储器404和/或物理存储器403的哪些部分。安全规则408可指定在动态的基础上保护存储器的一些部分,其中,可由O/S下层安全代理420根据各种考虑而启用或禁用对存储器的保护。这种考虑可包括例如管理员设置、恶意行为或可疑行为的检测、时间、先前所检测到的对存储器的访问或任何其他合适的准则。如果保护电子设备401的存储器在计算资源方面是昂贵的,则这种动态启用和禁用可允许O/S下层安全代理420更好地保护电子设备401的存储器的关键部分,同时减少对电子设备401执行其他任务的能力的副作用。例如,包含操作系统413的内核代码的内容的存储器可一直受到O/S下层安全代理420的保护,同时包含第三方应用410的代码的内容的存储器恶意软件存在或可影响第三方应用程序410的可仅在其他指示时受到保护。
O/S下层安全代理420可在控制结构中设置标志以捕获对物理存储器403和/或虚拟存储器404的尝试访问。在一个实施例中,当从操作系统413中的实体做出对被指定为要被捕获的虚拟存储器404中的存储器页的请求时,O/S下层安全代理420可截获所尝试的请求。在另一实施例中,当做出对虚拟存储器404中的存储器页的请求时,O/S下层安全代理可允许由MMU 414将该请求转换成对物理存储器403中的地址的请求,于是O/S下层安全代理可截获所尝试的请求。在又一实施例中,当从操作系统413中的实体直接请求物理存储器403中的地址时,O/S下层安全代理420可截获所尝试的请求。
一旦截获了请求,O/S下层安全代理420就可使用任何合适的机制来评估所截获的对存储器的请求。安全规则408可被用来确定所述尝试是否可疑,表明由恶意软件对使用电子设备401的资源的恶意尝试。安全规则408可包括以下考虑:例如,是否尝试读取、写入或执行;什么实体做出尝试;所访问的存储器地址或页;由同一请求者的先前的尝试或动作;电子由设备401的管理员进行的安全设置,例如基于电子设备401的用户的或多或少限制性的规则;或如由存储器位置和/或数字签名或散列确定的、或根据相关的页或存储器地址确定的请求者的标识。
例如,可由O/S下层安全代理420截获对虚拟存储器404的页2中的或在物理存储器403的地址(J)处的页目录数据结构的尝试写入。如果写入是来自未知进程的存储器的部分,则可由O/S下层安全代理420确定所述写入是可疑的。然而,如果所述尝试写入来自操作系统413内核中已知的经验证的部分,则可确定所述尝试不是可疑的。同样地,可截获对在虚拟存储器404的页八处的或在物理存储器403的地址(H)处的Fn2的尝试执行。如果所述尝试执行是从用户输入做出的,则可确定所述执行不是可疑的。如果尝试执行是从另一程序的存储器做出的,并且所述程序不在经核准的列表上,则可确定所述尝试是恶意的。
在另一示例中,如果Fn1通常是出于互操作性的目的而向其他应用程序暴露其高速缓存的网络浏览器,则O/S下层安全代理420可允许Fn1的存储器页或存储器地址的指定部分由其他应用程序读取。然而,如果Fn1包含应被保持为私有的元数据或其他信息,则O/S下层安全代理420可保护Fn1的存储器页或存储器地址的那些部分而避免来自除Fn1其自身以外的任何进程的读取。
一旦程序被确定为是可疑的、恶意的或者另指示恶意软件,则O/S下层安全代理420可采取任何合适的纠正动作。O/S下层安全代理420可例如拒绝对虚拟存储器404的存储器页2或物理存储器403的地址(J)的写入请求,但仍返回表明所述值已被写入的结果。可针对对访问电子设备401的资源的额外尝试而监视生成该请求的进程、可停止该进程,或者可将该进程从电子设备401清除。在另一示例中,对虚拟存储器404的页八或物理存储器403的地址(H)的尝试执行可相反被引导为对蜜罐进程或清除进程的执行。
由O/S下层安全代理420保护的存储器的内容可包括可能会受到恶意软件攻击的数据、代码或任何其他有用的系统资源。O/S下层安全代理420可保护存储器的内容而避免恶意软件,该恶意软件尝试例如读取、写入或钩挂表示出在电子设备401上运行的进程的机制、把其代码注入到被加载在存储器中的应用程序的部分、或改变虚拟存储器404的映射表的权限和访问标志。通过在操作系统413的层级以下操作,O/S下层安全代理420可避免在操作系统413中以内核模式层级处运行的恶意软件。O/S下层安全代理420可完成零日检测(zero-day detection),这是由于在一些情况中不需要这样的知识:请求实体的标识先前已经被确定为是恶意的——实体是未知的这一事实可被用来拒绝对电子设备401的存储器的一些部分的访问。如果操作系统413或在操作系统413中运行的反病毒或反恶意软件措施完全被破坏,则可从在操作系统的层级处运行的实体完全锁定存储器。
甚至在尝试对特定内容的读取、写入或执行之前,O/S下层安全代理420的一个应用可通过检测特定存储器页的权限的改变来检测对虚拟存储器404的内容的尝试访问。由MMU 414所使用的存储器表可驻留在存储器中、在虚拟存储器404的页自身中和/或在物理存储器403的地址中。对改变存储器表的值的尝试(例如将进程的代码分段的权限从“读取”改变为“写入”)本身可被O/S下层安全代理420捕获。虚拟存储器404的存储器页或物理存储器403的地址可由O/S下层安全代理420保护,并根据所捕获的将新值写到这一位置的权限中的尝试,下层O/S安全代理420可确定是否允许所述尝试的请求者做出这种改变。例如,如果改变进程的代码分段的权限的请求由不同的进程引起,则可拒绝在权限的所尝试的改变。
图6是方法600的示例实施例,该方法用于使用对电子设备的尝试访问的操作系统下层捕获来保护存储器。在步骤605,电子设备的虚拟或物理存储器可被映射以确定存储器的内容的标识或所有者。为了映射存储器,例如,可以访问保护服务器;可追踪对存储器的读取、写入和执行;和/或扫描存储器的内容以及针对该内容所生成的签名。
在步骤610,可访问安全规则以在步骤615确定要保护的物理存储器的地址或虚拟存储器的页。要保护的存储器可取决于例如安全规则、电子设备的用户,诸如恶意软件的指示、对访问受保护存储器的先前尝试的在电子设备中观察到其他的行为,或管理员设置。由于电子设备的操作状况可改变,要保护的存储器可动态地改变。安全规则可指定要保护的电子设备的实体,并可通过访问存储器映射来确定所述实体在物理或虚拟存储器中的位置。
在步骤620,可根据安全规则的要求而在控制结构中设置标志以捕获对存储器的尝试访问。可为虚拟存储器的页和/或物理存储器的地址设置这种标志。标志可包含要被保护的存储器的指示以及要被标识的访问方法的类型(例如,读取、写入或执行)。在步骤625,可监视对受保护存储器的访问以查看是否已经对指定的地址或页做出指定类型的尝试访问。在步骤630,可确定是否已经捕获对访问存储器的尝试。如果不是,则在步骤635可确定是否要求改变要被保护的存储器的标志。如果是,则方法600可返回到步骤610来访问安全规则以更新用于防护对存储器的访问的标志。如果不是,则方法600可返回到步骤625来监视对受保护存储器的尝试访问。
如果捕获了对访问存储器的尝试,则在步骤640开始可评估所捕获的尝试。为了评估所述尝试,可查询存储器映射以确定请求是从哪里做出的,并标识请求者。可确定要写入的数据值并针对这些值的内容进行评估。可考虑尝试的本质—读取、写入或执行。可结合安全规则而使用这些示例考虑,以在步骤645确定所尝试的访问是否指示恶意软件。如果所尝试的访问指示恶意软件,则在步骤650,可采取纠正动作。这种纠正动作可包括拒绝所请求的访问、返回经欺骗的值、或发起蜜罐进程或纠正进程。如果所尝试的访问不指示恶意软件,则在步骤655可允许所述请求。方法600可根据要求返回到步骤625以继续保护电子设备的存储器。
图7是用于实时模块保护的系统400的示例操作的示意图。所述保护可包括调节软件访问以保护存储器中的模块。可使用电子设备401上的O/S下层捕获来执行这种调节和保护。可通过评估所标识的实体中的哪一部分已生成对受保护资源的尝试访问来保护存储器中的模块。该部分可包括所标识的实体的分段。该分段可被标识为与所标识的实体中的其他标识的部分不同。在一个实施例中,可评估尝试是否源自这样的实体的头、数据或是代码分段。在其他实施例中,可基于实体的任何合适的分段而对生成尝试的实体做出选择评估。此外,可通过选择性地保护所标识的模块中的特定部分来存储器中的模块。在一个实施例中,可评估是否关于头、数据或模块的代码分段而做出尝试。在其他实施例中,可对模块的任何合适的分段做出选择性评估。
可由O/S安全代理下层419截获对系统400的受保护资源的尝试访问。所述访问可以是对系统400的任何适合部分的访问,包括虚拟存储器404或物理存储器403的受保护的部分。此外,所述访问可来自系统400(包括应用程序410或驱动程序411)的任何部分。
确定做出所尝试的访问的实体的恶意软件状态的一些方法(例如,通过评估所述实体驻留在磁盘上时的签名或通过确定实体是否在已知安全的实体的白名单上)可能是不足的。白名单上的实体可另外使得诸如O/S下层安全代理420和O/S下层安全代理419的安全代理忽略由实体对系统100的受保护部分进行访问的尝试。然而,恶意软件可以修改做出请求的实体,并因此运行而不被发现。这种修改可以不改变实体的签名或其他标识。此外,建立全面准确的存储器映射406可能是困难的、不可行的、资源密集的。给定来自特定地址的尝试,追踪发起尝试的全部实体可能是不可行的。对全部实体的追踪可能需要应用反恶意软件签名。此外,这种实体可驻留在系统存储器,由于它驻留在存储器,因此需要对实体的额外追踪以应用反恶意软件签名。确定这种额外追踪可能是不可行的。系统400可通过确定正在进行尝试的实体的特定部分来保护受保护的模块,并基于正在进行尝试的特定部分的标识来评估所尝试的访问。
此外,用于确定是否保护系统400上的模块或其它资源的一些方法可能是不足的。模块可能容易遭受恶意软件,这是因为其可被操纵、改变,或另外被恶意软件访问,意在系统400上执行恶意操作。因此,可以通过限制对模块的访问来保护所述模块。然而,所述模块可能是开放的、可扩展的、并可被系统400上的其他实体访问、并且被配置为编辑过的。因此,不能拒绝对所述模块的所有访问。此外,所述模块可被配置为能够被系统400上的全部实体、而不仅仅是已知的或可信的实体访问。例如,所述模块可包括具有被配置为由系统400上的任何合适的实体写入的数据分段的驱动程序。系统400可通过选择性地对模块的不同分段应用不同的保护来保护所述模块。系统400可确定正在被访问的模块的特定分段,并基于所述正在被访问的特定分段的标识来评估所尝试的访问。
系统400中的实体和模块可包括驱动程序、可执行文件以及诸如应用程序410、驱动程序411的其他应用程序,并且可驻留在虚拟存储器404或物理存储器403的部分中。当这些实体和模块从存储设备中被加载到系统存储器用于执行时,所述实体和模块可被划分成不同的分段。
在一个实施例中,当系统400内的实体和模块驻留在系统存储器内时,它们可包括头分段。这样的头分段可包括例如到实体或模块的其它分段的链接、输入和输出的定义、应用程序编程接口和功能的定义,以及当所述实体或模块驻留在存储设备中时到所述实体或模块的链接。头分段本身可跨多个存储器页或多个存储范围而被分割。
在另一实施例中,当系统400内的实体和模块驻留在系统存储器内时,它们可包括代码分段。这种代码分段可包括针对实体或模块的功能的、要被执行以实现所述实体或模块的操作的逻辑、代码,或指令。所述代码分段可以是固定尺寸的或者包括固定的内容。代码分段本身可跨多个存储器页或多个存储范围而被分隔。
在又一实施例中,当系统400内的实体和模块驻留在系统存储器内时,它们可包括数据分段。这种数据分段可包括在实体或模块的功能和执行中所使用的信息的数据结构和其他内容。所述数据部分可随着实体或模块的进程的操作以及所需尺寸的增加或缩小而为可变尺寸的。此外,其他实体或模块可以能够写入到数据分段。
对访问受保护的资源的尝试可从源存储器750做出。当元素驻留在系统存储器中时,源存储器750可包括诸如虚拟存储器404或物理存储器403的系统存储器的任意组合的视图。这种元素可包括模块、驱动程序、应用程序或任何其它合适的实体。源存储器750可包括存储器映射406的修改后的视图,从而使得针对给定实体分段的所有存储器页或存储器地址范围被显示在一起。因此源存储器750中的部分(A)、(B)、(C)和(D)的呈现可以不表示部分(A)、(B)、(C)和(D)实际上以这样的顺序驻留。此外,每个部分(A)、(B)、(C)和(D)可包括在实际的虚拟存储器404或物理存储器403内不连续地存在的元素。为了说明的目的,这些部分被呈现为连续的整体部分。
在图7的示例中,源存储器750可示出驱动程序1驻留在系统400的系统存储器内。虽然为了说明的目的,驱动程序1被示出为跨源存储器750的部分(A)、(B)和(C)而连续的,但驱动程序1可驻留在一个或多个不连续的存储器页或地址范围内。驱动程序1可已从存储设备被加载到系统存储器以用于执行。驱动程序1可包括一个或多个分段。驱动程序1可包括任何合适的数量和类型的分段。在一个实施例中,驱动程序1可包括在部分(A)中的头分段。在另一实施例中,驱动程序1可包括在部分(B)中的代码分段。在又一实施例中,驱动程序1可包括在部分(C)的数据分段。此外,如部分(D)中所示,源存储器750可包括任意数目的其他实体或其部分。
受保护的资源系统400可包括被访问的存储器754中所表示的资源。这些资源可包括模块、驱动程序,或其它合适的敏感资源。被访问的存储器754可包括诸如虚拟存储器404或物理存储器403的系统存储器的任意组合的视图。被访问的存储器754可包括存储器映射406的修改后的视图,从而使得针对给定实体分段的所有存储器页或存储器地址范围被显示在一起。因此被访问的存储器754中的部分(E)、(F)、(G)和(H)的呈现可以不表示部分(E)、(F)、(G)和(H)实际上以这样的顺序驻留。此外,每个部分(E)、(F)、(G)和(H)可包括在实际的虚拟存储器404或物理存储器403内不连续地存在的元素。为了说明的目的,这些部分被呈现为连续的整体部分。
在图7的示例中,被访问的存储器754可示出驱动程序2驻留在系统400的系统存储器内。虽然为了说明的目的,驱动程序2被示出为跨被访问的存储器754的部分(E)、(F)和(G)而连续的,但驱动程序2可驻留在一个或多个不连续的存储器页或地址范围内。驱动程序2可已从存储设备被加载到系统存储器中以用于执行。驱动程序2可包括一个或多个分段。驱动程序2可包括任何合适的数量和类型的分段。在一个实施例中,驱动程序2可包括在部分(E)中的头分段。在另一实施例中,驱动程序2可包括在部分(F)中的代码分段。在又一实施例中,驱动程序2可包括在部分(G)的数据分段。此外,如部分(H)中所示,被访问的存储器754可包括任意数量的其他资源或其部分。
在一个实施例中,系统400中尝试访问受保护的资源的实体可从源存储器750中所表示的存储器位置发起这样的尝试。在另一实施例中,系统400中尝试访问受保护的资源的实体可尝试访问受保护的资源,因为这些驻留在源存储器750中所表示的存储器位置中。系统400,其括O/S下层安全代理420和O/S下层安全代理419,可操作以保护在源存储器750中所表示的资源。如上所述,可结合图1-6部分地描述这样的操作。
O/S下层安全代理420可捕获对源存储器750中所示的受保护的资源的尝试访问。对于在被访问的存储器754中的被访问的给定资源,O/S下层安全代理420可确定所述尝试以所述资源的哪一部分为目标。例如,O/S下层安全代理420不仅可确定已做出对驱动程序2的模块中一部分进行访问的尝试,还可具体地确定已做出对部分(D)中的驱动程序头分段、部分(E)中的驱动程序代码分段或是部分(F)中的驱动程序数据分段进行访问的试图。O/S下层安全代理420可利用存储器映射406以做出这种确定。
基于对受保护资源的哪一分段已被访问的确定,以及基于受保护资源的标识,O/S下层安全代理420可确定采取何种动作。可基于给定的尝试而采取任何合适的动作。在一个实施例中,对访问受保护资源的特定分段的尝试通常是所期望的,因此这种尝试可被允许。O/S下层安全代理420可允许这种尝试而无需额外的检查、扫描或其他动作。执行额外的检查、扫描或其他动作(例如,将信息发送给O/S下层安全代理419或保护服务器202)的开销或处理费用可能是过高的,其中O/S下层安全代理420捕获并评估许多尝试。例如,写入到部分(G)中的驱动程序2的数据分段的尝试通常是所期望的,并且不是恶意软件的表示。因此,O/S下层安全代理420可允许写入或读取部分(G)的尝试,而无需将与所述尝试有关的信息传递给O/S下层安全代理419或保护服务器202以用于进一步评估。
在另一实施例中,对受保护资源的特定分段进行访问的尝试通常被认为是可疑的,因为对所述分段进行读取或写入的尝试可能是系统400上的正常行为实体所不期望的。O/S下层安全代理420可拒绝这种尝试而无需额外的检查、扫描或其他动作。同步执行额外的检查、扫描或其他动作的开销或处理费用可能是昂贵的。例如,写入到驱动程序2的代码分段的尝试通常被认为是可疑的并且是恶意软件的指示。因此,O/S下层安全代理420可拒绝对部分(F)的写入尝试,而不无需同步地将与所述尝试有关的信息传递给O/S下层安全代理419或保护服务器202。然而,O/S下层安全代理420可异步地将与所述尝试有关的信息传递给O/S下层安全代理419或保护服务器202以用于进一步的评估,其中O/S下层安全代理420在执行纠正动作之前不等待回复。
在又一实施例中,可能不知道对受保护资源的特定分段进行访问的尝试是恶意的还是安全的。在这种实施例中,所述尝试可被默认允许、默认拒绝,或默认需要额外的处理。O/S下层安全代理420可执行默认拒绝或允许而无需额外的检查、扫描或其他动作。为了执行默认的额外处理,O/S下层安全代理420可针对额外信息而查询系统400的部分或扫描关于该尝试的信息。所述查询可包括签名比较、对作为整体做出所述尝试的实体的扫描、对所述尝试的内容的分析,关于所述尝试的启发式分析,或任何其他合适的反恶意软件技术。可对以下的任何合适的实体进行查询:例如保护服务器202、O/S下层安全代理419或O/S下层安全代理420本身。可通过访问安全规则408内的额外规则而做出由O/S下层安全代理420进行的额外分析。可通过访问安全规则421内的规则而做出由O/S下层安全代理419进行的额外分析。可通过访问安全规则、由反恶意软件研究人员进行的设置,或通过比较来自报告所述尝试的其他系统的报告而做出由保护服务器202进行的额外分析。例如,对驱动程序2的头分段进行访问的尝试可能是安全的或恶意的,其取决于其他因素,例如做出所述尝试的实体。因此,O/S下层安全代理420可为对部分(G)进行访问的尝试进行额外的查询。这种查询可同步或异步进行。
此外,确定要采取的行动可包括对做出尝试的实体或尝试类型的考虑。例如,做出尝试的实体可能已知是恶意的。由此,另外允许默认访问的规则可指定来自已知恶意实体的尝试被拒绝。在另一实施例中,对尝试进行读取的尝试与对尝试进行写入的尝试进行不同处理。读取不太可能与恶意软件相关联,或者至少其自身不太可能是恶意的,并且因此其可被默认允许,其中对相同分段的写入可以被拒绝。允许这种读取,即使是由恶意实体做出的读取,可加快由系统400进行的检测。
安全规则408可包括用于向O/S下层安全代理420表明如何处理对各种所标识的受保护资源的各种分段的尝试访问的规则。安全规则408可包括针对给定的受保护资源或资源的分类的一套规则。因此,不同的规则可适用于对不同的受保护资源的相同分段的尝试访问。例如,对第一驱动程序的数据分段的尝试写入可被允许,但是对第二驱动程序的数据分段的尝试写入则可需要额外的检查,以查看做出所述尝试的实体是否与受保护的资源有关。在图7的示例中,安全规则408可包括定义了对驱动程序2头分段(部分(E))的访问可通过进行额外的查询来处理的规则。在另一示例中,安全规则408可包括定义了读取驱动程序2代码分段(部分(F))的尝试可被允许的规则。这种尝试可反映由系统400中的其他实体进行用于执行驱动程序2的功能的正常操作。在又一示例中,安全规则408可包括定义了写入到驱动程序2代码分段(部分(F))的尝试可被拒绝的规则。在又一示例中,安全规则408可包括定义了对驱动程序2数据分段(部分(G))的尝试访问(其源自并非已知是恶意的源)可被允许的规则。安全规则408可包括定义了对诸如在部分(H)中的其他实体的尝试访问可由未示出的安全规则进行处理或可通过引起对额外处理的查询而进行处理的规则。
O/S下层安全代理420可捕获由源存储器750中所示的实体所尝试的对受保护资源的访问。对于进行尝试的源存储器750内的实体,O/S下层安全代理420可确定所述尝试源自实体的哪个分段。例如,O/S下层安全代理420不仅可确定已由驱动程序1尝试访了问受保护的资源,还可具体地确定尝试已从部分(A)中的驱动程序1的头分段、部分(B)中的驱动程序1的代码分段或是部分(C)中的驱动程序1的数据分段做出。O/S下层安全代理420可利用存储器映射406而做出这样的确定。
基于确定实体的哪一分段做出这一尝试,并且基于所述实体的标识,O/S下层安全代理420可确定要采取何种动作。可基于给定的尝试而采取任何合适的动作。在一个实施例中,来自实体的特定分段的对受保护资源的尝试访问通常是所期望的,并且因此这种尝试可被允许。O/S下层安全代理420可允许这种尝试而无需额外的检查、扫描或其他动作。执行额外的检查、扫描或其他动作(例如,将信息发送给O/S下层安全代理419或保护服务器202)的开销或处理费用可能是过高的,其中O/S下层安全代理420捕获并评估许多尝试。例如,来部分(B)中的驱动程序1的代码分段的尝试通常是所期望的,并且不是恶意软件的表示。因此,O/S下层安全代理420可允许来自驱动程序1的代码分段(部分(B))的尝试,而不需要将关于所述所述尝试的信息传递给O/S下层安全代理419或保护服务器202以用于进一步评估。
在又一实施例中,来自实体的特定分段的对受保护资源的尝试访问通常被认为是可疑的,因为这种尝试可能是系统400上的正常行为实体所不期望的。O/S下层安全代理420可拒绝这种尝试而无需额外的检查、扫描或其他动作。同步执行额外的检查、扫描或其他动作的开销或处理费用可能是昂贵的。例如,来自驱动程序1的数据分段的对受保护资源的尝试通常被认为是可疑的并且是恶意软件的表示。因此,O/S下层安全代理420可拒绝来自驱动程序1的代码分段(部分(C))的对受保护资源进行访问的尝试,而不需要同步地将关于所述尝试的信息传递给O/S下层安全代理419或保护服务器202。然而,O/S下层安全代理420可异步地将关于所述尝试的信息传递给O/S下层安全代理419或保护服务器202以用于进一步评估,其中O/S下层安全代理420在执行纠正动作之前不等待回复。
在又一实施例中,可能不知道来自受保护资源的特定分段的对受保护资源进行访问的尝试是恶意的还是安全的。在这种实施例中,所述尝试可被默认允许、默认拒绝,或默认需要额外的处理。O/S下层安全代理420可执行默认拒绝或允许而无需额外的检查、扫描或其他动作。为了执行默认的额外处理,O/S下层安全代理420可针对与所述尝试相关的额外信息或而扫描查询系统400的部分。例如,来自驱动程序1的头分段的对受保护资源进行访问的尝试可是安全的或是恶意的,其取决于其它因素,例如,受所保护的资源或所期望的实体的行为。因此,O/S下层安全代理420对源自驱动程序1的头分段(部分(A))的尝试进行额外的查询。这种查询可同步或异步地进行。
此外,对采取动作的决定可包括其他考虑。例如,做出尝试的实体可能已知是恶意的并在黑名单上。在这种示例中,所述实体整体是恶意的这一决定可覆盖(override)分段特定的规则。在另一个示例中,做出尝试的实体可能已知是安全的并在白名单上,例如安全规则408内驱动程序l的出现。在这种示例中,安全规则408可包括允许来自部分(A)和(B)中所示的驱动程序l的头和代码分段的默认访问的规则。然而,即使驱动程序1可被包括在安全规则408中的白名单内,源自部分(C)中所示的驱动程序l的数据分段的尝试可以是可疑的或恶意的。白名单和观察到的动作之间的这种差异可能源于错误的白名单或需要额外的验证或报告。由此,即使驱动程序1可被包括在安全规则408中的白名单内,安全规则408可包括这样的规则:覆盖所述白名单并表明源自部分(C)中所示的驱动程序l的数据分段的尝试可默认被拒绝或导致生成查询。
安全规则408可包括向O/S下层安全代理420表明如何处理由给定实体的各个分段对受保护资源的尝试访问的规则。例如,安全规则408可包括定义了源自驱动程序l的头分段(部分(A))的访问可通过进行额外的查询来进行处理的规则。在另一示例中,安全规则408可包括定义了源自驱动程序l的代码分段(部分(B))的访问可默认被允许的规则。这种尝试可能反映驱动程序1的用于执行其功能的正常操作。这一规则可服从于定义了对给定受保护资源的访问的其他规则,例如只允许某些实体进行这种访问的要求。在又一示例中,安全规则408可包括定义了源自驱动程序l的数据分段(部分(C))的尝试访问可被拒绝的规则。安全规则408可包括定义了由其他实体(例如,部分(D)中的那些)进行的尝试访问可通过未示出的安全规则进行处理或者可通过引起对额外处理的查询进行处理的规则。
确定对受保护资源进行尝试访问的实体的准确分段可能是困难的。全面或完全准确的存储器映射406可能是不可用的或不实际的。为了确定对受保护资源进行尝试访问的准确分段,O/S下层安全代理416可被配置为确定一个字节串,所述字节串与包括引起对受保护资源的尝试访问的指令指针地址的范围相对应。在进一步的实施例中,这种字节串可包括至少一定数量的字节,2*N。在又一实施例中,这种字节串可包括在引起所述尝试的指令指针周围的字节,加上或减去N字节。这种字节串可表示在进行所述尝试的同一进程内的连续代码字节。所述字节串可在片段752中示出。片段752可示出来自源存储器750的指令、操作码或其他信息的连续的块。这种连续的块可包括在存储器页内或在存储器地址范围中的连续的信息块。片段752可表示源存储器750的任何合适的部分。
O/S下层安全代理416可将所述字节串与已知安全的或已知恶意的字节串进行比较,而不需要尝试确定负责所述尝试的整个实体的签名或散列。此外,O/S下层安全代理416可在安全规则408的范围内使用这种字节串,安全规则408可使用这种字节串作为针对其规则的索引。例如,代表驱动程序1的代码分段的部分(B)的各部分已知发起了对受保护资源进行访问的尝试,可包括被记录在安全规则408中的字节串。因此,与所述字节串匹配的尝试访问可被确定为与部分(B)中的驱动程序1的代码分段相关联。接着,408可以定义要采取的适当行动。在一个实施例中,可以使用字节串的散列。
图8是用于实时模块保护的方法的示例实施例。所述保护可包括调节软件访问以用于保护存储器中的模块。
在805,对受保护的资源的尝试访问可被捕获。所述捕获可由操作系统下层捕获代理进行。对所捕获的尝试的后续处理可至少部分地由操作系统下层处理代理进行。所述资源可以包括以下中的一部分:受保护的系统存储器和模块、驱动程序、应用程序或驻留在其上的其它实体。这种存储器可根据物理或虚拟存储器来定义。驻留在存储器内的受保护的资源可根据给定实体的各个分段的位置而在存储器映射中进行映射。
在810,可确定所述尝试是否是由已知作为实体的被识别的分段的存储器位置做出的。这样的分段可包括,例如头、数据和代码分段。在一个实施例中,可基于存储器映射来分析所述实体的分段是否是已知的。在另一实施例中,可基于包括产生所述尝试的指令指针的字节串来分析所述实体的分段是否是已知的。如果实体的分段是已知的,则方法800可进行到815。如果不是,方法800可进行到845。
在815,可访问安全规则以确定如何处理来自实体的给定分段的尝试访问。可在820的范围内使用这一确定。在820,可确定受保护的资源哪个分段做出的尝试。对由特定分段做出的这种尝试的处理可根据做出所述尝试的特定实体的标识而变化。例如,来自操作系统内核、与被访问的模块相关的实体、或签名的驱动程序的代码分段可被允许访问,其中,来自未签名的驱动程序、未知的驱动程序,或与被访问的模块无关的实体可被拒绝。在一个实施例中,如果尝试是由头分段做出的,则方法800可进行到830。在各个其他实施例中,如果尝试是由头分段做出的,则方法800可进行到835或825。在另一个实施例中,如果尝试是由数据分段做出的,则方法800可进行到835。在各个其他实施例中,如果尝试是由数据分段做出,则方法800可进行到835或825。在又一实施例中,如果尝试是由代码分段做出的,则方法800可进行到825。在各个其他实施例中,如果尝试是由代码分段做出的,则方法800可进行到830或835。如果尝试不是由这些分段做出的,而是由另一个所标识的分段或由未标识的分段做出的,则方法800可默认进行到830。
在825,所述尝试可被允许。在一个实施例中,所述尝试可被允许,其等待(pending)直到可覆盖所述尝试的允许的其他其它反恶意软件规则的应用程序为止。例如,如果进行尝试的全部实体被另外确定为是恶意的,则所述尝试相反可被拒绝。在另一个实施例中,可由操作系统下层处理代理允许所述尝试而无需参考操作系统上层元素。方法800可进行到845。
在830,可做出对关于所述尝试的额外分析的查询。这种分析可以是同步或异步的。所述分析可包括例如扫描、签名匹配或启发式分析。所述分析可利用例如进行尝试的实体的内容或标识、受保护资源的内容或标识、或所尝试改变的内容。
在835,所述尝试可被拒绝。在一个实施例中,可由操作系统下层处理代理拒绝所述尝试而无需参考操作系统上层元素。方法800可进行到890。
在845,可确定所述尝试是否在受保护资源的所标识的分段上进行的。这种分段可包括例如头、数据和代码分段。在一个实施例中,可基于存储器映射而分析所述分段是否是已知的。如果分段是已知的,则方法800可进行到850。如果不是,则方法800可进行到890。
在850,可访问安全规则以确定如何处理对受保护资源的给定分段的尝试访问。该确定可在855的范围内使用。对模块的特定分段的尝试的处理可根据模块的标识而变化。例如,对操作系统内核、关键设备驱动程序,或其它关键组件的尝试访问可触发比由与驱动程序相关的实体做出的对该驱动程序的尝试访问更严格的访问要求。在855,可确定受保护的资源哪一分段被作为目标。在一个实施例中,如果尝试是针对头分段的,则方法800可进行到880。在各个其他实施例中,如果尝试是针对头分段的,则方法800可进行到860、865、870或875,以进行有条件的或绝对的允许或拒绝。在另一实施例中,如果尝试是针对数据分段的,则方法800可进行到860。在各个其他实施例中,如果尝试是针对数据分段的,则方法800可进行到860、865、870、875或880,以用于查询、有条件的或绝对的允许,或有条件的或绝对的拒绝。在又一实施例中,如果是尝试针对代码分段的,则方法800可进行到865。在其他各个实施例中,如果是尝试针对代码分段的,则方法800可进行到860、870、875或880,以用于查询、有条件的或绝对的允许,或有条件的或绝对的拒绝。如果尝试是针对这种分段、针对另一所标识的分段、或针对未标识的分段的,则方法800可默认进行到880。可根据被作为目标的模块的标识来处理这样的尝试,而无需考虑特定分段。
在860,可确定所述尝试是否来自另外已知是恶意的实体。该确定可不需要明确的确定所述实体是安全的还是恶意的。如果实体的恶意软件状态是未知的或已知是安全的,则可确定所述实体并非已知是恶意的。如果所述实体已知是恶意的,则方法800可进行到875。如果实体并非已知是恶意的,则方法800可进行到870。
在865,可确定所述尝试是尝试读取还是尝试写入。如果所述尝试是读取,则方法800可进行到870。如果所述尝试是写入,方法800可进行到875。
在870,所述尝试可被允许。在一个实施例中,所述尝试可被允许,其等待直到可覆盖所述尝试的允许的其他其它反恶意软件规则的应用程序为止。例如,如果进行尝试的实体被另外确定为是恶意的,则所述尝试相反可被拒绝。在另一个实施例中,可由操作系统下层处理代理允许所述尝试而无需参考操作系统上层元素。方法800可进行到890。
在875,所述尝试可被拒绝。在一个实施例中,可由操作系统下层处理代理拒绝所述尝试而无需参考操作系统上层元素。方法800可进行到890。
在880,可做出对关于所述尝试的额外分析的查询。这种分析可以是同步或异步的。所述分析可包括例如扫描、签名匹配或启发式分析。所述分析可利用例如进行尝试的实体的内容或标识、受保护资源的内容或标识、或尝试改变的内容。
在890,方法800可重复并返回到之前的元素,例如805,或者方法800可终止。
尽管图3、6和8关于方法300、600和800而公开了要采取的特定数量的步骤,但是可采取比图3、6和8中所示的更多或更少的步骤来执行方法300、600和800。此外,尽管图3、6和8关于方法300、600和800而公开了要采取的步骤的特定顺序,但是构成这些方法的步骤可以以任何合适的顺序完成。此外,方法300、600和800的一些或全部步骤可与来自方法300、600和800中的其他方法的步骤相结合。
可使用图1-2、4-5或7-8中的系统来实现方法300、600和800。在某些实施例中,方法300、600和800可部分地或完全在嵌入到计算机可读存储介质来中的软件来实现。
程序指令可以用于使得用指令编程的通用或专用处理系统来执行上述操作。所述操作可以由包含用于执行所述操作的硬接线的逻辑的特定硬件组件来执行,或由编程的计算机组件和定制硬件组件的任何组合来执行。本文所描述的方法可作为计算机程序产品,其可包括一个或多个机器可读介质,所述机器可读介质具有存储在其上、可用来编程处理系统或其它电子设备以执行这些方法的指令。本文所使用的术语“机器可读介质”或“计算机可读介质”应当包括能够存储或编码由机器执行并使得机器执行本文所描述的任何一种方法的指令序列的任何介质。术语“机器可读介质”应相应地包括,但不限于存储器,例如固态存储器、光盘和磁盘。此外,以一种或另一种形式(例如,程序、过程、进程、应用程序、模块、逻辑等)提及软件以作为“采取动作或导致结果”在本领域中是常见的。这种表达仅是“由处理系统进行的软件执行以使得处理器执行动作或产生结果”这一表达的简便方式。
系统100、200、400、500和700中的一个或多个可以与系统100、200、400、500和700中的其它部分组合。
以下示例涉及进一步的实施例。
一种用于保护电子设备的方法,可包括捕获对所述电子设备的受保护的系统资源的访问的尝试。所述方法可进一步包括确定与所述尝试相关联的模块。所述模块可包括多个不同的分段。此外,所述方法可包括确定与所述尝试相关联的所述模块的分段。所述分段可包括与所述尝试相关联的存储器位置。所述方法还可额外包括基于对所述模块的确定和对所述分段的确定来访问安全规则,以确定是否允许所尝试的访问。此外,所述方法还可包括基于所述安全规则处理所述尝试。所述捕获可在电子设备的所有操作系统以下的层级处进行。处理所述尝试可至少部分地在电子设备的所有操作系统以下的层级处进行。所述存储器位置可识别所述尝试的起源点。此外,所述存储器位置可识别所述尝试的目标点。所述分段可包括数据分段。另外,所述部分可包括头分段。此外,所述部分可包括代码分段。处理所述尝试可包括拒绝所尝试的写入所述代码分段、头分段或数据分段。此外,处理所述尝试可包括允许所尝试的写入所述代码分段、头分段或数据分段。此外,处理所述尝试可包括拒绝来自所述代码分段、头分段或数据分段的所尝试的写入。此外,处理所述尝试可包括允许所尝试的读取所述代码分段、头分段或数据分段。此外,处理所述尝试可包括进行额外查询以确定所述尝试的恶意软件状态。
至少一个机器可读存储介质,可包括在所述计算机可读介质上承载的计算机可执行指令。所述指令可以由处理器读取。当所述指令被读取并执行时,其可使得所述处理器捕获对所述电子设备受保护的系统资源的访问的尝试。可进一步使得所述处理器确定与所述尝试相关联的模块。所述模块可包括多个不同的部分。此外,可使得所述处理器确定与所述尝试相关联的所述模块的部分。此外,所述部分可包括与所述尝试相关联的存储器位置。此外,可使得所述处理器基于对所述模块的确定和对所述部分的确定来访问安全规则,以确定是否允许所尝试的访问。此外,可使得所述处理器基于所述安全规则而处理所述尝试。所述捕获可在电子设备的所有操作系统以下的层级处进行。处理所述尝试可至少部分地在电子设备的所有操作系统以下的层级处进行。所述存储器位置可识别所述尝试的起源点。此外,所述存储器位置可识别所述尝试的目标点。所述分段可包括数据分段。另外,所述分段可包括头分段。此外,所述分段可包括代码分段。处理所述尝试可包括拒绝所尝试的写入所述代码分段、头分段或数据分段。此外,处理所述尝试可包括允许所尝试的写入所述代码分段、头分段或数据分段。此外,处理所述尝试可包括拒绝来自所述代码分段、头分段或数据分段的所尝试的写入。此外,处理所述尝试可包括允许所尝试的读取所述代码分段、头分段或数据分段。此外,处理所述尝试可包括进行额外查询以确定所述尝试的恶意软件状态。
一种用于保护电子设备的系统,可包括存储器、处理器、受保护的系统资源、以及一个或多个安全代理。所述安全代理可包括驻留在存储器中并可操作以被所述处理器执行的指令。所述安全代理可被配置为捕获对所述电子设备的受保护的系统资源的访问的尝试。所述安全代理可进一步被配置为确定与所述尝试相关联的模块。所述模块可包括多个不同的分段。此外,所述安全代理可被配置为确定与所述尝试相关联的所述模块的分段。所述分段可包括与所述尝试相关联的存储器位置。此外,所述安全代理可被配置为基于对所述模块的确定和对所述分段的确定来访问安全规则,以确定是否允许所尝试的访问。此外,所述安全代理可被配置为基于所述安全规则而处理所述尝试。所述捕获可在电子设备的所有操作系统以下的层级处进行。处理所述尝试可至少部分地在电子设备的所有操作系统以下的层级处进行。所述存储器位置可识别所述尝试的起源点。此外,所述存储器位置可识别所述尝试的目标点。所述分段可包括数据分段。另外,所述分段可包括头分段。此外,所述分段可包括代码分段。处理所述尝试可包括拒绝所尝试的写入所述代码分段、头分段或数据分段的。此外,处理所述尝试可包括允许所尝试的写入所述代码分段、头分段或数据分段。此外,处理所述尝试可包括拒绝来自所述代码分段、头分段或数据分段的所尝试的写入。此外,处理所述尝试可包括允许所尝试的读取所述代码分段、头分段或数据分段。此外,处理所述尝试可包括进行额外查询以确定所述尝试的恶意软件状态。
一种用于保护电子设备的系统,可包括用于保护所述电子设备的单元并可包括:捕获对所述电子设备的受保护的系统资源的访问的尝试。所述系统进一步包括用于确定与所述尝试相关联的模块的单元。所述模块可包括多个不同的分段。此外,所述系统可包括用于确定与所述尝试相关联的所述模块的分段的单元。所述分段可包括与所述尝试相关联的存储器位置。所述系统可额外地包括用于基于对所述模块的确定和对所述分段的确定来访问安全规则,以确定是否允许所尝试的访问的单元。此外,所述系统还可包括用于基于所述安全规则而处理所述尝试的单元。所述捕获可在电子设备的所有操作系统以下的层级处进行。处理所述尝试可至少部分地在电子设备的所有操作系统以下的层级处进行。所述存储器位置可识别所述尝试的起源点。此外,所述存储器位置可识别所述尝试的目标点。所述分段可包括数据分段。另外,所述分段可包括头分段。此外,所述分段可包括代码分段。处理所述尝试可包括拒绝所尝试的写入所述代码分段、头分段或数据分段的。此外,处理所述尝试可包括允许所尝试的写入所述代码分段、头分段或数据分段。此外,处理所述尝试可包括拒绝来自所述代码分段、头分段或数据分段的所尝试的写入。此外,处理所述尝试可包括允许所尝试的读取所述代码分段、头分段或数据分段。此外,处理所述尝试可包括进行额外查询以确定所述尝试的恶意软件状态。
尽管已详细描述了本公开,但应当理解的是,可以对本公开进行各种改变、替换以及变更而不背离由所附权利要求所限定的本公开的精神的范围。
Claims (30)
1.一种用于保护电子设备的方法,包括:
捕获对所述电子设备的受保护的系统资源的访问的尝试;
确定与所述尝试相关联的模块,所述模块包括多个不同的分段;
确定与所述尝试相关联的所述模块的分段,所述分段包括与所述尝试相关联的存储器位置;
基于对所述模块的确定和对所述分段的确定,访问安全规则以确定是否允许所尝试的访问;并且
基于所述安全规则而处理所述尝试。
2.根据权利要求1所述的方法,其中:
所述捕获是在所述电子设备的所有操作系统以下的层级处进行的;并且
处理所述尝试是至少部分地在所述电子设备的所有操作系统以下的层级处进行的。
3.根据权利要求1所述的方法,其中,所述存储器位置识别所述尝试的起源点。
4.根据权利要求1所述的方法,其中,所述存储器位置识别所述尝试的目标点。
5.根据权利要求1所述的方法,其中,所述分段是所述尝试的目标并且是数据分段。
6.根据权利要求1所述的方法,其中,所述分段是所述尝试的目标并且是头分段。
7.根据权利要求1所述的方法,其中,所述分段是所述尝试的目标并且是代码分段。
8.根据权利要求1所述的方法,其中,所述安全规则:
将所述尝试的目标识别为代码分段;并且
基于所述识别,指定处理所述尝试包括拒绝所尝试的写入所述代码分段。
9.根据权利要求1所述的方法,其中,所述安全规则:
将所述尝试的目标识别为头分段;并且
基于所述识别,指定处理所述尝试包括拒绝所尝试的写入所述头分段。
10.根据权利要求1所述的方法,其中,所述安全规则:
将所述尝试的目标识别为数据分段;并且
基于所述识别,指定处理所述尝试包括允许所尝试的写入所述数据分段。
11.至少一种机器可读存储介质,其包括在计算机可读介质上承载的计算机可执行指令,所述指令能够由处理器读取,当所述指令被读取并执行时,使得所述处理器:
捕获对电子设备的受保护的系统资源的访问的尝试;
确定与所述尝试相关联的模块,所述模块包括多个不同的分段;
确定与所述尝试相关联的所述模块的分段,所述分段包括与所述尝试相关联的存储器位置;
基于对所述模块的确定和对所述分段的确定,访问安全规则以确定是否允许所尝试的访问;并且
基于所述安全规则而处理所述尝试。
12.根据权利要求11所述的介质,其中:
所述捕获是在所述电子设备的所有操作系统以下的层级处进行的;并且
处理所述尝试是至少部分地在所述电子设备的所有操作系统以下的层级处进行的。
13.根据权利要求11所述的介质,其中,所述存储器位置识别所述尝试的起源点。
14.根据权利要求11所述的介质,其中,所述存储器位置识别所述尝试的目标点。
15.根据权利要求11所述的介质,其中,所述分段是所述尝试的目标并且是数据分段。
16.根据权利要求11所述的介质,其中,所述分段是所述尝试的目标并且是头分段。
17.根据权利要求11所述的介质,其中,所述分段是所述尝试的目标并且是代码分段。
18.根据权利要求11所述的介质,其中,所述安全规则:
将所述尝试的目标识别为代码分段;并且
基于所述识别,指定处理所述尝试包括拒绝所尝试的写入所述代码分段。
19.根据权利要求11所述的介质,其中,所述安全规则:
将所述尝试的目标识别为头分段;并且
基于所述识别,指定处理所述尝试包括拒绝所尝试的写入所述头分段。
20.根据权利要求11所述的介质,其中,所述安全规则:
将所述尝试的目标识别为数据分段;并且
基于所述识别,指定处理所述尝试包括允许所尝试的写入所述数据分段。
21.一种用于保护电子设备的系统,包括:
存储器;
处理器;
受保护的系统资源;以及
一个或多个安全代理,其包括驻留在所述存储器中并操作以被所述处理器执行的指令,其中,所述安全代理被配置为:
捕获对所述受保护的系统资源的访问的尝试;
确定与所述尝试相关联的模块,所述模块包括多个不同的分段;
确定与所述尝试相关联的所述模块的分段,所述分段包括与所述尝试相关联的存储器位置;
基于对所述模块的确定和对所述分段的确定,访问安全规则以确定是否允许所尝试的访问;并且
基于所述安全规则而处理所述尝试。
22.根据权利要求21所述的系统,其中,所述安全代理进一步被配置为:
在所述电子设备的所有操作系统以下的层级处进行所述捕获;并且
至少部分地在所述电子设备的所有操作系统以下的层级处进行所述处理。
23.根据权利要求21所述的系统,其中,所述存储器位置识别所述尝试的起源点。
24.根据权利要求21所述的系统,其中,所述存储器位置识别所述尝试的目标点。
25.根据权利要求21所述的系统,其中,所述分段是所述尝试的目标并且是数据分段。
26.根据权利要求21所述的系统,其中,所述分段是所述尝试的目标并且是头分段。
27.根据权利要求21所述的系统,其中,所述分段是所述尝试的目标并且是代码分段。
28.根据权利要求21所述的系统,其中,所述安全规则:
将所述尝试的目标识别为代码分段;并且
基于所述识别,指定处理所述尝试包括拒绝所尝试的写入所述代码分段。
29.根据权利要求21所述的系统,其中,所述安全规则:
将所述尝试的目标识别为头分段;并且
基于所述识别,指定处理所述尝试包括拒绝所尝试的写入所述头分段。
30.根据权利要求21所述的系统,其中,所述安全规则:
将所述尝试的目标识别为数据分段;并且
基于所述识别,指定处理所述尝试包括允许所尝试的写入所述数据分段。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/656,436 US9275223B2 (en) | 2012-10-19 | 2012-10-19 | Real-time module protection |
US13/656,436 | 2012-10-19 | ||
PCT/US2013/065846 WO2014063133A1 (en) | 2012-10-19 | 2013-10-21 | Real-time module protection |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104769604A true CN104769604A (zh) | 2015-07-08 |
CN104769604B CN104769604B (zh) | 2017-08-29 |
Family
ID=50486607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380048780.0A Active CN104769604B (zh) | 2012-10-19 | 2013-10-21 | 实时模块保护 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9275223B2 (zh) |
EP (1) | EP2909781B1 (zh) |
JP (1) | JP6116697B2 (zh) |
CN (1) | CN104769604B (zh) |
WO (1) | WO2014063133A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105592066A (zh) * | 2015-11-05 | 2016-05-18 | 杭州华三通信技术有限公司 | 资源访问控制方法及装置 |
CN107041158A (zh) * | 2015-08-25 | 2017-08-11 | 甲骨文国际公司 | 用于模块化反射的限制性访问控制 |
CN109923546A (zh) * | 2016-12-19 | 2019-06-21 | 比特梵德知识产权管理有限公司 | 虚拟机安全性应用程序的事件过滤 |
US11048489B2 (en) | 2016-09-16 | 2021-06-29 | Oracle International Corporation | Metadata application constraints within a module system based on modular encapsulation |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9275223B2 (en) | 2012-10-19 | 2016-03-01 | Mcafee, Inc. | Real-time module protection |
CN103838359A (zh) * | 2012-11-26 | 2014-06-04 | 腾讯科技(深圳)有限公司 | 一种利用移动终端控制计算机设备的方法及系统 |
WO2014087597A1 (ja) * | 2012-12-07 | 2014-06-12 | キヤノン電子株式会社 | ウイルス侵入経路特定装置、ウイルス侵入経路特定方法およびプログラム |
US9223602B2 (en) * | 2012-12-28 | 2015-12-29 | Intel Corporation | Processors, methods, and systems to enforce blacklisted paging structure indication values |
US10127379B2 (en) * | 2013-03-13 | 2018-11-13 | Mcafee, Llc | Profiling code execution |
US9065849B1 (en) * | 2013-09-18 | 2015-06-23 | Symantec Corporation | Systems and methods for determining trustworthiness of software programs |
US9507935B2 (en) * | 2014-01-16 | 2016-11-29 | Fireeye, Inc. | Exploit detection system with threat-aware microvisor |
US10078752B2 (en) * | 2014-03-27 | 2018-09-18 | Barkly Protects, Inc. | Continuous malicious software identification through responsive machine learning |
EP3123390A4 (en) * | 2014-03-27 | 2017-10-25 | Barkly Protects, Inc. | Malicious software identification integrating behavioral analytics and hardware events |
WO2016072310A1 (ja) * | 2014-11-05 | 2016-05-12 | キヤノン電子株式会社 | 特定装置、その制御方法、及びプログラム |
CN107003976B (zh) | 2014-12-16 | 2021-05-07 | 微福斯有限责任公司 | 基于可准许活动规则确定可准许活动 |
US9665716B2 (en) * | 2014-12-23 | 2017-05-30 | Mcafee, Inc. | Discovery of malicious strings |
US10467409B2 (en) * | 2014-12-23 | 2019-11-05 | Mcafee, Llc | Identification of malicious execution of a process |
US9560078B2 (en) | 2015-02-04 | 2017-01-31 | Intel Corporation | Technologies for scalable security architecture of virtualized networks |
US9805199B2 (en) * | 2015-03-12 | 2017-10-31 | International Business Machines Corporation | Securely booting a computer from a user trusted device |
US9589105B2 (en) * | 2015-03-25 | 2017-03-07 | International Business Machines Corporation | Securing protected health information based on software designation |
US10659479B2 (en) * | 2015-03-27 | 2020-05-19 | Mcafee, Llc | Determination of sensor usage |
GB2539199B (en) * | 2015-06-08 | 2018-05-23 | Arm Ip Ltd | Apparatus and methods for transitioning between a secure area and a less-secure area |
US9984230B2 (en) * | 2015-06-26 | 2018-05-29 | Mcafee, Llc | Profiling event based exploit detection |
US11113086B1 (en) | 2015-06-30 | 2021-09-07 | Fireeye, Inc. | Virtual system and method for securing external network connectivity |
US10642753B1 (en) | 2015-06-30 | 2020-05-05 | Fireeye, Inc. | System and method for protecting a software component running in virtual machine using a virtualization layer |
US10395029B1 (en) | 2015-06-30 | 2019-08-27 | Fireeye, Inc. | Virtual system and method with threat protection |
US10726127B1 (en) | 2015-06-30 | 2020-07-28 | Fireeye, Inc. | System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer |
US10216927B1 (en) | 2015-06-30 | 2019-02-26 | Fireeye, Inc. | System and method for protecting memory pages associated with a process using a virtualization layer |
US10181030B2 (en) * | 2015-07-24 | 2019-01-15 | Citrix Systems, Inc. | Blocking routine redirection |
US10033759B1 (en) | 2015-09-28 | 2018-07-24 | Fireeye, Inc. | System and method of threat detection under hypervisor control |
JP6623656B2 (ja) * | 2015-10-02 | 2019-12-25 | 富士通株式会社 | 通信制御装置、通信制御方法及び通信制御プログラム |
US10447728B1 (en) | 2015-12-10 | 2019-10-15 | Fireeye, Inc. | Technique for protecting guest processes using a layered virtualization architecture |
US10846117B1 (en) | 2015-12-10 | 2020-11-24 | Fireeye, Inc. | Technique for establishing secure communication between host and guest processes of a virtualization architecture |
US10108446B1 (en) | 2015-12-11 | 2018-10-23 | Fireeye, Inc. | Late load technique for deploying a virtualization layer underneath a running operating system |
US9898326B2 (en) | 2016-02-23 | 2018-02-20 | Red Hat Israel, Ltd. | Securing code loading in a virtual environment |
US9858109B2 (en) | 2016-02-26 | 2018-01-02 | Red Hat Israel, Ltd. | Module management in a protected kernel environment |
US10057069B2 (en) | 2016-02-29 | 2018-08-21 | Red Hat Israel, Ltd. | Securing code loading by a guest in a virtual environment |
US20170277903A1 (en) * | 2016-03-22 | 2017-09-28 | Qualcomm Incorporated | Data Protection Using Virtual Resource Views |
WO2017181097A1 (en) * | 2016-04-14 | 2017-10-19 | Sequent Software, Inc. | System and method for generation, storage, administration and use of one or more digital secrets in association with a portable electronic device |
US10515213B2 (en) * | 2016-08-27 | 2019-12-24 | Microsoft Technology Licensing, Llc | Detecting malware by monitoring execution of a configured process |
US10191861B1 (en) | 2016-09-06 | 2019-01-29 | Fireeye, Inc. | Technique for implementing memory views using a layered virtualization architecture |
US10873589B2 (en) | 2017-08-08 | 2020-12-22 | Sonicwall Inc. | Real-time prevention of malicious content via dynamic analysis |
US10685110B2 (en) * | 2017-12-29 | 2020-06-16 | Sonicwall Inc. | Detection of exploitative program code |
US11003777B2 (en) * | 2018-04-16 | 2021-05-11 | International Business Machines Corporation | Determining a frequency at which to execute trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code |
US11232201B2 (en) | 2018-05-14 | 2022-01-25 | Sonicwall Inc. | Cloud based just in time memory analysis for malware detection |
US11080402B2 (en) | 2018-06-14 | 2021-08-03 | Vmware, Inc. | Methods and apparatus to validate and restore machine configurations |
EP3598332B1 (en) * | 2018-07-16 | 2023-12-13 | Juniper Networks, Inc. | Memory tracking for malware detection |
US11080397B2 (en) | 2018-09-12 | 2021-08-03 | International Business Machines Corporation | Using trap cache segments to detect malicious processes |
US11042636B2 (en) * | 2018-09-12 | 2021-06-22 | International Business Machines Corporation | Using trap storage units to detect malicious processes |
US11182472B2 (en) * | 2019-09-30 | 2021-11-23 | Vmware, Inc. | Security in a computing environment by monitoring expected operation of processes within the computing environment |
US11470114B2 (en) * | 2019-12-27 | 2022-10-11 | Paypal, Inc. | Malware and phishing detection and mediation platform |
US11671448B2 (en) | 2019-12-27 | 2023-06-06 | Paypal, Inc. | Phishing detection using uniform resource locators |
US12021894B2 (en) | 2019-12-27 | 2024-06-25 | Paypal, Inc. | Phishing detection based on modeling of web page content |
US11520886B2 (en) * | 2020-07-26 | 2022-12-06 | Palo Alto Networks (Israel Analytics) Ltd. | Advanced ransomware detection |
US12047374B2 (en) * | 2021-03-10 | 2024-07-23 | Ciena Corporation | Preventing network discovery by untrusted devices |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080120611A1 (en) * | 2006-10-30 | 2008-05-22 | Jeffrey Aaron | Methods, systems, and computer program products for controlling software application installations |
US20090007223A1 (en) * | 2006-05-03 | 2009-01-01 | International Business Machines Corporation | Method and system for run-time dynamic and interactive identification of software authorization requirements and privileged code locations, and for validation of other software program analysis results |
US20110202999A1 (en) * | 2010-02-12 | 2011-08-18 | Research In Motion Limited | System and method for controlling event entries |
US20120036569A1 (en) * | 2010-04-05 | 2012-02-09 | Andrew Cottrell | Securing portable executable modules |
US20120254999A1 (en) * | 2011-03-28 | 2012-10-04 | Mcafee, Inc. | Systems and method for regulating software access to security-sensitive processor resources |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5490262A (en) * | 1989-09-01 | 1996-02-06 | Oki Electric Industry Co., Ltd. | Dual cache memory device with cache monitoring |
JPH1173372A (ja) * | 1997-08-27 | 1999-03-16 | Hideo Takeda | コンピュータ・ウィルスによる不正アクセス検出方法 |
US6014513A (en) * | 1997-12-23 | 2000-01-11 | University Of Washington | Discovering code and data in a binary executable program |
US20030037237A1 (en) * | 2001-04-09 | 2003-02-20 | Jean-Paul Abgrall | Systems and methods for computer device authentication |
EP1542112A4 (en) * | 2002-07-09 | 2008-04-09 | Fujitsu Ltd | UCT RESISTANT TO OPEN-TYPE UNIVERSAL ATTACKS, AND ASSOCIATED APPLICATION SYSTEM |
JP2004126854A (ja) * | 2002-10-01 | 2004-04-22 | Mitsubishi Electric Corp | 攻撃対策装置 |
US20040123117A1 (en) * | 2002-12-18 | 2004-06-24 | Symantec Corporation | Validation for behavior-blocking system |
US7373519B1 (en) * | 2003-04-09 | 2008-05-13 | Symantec Corporation | Distinguishing legitimate modifications from malicious modifications during executable computer file modification analysis |
US7802110B2 (en) * | 2004-08-25 | 2010-09-21 | Microsoft Corporation | System and method for secure execution of program code |
US7523281B2 (en) * | 2006-09-06 | 2009-04-21 | George Madathilparambil George | Authenticating hardware for manually enabling and disabling read and write protection to parts of a storage disk or disks for users |
US7882318B2 (en) * | 2006-09-29 | 2011-02-01 | Intel Corporation | Tamper protection of software agents operating in a vitual technology environment methods and apparatuses |
JP2007128537A (ja) * | 2006-12-18 | 2007-05-24 | Macrovision Corp | 動的に接続可能な実行イメージの真正性検証システム及び方法 |
US8099574B2 (en) * | 2006-12-27 | 2012-01-17 | Intel Corporation | Providing protected access to critical memory regions |
US8127358B1 (en) * | 2007-05-30 | 2012-02-28 | Trend Micro Incorporated | Thin client for computer security applications |
US8248237B2 (en) | 2008-04-02 | 2012-08-21 | Yougetitback Limited | System for mitigating the unauthorized use of a device |
JP5115332B2 (ja) * | 2008-05-22 | 2013-01-09 | 富士通株式会社 | エミュレーションプログラム、エミュレーション装置およびエミュレーション方法 |
US20100023479A1 (en) * | 2008-07-24 | 2010-01-28 | Inernational Business Machines Corporation | Hexadecimal file fast decompression method |
US8539578B1 (en) * | 2010-01-14 | 2013-09-17 | Symantec Corporation | Systems and methods for defending a shellcode attack |
US8966629B2 (en) * | 2011-03-31 | 2015-02-24 | Mcafee, Inc. | System and method for below-operating system trapping of driver loading and unloading |
WO2012135192A2 (en) * | 2011-03-28 | 2012-10-04 | Mcafee, Inc. | System and method for virtual machine monitor based anti-malware security |
US20140149729A1 (en) * | 2011-07-18 | 2014-05-29 | Ted A. Hadley | Reset vectors for boot instructions |
US8694738B2 (en) * | 2011-10-11 | 2014-04-08 | Mcafee, Inc. | System and method for critical address space protection in a hypervisor environment |
US8584254B2 (en) * | 2011-12-08 | 2013-11-12 | Microsoft Corporation | Data access reporting platform for secure active monitoring |
JP5953867B2 (ja) * | 2012-03-26 | 2016-07-20 | 富士ゼロックス株式会社 | プログラム、及びプログラム保護装置 |
US9275223B2 (en) | 2012-10-19 | 2016-03-01 | Mcafee, Inc. | Real-time module protection |
-
2012
- 2012-10-19 US US13/656,436 patent/US9275223B2/en active Active
-
2013
- 2013-10-21 WO PCT/US2013/065846 patent/WO2014063133A1/en active Application Filing
- 2013-10-21 CN CN201380048780.0A patent/CN104769604B/zh active Active
- 2013-10-21 JP JP2015538103A patent/JP6116697B2/ja active Active
- 2013-10-21 EP EP13846372.4A patent/EP2909781B1/en active Active
-
2016
- 2016-02-29 US US15/056,563 patent/US9565214B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090007223A1 (en) * | 2006-05-03 | 2009-01-01 | International Business Machines Corporation | Method and system for run-time dynamic and interactive identification of software authorization requirements and privileged code locations, and for validation of other software program analysis results |
US20080120611A1 (en) * | 2006-10-30 | 2008-05-22 | Jeffrey Aaron | Methods, systems, and computer program products for controlling software application installations |
US20110202999A1 (en) * | 2010-02-12 | 2011-08-18 | Research In Motion Limited | System and method for controlling event entries |
US20120036569A1 (en) * | 2010-04-05 | 2012-02-09 | Andrew Cottrell | Securing portable executable modules |
US20120254999A1 (en) * | 2011-03-28 | 2012-10-04 | Mcafee, Inc. | Systems and method for regulating software access to security-sensitive processor resources |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107041158A (zh) * | 2015-08-25 | 2017-08-11 | 甲骨文国际公司 | 用于模块化反射的限制性访问控制 |
CN107041158B (zh) * | 2015-08-25 | 2021-09-17 | 甲骨文国际公司 | 用于模块化反射的限制性访问控制 |
CN105592066A (zh) * | 2015-11-05 | 2016-05-18 | 杭州华三通信技术有限公司 | 资源访问控制方法及装置 |
CN105592066B (zh) * | 2015-11-05 | 2019-01-08 | 新华三技术有限公司 | 资源访问控制方法及装置 |
US11048489B2 (en) | 2016-09-16 | 2021-06-29 | Oracle International Corporation | Metadata application constraints within a module system based on modular encapsulation |
CN109923546A (zh) * | 2016-12-19 | 2019-06-21 | 比特梵德知识产权管理有限公司 | 虚拟机安全性应用程序的事件过滤 |
Also Published As
Publication number | Publication date |
---|---|
US20160182569A1 (en) | 2016-06-23 |
EP2909781A4 (en) | 2016-05-25 |
EP2909781A1 (en) | 2015-08-26 |
CN104769604B (zh) | 2017-08-29 |
JP2015532499A (ja) | 2015-11-09 |
US20140115652A1 (en) | 2014-04-24 |
JP6116697B2 (ja) | 2017-04-19 |
WO2014063133A1 (en) | 2014-04-24 |
EP2909781B1 (en) | 2020-12-09 |
US9565214B2 (en) | 2017-02-07 |
US9275223B2 (en) | 2016-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104769604B (zh) | 实时模块保护 | |
US9392016B2 (en) | System and method for below-operating system regulation and control of self-modifying code | |
US9747443B2 (en) | System and method for firmware based anti-malware security | |
US9262246B2 (en) | System and method for securing memory and storage of an electronic device with a below-operating system security agent | |
CN103620613B (zh) | 用于基于虚拟机监视器的反恶意软件安全的系统和方法 | |
US9384349B2 (en) | Negative light-weight rules | |
US8925089B2 (en) | System and method for below-operating system modification of malicious code on an electronic device | |
US8863283B2 (en) | System and method for securing access to system calls | |
US8650642B2 (en) | System and method for below-operating system protection of an operating system kernel | |
US8959638B2 (en) | System and method for below-operating system trapping and securing of interdriver communication | |
US9038176B2 (en) | System and method for below-operating system trapping and securing loading of code into memory | |
US8549648B2 (en) | Systems and methods for identifying hidden processes | |
US8549644B2 (en) | Systems and method for regulating software access to security-sensitive processor resources | |
US9032525B2 (en) | System and method for below-operating system trapping of driver filter attachment | |
US20120255003A1 (en) | System and method for securing access to the objects of an operating system | |
US20120255014A1 (en) | System and method for below-operating system repair of related malware-infected threads and resources | |
US20130312099A1 (en) | Realtime Kernel Object Table and Type Protection | |
US20120255031A1 (en) | System and method for securing memory using below-operating system trapping | |
US20120254993A1 (en) | System and method for virtual machine monitor based anti-malware security | |
US20120254982A1 (en) | System and method for protecting and securing storage devices using below-operating system trapping | |
Gilbert et al. | Dymo: Tracking dynamic code identity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: American California Patentee after: McAfee limited liability company Address before: American California Patentee before: Mcafee Inc |