CN108027859B - 检测对计算设备中的进程的软件攻击 - Google Patents
检测对计算设备中的进程的软件攻击 Download PDFInfo
- Publication number
- CN108027859B CN108027859B CN201680053767.8A CN201680053767A CN108027859B CN 108027859 B CN108027859 B CN 108027859B CN 201680053767 A CN201680053767 A CN 201680053767A CN 108027859 B CN108027859 B CN 108027859B
- Authority
- CN
- China
- Prior art keywords
- virtual memory
- structural attributes
- memory regions
- processor
- memory region
- 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/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/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
-
- 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/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
各种实施例包括用于检测对在计算设备上执行的进程的软件攻击的方法。各种实施例方法可以包括:监测由所述进程使用的多个虚拟存储器区域的结构性属性;以及将所监测的结构性属性与所述多个VMR的预期结构性属性进行比较。各种实施例方法还可以包括:基于所监测的结构性属性与所述预期结构性属性之间的所述比较来确定所监测的结构性属性是否表示所述进程的异常行为。
Description
相关申请
本申请要求于2015年9月17日提交的标题为“Detecting Software Attacks onProcesses in Computing Devices”的美国临时申请No.62/219,970的优先权,其全部内容通过引用方式并入本文。
背景技术
包括台式计算机、膝上型计算机、平板计算机和诸如智能电话的等移动通信设备的各种计算设备根据存储在存储器中的软件指令来执行应用和系统进程。某些应用进程或系统服务进程可能对计算设备具有较高的访问权限(例如,根访问权限)。这些进程可能是控制劫持软件的目标,所述控制劫持软件旨在控制特权进程并执行恶意代码。控制劫持软件的目标可能是试图获取shell或窃取私人数据。
存在数种不同类型的控制劫持软件攻击。例如,“栈溢出”可能涉及创建栈缓存器溢出并执行插入到栈中的恶意代码。堆缓存器溢出类似于使堆溢出并导致执行插入在存储器中另一位置的恶意代码那样工作。面向返回的编程(return-oriented-programming)或攻击会产生堆溢出,其后是执行现有代码的选定部分,当其连接在一起时会实现恶意目的。
发明内容
各种实施例包括在计算设备上实现的用于检测对在计算设备上执行的进程的软件攻击的方法。各种实施例可以包括:监测由所述进程使用的多个虚拟存储器区域的结构性属性;将所监测的结构性属性与所述多个虚拟存储器区域的预期结构性属性进行比较;以及基于所监测的结构性属性与所述预期结构性属性之间的所述比较来确定所监测的结构性属性是否表示所述进程的异常行为。
一些实施例还可以包括响应于确定所监测的结构性属性表示异常行为而发起保护性动作。在一些实施例中,所述多个虚拟存储器区域的所监测的结构性属性包括;由所述进程使用的虚拟存储器区域的数量、所述多个虚拟存储器区域中的每一个的大小、所述多个虚拟存储器区域的地址空间布局改变、所述多个虚拟存储器区域的访问权限改变、和/或所述多个虚拟存储器区域的状态转换历史。
在一些实施例中,监测由所述进程使用的所述多个虚拟存储器区域的结构性属性可以包括:存储关于所述进程正在其中执行的当前虚拟存储器区域的信息;接收关于当前正由所述进程执行的指令的新信息;基于所述新信息来确定是否有过从当前虚拟存储器区域的转换;以及在确定有过从所述当前虚拟存储器区域的转换时,记录从所述当前虚拟存储器区域到新的虚拟存储器区域的所述转换。在一些实施例中,所述新信息包括程序计数器和进程标识符。
在一些实施例中,监测由所述进程使用的所述多个虚拟存储器区域的结构性属性可以包括:存储关于所述进程正在其中执行的当前虚拟存储器区域的信息;在所述多个虚拟存储器区域上实现一个或多个虚拟存储器区域跟踪策略;根据所述一个或多个虚拟存储器区域跟踪策略,确定是否有过从所述当前虚拟存储器区域的转换;以及在确定有过从所述当前虚拟存储器区域的转换时,记录从所述当前虚拟存储器区域到新的虚拟存储器区域的转换。在一些实施例中,所述一个或多个虚拟存储器区域跟踪策略包括由选择性跟踪、定期跟踪、机会性跟踪、以及基于寻呼错误的跟踪组成的组中的至少一个成员。
在一些实施例中,将所述多个虚拟存储器区域的所监测的结构性属性与预期结构性属性进行比较可以包括向所监测的结构性属性应用规则集合,其中,所述规则集合基于所述多个虚拟存储器区域的所述预期结构性属性。在一些实施例中,将所述多个虚拟存储器区域的所监测的结构性属性与预期结构性属性进行比较可以包括对所述多个虚拟存储器区域的所述预期结构性属性建立模型并且将所监测的结构性属性与所述模型进行比较。
此外的实施例包括一种处理器的计算设备,其包括存储器和处理器,所述处理器配置有执行上面概述的方法的操作的处理器可执行指令。此外的实施例包括其上存储有处理器可执行软件指令的非暂时性处理器可读存储介质,所述处理器可执行软件指令被配置为使得计算设备的处理器执行上面概述的方法的操作。此外的实施例包括一种计算设备,其包括用于执行上面概述的方法的操作的功能的单元。
附图说明
并入本文并构成本说明书的一部分的附图示出了示例实施例,所述附图与在本文给出的一般描述和详细描述一起用于解释权利要求书的特征。
图1A是根据各种实施例来使用的计算设备的框图。
图1B是根据各种实施例,用于分析虚拟存储器区域的结构性属性的观测器/分析单元的功能框图。
图2是根据各种实施例的进程地址空间的示图。
图3A-3B是示出堆缓存器溢出控制劫持软件攻击的示图。
图4A-4B是示出堆缓存器溢出控制劫持软件攻击的示图。
图5是示出编程返回劫持软件攻击的示图。
图6是根据各种实施例的计算设备中的虚拟存储器区域监测系统的框图。
图7是根据各种实施例的虚拟存储器区域转换跟踪器的组件框图。
图8是示出根据各种实施例,用于检测对在计算设备上执行的进程的软件攻击的方法的过程流程图。
图9是示出根据各种实施例,用于跟踪在计算设备上执行的进程的虚拟存储器区域转换的基于硬件的方法的过程流程图。
图10是示出根据各种实施例,用于跟踪在计算设备上执行的进程的虚拟存储器区域转换的基于软件的方法的过程流程图。
图11是适于实现一些实施例方法的移动通信设备的组件框图。
具体实施方式
将参考附图来详细描述各种实施例。尽可能地,在整个附图中将使用相同的附图标记来表示相同或相似的部件。对特定示例和实现方式的引用是用于说明性的目的,而并不旨在限制书面描述或权利要求书的范围。
如本文所使用的,术语“计算设备”指的是以下各项中的任意一项或全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理、台式计算机、膝上型计算机、平板计算机、服务器、智能电话、智能手表、掌上计算机、无线电子邮件接收机、启用多媒体因特网的蜂窝电话、无线游戏控制器、以及包括可编程处理器和存储器的类似个人或企业电子设备。
计算设备执行各种应用和系统进程,其中的一些可能具有对计算设备的低级别的特权访问,诸如根访问。这些进程可能受到控制劫持软件的攻击,这些攻击会试图以较低水平来控制计算设备。这些攻击的示例可能包括栈或堆缓存器溢出攻击和返回编程攻击。
每个进程具有特定的内部存储器结构,或者其内部状态的地理位置由操作系统来维护。例如,每个进程都具有进程地址空间,该进程地址空间对于用于该进程的各种指令和数据存储在存储器中何处进行布局。进程通常加载相同的库集合,并且库依赖性通常不会在运行时动态改变。另外,进程通常执行代码并以可预测的方式遍历其地址空间。对于设计为重复地处理类似请求集合的系统服务而言,这可能尤其如此。
当发生控制劫持软件攻击时,目标进程的内部存储器结构和遍历地址空间的行为可能改变。例如,恶意软件可能导致进程的控制流程发中的改变(即,执行不同的指令集合,或者以不同的顺序执行)。代码从其执行的存储器区域可能是不同的。
概括地说,各种实施例提供了用于监测进程的存储器结构的内部状态、或进程的地理,以检测由控制劫持软件攻击导致的异常执行行为的系统和方法。可以将进程的进程地址空间划分成数个虚拟存储器区域(VMR),所述VMR表示在所述进程地址空间内存储数据、函数或指令的、存储器的连续部分。计算设备中的观测器或分析器单元可以监测在计算设备上执行的进程的VMR的各种结构性属性。所监测的结构性属性可以包括由所述进程使用的VMR的数量、每个VMR的大小、VMR的地址空间布局改变、VMR的访问权限改变、以及VMR状态转换历史。结构性属性可以独立于在每个VMR内存储的数据。
随后,可以将该进程的VMR的所监测的结构性属性与所述进程的VMR的预期结构性属性进行比较。如果所监测的结构性属性偏离预期的结构性属性,这可能指示所述进程因恶意目的而被劫持。随后,计算设备可以采取某些保护性动作来响应,例如通过终止所述进程、发起反恶意软件程序、或者将操作系统的某些部分从所述进程锁定。
图1A是适于实现各种实施例的计算设备100的功能框图。计算设备100可以是台式计算机、膝上型计算机、平板计算机、任意类型的移动电子设备、服务器或任意类型的消费者电子设备或企业电子设备。计算设备100可以包括用于执行软件指令的中央处理单元(CPU)102以及用于存储代码和数据的存储器104。存储器104可以是存储处理器可执行指令的非暂时性计算机可读存储介质。存储器104可以存储操作系统106。数个系统进程108和/或应用进程110可以在操作系统106内的计算设备100上执行。进程108、110中的一些可以属于某种特权应用或系统服务,其具有对计算设备100的低级别(例如,根或基本输入/输出系统(BIOS)的较高访问权限。
计算设备100还可以包括在操作系统106内执行的观测器/分析器单元112,其监测进程108、110的VMR的属性。观测器/分析器单元112可以收集和监测VMR的结构性属性,并且将所监测的结构性属性与进程108、110的VMR的预期结构性属性进行比较。观测器/分析器单元112可以使用一种或多种技术用于监测和比较所述结构性属性,所述技术包括建模、机器学习和基于规则的分析。观测器/分析器单元112可以产生用于指示一个或多个进程108、110何时呈现异常行为的输出。
计算设备100还可以包括图1A中未示出的各种其他组件。例如,计算设备100可以包括数个输入、输出和处理组件,例如扬声器、麦克风、调制解调器、收发机、订户标识模块(SIM)卡、小键盘、鼠标、显示屏或触摸屏、各种连接端口、音频或图形处理器、额外的硬盘驱动器以及本领域已知的许多其他组件。
图1B示出了图1A中的观测器/分析器单元112的示例性逻辑组件和信息流。观测器/分析器单元112可以在诸如CPU 102等处理器内执行,并且可以被配置为使用行为分析技术来表征进程的VMR的预期结构性属性和所观测的结构性属性。观测器/分析器单元112可以包括观测器单元120、提取器单元122、分析器单元124和表征单元126。
在各种实现中,观测器/分析器单元112的全部或一部分可以实现为观测器单元120、提取器单元122、分析器单元124和表征单元126的一部分。单元120-126中的每个可以是以软件、硬件或其组合实现的线程、进程、守护进程、子系统或组件。在各种实现中,单元120-126可以在以下各项中实现:在操作系统的一部分内(例如,在内核内、在内核空间内、在用户空间中等)、在分开的程序或应用内、在专用硬件缓存器内或处理器内、或其任意组合。在一些实现中,单元120-126中的一个或多个可以被实现为在计算设备100的一个或多个处理器上执行的软件指令。
表征单元126可以被配置为表征进程的行为和由所述进程所使用的VMR的预期结构性属性。表征单元126可以使用特征化的行为和预期的结构性属性,基于所观测的进程的行为来生成至少一个模型。表征单元126可以将观所察的行为与行为模型进行比较。表征单元126还可以聚合由其他单元进行的、所观测的进程的行为与相应的行为模型的比较。表征单元126可以基于所聚合的比较来确定所观测的进程是否表现异常。表征单元126可以使用由观测器单元120收集的信息来确定由所观测的进程使用的VMR的结构性属性,并且使用任意或所有这样的信息来表征所观测进程的行为。
观测器单元120可以被配置为观测/监测进程的行为,并且基于所述观测/监测来确定所述VMR的结构性属性。结构性属性可以包括由进程使用的VMR的数量、每个VMR的大小、VMR的地址空间布局改变、VMR的访问权限改变以及VMR状态转换历史。
观测器单元120可以将所收集的所观测到的行为数据(包括观测到的结构性属性)传输(例如,经由存储器写入操作、函数调用等)给提取器单元122。提取器单元122可以被配置为接收或从日志文件中取回所观测的行为数据,并基于所观测的结构性属性,使用该信息来生成一个或多个行为向量。每个行为向量可以以值或向量数据结构来简洁地描述所观测的结构性属性。在一些实现中,矢量数据结构可以包括一系列数字,其中的每一个表示由观测器单元120收集的实时数据的部分或完整表示。
在一些实现中,提取器单元122可以被配置为从由观测器单元120生成的日志文件生成行为向量。行为向量可以用作使得行为分析系统(例如,分析器单元124)能够快速识别、标识或分析实时进程行为和VMR结构性属性的标识符。在一些实现中,提取器单元122可以被配置为生成大小为“n”的行为向量,每个行为向量将实时进程行为和VMR结构性属性映射到n维空间中。在示例性实现中,提取器单元122可以被配置为生成行为向量以包括可以向表征单元126中的特征/决定节点输入的信息,以生成对关于所述进程的VMR结构性属性的一个或多个特征的查询的回答,所述一个或多个特征表征所述进程的行为。
提取器单元122可以向分析器单元124发送所生成的行为向量(例如,经由存储器写入操作、函数调用等)。分析器单元124可以被配置为将所述行为向量应用于分类器模型以表征所述进程的所观测的行为,例如,由所述进程使用的VMR的所监测结构性属性是否指示所述进程是合法的、非合法的还是异常的。
分类器模型可以是包括可以用于评估进程活动的特定特征或方面的数据和/或信息结构(例如,特征向量、行为向量、组件列表等)的行为模型。分类器模型还可以包括用于监测由进程使用的VMR的数量的判定标准。分类器模型可以预先安装在计算设备100上、从网络服务器下载或接收、在观测器单元120中生成、或其任意组合。分类器模型可以通过使用行为建模技术、机器学习算法或生成分类器模型的其他方法来生成。
在一些实现中,分类器模型可以特定于某些类型的进程(例如,应用进程与系统进程)。这样的分类器模型可以包括聚焦的数据模型,其包括/仅测试被确定为与评估特定进程的行为最相关的、特定于进程的特征/条目。
在一些实现中,分析器单元124可以被配置为调整分析器单元124评估的进程的特征的粒度或细节水平,特别是当对进程行为的分析是不确定的时。例如,分析器单元124可以被配置为响应于确定其不能表征进程的行为而通知观测器单元120。作为响应,观测器单元120可以基于从分析器单元124发送的通知(例如,基于对所观测的行为特征的分析结果的通知)来改变所监测的VMR结构性属性和/或调整其观测的粒度(即,以其来观测所观测的行为特征的细节水平和/或频率)。
观测器单元120还可以观测新的或额外的VMR结构性属性,并且向提取器单元122和分析器单元124发送新的/额外的所观测的行为数据以用于进一步的分析/分类。观测器单元120和分析器单元124之间的这种反馈通信可以使得观测器/分析器单元112能够递归地增加观测的粒度(即,进行更详细的和/或更频繁的观测)或改变所观测的实时数据。观测器/分析器单元112可以增加观测的粒度或改变所观测的实时数据,直到分析器单元124可以将进程的行为评估和表征为在可靠性范围内或达到门限可靠性水平。这样的反馈通信还可以使得观测器/分析器单元112能够在不消耗过量的处理、存储器或能量资源的情况下调整或修改行为向量和分类器模型。
在各种实现中,分类器模型可以是基于进程行为的特定特征的增强型决策树集合。增强型决策树是一级决策树,其可能只具有一个节点(即一个测试问题或测试条件)和权重值,并且可能适用于数据/行为的轻的、非处理器密集型二进制分类。向增强型决策树应用行为向量可能得到二元应答(例如,1或0、是或否等)。例如,由增强型决策树测试的问题/条件可以包括:由设备麦克风检测到的词语或声音是否是RF敏感环境的特性,或者由设备相机捕获的另一设备的图像是否可识别为产生射频发射的危害,对这些问题的应答可能是二元的。增强型决策树是有效的,这是因为这些模型不需要大量的处理资源来生成二元应答。增强型决策树也可以是高度可并行化的,这使得能够并行/同时应用或测试多个树(例如,由单元、计算设备或系统中的多个核心或处理器)。
图2示出了可以在计算设备100上执行的进程(例如,进程108、110中的一个)的进程地址空间200的示例。计算设备上的操作系统通常为在计算设备上执行的每个活动进程建立单独的地址空间。进程地址空间200可以包括若干地址范围或虚拟存储器区域(VMA)。每个VMA可以用于将进程的给定部分映射以及加载至存储器中。取决于由进程加载了多少代码、使用了多少栈和堆以及加载了多少库,进程地址空间200可能是稀疏或密集的。
进程地址空间200可以包含用于用户栈204的VMA。用户栈204是用于存储由进程创建的临时变量的存储器区域。用户栈204可以被构造为先进后出(FILO)数据结构,其中变量从下向上存储在所述栈中,并且首先从栈顶部弹出。进程地址空间200还可以包括用于libc库208和其他共享库206的VMA。库206、208可以包含数个进程使用的数个共享函数。每个进程可以将库206、208的副本加载到其地址空间中。进程地址空间200还可以包括用于堆210的VMA,其可以用于存储全局变量和其他信息。例如,可以使用malloc()和free()函数来向堆210中添加和从堆210中移除信息。进程地址空间200还可以包括用于正文212的VMA,所述正文212可以包括所述进程的主体代码。
可以将VMA细分成多个虚拟存储器区域(VMR),其中每个VMR可以是存储数据、指令或函数的VMA内的连续范围的地址。例如,用于libc库208的VMA可以包含VMR 208a,所述VMR208a例如可以包含libc库208中的特定函数。
计算设备的CPU可以使用程序计数器(PC)214,所述程序计数器PC包含进程当前正在执行的指令的地址。随着地址空间的不同部分被调用,PC 214可以围绕进程地址空间200跳转。例如,当函数被调用时,PC 214可以在正文212中开始并移动到libc库208。随后,PC214可以移动到栈204以读取或写入在该函数内使用的临时变量,并随后移动返回正文212。
进程地址空间200可以遭受若干不同类型的控制劫持软件攻击,这些攻击在图3A-5中示出。一种类型的攻击是栈缓存器溢出攻击或“栈溢出”攻击。此处显示了用于示出栈缓存器溢出攻击的示例性代码:
图3A示出了当调用foo函数时栈302的可以加载的内容。栈302可以包括:被分配用于变量buf[128]的存储器,随后是函数的返回地址、栈帧指针和输入str参数。流程图304示出了当使用栈302从进程的正文调用foo函数时进程的正常行为。所述进程可以在正文中开始,并随后移动到libc库的VMR(libc.R1)以调用strcpy函数、移动到libc库的另一VMR(libc.R3)以调用printf函数,并随后移动回到所述进程的正文。
在栈缓存器溢出攻击中,攻击者的目标是:使栈上的缓存器溢出,将某些代码注入所述栈,并修改所述栈上的返回地址以跳转到所注入的代码。图3B示出了已经被恶意软件危害的栈312。恶意软件可以利用大于所分配的变量buf[128]的字符串变量来调用foo函数,以导致缓存器溢出,所述缓存器溢出覆盖栈312的其他部分或VMR。输入变量可以包含注入的代码(即Exec(“/bin/sh”))和指向所注入的代码的返回地址。因此,当程序计数器到达栈312中的返回地址时,其跳转到注入的代码并且将其执行。
流程图314显示当使用栈312从进程的正文调用foo函数时进程的异常行为。所述进程可以在正文中开始,并随后移动到libc库的VMR(libc.R1)以调用strcpy函数。但是,strcpy函数的返回地址已被缓存器溢出覆盖,并且其现在指向栈312中的注入的代码(Exec(“/bin/sh”))。程序计数器将跳转到所注入的代码并且将其执行。
另一种类型的控制劫持攻击是堆缓存器溢出攻击。此处显示了用于示出堆缓存器溢出攻击的示例性代码:
图4A示出了当调用do_compare函数时堆402的可以加载的内容。堆402可以包括:被分配用于变量buf[128]的存储器,随后是指向函数的指针。流程图404显示了当使用堆402从进程的正文调用do_compare函数时所述进程的正常行为。所述进程可以在正文中开始,并随后移动到libc库的VMR(libc.R1)以调用strcpy函数,并随后移回到正文的另一个VMR以执行函数的其余部分。
在堆缓存器溢出攻击中,攻击者的目标是:使堆上分配的缓存器溢出,在存储器的另一部分中注入某些代码,并覆盖函数指针以将所述函数调用重定向至所注入的代码。图4B示出了已经被恶意软件危害的堆412。恶意软件可以利用大于所分配缓存器的char变量来调用do_compare函数,以导致缓存器溢出,所述缓存器溢出利用指向所注入的代码的另一函数指针来覆盖存储在堆412中的函数指针。因此,当程序计数器到达堆412中的函数指针时,其跳转到所注入的代码并且将其执行。
流程图414显示了当使用堆412从进程的正文调用do_compare函数时进程的异常行为。所述进程可以在正文中开始,并随后移动到libc库的VMR libc.R1)以调用strcpy函数。然而,存储在堆412中的函数指针现在指向所注入的代码而不是回到正文。程序计数器将跳转到所注入的代码并且将其执行。
另一种类型的控制劫持攻击是编程返回攻击(return-on-programming attack),其将计算设备中的小块预先存在的代码串在一起以执行恶意函数。小块的现有代码可能被称为编程返回(ROP)小工具。ROP小工具是以返回指令结束的微小的代码序列,并可能位于共享库或由进程加载的进程地址空间的正文中。ROP小工具可以按特定序列顺序来调用以获取shell或完成其他恶意任务。
图5示出了已经被危害为顺序地调用数个ROP小工具(gadget)的栈502。可以经由类似于参考图3B所描述的缓存器溢出来危害栈502。在这种情况下,栈502被重写为包括以特定顺序的到数个ROP小工具的地址以及伪栈帧指针。流程图504显示了当从栈502执行时该进程的异常行为。该进程可以在正文中开始,并然后移动到存储在栈502中的地址。然而,栈502中的顶部地址现在指向ROP小工具1,所述ROP小工具1可能位于libc库中的VMR中(例如libc.Ri)。在执行ROP小工具1之后,程序计数器返回到栈502并随后移动到ROP小工具2,所述ROP小工具2可能位于libc库中的另一VMR中(例如libc.Rk)。计算设备可以按照每个ROP小工具被布置在栈502中的顺序来执行所述每个ROP小工具。
其他类型的控制劫持攻击可以包括基于整数溢出的攻击,其可以类似于栈或堆缓存器溢出攻击来工作。用于函数中整数变量的缓存器分配可能被分配为小于所述变量,这会导致溢出。可能将函数指针插入到所述溢出中,所述指针指向注入的恶意代码。
所有这些类型的控制劫持软件攻击通常改变进程分配和遍历所述进程地址空间的方式,例如通过改变栈、堆、或指向地址空间的各部分的指针。进程通常可能具有相当可预测的例程,因此可能具有用于分配或遍历所述进程地址空间的可预测行为。因此,可以监测进程的地址空间并且将其与预期行为进行比较,并且可以检测指示控制劫持攻击的异常行为。
图6示出了计算设备中的VMR监测系统600的示例性实现的框图。VMR监测系统600可以包括观测器/分析器单元112,所述观测器/分析器单元112将由进程使用的数个VMR的所监测结构性属性602至610作为输入,并且将所监测的结构性属性与所述进程的VMR的预期结构性属性进行比较。所述比较和分析可以基于规则集合,或者可以通过对VMR的预期结构性属性和所述进程的地址空间建立模型而通过机器学习来完成。如果所监测的结构性属性与预期的结构性属性不匹配,则观测器/分析器单元112可以将输出614发送到计算设备中的其他组件。输出614可以包括用于采取保护性动作的指令,其例如终止所述进程、将操作系统的某些部分从所述进程锁定、发起反恶意软件程序或其他动作。
进程可以具有包括数个VMR的相关联的地址空间。这些VMR可能包括栈、堆、库和进程的正文的一部分。例如,每个VMR可以对应于存储在进程地址空间中的数据或指令的函数、变量、指针或其他离散部分。
VMR的结构性属性可以包括定义或描述VMR的结构、分配、地理或随时间推移的状态转换历史的属性。结构性属性可能与数据无关。换句话说,存储在VMR内的实际数据或内容可能不被包括作为结构性属性,并且VMR的结构性属性的改变可能不取决于存储在VMR中的数据的改变。所监测的结构性属性602至610是可以由观测器/分析器单元112监测的各种结构性属性的非限制性示例。
一个所监测的结构性属性602可以是地址空间中存在的VMR的数量。在正常执行中,进程通常可以使用一定数量的VMR。控制劫持攻击可能涉及分配新的存储器部分以存储外部或注入的代码或数据。因此,VMR数量的改变可能指示由控制劫持软件攻击导致的异常行为。可以通过内核映射器来监测VMR的数量,所述内核映射器每当新VMR被创建时调用函数(例如,do_mmap())。
另一个所监测的结构性属性604可以是每个VMR的大小。例如,被分配为由进程的某些变量使用的存储器在多次执行之间可能是相同的,因此VMR大小的改变可能指示由控制劫持软件攻击导致的异常行为(例如,人为创建缓存器溢出的攻击)。VMR的大小可以通过内核映射器、对malloc()函数的调用、以及在进程地址空间的库中对新函数的添加来监测。
另一个所监测的结构性属性606可以是所述进程的地址空间布局改变。进程通常可以利用特定的内部结构来布置其地址空间,使得VMR相对于彼此位于相同的位置,并且所述布局在多次执行之间不会改变。因此,地址空间布局的改变可能指示由控制劫持软件攻击导致的异常行为。可以通过内核映射器来监测进程的地址空间布局改变。
另一个所监测的结构性属性608可以是VMR的访问权限改变。每个VMR可以由进程分配访问权限,所述访问权限通常不会在多次执行之间发生改变。因此,VMR访问权限的改变可能表示由控制劫持软件攻击导致的异常行为。VMR的访问权限改变可以通过内核虚拟存储器管理器来监测,只要VMR权限发生改变,就可以调用所述内核虚拟存储器管理器。
另一个被监测的结构性属性610可以是进程随着时间的VMR状态转换历史。所述进程可以按照可预测的顺序在各种VMR中导航,所述顺序在多次执行之间不改变。因此,当进程在VMR之间进行一系列非预期的状态转换时,这可能表示由控制劫持软件攻击导致的异常行为。VMR状态转换历史可以通过基于硬件或基于软件的解决方案来监测,所述解决方案参考图7、9和10进一步详细描述。
图7示出了用于监测在计算设备上执行的进程的VMR转换的硬件实现。系统700包括CPU核心702,所述核心702执行所述进程并维护所述进程的程序计数器。系统700还可以包括VMR内核驱动器704,其维持在计算设备上执行的各种进程的VMR的存储器范围。系统700还可以包括VMR跟踪器硬件框706。VMR跟踪器硬件框706可以包括VMR转换记录器712,其从CPU核心702接收程序计数器以及从VMR内核驱动器704接收当前进程ID(PID)和VMR范围。VMR跟踪器硬件框706可以存储数个VMR表710,所述VMR表710可以包括用于在由PID索引的计算设备上执行的每个进程的表。每个表可以存储由所述进程分配的VMR和所述进程正在其中执行的最后已知的VMR。
定期地,VMR转换记录器712可以接收VMR范围、PID和/或程序计数器作为输入。这些输入标识要监测的进程和由程序计数器所指向的当前指令。VMR转换记录器712可以将输入信息与VMR表710进行比较,以确定所监测的进程是否仍处于相同的VMR中或已转换为不同的VMR(例如,来自进程的正文的对库函数的函数调用)。如果有过VMR转换,则VMR转换记录器712可以记录所述VMR转换并且将其存储在数据缓存器708中。还可以将所述VMR转换和PID发送到VMR内核驱动器704。以这种方式,VMR跟踪器硬件框706可以检测并监测在计算设备上执行的进程中的VMR转换。
尽管VMR跟踪器硬件块706是用于监测VMR状态转换历史的硬件实现,但VMR状态转换历史可以替代地通过软件来监测。对VMR状态转换的持续软件监测可能是资源密集型的,并且可能影响计算设备上的其他进程的操作。然而,存在以非连续方式来监测VMR状态转换的若干方式,所述方式可以单独或组合实现。
例如,在选择性跟踪VMR状态转换中,可以仅针对感兴趣的某些执行进程来发起监测。可能不监测其他执行进程。跟踪软件可以监测感兴趣的进程的程序计数器。在定期跟踪中,跟踪软件可以根据定时器线程来定期地采样所述进程的程序计数器。在多CPU核心系统中,计时器线程可能连接到其上未运行进程的CPU。定时器线程的时段可以是可调的,使得所述定期可以适应特定的进程行为,并且减少丢失VMR状态转换的机会。
在机会性跟踪中,VMR内核驱动器可以接收对所述进程正在其上执行的CPU的控制。在这种场景中,VMR内核驱动器可以对程序计数器进行采样并跟踪VMR状态转换。例如,VMR内核驱动器可以在中断到达、上下文切换、信号生成和系统调用期间接收处理器控制。在基于寻呼错误的跟踪中,跟踪软件可以将非当前VMR设置为不可执行的(例如,只读),并且每当该进程跳转到新的VMR时,将存在寻呼错误。跟踪软件可以在每当检测到寻呼错误时记录所述状态转换,将新的VMR设置为可执行的,并且将旧的VMR设置为不可执行的。
图8示出了根据各种实施例,用于检测对在计算设备上执行的进程的软件攻击的方法800。方法800可以由计算设备的处理器(例如,图1A中的计算设备100的CPU 102)实现。
在框802中,处理器可以监测在计算设备上执行的进程的多个虚拟存储器区域的结构性属性。所述进程可能具有可能被分成数个VMR的相关联的地址空间。VMR可以是存储数据、指令或函数的存储器的连续部分,所述数据、指令或函数可以在栈、堆、库、正文或所述进程的地址空间的其他部分中找到。所监测的结构性属性可以包括由所述进程使用的VMR的数量、每个VMR的大小、VMR的地址空间布局改变、VMR的访问权限改变、以及VMR状态转换历史。
在框804中,处理器可以将多个VMR的所监测结构性属性与所述进程的多个VMR的预期结构性属性进行比较。计算设备可能先前在分配、使用VMR时以及在VMR之间转换时分析了所述进程的预期行为(即,在弩具有来自控制劫持攻击的干扰的情况下执行),并且已经构建了定义用于所述进程的VMR的预期结构性属性的模型或规则集合。处理器可以使用数学模型、基于规则的比较或其他方法来将所监测的结构性属性与预期的结构性属性进行比较。
在确定框806中,处理器可以基于所监测的结构性属性和预期的结构性属性之间的所述比较,来确定进程的多个VMR的所监测的结构性属性是否表示异常行为。例如,处理器可以使用数学模型来生成表示所监测的结构性属性和预期的结构性属性之间的相似性的值,并且将所述值与表示可接受的相似度的门限进行比较。如果所述值低于门限,则所监测的结构性属性可能表示异常行为。在另一示例中,处理器可以向所监测的结构性属性应用规则集合,并确定所监测的结构性属性是否满足所有规则。如果所监测的结构性属性不满足一个或多个规则,则所监测的结构性属性可能表示异常行为。
响应于确定所监测的结构性属性不表示异常行为(确定框806=“否”),只要所述进程正在执行,则处理器可以继续监测所述多个VMR的结构性属性(即,返回到框802中的操作)。响应于确定所监测的结构性属性表示异常行为(确定框806=“是”),处理器可以在框808中发起保护性动作。例如,处理器可以终止所述进程,将操作系统的某些部分从所述进程锁定、发起反恶意软件程序或其他操作。以这种方式,方法800提供了一种通过在进程的地址空间中监测VMR的结构性属性来监测对进程的控制劫持软件攻击的方式。
图9示出了根据各种实施例,用于对在计算设备上执行的进程的VMR状态转换历史进行基于硬件的跟踪的方法900。方法900可以由计算设备的处理器(例如,图1A中的计算设备100的CPU 102)或由计算设备中的VMR跟踪器硬件中的处理器(例如,图7中的VMR跟踪器硬件框706)。
在框902,处理器可以存储关于计算设备上的进程正在其中执行的当前VMR的信息。所述进程可以使用包括数个VMR的地址空间,所述VMR包括表示用于存储数据、函数或指令的存储器的连续部分。进程的程序计数器可以指向所述进程正在其中执行的当前VMR。所存储的信息可以包括处理器的PID、进程的地址空间中的所有VMR的存储器范围以及所述进程正在其中执行的当前VMR(例如,进程的正文中的函数)。例如,该信息可以以表格的形式来存储,所述处理器正在监测的每个进程都有一个所述表格。所述信息可以存储在VMR跟踪器硬件中的数据存储中。
在框904,处理器可以接收关于当前正由所述进程执行的指令的新信息。例如,所述处理器可能偶尔从所述进程在其上执行的CPU接收更新的程序计数器。处理器还可以从VMR内核驱动器接收所述进程的PID和VMR的当前存储器范围。
在确定框906中,处理器可以基于新信息来确定所述进程是否经历了VMR状态转换。处理器可以使用程序计数器、PID和VMR的当前存储器范围来确定所述进程是否已经转换到另一VMR。例如,如果进程的最后存储的当前VMR在所述进程的正文中,则处理器可以根据程序计数器来确定所述进程是否仍然在相同的VMR内执行,还是已经转换到另一VMR(例如,到存储在库中的函数的函数调用)。
响应于确定进程未经历VMR状态转换(确定框906=“否”),处理器可以在框904中继续接收关于所述进程当前正在执行的指令的新信息。响应确定所述进程经历了VMR状态转换(确定框906=“是”),处理器可以在框908中记录VMR状态转换。例如,处理器可以存储所述进程从其转换的VMR以及所述处理器所转换到的VMR。随后,处理器可以在框902中存储新的当前VMR信息。以这种方式,方法900提供用于跟踪进程的VMR状态转换历史的、基于硬件的实现。
图10示出了根据各种实施例,用于在计算设备上执行的进程的基于软件的跟踪VMR状态转换历史的方法1000。方法1000可以由计算设备的处理器(例如,图1A中的计算设备100的CPU 102)来实现。
在框1002,处理器可以存储关于计算设备上的进程正在其中执行的当前VMR的信息。所述进程可以使用地址空间,所述地址空间包括表示用于存储数据、函数或指令的存储器的连续部分的VMR的数量。用于所述进程的程序计数器可以指向所述进程正在其中执行的当前VMR。所存储的信息可以包括:处理器的PID、所述进程的地址空间中的所有VMR的存储器范围、以及所述进程正在其中执行的当前VMR(例如,进程的正文中的函数)。例如,该信息可以以表格的形式存储,所述处理器正在监测的每个进程都对应一个表格。
在框1004,处理器可以在所述进程上实现一个或多个VMR跟踪策略。VMR跟踪策略的示例可以包括:选择性跟踪(仅跟踪特定感兴趣的进程);定期跟踪(定期收集VMR状态转换信息);机会性跟踪(当VMR内核驱动器获得了对在其上执行所述进程的处理器的控制时,收集VMR状态转换信息);以及基于寻呼错误的跟踪(将所有非当前VMR设置为不可执行,并在发生VMR状态转换时跟踪寻呼错误)。
在确定框1006中,处理器可以确定所述进程是否经历了VMR状态转换。处理器可以根据一个或多个VMR转换跟踪策略来确定是否发生了VMR状态转换。例如,当进程的程序计数器指向新的VMR时,或者在基于寻呼错误的跟踪中是否有过寻呼错误时,可以检测到VMR状态转换。
响应于确定所述进程没有经历VMR状态转换(确定框1006=“否”),处理器可以继续在框1004中对所述进程实现一个或多个VMR跟踪策略。响应于确定所述进程已经经历了VMR状态转换(确定框1006=“是”),处理器可以在框1008中记录VMR状态转换。例如,处理器可以存储所述进程从其转换的VMR以及所述进程转换成到的VMR。随后,处理器可以在框1002中存储新的当前VMR信息。以这种方式,方法1000提供用于跟踪进程的VMR状态转换历史的基于软件的实现。
各种实施例可以以各种计算设备中的任意一种来实现,图11中示出了所述计算设备的示例(例如,通信设备1100)。在各种实现中,通信设备1100可以与参考图1A在本文中描述的计算设备100类似。如此,通信设备1100可以实现图8-10中的方法800、900和1000中的一些或全部。
通信设备1100可以包括耦合到触摸屏控制器1104和内部存储器1106的处理器1102。处理器1102可以是被指定用于一般或特定处理任务的一个或多个多核集成电路。内部存储器1106可以是易失性或非易失性存储器,并且也可以是安全的和/或加密的存储器,或不安全的和/或未加密的存储器,或是其任意组合。触摸屏控制器1104和处理器1102也可以耦合到触摸屏面板1112,所述触摸屏面板1112例如电阻式传感触摸屏、电容式传感触摸屏、红外传感触摸屏等。另外,通信设备1100的显示器不需要触摸屏能力。
通信设备1100可以具有蜂窝网络收发机1108,所述蜂窝网络收发机1108耦合到处理器1102和天线1110并且被配置为发送和接收蜂窝通信。收发机1108和天线1110可以与本文提到的电路一起使用以实现各种实施例方法。通信设备1100可以包括耦合到收发机1108和/或处理器1102的一个或多个SIM卡1116,并且可以如本文描述地进行配置。通信设备1100可以包括蜂窝网络无线调制解调器芯片1117,其启用经由蜂窝网络的通信并且可以耦合到处理器。
通信设备1100还可以包括用于提供音频输出的扬声器1114。通信设备1100还可以包括壳体1120,所述壳体1120由塑料、金属或材料的组合构成,用于容纳本文所讨论的全部或部分组件。通信设备1100可以包括耦合到处理器1102的电源1122,其例如一次性或可充电电池。可充电电池还可以耦合到外围设备连接端口,以从通信设备1100外部的源接收充电电流。通信设备1100还可以包括用于接收用户输入的物理按钮1124。通信设备1100还可以包括用于打开和关闭通信设备1100的电源按钮1126。
前述方法描述和过程流程图仅是作为说明性示例而被提供的,并且不旨在要求或暗示各种实施例和实现中的操作必须以所呈现的顺序来执行。如本领域技术人员将理解的,前述实施例和实现中的操作的顺序可以以任何顺序来执行。诸如“之后”、“随后”、“接下来”等词语并不旨在限制步骤的顺序;这些词语仅用于贯穿对方法的描述来引导读者。此外,以单数形式对权利要求要素的任何引用(例如,使用冠词“一”、“一个”或“所述”),不应被解释为将该要素限制为单数。
结合本文所公开的实施例和实现所描述的各种示例性的逻辑框、单元、电路和算法操作均可以实现成电子硬件、计算机软件或二者的组合。为了清楚地表示硬件和软件之间的这种可交换性,上面对各种示例性的组件、框、单元、电路和操作均围绕其功能进行了总体描述。至于这种功能是实现成硬件还是实现成软件,取决于具体的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个具体应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为导致背离权利要求书的保护范围。
结合本文公开的实施例和实现描述的用于实现各种说明性逻辑器件、逻辑框、单元和电路的硬件可以在各种处理器或处理器和电路的组合中实现或由其执行。可以实现各种实施例的处理器和电路的示例包括被设计为执行本文所描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)以及其他可编程逻辑器件、分立门或晶体管逻辑器件、分立硬件组件或其任意组合。通用处理器可以是微处理器,或者,处理器可以是任意传统的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP内核的结合、或者任意其它此种结构。或者,一些操作或方法可以由特定于给定功能的电路来执行。
在一个或多个示例实施例和实现中,所描述的功能可以以硬件、软件、固件或其任意组合来实现。如果以软件实现,则可以将所述功能作为一个或多个指令或代码存储在非暂时性计算机可读存储介质或非暂时性处理器可读存储介质上。本文公开的方法或算法的操作可以体现在驻留在非暂时性计算机可读或处理器可读存储介质上的处理器可执行软件单元中。非暂时性计算机可读或处理器可读存储介质可以是可以用于以指令或数据结构的形式存储期望的程序代码并且可以由计算机或处理器存取的任意存储介质。通过示例而非限制的方式,这种非暂时性计算机可读或处理器可读存储介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储器,以及磁盘存储器或其他磁存储设备。如本文使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字通用光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。本文描述的存储器的组合也包括在非暂时性计算机可读和处理器可读介质的范围内。另外,方法或算法的操作可以作为代码和/或指令的一个或任意组合或集合驻留在非临时性处理器可读存储介质和/或计算机可读存储介质上,其可以并入计算机程序产品。
提供各种实施例和实现的先前描述,以使得本领域的任意技术人员能够进行或使用权利要求。对于本领域技术人员而言,对这些实施例的各种修改将是显而易见的,并且在不脱离权利要求书的范围的情况下,本文中定义的一般原理可以应用于一些实施例。因此,本公开内容不旨在受限于本文所示的实施例和实现,而是要符合与以下权利要求书和本文公开的原理和新颖性特征相一致的最广范围。
Claims (28)
1.一种用于检测对在计算设备上执行的进程的软件攻击的方法,包括:
监测由所述进程使用的多个虚拟存储器区域的结构性属性,其中,所监测的结构性属性包括:
所述多个虚拟存储器区域的地址空间布局;
所述多个虚拟存储器区域中包括的虚拟存储器区域的数量;或者
所述多个虚拟存储器区域中包括的虚拟存储器区域的大小;
将所监测的结构性属性与所述多个虚拟存储器区域的预期结构性属性进行比较;以及
基于所监测的结构性属性与所述预期结构性属性之间的所述比较来确定所监测的结构性属性是否表示所述进程的异常行为。
2.根据权利要求1所述的方法,还包括:
响应于确定所监测的结构性属性表示异常行为而发起保护性动作。
3.根据权利要求1所述的方法,其中,监测由所述进程使用的所述多个虚拟存储器区域的所述结构性属性还包括:
监测所述地址空间布局的改变;
监测所述多个虚拟存储器区域的访问权限的改变;或者
监测所述多个虚拟存储器区域的状态转换历史。
4.根据权利要求1所述的方法,其中,监测由所述进程使用的所述多个虚拟存储器区域的所述结构性属性包括:
存储关于所述进程正在其中执行的当前虚拟存储器区域的信息;
接收关于当前正由所述进程执行的指令的新信息;
基于所接收的新信息来确定是否有过从所述当前虚拟存储器区域的转换;以及
响应于确定有过从所述当前虚拟存储器区域的所述转换,记录从所述当前虚拟存储器区域到新的虚拟存储器区域的所述转换。
5.根据权利要求4所述的方法,其中,接收关于由所述进程当前正在执行的所述指令的所述新信息包括接收程序计数器值和进程标识符。
6.根据权利要求1所述的方法,其中,监测由所述进程使用的所述多个虚拟存储器区域的结构性属性包括:
存储关于所述进程正在其中执行的当前虚拟存储器区域的信息;
在所述多个虚拟存储器区域上实现一个或多个虚拟存储器区域跟踪策略;
基于所述一个或多个虚拟存储器区域跟踪策略,确定是否有过从所述当前虚拟存储器区域的转换;以及
响应于确定有过从所述当前虚拟存储器区域的所述转换,记录从所述当前虚拟存储器区域到新的虚拟存储器区域的转换。
7.根据权利要求6所述的方法,其中,在所述多个虚拟存储器区域上实现所述一个或多个虚拟存储器区域跟踪策略包括在所述多个虚拟存储器区域上实现选择性跟踪、定期跟踪、机会性跟踪、或者基于寻呼错误的跟踪。
8.根据权利要求1所述的方法,其中,将所述多个虚拟存储器区域的所监测的结构性属性与所述预期结构性属性进行比较包括:向所监测的结构性属性应用规则集合,其中,所述规则集合是基于所述多个虚拟存储器区域的所述预期结构性属性的。
9.根据权利要求1所述的方法,其中,将所述多个虚拟存储器区域的所监测的结构性属性与所述预期结构性属性进行比较包括:
对所述多个虚拟存储器区域的所述预期结构性属性建立模型以生成模型;并且
将所监测的结构性属性与所述模型进行比较。
10.一种计算设备,包括:
存储器,其包括多个虚拟存储器区域;以及
处理器,其耦合到所述存储器并且被配置有处理器可执行指令以执行以下操作:
监测由在所述计算设备上执行的进程使用的所述多个虚拟存储器区域的结构性属性,其中,所监测的结构性属性包括:
所述多个虚拟存储器区域的地址空间布局;
所述多个虚拟存储器区域中包括的虚拟存储器区域的数量;或者
所述多个虚拟存储器区域中包括的虚拟存储器区域的大小;
将所监测的结构性属性与所述多个虚拟存储器区域的预期结构性属性进行比较;以及
基于所监测的结构性属性与所述预期结构性属性之间的所述比较来确定所监测的结构性属性是否表示所述进程的异常行为。
11.根据权利要求10所述的计算设备,其中,所述处理器还配置有处理器可执行指令以执行以下操作:
响应于确定所监测的结构性属性表示异常行为而发起保护性动作。
12.根据权利要求10所述的计算设备,其中,所述处理器还配置有处理器可执行指令,使得监测由所述进程使用的所述多个虚拟存储器区域的所述结构性属性是通过以下操作来执行的:
监测所述地址空间布局的改变;
监测所述多个虚拟存储器区域的访问权限的改变;或者
监测所述多个虚拟存储器区域的状态转换历史。
13.根据权利要求10所述的计算设备,其中,所述处理器还配置有处理器可执行指令,以通过以下操作来监测由所述进程使用的所述多个虚拟存储器区域的结构性属性:
存储关于所述进程正在其中执行的当前虚拟存储器区域的信息;
接收关于当前正由所述进程执行的指令的新信息;
基于所接收的新信息来确定是否有过从当前虚拟存储器区域的转换;以及
响应于确定有过从所述当前虚拟存储器区域的所述转换,记录从所述当前虚拟存储器区域到新的虚拟存储器区域的所述转换。
14.根据权利要求13所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,使得接收关于由所述进程当前正在执行的所述指令的所述新信息包括接收程序计数器值和进程标识符。
15.根据权利要求10所述的计算设备,其中,所述处理器还配置有处理器可执行指令以执行操作,使得监测由所述进程使用的所述多个虚拟存储器区域的结构性属性包括:
存储关于所述进程正在其中执行的当前虚拟存储器区域的信息;
在所述多个虚拟存储器区域上实现一个或多个虚拟存储器区域跟踪策略;
基于所述一个或多个虚拟存储器区域跟踪策略,确定是否有过从所述当前虚拟存储器区域的转换;以及
响应于确定有过从所述当前虚拟存储器区域的所述转换,记录从所述当前虚拟存储器区域到新的虚拟存储器区域的转换。
16.根据权利要求15所述的计算设备,其中,所述处理器还配置有处理器可执行指令以执行操作,使得在所述多个虚拟存储器区域上实现所述一个或多个虚拟存储器区域跟踪策略包括在所述多个虚拟存储器区域上实现选择性跟踪、定期跟踪、机会性跟踪、或者基于寻呼错误的跟踪。
17.根据权利要求10所述的计算设备,其中,所述处理器还配置有处理器可执行指令以执行操作,使得将所述多个虚拟存储器区域的所监测的结构性属性与所述预期结构性属性进行比较包括:
向所监测的结构性属性应用规则集合,其中,所述规则集合是基于所述多个虚拟存储器区域的所述预期结构性属性的。
18.根据权利要求10所述的计算设备,其中,所述处理器还配置有处理器可执行指令以执行操作,使得将所述多个虚拟存储器区域的所监测的结构性属性与所述预期结构性属性进行比较包括:
对所述多个虚拟存储器区域的所述预期结构性属性建立模型以生成模型;并且
将所监测的结构性属性与所述模型进行比较。
19.一种其上存储有处理器可执行软件指令的非暂时性计算机可读存储介质,所述处理器可执行软件指令被配置为使得计算设备的处理器执行包括以下各项的操作:
监测由在所述计算设备上执行的进程使用的多个虚拟存储器区域的结构性属性,其中,所监测的结构性属性包括:
所述多个虚拟存储器区域的地址空间布局;
所述多个虚拟存储器区域中包括的虚拟存储器区域的数量;或者
所述多个虚拟存储器区域中包括的虚拟存储器区域的大小;
将所监测的结构性属性与所述多个虚拟存储器区域的预期结构性属性进行比较;以及
基于所监测的结构性属性与所述预期结构性属性之间的所述比较来确定所监测的结构性属性是否表示所述进程的异常行为。
20.根据权利要求19所述的非暂时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行还包括以下项的操作:
响应于确定所监测的结构性属性表示异常行为而发起保护性动作。
21.根据权利要求19所述的非暂时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得监测由所述进程使用的所述多个虚拟存储器区域的所述结构性属性还包括:
监测所述地址空间布局的改变;
监测所述多个虚拟存储器区域的访问权限的改变;或者
监测所述多个虚拟存储器区域的状态转换历史。
22.根据权利要求19所述的非暂时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得监测由所述进程使用的所述多个虚拟存储器区域的结构性属性包括:
存储关于所述进程正在其中执行的当前虚拟存储器区域的信息;
接收关于当前正由所述进程执行的指令的新信息;
基于所接收的新信息来确定是否有过从所述当前虚拟存储器区域的转换;以及
响应于确定有过从所述当前虚拟存储器区域的所述转换,记录从所述当前虚拟存储器区域到新的虚拟存储器区域的所述转换。
23.根据权利要求22所述的非暂时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得接收关于由所述进程当前正在执行的所述指令的所述新信息包括接收程序计数器值和进程标识符。
24.根据权利要求19所述的非暂时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得监测由所述进程使用的所述多个虚拟存储器区域的结构性属性包括:
存储关于所述进程正在其中执行的当前虚拟存储器区域的信息;
在所述多个虚拟存储器区域上实现一个或多个虚拟存储器区域跟踪策略;
基于所述一个或多个虚拟存储器区域跟踪策略,确定是否有过从所述当前虚拟存储器区域的转换;以及
响应于确定有过从所述当前虚拟存储器区域的所述转换,记录从所述当前虚拟存储器区域到新的虚拟存储器区域的转换。
25.根据权利要求24所述的非暂时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得在所述多个虚拟存储器区域上实现所述一个或多个虚拟存储器区域跟踪策略包括在所述多个虚拟存储器区域上实现选择性跟踪、定期跟踪、机会性跟踪、或者基于寻呼错误的跟踪。
26.根据权利要求19所述的非暂时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得将所述多个虚拟存储器区域的所监测的结构性属性与所述预期结构性属性进行比较包括:
向所监测的结构性属性应用规则集合,其中,所述规则集合是基于所述多个虚拟存储器区域的所述预期结构性属性的。
27.根据权利要求19所述的非暂时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得所述处理器执行操作,使得将所述多个虚拟存储器区域的所监测的结构性属性与所述预期结构性属性进行比较包含:
对所述多个虚拟存储器区域的所述预期结构性属性建立模型以生成模型;并且
将所监测的结构性属性与所述模型进行比较。
28.一种计算设备,包括:
用于监测由在所述计算设备上执行的进程使用的多个虚拟存储器区域的结构性属性的单元,其中,所监测的结构性属性包括:
所述多个虚拟存储器区域的地址空间布局;
所述多个虚拟存储器区域中包括的虚拟存储器区域的数量;或者
所述多个虚拟存储器区域中包括的虚拟存储器区域的大小;
用于将所监测的结构性属性与所述多个虚拟存储器区域的预期结构性属性进行比较的单元;以及
用于基于所监测的结构性属性与所述预期结构性属性之间的所述比较来确定所监测的结构性属性是否表示所述进程的异常行为的单元。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562219970P | 2015-09-17 | 2015-09-17 | |
US62/219,970 | 2015-09-17 | ||
US15/057,336 US10255434B2 (en) | 2015-09-17 | 2016-03-01 | Detecting software attacks on processes in computing devices |
US15/057,336 | 2016-03-01 | ||
PCT/US2016/046747 WO2017048426A1 (en) | 2015-09-17 | 2016-08-12 | Detecting software attacks on processes in computing devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108027859A CN108027859A (zh) | 2018-05-11 |
CN108027859B true CN108027859B (zh) | 2020-03-24 |
Family
ID=58282948
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680053767.8A Active CN108027859B (zh) | 2015-09-17 | 2016-08-12 | 检测对计算设备中的进程的软件攻击 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10255434B2 (zh) |
EP (1) | EP3350741B1 (zh) |
JP (1) | JP6777732B2 (zh) |
KR (1) | KR102534334B1 (zh) |
CN (1) | CN108027859B (zh) |
TW (1) | TW201717086A (zh) |
WO (1) | WO2017048426A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2547272B (en) * | 2016-02-15 | 2020-07-15 | F Secure Corp | Improving security of computer resources |
JP6750674B2 (ja) * | 2016-04-26 | 2020-09-02 | 日本電気株式会社 | プログラム分析システム、プログラム分析方法、及び、コンピュータ・プログラム |
US10372909B2 (en) * | 2016-08-19 | 2019-08-06 | Hewlett Packard Enterprise Development Lp | Determining whether process is infected with malware |
US10783246B2 (en) | 2017-01-31 | 2020-09-22 | Hewlett Packard Enterprise Development Lp | Comparing structural information of a snapshot of system memory |
EP3413531A1 (en) * | 2017-06-07 | 2018-12-12 | Hewlett-Packard Development Company, L.P. | Intrusion detection systems |
US10706180B2 (en) * | 2017-07-07 | 2020-07-07 | Endgame, Inc. | System and method for enabling a malware prevention module in response to a context switch within a certain process being executed by a processor |
CN110188540B (zh) * | 2019-04-17 | 2021-06-22 | 中国科学院软件研究所 | 一种基于控制状态跟踪的rop攻击检测方法 |
US20210334373A1 (en) * | 2020-04-22 | 2021-10-28 | Arm Limited | Moderator system for a security analytics framework |
CN112307475A (zh) * | 2020-09-29 | 2021-02-02 | 北京软慧科技有限公司 | 一种系统检测方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996904B1 (en) * | 2007-12-19 | 2011-08-09 | Symantec Corporation | Automated unpacking of executables packed by multiple layers of arbitrary packers |
CN103729305A (zh) * | 2012-10-11 | 2014-04-16 | 财团法人工业技术研究院 | 虚拟机的存储器管理的方法和计算机系统 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8955104B2 (en) | 2004-07-07 | 2015-02-10 | University Of Maryland College Park | Method and system for monitoring system memory integrity |
NO20050564D0 (no) | 2005-02-02 | 2005-02-02 | Tore Lysemose Hansen | Programmonitor for a identifisere uautorisert inntrenging i datasystemer |
EP1891520B1 (en) | 2005-06-07 | 2017-09-13 | VMware, Inc. | Constraint injection system for immunizing software programs against vulnerabilities and attacks |
US8271450B2 (en) | 2009-10-01 | 2012-09-18 | Vmware, Inc. | Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory |
US9866426B2 (en) * | 2009-11-17 | 2018-01-09 | Hawk Network Defense, Inc. | Methods and apparatus for analyzing system events |
US8949169B2 (en) * | 2009-11-17 | 2015-02-03 | Jerome Naifeh | Methods and apparatus for analyzing system events |
KR101663013B1 (ko) | 2010-01-15 | 2016-10-06 | 삼성전자주식회사 | 코드 주입 공격을 감지하는 장치 및 방법 |
US9401922B1 (en) * | 2010-12-10 | 2016-07-26 | Verizon Patent And Licensing Inc. | Systems and methods for analysis of abnormal conditions in computing machines |
EP2691908B1 (en) * | 2011-03-28 | 2018-12-05 | McAfee, LLC | System and method for virtual machine monitor based anti-malware security |
US8584254B2 (en) | 2011-12-08 | 2013-11-12 | Microsoft Corporation | Data access reporting platform for secure active monitoring |
US9832211B2 (en) * | 2012-03-19 | 2017-11-28 | Qualcomm, Incorporated | Computing device to detect malware |
US10284591B2 (en) * | 2014-01-27 | 2019-05-07 | Webroot Inc. | Detecting and preventing execution of software exploits |
US9881153B2 (en) * | 2014-06-20 | 2018-01-30 | Leviathan, Inc. | System and method for detection of heap spray attack |
WO2017023773A1 (en) * | 2015-07-31 | 2017-02-09 | Digital Guardian, Inc. | Systems and methods of protecting data from injected malware |
-
2016
- 2016-03-01 US US15/057,336 patent/US10255434B2/en active Active
- 2016-08-12 WO PCT/US2016/046747 patent/WO2017048426A1/en active Application Filing
- 2016-08-12 JP JP2018513605A patent/JP6777732B2/ja active Active
- 2016-08-12 EP EP16758010.9A patent/EP3350741B1/en active Active
- 2016-08-12 CN CN201680053767.8A patent/CN108027859B/zh active Active
- 2016-08-12 KR KR1020187010607A patent/KR102534334B1/ko active IP Right Grant
- 2016-08-17 TW TW105126184A patent/TW201717086A/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996904B1 (en) * | 2007-12-19 | 2011-08-09 | Symantec Corporation | Automated unpacking of executables packed by multiple layers of arbitrary packers |
CN103729305A (zh) * | 2012-10-11 | 2014-04-16 | 财团法人工业技术研究院 | 虚拟机的存储器管理的方法和计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
KR102534334B1 (ko) | 2023-05-18 |
US10255434B2 (en) | 2019-04-09 |
TW201717086A (zh) | 2017-05-16 |
JP6777732B2 (ja) | 2020-10-28 |
US20170083702A1 (en) | 2017-03-23 |
CN108027859A (zh) | 2018-05-11 |
WO2017048426A1 (en) | 2017-03-23 |
JP2018532187A (ja) | 2018-11-01 |
EP3350741A1 (en) | 2018-07-25 |
EP3350741B1 (en) | 2019-07-17 |
KR20180054726A (ko) | 2018-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108027859B (zh) | 检测对计算设备中的进程的软件攻击 | |
US9158604B1 (en) | Lightweight data-flow tracker for realtime behavioral analysis using control flow | |
US9898602B2 (en) | System, apparatus, and method for adaptive observation of mobile device behavior | |
US9357411B2 (en) | Hardware assisted asset tracking for information leak prevention | |
US9734333B2 (en) | Information security techniques including detection, interdiction and/or mitigation of memory injection attacks | |
US9519533B2 (en) | Data flow tracking via memory monitoring | |
US20210248234A1 (en) | Malware Clustering Based on Function Call Graph Similarity | |
CN109891422B (zh) | 用于优化计算机安全操作的动态信誉指示符 | |
US10216934B2 (en) | Inferential exploit attempt detection | |
US11762987B2 (en) | Systems and methods for hardening security systems using data randomization | |
Muttoo et al. | Android malware detection: state of the art | |
US10515216B2 (en) | Memory layout based monitoring | |
US10853480B2 (en) | Stack pivot exploit detection and mitigation | |
US20210240829A1 (en) | Malware Clustering Based on Analysis of Execution-Behavior Reports | |
Stirparo et al. | In-memory credentials robbery on android phones | |
US11314855B2 (en) | Detecting stack pivots using stack artifact verification |
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 |