预测性堆溢出保护的制作方法

文档序号:6497596阅读:172来源:国知局
预测性堆溢出保护的制作方法
【专利摘要】一种用于防止恶意软件攻击的方法,包括:识别一组数据,该一组数据的恶意软件状态不知道是安全的;发起使用数据的应用程序;确定应用程序已经创建了一个或多个先前的存储器分配;确定应用程序已经创建了新的存储器分配;将新的存储器分配与先前的存储器分配进行比较;以及基于比较,确定数据是否包括恶意软件。
【专利说明】预测性堆溢出保护
【技术领域】
[0001]概括的说,本发明涉及计算机安全和恶意软件保护,更具体的说,本发明涉及预测性堆溢出保护。
【背景技术】
[0002]计算机和其他电子设备上的恶意软件感染非常具有侵入性且难以检测和修复。反恶意软件解决方案可能需要将恶意代码或文件的签名与评估的软件相对照,以确定该软件对计算系统有害。恶意软件可能通过使用多态的可执行文件来伪装自己,其中,恶意软件改变自身以避免被反恶意软件解决方案检测到。在这样的情况下,反恶意软件解决方案可能无法检测到在零日攻击中的新的或变体的恶意软件。恶意软件可以包括,但是不限于,间谍软件、隐匿程式、密码窃取程序、垃圾邮件、网络钓鱼攻击、拒绝服务攻击的来源、病毒、记录器、特洛伊木马、广告软件或产生不想要的活动的任何其他数字内容。

【发明内容】

[0003]在一实施例中,一种用于防止恶意软件攻击的方法包括:识别一组数据,所述一组数据的恶意软件状态不知道是安全的;发起使用所述数据的应用程序;确定所述应用程序已经创建了一个或多个先前的存储器分配;确定所述应用程序已经创建了新的存储器分配;将所述新的存储器分配与所述先前的存储器分配进行比较;以及基于所述比较,确定所述数据是否包括恶意软件。
[0004]在另一实施例中,一种制品,包括计算机可读介质和在计算机可读介质上携带的计算机可执行指令。所述指令由处理器可读。当读取或执行时,所述指令使所述处理器识别一组数据,所述一组数据的恶意软件状态不知道是安全的;发起使用所述数据的应用程序;确定所述应用程序已经创建了一个或多个先前的存储器分配;确定所述应用程序已经创建了新的存储器分配;将所述新的存储器分配与所述先前的存储器分配进行比较;以及基于所述比较,确定所述数据是否包括恶意软件。
[0005]在又一实施例中,一种用于防止恶意软件攻击的系统,包括耦合到存储器的处理器和由处理器执行的反恶意软件检测器。反恶意软件检测器驻留在存储器中。反恶意软件检测器被配置成:识别一组数据,所述一组数据的恶意软件状态不知道是安全的;发起使用所述数据的应用程序;确定所述应用程序已经创建了一个或多个先前的存储器分配;确定所述应用程序已经创建了新的存储器分配;将所述新的存储器分配与所述先前的存储器分配进行比较;以及基于所述比较,确定所述数据是否包括恶意软件。
【专利附图】

【附图说明】
[0006]为了更完整的理解本发明及其特征和优点,现在结合附图参照下面的描述,其中:
[0007]图1是对用于预测性堆溢出保护的示例性系统的说明;[0008]图2是对用于预测性堆溢出保护的系统的反恶意软件检测器和其他组件的示例性配置和执行进行进一步说明;
[0009]图3是对用于预测性堆溢出保护的系统的示例性操作的进一步说明;
[0010]图4是对用于预测性堆溢出保护的方法的示例性实施例的说明;
[0011]图5a和5b是对用于确定存储器分配与先前创建的存储器分配是否匹配并从而指示基于溢出的恶意软件的示例性方法的说明;
[0012]图6是对用于确定存储器分配是否与先前创建的存储器分配不匹配并从而指示基于溢出的恶意软件不存在的方法的示例性实施例的说明。
【具体实施方式】
[0013]图1是对用于预测性堆溢出保护的示例性系统100的说明。系统100可以被配置成确定具有应用程序或针对应用程序的数据的形式的实体是否是恶意软件。这样的数据可能是配置成利用系统或易受攻击的应用程序中的溢出弱点的恶意软件。在一实施例中,系统100可以被配置成检测试图利用诸如堆溢出弱点之类的缺陷的恶意软件。
[0014]系统中的堆溢出弱点可以包括对于缓冲器溢出的系统的缺陷,其中,向缓冲器写入数据,但是数据被写入到与缓冲器相邻的存储器中了。利用溢出弱点可以包括,例如,恶意软件使用基于栈或基于堆利用的技术。基于堆利用的技术可以包括利用恶意代码毁损在目标系统的存储器堆中分配的存储器。这样的存储器分配可以实时进行。系统100可以被配置成确定这样的、利用应用程序中的弱点的企图。
[0015]系统100可以被配置成保护客户端104免受恶意软件攻击。在一实施例中,系统100可以被配置成保护客户端104免受基于堆基于溢出的恶意软件攻击。客户端104可以包括计算机、服务器、膝上型电脑、平板电脑、智能电话、或易受恶意软件攻击的任何其它适当的电子设备。
[0016]为了保护客户端104免受恶意软件攻击,可以利用反恶意软件检测器102检测诸如数据106之类的潜在危险的数据。数据106可以包括用于应用程序加载或执行的应用程序或信息。例如,数据106可以包括词处理文件、电子邮件、电子邮件附件、电子数据表文件、图像文件、PDF文件、html页面、JavaScript或由客户端104上的应用程序执行的其他
脚本、代码、或Flash?文件。数据106可以包括这样的实体或这样的实体的多个实例的部
分。在一些情况下,可以知道数据106是恶意的或知道其是安全的。但是,假如要向客户端104加载大量的数据,用于做出这样的确定的、对数据106的典型的反恶意软件扫描在处理资源方面可能是昂贵和不实际的。在其他情况下,数据106的恶意软件状态可能是不知道的。从而,对数据106的典型的反恶意软件扫描可能不会产生关于数据106是否安全的信息。此外,该扫描可能是昂贵的。数据106可以包含所谓的“零天”恶意软件攻击,其中,其恶意的内容还未被例如基于签名的反恶意软件机制识别。
[0017]在一实施例中,可以通过网络108从网络目的地110下载数据106。例如,可以响应于客户端104上的应用程序的请求来进行这样的下载。进行这样的请求可以由代表合法的应用程序来进行,或可以由客户端104上的恶意软件以伪装的方式来进行。在另一实施例中,数据106可能已经存在于客户端104上了。
[0018]网络目的地110可以包括,例如,网站、服务器、或客户端104可访问的网络实体。网络目的地110可以被配置成模仿客户端104可能试图访问的合法数据、页面或其他内容,但是反而网络目的地118可能使客户端104下载数据106的形式的恶意的应用程序、数据、文件、代码或其他内容。例如,客户端104上的网络浏览器应用程序可能为了看上去合法的网站访问网络目的地110,但是被配置成在客户端104上执行的、作为数据106的一部分下载的脚本可能包括恶意软件。
[0019]网络108可以包括任何合适的网络、一系列的网络或其一部分,以在电子设备104、监控器102和声誉服务器106之间通信。这样的网络可以包括但不限于:互联网、企业内部网、广域网、局域网、回程网、对等网或其任何组合。
[0020]反恶意软件检测器102可以被配置成确定数据106中的潜在的危险元素。在一实施例中,反恶意软件检测器102可以被配置成确定数据106是否包括被配置成使用诸如基于堆的溢出恶意软件之类的溢出利用来攻击客户端102或其它设备的信息。
[0021]反恶意软件检测器102可以使用诸如脚本、可执行程序、共享库、应用程序、过程、服务器或虚拟机之类的任何合适的机制来实现。在一实施例中,反恶意软件检测器102可以位于客户端104上并被配置成分析由客户端104接收的数据106。在另一实施例中,反恶意软件检测器102可以与客户端104相分离。在这样的实施例中,反恶意软件检测器可以被配置成在客户端104接收到数据106之前对其进行分析。从而,反恶意软件检测器可以被配置成在确定数据106是恶意的情况下,保护客户端104不接收数据106。
[0022]为了保护客户端104不接收被确定为恶意的数据106,系统100可以被配置成在其到达客户端104之前拦截数据106。在一实施例中,反恶意软件检测器102可以被配置成拦截数据106。在另一实施例中,系统100可以包括被配置成拦截数据106的网络网关112。在这样的实施例中,网络网关112可以通信地耦合到反恶意软件检测102或包括反恶意软件检测器112。可以使用诸如可执行程序、应用程序、过程、服务器或网络设备之类的任何合适的机制来实现网络网关112。在接收到数据106之后,网络网关112可以被配置成向反恶意软件检测器102发送数据106,以确定数据106是否是恶意的。如果数据106是恶意的,则网络网关112或反恶意软件检测器102可以被配置成阻挡数据106去客户端104。反恶意软件检测器102和/或网络网关112可以被配置成拦截并分析去往情况类似于客户端104的其他电子设备的类似下载。因此,网络网关112和/或反恶意软件检测器102可以被配置成保护整个网络114免受恶意数据106攻击。网络114可以包括,例如,局域网、广域网、或它们的一些部分,它们的对外部网络108的网络访问受到网络网关112和/或反恶意软件检测器的保护。
[0023]反恶意软件检测器102可以被配置成确定数据106是否包括对客户端104的试图的恶意软件攻击。在一实施例中,反恶意软件检测器102可以被配置成确定数据106是否包括被配置成对客户端104进行恶意软件攻击的应用程序。在另一实施例中,反恶意软件检测器102可以被配置成确定数据106是否包括基于溢出的恶意软件攻击。
[0024]反恶意软件检测器102可以被配置成分析数据106是否包括任何合适的方式的试图的恶意软件攻击。在一实施例中,反恶意软件检测器102可以被配置成模拟数据106的执行或使用数据106的应用程序。可以结合例如配置成模拟使用数据106的应用程序的执行或数据106自身的执行的虚拟机来使用这样的实施例。虚拟机可以位于例如与客户端104相分离的服务器上或在客户端104自身上。在另一实施例中,反恶意软件检测器102可以勾住执行数据106的电子设备或使用数据106的应用程序的存储器。在又一实施例中,反恶意软件检测器102可以被配置成在沙箱中执行数据106或使用数据106的应用程序,以保护客户端104的系统资源。
[0025]反恶意软件检测器102可以被配置成通过分析在这样的执行中生成的存储器分配来分析数据106或使用数据106的应用程序的执行。如果目前识别的存储器分配非常相似于先前的存储器分配,则该执行可以指示数据106是恶意的。这样的相似可以是类似数据正被重复写入存储器的证据,这可以是对基于溢出的恶意软件攻击的指示。反恶意软件检测器102可以被配置成如果没有足够的证据存在以确定数据106是否是安全或恶意的,则向另外的反恶意软件检测器实体咨询。
[0026]如果反恶意软件检测器102确定数据106包括试图的恶意软件攻击,则反恶意软件检测器102可以被配置成阻挡对数据106的试图下载。如果数据106已经被加载到客户端104或系统100的另一部分上,则反恶意软件检测器102可以被配置成通过任何合适的机制或以任何合适的方式清除数据106。例如,可以移除、删除或隔离数据106。反恶意软件检测器102可以被配置成向客户端102的用户通知被阻挡的尝试。此外,反恶意软件检测器102可以被配置成向反恶意软件服务器发送数据106或与数据106相关的信息以进行进一步分析,报告或向其他反恶意软件实体或设置传播数据106的知识。此外,反恶意软件检测器102可以被配置成将网络目的地110分类为不安全的,并向反恶意软件服务器报告这样的确定。如果反恶意软件检测器102确定数据106不包括试图的恶意软件攻击,则反恶意软件检测器102可以被配置成允许对数据106的试图下载。
[0027]在操作中,反恶意软件检测器102可以操作成保护客户端104和/或网络114中的其他实体免受恶意软件攻击。在一个实施例中,反恶意软件检测器102可以在客户端104上执行。在另一实施例中,反恶意软件检测器102可以与客户端104分开操作。在这样的实施例中,例如,反恶意软件检测器可以在例如网络114上的服务器上操作。网络网关112可以在网络114上操作。
[0028]在一实施例中,数据106可以存在于客户端104上。在另一实施例中,可以通过网络108从网络目的地110下载数据106。可以利用客户端104作为目标来下载数据106。可以利用网络网关112和/或反恶意软件检测器102来拦截数据106。网络网关112和/或反恶意软件检测器102可以分析数据106,以确定其内容的类型。如果数据106包括要在客户端104上执行的应用程序,则可以由反恶意软件检测器102处理数据106,以确定其是否包括被配置成进行基于溢出的攻击的恶意软件。反恶意软件检测器102可以确定可以使用数据106的一个或多个应用程序。如果数据106包括针对容易受到基于溢出的攻击的应用程序的信息,则可以由反恶意软件检测器处理数据106,以确定数据106是否包括被配置成进行基于溢出的攻击的恶意软件。
[0029]反恶意软件检测器102可以分析数据106或使用数据106的应用程序,以确定数据106是否包括恶意软件。在一实施例中,反恶意软件检测器102可以分析数据106的执行,以确定数据106是否包括基于溢出的恶意软件。反恶意软件检测器102可以监控或分析与执行数据106或使用数据106的应用程序相关联的存储器分配。反恶意软件检测器102可以确定目前进行的存储器分配是否与先前的存储器分配匹配或相关。
[0030]在一实施例中,为了监控或分析这样的执行,反恶意软件检测器102可能勾住诸如存储器剖析器之类的客户端104的存储器功能。在这样的实施例中,反恶意软件检测器102可以在客户端104上执行或通信地耦合到客户端104。数据106可能已经存在于客户端104上。可能使用数据106执行客户端104上的应用程序。
[0031]在另一实施例中,反恶意软件检测器102可以使用虚拟机来模拟数据106或使用数据106的应用程序的执行和存储器分配。该应用程序可能已经由反恶意软件检测器102或网络网关112在分析数据106之后选择。
[0032]如果反恶意软件检测器102确定目前进行的存储器分配与先前的存储器分配匹配或相关,则反恶意软件检测器可以确定数据106包括基于溢出的恶意软件攻击。反恶意软件检测器102或网络网关112可以阻挡数据106进一步下载到诸如客户端104之类的网络114的组件。反恶意软件检测器102可以将数据106从客户端104或从网络114的其他部分清除。此外,反恶意软件检测102可以向其他反恶意软件服务器发送关于客户端104的信息,以进行进一步分析、报告或分发。
[0033]如果反恶意软件检测器102确定没有拦截的存储器分配匹配或与先前的存储器分配相关,则反恶意软件检测器可以确定数据106不包括基于溢出的恶意软件攻击。在一实施例中,可以将数据106传递到其他反恶意软件实体以进行进一步分析。在另一实施例中,可以允许数据106在客户端104上下载并执行。
[0034]如果反恶意软件检测器102不能明确地确定任何拦截的存储器分配匹配或与先前的存储器分配相关,则反恶意软件检测器可以将数据106传递到其他反恶意软件实体,以进行进一步分析。这样的其他反恶意软件实体例如可以包括典型的反恶意软件扫描软件或反堆溢出恶意软件。这样的实体的执行在系统资源方面可能是昂贵的。但是,在反恶意软件检测器初步确定数据106可能是或不是恶意的情况下,这样的执行的开销可以是合理的。此外,反恶意软件检测器102的分析可以排除在许多情况下运行这样的实体的必要性,例如在存储器分配与先前的存储器分配非常相似的情况下。因此,在反恶意软件检测器102不能明确确定的情况下执行典型的反恶意软件技术可能使得在恶意软件检测的效率方面的整体增加。
[0035]图2是对反恶意软件检测器102和系统100的其他组件的示例性配置和执行的进一步说明。在一实施例中,反恶意软件检测器102可以通过使用虚拟机框架来实现。反恶意软件检测器102可以包括通信地耦合到存储器剖析器204和虚拟机存储器管理器206的虚拟机202。
[0036]虚拟机202可以被配置成对应用程序224的操作进行仿真,如同其在客户端104上执行。此外,虚拟机202可以被配置成对任何适当应用程序的操作进行模拟,包括在图1的数据106中包含的应用程序或被反恶意软件检测器102识别为使用数据106的应用程序。在执行部分的数据106之后,虚拟机202可以被配置成向存储器剖析器204发送过程流事件。这样的过程流事件可以包括例如,对循环操作的终止。虚拟机202可以被配置成发送这样的终止事件,因为这样的事件可能对应于试图的存储器分配或作为基于溢出的恶意软件攻击的一部分的写入的结束。
[0037]反恶意软件检测器102可以包括被配置成解析和解释数据106的语法分析器/解析器204。语法分析器/解析器204可以被配置成确定数据106的结构以及向虚拟机224发送数据段。虚拟机202可以利用相应的数据端226来执行应用程序224。[0038]反恶意软件检测器102可以包括或通信地耦合到文档对象模型(“D0M”)处理程序210。DOM处理程序210可以包括被配置成提供如何执行应用程序224的信息的一个或多个DOM。DOM处理程序210可以包括与反恶意软件检测器102被配置成模拟或分析的每一种应用程序或数据类型相对应的D0M。例如,在给出数据106中的网络浏览器脚本的情况下,DOM处理程序210可以被配置成如何操作在应用程序224中模拟的网络浏览器应用程序,以使得执行或选择脚本中的选项。
[0039]虚拟机202可以被配置成通过结束执行循环来执行应用程序224。执行应用程序224可能需要模拟或执行用于分配存储器的命令。虚拟机202可以被配置成向虚拟机存储器管理器206发送这样的存储器分配指令。此外,虚拟机202可以被配置成向存储器剖析器204发送过程控制事件,例如,指示执行循环终止的事件。
[0040]虚拟机存储器管理器206可以被配置成进行这样的存储器分配207。存储器分配207可以表示或模拟客户端104中将由应用程序224的执行做出的存储器分配。存储器分配207可以被创建为存储器块。存储器分配207可以包括与使用数据段226的应用程序224相关联的程序数据。存储器分配207的内容可以指示已经进行了基于溢出的恶意软件攻击。虚拟机存储器管理器206可以被配置成向存储器剖析器204发送存储器分配207以进行分析。
[0041]存储器剖析器204可以被配置成对存储器分配相互进行比较,以确定数据106是否包括基于溢出的恶意软件攻击。存储器剖析器204可以被配置成进行这样的确定,例如,通过确定存储器分配是否相互匹配或存储器分配是紧接着地进行的。此外,存储器剖析器204可以被配置成在适当的时间进行这样的确定。例如,存储器剖析器204可以被配置成针对先前创建的存储器分配来分析新创建的存储器分配。在另一示例中,存储器剖析器204可以被配置成在从虚拟机202接收到循环终止事件之后,针对先前创建的存储器分配来分析存储器分配。
[0042]存储器剖析器204可以被配置成使用任何适当的机制或方法来比较存储器分配。模型数据数据库218可以被配置成向存储器剖析器204提供模型数据。这样的信息可以包括针对存储器剖析器204的标准,以在存储器分配之间进行比较。例如,模型数据数据库218可以包括关于存储器分配的比较的决策树或规则以及如何使用这样的比较来确定数据106是否是恶意的、安全的或未知的。模型数据数据库218可以包括表示存储器分配的特征的模型数据,例如指示恶意软件或指示安全数据。可以通过对已知的恶意数据或已知的安全数据的统计分析来确定这样的指示。在确定数据106是安全的或恶意的之后,存储器剖析器204可以向基于云的反恶意软件分类器222或另一反恶意软件服务器提供数据106和该确定,上述基于云的反恶意软件分类器222或另一反恶意软件服务器可以继而处理来自其他客户端的这样的结果,并生成对模型数据数据库218的更新。模型数据数据库218可以被配置成向存储器剖析器204指示要应用于存储器分配的比较的一系列这样的标准以及指示如果满足这样的标准时,如何继续。该系列的标准可以包括顺序地进行多种比较。上述标准可以包含在不同存储器比较之间的差异的阈值。
[0043]在一实施例中,存储器剖析器204可以被配置成将给定存储器分配的散列值、数字签名或校验和与其他所创建的存储器分配进行比较。存储器剖析器204可以被配置成生成存储器分配的这样的散列值、数字签名或校验和,以唯一地标识该存储器分配。可以使用校验和来有效地进行这样的比较。如果存储器分配的散列值、签名或校验和与已经创建的另一存储器分配匹配,则存储器剖析器204可以被配置成确定存储器分配相互匹配。在另外的实施例中,存储器剖析器204可以被配置成确定具有相同的散列值、签名或检验和的存储器分配它们自身相等。这样的匹配或相等的存储器分配可以是对应用程序224试图重复地将相同的恶意代码写入客户端104的存储器中的指示。这样的试图重复地写恶意代码可以指示:应用程序224正试图进行基于溢出的恶意软件攻击。因此,存储器剖析器204可以确定数据106是恶意的。
[0044]如果存储器分配的散列值、签名或检验和不与任何其他的存储器分配匹配,则存储器剖析器204可以被配置成采取任何适当的随后操作。例如,存储器剖析器204可以被配置成确定存储器分配不匹配,从而数据106不构成基于溢出的恶意软件。但是,数据106中的恶意软件可能已经在所生成的每一存储器分配中导致足够数量的已被改变的比特,以避免校验和检测。从而,该示例可能无法检测到在数据106中实际存在的恶意软件。因此,在另一实施例中,存储器剖析器204可以被配置成对存储器分配执行另外的检查。这样的另外的检查可以包括在存储器分配之间的另外的比较,如下文所描述的,或将数据106传递给其他的反恶意软件实体,如下文所描述的。
[0045]在另一实施例中,存储器剖析器204可以被配置成将给定存储器分配的大小与其他所创建的存储器分配比较。存储器剖析器204可以被配置成根据模型数据数据库218确定存储器分配大小的阈值差异,在该阈值差异下可以确定两个存储器分配匹配。这样的匹配或相等大小的存储器分配可以是对应用程序224试图重复地将相同的恶意代码写入客户端104的存储器的指示。这样的重复写恶意代码的尝试可以指示应用程序224正试图进行基于溢出的恶意软件攻击。因此,如果由于应用程序224的执行,导致两个或多个存储器分配关于大小匹配,则存储器剖析器204可以确定数据106是恶意的。
[0046]存储器剖析器204可以被配置成根据模型数据数据库218确定存储器分配的阈值差异,在该阈值差异上,可以确定两个存储器分配不匹配。这样的不匹配的存储器分配可以是应用程序224没有试图重复地将相同的恶意代码写入客户端104的存储器的指示。因此,如果由于应用程序224的执行导致两个存储器分配不匹配,则存储器剖析器204可以确定数据106是安全的。
[0047]如果两个存储器分配之间的差异既不低于指示匹配的第一阈值,也不超过指示存储器分配关于恶意软件是安全的第二阈值,则存储器剖析器204可以被配置成采取任何适当的后续动作。例如,存储器剖析器204可以被配置成确定存储器分配不匹配,并从而数据106不构成基于溢出的恶意软件。但是,数据106中的恶意软件可能已经导致存储器分配在大小上波动,以避免大小比较检测。在模型数据数据库218中,可能尚未考虑这样的行为。因此,在另一示例中,存储器剖析器204可以被配置成对存储器分配执行另外的检查。这样的另外的检查可以包括存储器分配之间的另外的比较,如上文和下文所描述的,或将数据106传递到其它的反恶意软件实体,如下文所描述的。
[0048]在又一实施例中,存储器剖析器204可以被配置成将给定存储器分配的熵与其他所创建的存储器分配比较。给定存储器分配的熵可以是对其中包含的代码的本质的指示。可以使用确定代码或数据的熵的任何适当方法。存储器剖析器204可以被配置成根据模型数据数据库218确定熵比较标准。例如,模型数据数据库218可以包括模型数据,用于指示对于来自(I…9) 的熵评级系统,两个存储器分配必须具有相同的熵值才认为其匹配。在另一示例中,模型数据数据库218可以包括熵差阈值,在该熵差异阈值下两个存储器分配的熵之间的差异指示存储器分配匹配。匹配的熵值可以是对应用程序224试图将相同的恶意代码重复地写入客户端104的存储器中的指示。这样的试图重复地写恶意代码可以指示应用程序224正试图进行基于溢出的恶意软件攻击。因此,如果由于应用程序224的执行导致两个或更多个存储器分配关于熵匹配,则存储器剖析器204可以确定数据106是恶意的。
[0049]存储器剖析器204可以被配置成根据模型数据数据库218确定熵的阈值差异,在该熵的阈值差异上,可以确定两个存储器分配具有实质不同的熵。在一示例中,使用范围为(I…9)的熵评级系统,大于或等于I的差异可以是实质不同。这样的在熵方面实质不同的存储器分配可以是写入每一个存储器分配中的代码实质不同的指示,并且从而不存在应用程序224试图重复地将相同的恶意代码写入客户端104的存储器。因此,如果由于应用程序224的执行导致的存储器分配以实质上不同的熵来创建,则存储器剖析器204可以确定数据106是安全的。
[0050]如果没有两个存储器分配在熵方面相互匹配,则存储器剖析器204可以被配置成采取任何适当的后续动作。例如,存储器剖析器204可以被配置成确定存储器分配不匹配,并且从而数据106不构成基于溢出的恶意软件。但是,数据106中的恶意软件可能已经导致存储器分配波动,以避免大小比较检测。在模型数据数据库218中可能尚未考虑这样的行为。因此,在另一示例中,存储器剖析器204可以被配置成执行对存储器分配的另外检查。这样的另外的检查可以包括存储器分配之间的另外的比较,如上文和下文所描述的,或将数据106传递到其他反恶意软件实体,如下文所描述的。
[0051]在又一实施例中,存储器剖析器204可以被配置成将给定存储器分配的分配时间与其他所创建的存储器分配进行比较。存储器剖析器204可以被配置成根据模型数据数据库218确定存储器分配时间的阈值差异,在该时间的阈值差异下,可以确定已经在基本接近的时间量中创建了两个存储器分配。分配时间中的接近差异可以指示应用程序224试图重复地进行存储器分配。这样的重复存储器分配可以是对应用程序224试图重复地将相同的恶意代码写入客户端104的存储器中的指示。这样的试图重复写恶意代码可以指示应用程序224正试图进行基于溢出的恶意软件攻击。因此,如果在基本相同的时间量中创建了存储器分配,则存储器剖析器204可以确定数据106是恶意的。
[0052]存储器剖析器204可以被配置成根据模型数据数据库218确定存储器分配时间的阈值差异,在存储器分配时间的阈值差异上,可以确定两个存储器分配被充分分开地创建。这样分开创建的存储器分配可以是不存在应用程序224试图重复地将相同的恶意代码写入客户端104的存储器中的指示。因此,如果由于应用程序224的执行导致的存储器分配被在实质不同的时间创建,则存储器剖析器204可以确定数据106是安全的。
[0053]如果两个存储器分配的时间方面的差异既不基本接近也不分离,则存储器剖析器204可以被配置成采取任何适当的后续动作。例如,存储器剖析器204可以被配置成确定存储器分配基本不接近,并且从而数据106不构成基于溢出的恶意软件。但是,数据106中的恶意软件可能已经使存储器分配在分配时间方面波动,以避免大小比较检测。在模型数据数据库218中可能尚未考虑这样的行为。因此,在另一示例中,存储器剖析器204可以被配置成对存储器分配执行另外的检查。这样的另外的检查可以包括存储器分配之间的另外的比较,如上文所描述的,或将数据106传递到其他反恶意软件实体,如下文所描述的。
[0054]当存储器剖析器204不能确认数据106构成基于溢出的恶意软件时,但是其也不能确认数据106是安全的,则存储器剖析器204可以被配置成确定数据106的恶意软件状态是未知的。
[0055]使用单个适当的比较方法,存储器剖析器204可以确定存储器分配之间的比较未示出存储器分配匹配或与确定数据106是恶意的充分相关。但是,如上文所描述的,这样的无法检测到恶意动作可能是恶意软件伪装自身的结果。因此,可以使用上文实施例的组合。在一示例中,可以以任何适当的顺序顺序地使用校验和、大小、熵和时间技术。在另一示例中,一旦校验和、大小、熵或时间技术中的任何一个确定两个存储器分配匹配,则可以确定数据106是恶意的。在未来的示例中,如果使用任何技术确定任何存储器分配匹配,则可以向另外的反恶意软件实体发送数据106,以进行进一步验证。在又一实施例中,两个存储器分配匹配的确定的特定组合或多个两个存储器分配匹配的确定可以指示数据106是恶意的。
[0056]如果基于任何适当的技术,存储器剖析器204不能确定任何两个存储器分配匹配或无法匹配,则可以将数据106归类为未知的或将其发送至另外的反恶意软件实体进行进一步验证。如果基于技术的任何适当的组合存储器剖析器204确定没有迹象表明任何两个存储器分配匹配,则可以将数据106归类为安全的。
[0057]对于存储器分配的比较的技术的任何组合,存储器剖析器204可以被配置成确定数据106是恶意的置信水平百分比。例如,如果两个存储器分配共享检验和,则存储器剖析器204可以被配置成确定数据106是恶意的具有95%的确实性。在另一示例中,如果没有两个这样的存储器分配共享校验和,但是两个存储器分配基本上具有相同的大小,则存储器剖析器204可以被配置成确定数据106是恶意的具有50%的确实性。给定技术分配的百分比确实性可以可变的,这取决于所确定的存储器分配中的差异。例如,如果两个存储器分配在大小上相同,则存储器剖析器204可以被配置成确定数据106是恶意的具有85%的确实性。然而,如果两个存储器分配在大小上有10 %的不同,则存储器剖析器204可以被配置为确定数据106是恶意的具有40%的确实性。可以在确定置信级别百分比中组合多个技术。例如,如果两个存储器分配的熵相同,并且它们在短时间内创建了彼此,则存储器剖析器204可以被配置成确定数据106是恶意的具有95%的确实性。置信级别百分比因子的确定可以是基于模型数据数据库218的。对已知恶意代码的统计分析可以示出对存储器剖析器204执行的比较中的一个或多个的强相关。因此,存储器剖析器204可以量化所观测的、使用数据106的、对应于这样的已知行为的应用程序224的行为。存储器剖析器204所确定的置信级别百分比可以由其他反恶意软件实体使用,它们被发送关于数据106的分析。
[0058]存储器剖析器204可以被配置成访问一个或多个其它反恶意软件实体,以确定数据106的恶意软件状态。在一实施例中,存储器剖析器204可以被配置成:在对数据106的分析已经推断出两个存储器分配匹配时,进行这样的访问。这样的访问可以针对数据106是恶意的错误判断提供另外的检查。在另一实施例中,存储器剖析器204可以被配置成当对数据106的分析已经不能推断任何两个存储器分配是否匹配或无法匹配时,进行这样的访问。这样的访问可以提供防御可能不匹配所预期的恶意软件的行为,但是又不能确定性的确定为安全的恶意软件的第二道防线。[0059]系统100可以包括通信地耦合到反恶意软件检测器102的本地反恶意软件分类器216。本地反恶意软件分类器216可以位于例如具有反恶意软件检测器102的服务器或局域网上。本地反恶意软件分类器216可以包括配置成测试数据106的一个或多个应用程序。反恶意软件检测器102可以被配置成向本地反恶意软件分类器216发送数据106以及相关联的信息和分析。本地反恶意软件分类器216可以被配置成应用比反恶意软件检测器102更资源密集的技术。例如,本地反恶意软件分类器216可以被配置成确定数据106是否匹配基于签名的白名单-其指示数据106是安全的-或黑名单-其指示数据106是恶意软件。在另一示例中,本地反恶意软件分类器216可以被配置成分析数据106,特别是对于壳代码(shellcode),并产生数据106是否为恶意的置信级别。在这样的示例中,本地反恶意软件分类器216可以被配置成考虑由反恶意软件检测器102所完成的先前的分析。如果对于这样的壳代码分析,确定数据106是恶意的所需的缺省置信级别是95%,则反恶意软件检测器102确定数据106是恶意的或未知的可以导致本地反恶意软件分类器216降低确定数据106是恶意的所必需的置信级别。例如,可以将置信级别降低至70%。
[0060]系统100可以包括通信地耦合到反恶意软件检测器102的、基于云的反恶意软件分类器222。基于云的反恶意软件分类器222可以位于例如网络220上的服务器上。网络220可以包括任何适当的网络、网络系列、或用于在反恶意软件检测器102和基于云的反恶意软件分类器222之间通信的其部分。这样的网络可以包括但不限于:互联网、企业内部网、广域网、局域网、回程网、对等网或其任何组合。反恶意软件检测器102可以被配置成向基于云的反恶意软件分类器222发送关于应用程序224执行数据106的上下文信息,例如代表数据106的执行的元素或指纹或数字签名的特征向量。基于云的反恶意软件分类器222可以被配置成确定其他反恶意软件检测器和任何相关联的分析是否已经报告了数据106。基于云的反恶意软件分类器222可以被配置成向反恶意软件检测器102返回对是否已知数据106是恶意的还是安全的指示。如果反恶意软件检测器102报告数据106是恶意的或安全的,则基于云的反恶意软件分类器222可以被配置成将关于数据106的信息并入到已知安全或恶意的数据的统计模型中。可以向模型数据数据库218提供这样的统计模型。
[0061]反恶意软件检测器102可以包括耦合到处理器212的存储器214。存储器剖析器204、虚拟机202和虚拟存储器管理器206可以以任何适当的过程、应用程序、文件、可执行程序或其他适当的实体来实现。存储器剖析器204、虚拟机202和虚拟存储器管理器206可以包含用于执行本申请中描述的功能的指令,并且上述指令可以存储在存储器214中,以由处理器212执行。
[0062]处理器212可以包括例如微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、或配置成解释和/或执行程序指令和/或过程数据的任何其他的数字或模拟电路。在一些实施例中,处理器212可以解释和/或执行在存储器214中存储的程序指令和/或过程数据。存储器214可以被部分或全部配置作为应用程序存储器、系统存储器、或两者。存储器214可以包括配置成持有或容纳一个或多个存储器模块的任何系统、设备、或装置。每一存储器模块可以包括配置成保存程序指令和/或数据一段时间的任何系统、设备或装置(例如,计算机可读介质)。
[0063]在操作上,可以在反恶意软件检测器102上执行存储器剖析器204、虚拟机202和虚拟存储器管理器206。反恶意软件检测器102可以接收数据106,该数据106要被分析,以确定其是否包含基于溢出的恶意软件。虚拟机202可以基于反恶意软件检测器102接收的数据106来发起应用程序224。
[0064]语法分析器/解析器203可以将数据106分成数据段226并向虚拟机202发送这样的段。虚拟机202可以访问来自DOM处理程序210的一个或多个D0M,以确定如何执行应用程序204。应用程序224可以执行或模拟数据段226。在诸如终止执行循环的各个过程流事件完成之后,虚拟机202可以通知存储器剖析器204。如所需要的,虚拟机202可以访问虚拟机存储器管理器206,以创建存储器分配207。虚拟机存储器管理器206可以将新的存储器分配传递给存储器剖析器204。
[0065]在接收到过程流事件和/或新的存储器分配之后,存储器剖析器204可以将新的存储器分配与先前创建的存储器分配做比较。存储器剖析器204可以继续这样的分析,直到已经基于数据106完全地模拟或执行了应用程序224,或直到存储器剖析器204确定数据106包括恶意软件为止。
[0066]存储器剖析器204可以将新的存储器分配与先前创建的所有存储器分配进行比较,以确定新的存储器分配是否与先前的存储器分配匹配,以确定数据106包括基于溢出的恶意软件攻击。可以使用任何适当的技术来确定新的存储器分配是否与先前的存储器分配匹配。例如,可以比较每一存储器分配的特征。在另外的示例中,可以将每一存储器分配的特征之间的差异与一个或多个阈值进行比较。存储器剖析器204可以组合一个或多个比较技术。存储器剖析器204可以访问模型数据数据库218,以确定决策树、要进行的比较、阈值或对将新的存储器分配与先前创建的存储器进行比较有用的其他信息。
[0067]存储器剖析器204可以将新的存储器分配的校验和、签名、或散列值与先前创建的存储器分配进行比较。如果新的存储器分配与先前的存储器分配匹配,则存储器剖析器204可以确定新的存储器分配与先前的存储器分配匹配。存储器剖析器204可以至少初步地确定数据106包括基于溢出的恶意软件。在一实施例中,存储器剖析器204可以确定数据106包括恶意软件,例如具有95%的置信级别。如果新的存储器分配与先前的存储器分配不匹配,则存储器剖析器204可以进行另外的比较。
[0068]存储器剖析器204可以将新的存储器分配的大小与先前创建的存储器分配进行比较。如果新的存储器分配与先前创建的存储器分配具有相同的大小,或在所指定的大小的阈值差异内,则存储器剖析器204可以确定新的存储器分配与先前的存储器分配相匹配,并且如果该存储器分配与先前的存储器分配匹配,则数据106包括恶意软件。如果在新的存储器分配和先前的存储器分配之间的大小的差异超出给定的阈值,则存储器剖析器204可以确定新的存储器分配与先前的存储器分配不匹配。如果在存储器分配和先前的存储器分配之间的大小差异超出更大的第二阈值,则存储器剖析器204可以确定数据106不包括恶意软件。可以结合其他的比较来使用存储器剖析器204确定新的存储器分配关于大小匹配或不匹配。在一实施例中,存储器剖析器204可以量化在新的存储器分配与先前的存储器分配之间关于大小的差异,并将该差异转换成数据106包括恶意软件的置信级别。可以结合诸如下文描述的比较之类的其它比较来使用这样的置信级别。
[0069]存储器剖析器204可以将新的存储器分配的熵与先前创建的存储器分配进行比较。如果新的存储器分配与先前创建的存储器分配具有相同的熵,或其在指定的熵的差异阈值内,则存储器剖析器204可以确定新的存储器分配与先前的存储器分配匹配。如果该存储器分配与先前的存储器分配匹配,则存储器剖析器204可以确定数据106包含恶意软件。如果在新的存储器分配与先前的存储器分配之间的熵的差异超出给定阈值,则存储器剖析器204可以确定新的存储器分配与先前的存储器分配匹配。如果存储器分配关于熵与先前的存储器分配不匹配,则存储器剖析器204可以确定数据106不包括恶意软件。可以结合其他的比较来使用由存储器剖析器204确定的新的存储器分配关于熵匹配或不匹配先前的存储器分配。在一实施例中,存储器剖析器204可以量化新的存储器分配和先前的存储器分配关于熵之间的差异,并将该差异转换成数据106包括恶意软件的置信级别。可以结合其他比较来使用这样的置信级别。
[0070]存储器剖析器204可以将新的存储器分配的做出分配的时间与先前创建的存储器分配的到达时间进行比较。如果新的存储器分配的分配时间在所指定的先前的存储器分配的分配时间的指定阈值内,则存储器剖析器204可以确定新的存储器分配在时间上足够接近,并且匹配先前的存储器分配。如果该存储器分配在时间上与先前的存储器分配足够接近,则存储器剖析器204可以确定数据106包括恶意软件。如果在新的存储器分配与先前的存储器分配之间的分配时间上的差异超出给定的阈值,则存储器剖析器204可以确定新的存储器分配无法与先前的存储器分配匹配。如果该存储器分配无法与先前的存储器分配关于分配时间匹配,则存储器剖析器204可以确定数据106不包括恶意软件。可以结合其他的比较来使用由存储器剖析器204确定的新的存储器分配匹配或不匹配先前的存储器分配。在一实施例中,存储器剖析器204可以量化新的存储器分配和先前的存储器分配之间关于分配时间的差异,并将该差异转换成数据106包括恶意软件的置信级别。可以结合其他比较来使用这样的置信级别。
[0071]确定给定的比较产生恶意的结果或未知的结果可以使得存储器剖析器204进行另外的比较或访问另外 的反恶意软件资源。在一个实施例中,确定给定的比较产生安全结果可以使得存储器剖析器204执行另外的比较。在另一实施例中,这样的确定可以使得存储器剖析器204确定代码106是安全的。在又一另外的实施例中,仅在所有的比较方法产生安全的确定之后,存储器剖析器204才确定代码106是安全的。
[0072]虚拟机202、存储器剖析器204和虚拟机存储器管理器206可以继续处理数据106,直到应用程序224已经完成执行。在检测到潜在的恶意数据组106或其恶意软件状态是未知的一组数据106之后,存储器剖析器204可以使用本地的反恶意软件分类器216或基于云的反恶意软件分类器222来进行对数据106的进一步分析。存储器剖析器204可以向这样的实体发送签名、特征向量或关于数据106的其他信息。存储器剖析器204可以接收这样的实体关于数据106是否可以被确定为包括基于溢出的恶意软件的指示。
[0073]图3是对系统100的示例性操作的进一步描述。先前的存储器分配304可以包括先前分配的块块C1-块5以及相关联的信息:
[0074]块。:校验和=123 ;熵=I ;时间戳=001 ;大小=22
[0075]块!:校验和=345 ;熵=3 ;时间戳=200 ;大小=47
[0076]块2:校验和=456 ;熵=5 ;时间戳=400 ;大小=62
[0077]块3:校验和=123 ;熵=7 ;时间戳=600 ;大小=82
[0078]块4:校验和=789 ;熵=8 ;时间戳=800 ;大小=56[0079]可以通过如上文所描述的任何适当的方式来确定每一块的校验和熵。每一块的时间戳可以利用分配该块的时间来确定,并且其可以例如以毫秒来测量。可以以诸如字节之类的任何适当的方式来测量每一块的大小。存储器剖析器204可以通过例如在由虚拟机存储器管理器206接收到其时存储信息或通过访问虚拟机存储器管理器206来访问先前的分配 304。
[0080]虚拟机202可以生成循环事件308的结束并将其发送至存储器剖析器204。虚拟机存储器管理器206可以分配称为块5的新块302,并向存储器剖析器204发送关于其的信息。[0081]存储器剖析器204可以访问模型数据数据库218,以获得诸如利用其来比较块5和先前的分配304的阈值306之类的模型数据。例如,阈值306可以指示:小于10毫秒的时间差异和小于I字节的大小差异可以指示数据106可能包括基于溢出的恶意软件。在另一示例中,阈值306可以指示:大于300毫秒的时间差异和大于60字节的大小差异可以指示数据106不可能包括基于溢出的恶意软件。
[0082]存储器剖析器204可以比较块5的信息和先前的分配304,以确定块5是否匹配任何这样的分配来确定数据106指示基于溢出的恶意软件,无法匹配这样的分配、或不能确信地确定匹配或无法匹配。
[0083]例如,块5可以具有“123”的校验和。存储器剖析器204可以确定块5的校验和与来自先前的分配304的块^和块3的校验和都匹配。存储器剖析器204可以确定块5与块。和块3匹配,并确定这样的匹配是数据106包含基于溢出的恶意软件的指示。确定块5与超过先前的分配304中的一个匹配可以提供数据105包含基于溢出的恶意软件的进一步证据。存储器剖析器204可以向基于云的反恶意软件分类器222或本地反恶意软件分类器发送数据106、块5、块。和块3,以进行进一步报告和分析。存储器剖析器204可以通知反恶意软件检测器102数据106可能是恶意的并且应该将其清除、阻挡或移除。存储器剖析器204可以建立例如数据106包含基于溢出的恶意软件的95%的置信级别。在一实施例中,块5与先前的分配304的另外的比较可能是不必需的。
[0084]在另一实施例中,块5可以具有46个字节的大小以及熵值3。存储器剖析器204可以确定块5的熵与来自先前的分配304的块i的熵匹配。存储器剖析器204可以确定块5与块i匹配,并且确定这样的匹配是数据106包含基于溢出的恶意软件的指示。存储器剖析器204可以建立例如数据106包含基于溢出的恶意软件的40%的置信级别。在一实施例中,块5与块i之间匹配的熵值可能不足以确定块5与块i匹配。在这样的实施例中,可以进行另外的比较。
[0085]从而,存储器剖析器可以确定块5与块i之间的大小差异是I字节,其小于在阈值306中所标识的阈值。存储器剖析器204可以确定块5与块i匹配,并且确定这样的匹配是数据106包含基于溢出的恶意软件的指示。使用大小和熵的比较的组合可以使得存储器剖析器204到存储器剖析器204确定数据106包含基于溢出的恶意软件。存储器剖析器204可以建立例如数据106包含基于溢出的恶意软件的95%的置信级别。存储器剖析器204可以向基于云的反恶意软件分类器222或本地反恶意软件分类器发送数据106、块5和块1;以进行进一步报告和分析。存储器剖析器204可以通知反恶意软件检测器102数据106可能是恶意的并且应该将其清除、阻挡或移除。[0086]在又一实施例中,块5可能具有时间戳“405”。存储器剖析器204可以确定块5的时间戳位于块2的小于10毫秒的阈值(由阈值306定义)内。存储器剖析器204可以确定块5与块2匹配,并确定这样的匹配是数据106包含基于溢出的恶意软件的指示。存储器剖析器204可以向基于云的反恶意软件分类器222或本地反恶意软件分类器发送数据106、块5和块2,以进行进一步报告和分析。存储器剖析器204可以通知反恶意软件检测器102:数据106可能是恶意的,并且应该将其清除、阻挡或移除。存储器剖析器204可以建立例如数据106包含基于溢出的恶意软件的80%的置信级别。
[0087]但是如果块5的大小也为82字节,则存储器剖析器204可以确定块5与块2之间的大小差异不在如由阈值306所定义的小于I字节的阈值内。因此,存储器剖析器204可能不能基于大小比较确定块5匹配块2。对于块5,存储器剖析器204可以降低数据106包含基于溢出的恶意软件的置信级别。存储器剖析器204可以向基于云的反恶意软件分类器222和本地反恶意软件分类器216提交块5、块2和数据106以另外指示数据106是恶意的。可以与由存储器剖析器204确定的置信级别或恶意软件信息一起提交这样的信息,并且这样的信息可以由基于云的反恶意软件分类器222和本地反恶意软件分类器216在进行恶意软件确定时考虑在内。
[0088]在又一个示例中,块5可以具有“750”的时间戳和120字节的大小。存储器剖析器204可以确定块5在大小差异(64字节)方面与块4匹配。根据阈值306,大于60字节的大小差异可以指示存储器分配匹配。但是,存储器剖析器204可以确定块5与块i之间的时间差异(50毫秒)既不落入第一阈值(小于10毫秒)(以确定块匹配),也不在第二阈值之外(大于300毫秒)(以确定块不匹配)。存储器剖析器204可以向基于云的反恶意软件分类器222和本地反恶意软件分类器216提交块5、块4和数据106,用于数据106是恶意的或安全的另外的指示。存储器剖析器204可以进行另外的比较,例如校验和或熵比较,以进一步确定块5的状态。在一实施例中,存储器剖析器204可以忽视多个决定性的比较中的单个未确定的状态比较。
[0089]在另外的示例中,块5可以具有时间戳“1100”、校验和“555”、熵值6以及180字节的大小。存储器剖析器204可以确定块5不匹配先前的分配304的任何校验和或任何熵。此外,存储器剖析器204可以确定块5与先前的分配304之间的大小差异超出阈值大小差异量(60字节),并且将被认为匹配,如阈值306所限定的。此外,存储器剖析器204可以确定块5与先前的分配304之间的时间差异超出时间阈值量(300毫秒),并且将无法匹配,如由阈值306所定义的。存储器剖析器204可以推断块5基本上与任何的先前的分配304不同,并且因此数据106不包括基于溢出的恶意软件。
[0090]图4是对用于预测性堆溢出保护的方法400的示例性实施例的描述。
[0091]在步骤404,可以拦截数据的下载,或可以检测到驻留在电子设备上的数据。这样的数据可能是未知的、不可信的或具有不知道是安全的恶意软件状态。例如,上述数据可以是从未知的网络目的地下载的。上述数据可以包括要由应用程序使用的应用程序或信息。可以将与上述数据相关联的应用程序确定利用该数据执行。
[0092]在步骤410,可以使用上述数据执行或模拟该应用程序。例如,可以在虚拟机中模拟该应用程序,或例如在数据驻留在其上的电子设备上执行该应用程序。可以由例如虚拟机存储器监控器或存储器分配功能中的钩子(hook)来检查应用程序中循环的执行或试图的存储器分配。在步骤415中,可以确定的是执行循环已经终止和/或应用程序已经进行新的存储器分配。
[0093]可以将新的存储器分配与先前的存储器分配进行比较,以确定恶意软件是否正在进行操作来重复地写恶意代码,以试图利用应用程序中基于溢出的弱点。可以以任何适当的方式来将新的存储器分配与先前的存储器分配进行比较。
[0094]在步骤420中,可以确定新创建的存储器分配的校验和、散列值或数字签名。在步骤425中,可以确定该校验和是否与任何先前创建的存储器分配的校验和匹配。如果匹配的话,则方法400可以继续到步骤465。
[0095]如果新的存储器分配的校验和与任何先前创建的存储器分配不匹配,则在步骤430中,可以确定存储器分配是否匹配或等于任何先前的存储器分配。可以使用任何适当的方法来比较该存储器分配与先前的存储器分配。例如,可以比较上述分配的大小、熵和/或分配时间。可以使用分配之间的阈值差异来测量差异或使差异合格。在一实施例中,步骤430可以由如图5a和5b中示出的方法500的步骤来进行。如果存储器分配匹配或等于任何先前的存储器分配,则方法400可以继续进行到步骤465。
[0096]如果存储器分配与任何先前的存储器分配都不匹配,则在步骤435中,可以确定该应用程序是否已经完成执行。如果没有完成,则方法400可以返回到步骤415,以等待新存储器分配的分配。如果该应用程序已经完成执行,则在步骤440中,可以确定存储器分配是否不与任何先前的分配匹配。虽然在不同的步骤中给出了步骤440和步骤430,但是,他们可以并行地执行。可以使用分配之间的另一阈值差异来测量分配之间的差异或使分配之间的差异合格。在一实施例中,步骤440可以由如图6中示出的方法600的步骤来进行。如果该存储器分配与所有先前的存储器分配都不匹配,则方法400可以继续到步骤470。
[0097]如果存储器分配与所有先前的存储器分配都不匹配,则基于通过数据的使用生成的存储器分配的比较可能不能完全地确定数据是否为恶意的。在步骤445中,可以向配置成进行例如核心(shell)代码、基于签名的或声誉的分析的反恶意软件模块发送比较的结果和数据。从而,可以确定基于数据自身结合例如通过在步骤430和440中分析存储器分配行为确定的置信级别的恶意软件状态。
[0098]在步骤450中,如果基于这样的分析确定数据是恶意的,则方法400可以转到步骤465。如果确定数据不是恶意的,则方法400可以转到步骤470。
[0099]在步骤465中,基于当使用数据时对存储器分配行为的分析,可以确定数据是恶意的。这样的数据可以包括基于溢出的恶意软件。可以采取任何适当的校正动作。可以阻挡进一步下载这样的数据,或者从电子设备或网络清除或移除这样的数据。在步骤475中,可以利用上述数据以及分析的结果向基于云的反恶意软件服务器报告这样的恶意确定。可以将这样的恶意确定并入存储器分配行为的特征。
[0100]在步骤470中,基于当使用数据时对存储器分配行为的分析,可以确定数据是安全的。可以允许执行上述数据或允许将上述数据下载到其目标客户端。在步骤475中,可以与上述数据以及分析的结果一起向基于云的反恶意软件服务器报告安全确定。可以将这样的安全确定并入存储器分配行为的特征。
[0101]图5a和5b是对用于确定存储器分配是否与先前创建的存储器分配匹配并从而指示基于溢出的恶意软件的示例性方法500的描述。[0102]在步骤505中,模型数据指示可以确定恶意软件。这样的模型数据可以是对已知为基于溢出的恶意软件的数据的存储器分配行为的统计分析的结果。可以在例如数据库中访问模型数据,并且可能已经由反恶意软件服务器或服务生成上述模型数据。模型数据可以包括层级、决策树、比较、和/或要应用于描绘存储器分配行为特征的阈值。
[0103]方法500可以包括新创建的存储器分配与先前创建的存储器分配的比较的任何适当的组合。在一实施例中,给定的度量指示新创建的存储器分配与先前创建的存储器分配匹配的确定可能足以确定分配行为指示了基于溢出的恶意软件。在另一实施例中,这样的确定可能需要使用其他度量的另外的比较。下文示出了三个这样的可能的比较。通过对已知为基于溢出的恶意软件的数据的存储器分配行为的统计分析,可以确定以特定的顺序应用比较的特定组合。在又一实施例中,任何这样的比较可以产生存储器分配匹配先前的存储器分配的置信级别,并从而指示恶意软件。还可以通过所描述的统计分析来确定置信级别。此外,可以并行地或与所描述的比较相混合的进行方法600的步骤。
[0104]在步骤510中,可以将新的存储器分配的熵与先前的分配的熵进行比较。可以使用任何适当的熵的测量。在步骤515中,如果分配之间的熵的差异低于熵阈值,则在步骤520中,可以确定这样的差异是分配匹配的指示。在一实施例中,可以使用这样的确定来增加分配匹配的置信级别。如果分配之间的熵差异不低于熵阈值,则在步骤525中,可以确定这样的差异不是分配匹配的指示。在一实施例中,可以使用这样的确定来减少分配匹配的置信级别。
[0105]在步骤530中,可以将新存储器分配的大小与先前的分配的大小进行比较。在步骤535中,如果分配之间的大小差异低于大小阈值,则在步骤540中,可以确定这样的差异是分配匹配的指示。在一实施例中,可以使用这样的确定增加分配匹配的置信级别。如果分配之间的大小差异不低于大小阈值,则在步骤545中,可以确定这样的差异不是分配匹配的指示。在一实施例中,可以使用这样的确定来减少分配匹配的置信级别。
[0106]在步骤550中,可以将新存储器分配的创建和分配时间与先前分配的创建时间进行比较。在步骤555,如果分配之间的创建时间差异低于时间阈值,则在步骤560中,可以确定这样的差异是分配匹配的指示。在一实施例中,可以使用这样的确定来增加分配匹配的置信级别。如果分配之间的创建时间差异不低于时间阈值,则在步骤565中,可以确定这样的差异不是分配匹配的指示。在一实施例中,可以使用这样的确定来减少分配匹配的置信级别。
[0107]在步骤570中,可以确定是否已经将新的分配与所有的先前分配进行了比较。如果没有,则方法500可以返回步骤510,以继续比较新的分配和另一个给定的先前分配。
[0108]如果已经将新的分配与所有先前的分配进行了比较,则在步骤575中,可以确定新的分配与先前分配中的任何一个是否匹配。在一实施例中,如果通过两个比较已经确定新的分配与先前分配的特征匹配,则在步骤580中,可以确定新的分配匹配先前的分配。在另一实施例中,如果新的分配匹配先前的分配的置信级别超出诸如95%的阈值,则在步骤580中,可以确定新的分配匹配先前的分配。如果不超出阈值,则在步骤585中,可以确定新的分配与先前的分配不匹配。
[0109]图6是对用于确定存储器分配是否与先前创建的存储器分配不匹配并从而指示基于溢出的恶意软件不存在的方法600的示例性实施例的描述。[0110]在步骤605中,可以确定指示安全数据的模型数据。这样的模型数据可以是对已知是安全的数据的存储器分配行为的统计分析的结果。可以在例如数据库中访问模型数据,并且上述模型数据可能已经由反恶意软件服务器或服务生成。模型数据可以包括要应用于描绘存储器分配行为的特征的层级、决策树、比较、和/或阈值。
[0111]方法600可以包括新创建的存储器分配与先前创建的存储器分配的比较的任何适当组合。在一实施例中,给定度量指示新创建的存储器分配与先前创建的存储器分配不匹配的确定可能足以确定该分配行为指示了基于溢出的恶意软件。在另一实施例中,这样的确定可能需要使用其他度量的另外的比较。下文示出了三个这样的可能的比较。通过对已知为基于溢出的恶意软件的数据的存储器分配行为进行统计分析,可以确定以特定的顺序应用比较的特定组合。在又一实施例中,可以使用所有这样的比较来确定存储器分配不与先前的存储器分配中的任何一个匹配,并从而指示数据是安全的。方法600的比较可以与方法500并行地进行或与方法500混合进行。
[0112]在步骤610中,可以将新存储器分配的熵与先前分配的熵进行比较。可以使用熵的任何适当测量。在步骤615中,如果分配之间的熵差异高于熵阈值,则方法600可以转到步骤620以继续进行分配之间的比较。如果熵的差异不超出熵阈值,则方法600可以转到步骤650。
[0113]在步骤620中,可以将新存储器分配的大小与先前分配的大小进行比较。在步骤625中,如果分配之间的大小差异高于大小阈值,则方法600可以转到步骤630以继续进行分配之间的比较。如果分配之间的大小差异不高于大小阈值,则方法600可以转到步骤650。
[0114]在步骤630中,可以将新存储器分配的创建时间与先前分配的创建时间进行比较。在步骤635中,如果分配之间的创建时间差异高于时间阈值,则方法600可以转到步骤640,以继续进行分配之间的比较。如果分配之间的创建时间差异不高于时间阈值,则方法600可以转到步骤650。
[0115]在步骤640,可以确定是否已经将新分配与所有先前创建的分配进行了比较。如果没有,则方法600可以返回步骤610,以将新分配与另一给定的先前分配进行比较。
[0116]如果已经将新分配与所有先前创建的分配进行了比较,则在步骤645中,可以确定新分配与任何先前创建的分配都不匹配。在一实施例中,已经将新分配与所有这样的分配进行了比较,并且超出了在每一个比较检查中定义的阈值差异。在另一实施例中,如果在至少两个比较中,差异超出了阈值,则可以确定该新分配不与先前创建的分配匹配。
[0117]在步骤650中,可以确定新分配不与任何先前创建的分配匹配。在与先前创建的分配的比较期间,该新分配可能不满足至少一个差异阈值。从而,可能存在新分配与先前创建的分配匹配的合理机会。
[0118]可以使用图1-4中的系统或操作成执行方法400、500和600的任何其他系统来实现方法400、500和600。这样的话,用于方法400、500和600以及包括方法400、500和600的步骤的顺序的优选初始化点可以取决于所选择的实现。在一些实施例中,可以可选地省略、重复或组合一些步骤。可以并行地进行方法400、500和600中的某些步骤。在某些实施例中,可以以在计算机可读介质中包含的软件部分地或完全地实现方法400、500和600。
[0119]为了本公开的目的,计算机可读介质可以包括可以保存数据和/或指令一段时间的任何工具或工具的聚合。计算机可读介质可以包括但不限于,诸如直接访问存储设备(例如,硬盘驱动或软盘)、顺序存取存储器设备(例如,磁带磁盘驱动)、压缩盘、CD-ROM、DVD、随机访问存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)JP/或闪存之类的存储介质;以及诸如电线、光纤和其他电磁的和/或光学的载波之类的通信介质;和/或前述的任何组合。
[0120] 虽然已经详细地描述了本公开,但是应该理解的是可以对其进行各种改变、替换和修改,而不偏离由所附权利要求书所定义的本公开的精神和保护范围。
【权利要求】
1.一种用于防止恶意软件攻击的方法,包括: 识别一组数据,所述一组数据的恶意软件状态不是已知安全的; 使用所述数据发起应用程序; 确定所述应用程序已经创建了一个或多个先前的存储器分配; 确定所述应用程序已经创建了新的存储器分配; 将所述新的存储器分配与所述先前的存储器分配进行比较;以及 基于所述比较,确定所述数据是否包括恶意软件。
2.根据权利要求1所述的方法,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:应用标准来确定所述新的存储器分配是否与所述先前的存储器分配中的一个或多个匹配;以及基于所述标准的应用,确定所述数据是否包括恶意软件。
3.根据权利要求1所述的方法,还包括: 在虚拟机上模拟所述应用程序的执行; 检测在所述虚拟机上的所述应用程序的执行中的执行循环的终止;以及 在所述虚拟机上创建所述新的存储器分配; 其中,在检测到所述执行循环的终止之后,比较所述新的存储器分配和所述先前的存储器分配。
4.根据权利要求1所述的方法,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:将所述新的存储器分配的校验和与所述先前的存储器分配中的一个或多个的校验和进行比较;以及 确定所述数据是否包括恶意软件包括:确定所述新的存储器分配的校验和是否与所述先前的存储器分配中的任何一个的校验和相等。
5.根据权利要求1所述的方法,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:将所述新的存储器分配的大小与一个或多个先前的存储器分配的大小进行比较;以及 确定所述数据是否包括恶意软件包括:确定所述新的存储器分配的大小是否在所述先前的存储器分配中的任何一个的大小的阈值量内。
6.根据权利要求1所述的方法,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:将所述新的存储器分配的创建时间与一个或多个先前的存储器分配的创建时间进行比较;以及 确定所述数据是否包括恶意软件包括:确定所述新的存储器分配是否在所述先前的存储器分配中的任何一个的阈值创建时间内创建。
7.根据权利要求1所述的方法,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:将所述新的存储器分配的第一熵值与一个或多个先前的存储器分配的第二熵值进行比较;以及 确定所述数据是否包括恶意软件包括:确定所述第一熵值是否在所述第二熵值的阈值量内。
8.根据权利要求1所述的方法,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括以下各项中的两项或更多项: 将所述新的存储器分配的校验和与所述先前的存储器分配中的一个或多个的校验和进行比较; 将所述新的存储器分配的大小与一个或多个先前的存储器分配的大小进行比较;将所述新的存储器分配的创建时间与一个或多个先前的存储器分配的创建时间进行比较;以及 将所述新的存储器分配的第一熵值与一个或多个先前的存储器分配的第二熵值进行比较;以及 确定所述数据是否包括恶意软件包括确定如下各项中的两项或更多项: 所述新的存储器分配的校验和是否等于所述先前的存储器分配中的任何一个的校验和; 所述新的存储 器分配的大小是否在所述先前的存储器分配中的任何一个的大小的第一阈值量内; 所述新的存储器分配是否在所述先前的存储器分配中的任何一个的第二阈值创建时间内创建; 所述第一熵值是否在所述第二熵值的第三阈值量内。
9.根据权利要求1所述的方法,还包括: 基于所述比较,确定所述数据的恶意软件状态是未知的;以及 基于所述数据的内容,执行反恶意软件分析,以确定所述数据是否包括恶意软件。
10.一种制品,包括: 一种计算机可读介质;以及 在所述计算机可读介质上携带的计算机可执行指令,所述指令能够由处理器读取,当读取或执行时,所述指令用于使所述处理器执行以下操作: 识别一组数据,所述一组数据的恶意软件状态不是已知安全的; 使用所述数据发起应用程序; 确定所述应用程序已经创建了一个或多个先前的存储器分配; 确定所述应用程序已经创建了新的存储器分配; 将所述新的存储器分配与所述先前的存储器分配进行比较;以及 基于所述比较,确定所述数据是否包括恶意软件。
11.根据权利要求10所述的制品,其中还使所述处理器执行以下操作: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:应用标准来确定所述新的存储器分配是否与所述先前的存储器分配中的一个或多个匹配;以及基于所述标准的应用,确定所述数据是否包括恶意软件。
12.根据权利要求10所述的制品,其中还使所述处理器执行以下操作: 在虚拟机上模拟所述应用程序的执行; 检测在所述虚拟机上的所述应用程序的执行中的执行循环的终止;以及 在所述虚拟机上创建所述新的存储器分配; 其中,在检测到所述执行循环的终止之后,比较所述新的存储器分配和所述先前的存储器分配。
13.根据权利要求10所述的制品,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:将所述新的存储器分配的校验和与所述先前的存储器分配中的一个或多个的校验和进行比较;以及 确定所述数据是否包括恶意软件包括:确定所述新的存储器分配是否与所述先前的存储器分配中的任何一个的校验和相等。
14.根据权利要求10所述的制品,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:将所述新的存储器分配的大小与一个或多个先前的存储器分配的大小进行比较;以及 确定所述数据是否包括恶意软件包括:确定所述新的存储器分配的大小是否在所述先前的存储器分配中的任何一个的大小的阈值量内。
15.根据权利要求10所述的制品,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:将所述新的存储器分配的创建时间与一个或多个先前的存储器分配的创建时间进行比较;以及 确定所述数据是否包括恶意软件包括:确定所述新的存储器分配是否在所述先前的存储器分配中的任何一个的阈值创建时间内创建。
16.根据权利要求10所述的方法,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:将所述新的存储器分配的第一熵值与一个或多个先前的存储器分配的第二熵值进行比较;以及 确定所述数据是否包括恶意软件包括:确定所述第一熵值是否在所述第二熵值的阈值量内。
17.根据权利要求10所述的制品,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括以下各项中的两项或更多项: 将所述新的存储器分配的校验和与所述先前的存储器分配中的一个或多个的校验和进行比较; 将所述新的存储器分配的大小与一个或多个先前的存储器分配的大小进行比较;将所述新的存储器分配的创建时间与一个或多个先前的存储器分配的创建时间进行比较;以及 将所述新的存储器分配的第一熵值与一个或多个先前的存储器分配的第二熵值进行比较;以及 确定所述数据是否包括恶意软件包括确定如下各项中的两项或更多项: 所述新的存储器分配校验和是否等于所述先前的存储器分配中的任何一个的校验和; 所述新的存储器分配的大小是否在所述先前的存储器分配中的任何一个的大小的第一阈值量内; 所述新的存储器分配是否在所述先前的存储器分配中的任何一个的第二阈值创建时间内创建; 所述第一熵值是否在所述第二熵值的第三阈值量内。
18.根据权利要求10所述的制品,其中,还使得所述处理器执行以下操作:基于所述标准的应用,确定所述数据的恶意软件状态是未知的;以及 基于所述数据的内容,执行反恶意软件分析,以确定所述数据是否包括恶意软件。
19.一种用于防止恶意软件攻击的系统,包括: 耦合到存储器的处理器;以及 由所述处理器执行的反恶意软件检测器,其驻留在所述存储器中,所述反恶意软件检测器被配置成: 识别一组数据,所述一组数据的恶意软件状态不是已知安全的; 使用所述数据发起应用程序; 确定所述应用程序已经创建了一个或多个先前的存储器分配; 确定所述应用程序已经创建了新的存储器分配; 将所述新的存储器分配与所述先前的存储器分配进行比较;以及 基于所述比较,确定所述数据是否包括恶意软件。
20.根据权利要求19所述的系统,其中,所述反恶意软件检测器还被配置成: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:应用标准来确定所述新的存储器分配是否与所述先前的存储器分配中的一个或多个匹配;以及 基于所述标准的应用,确定所述数据是否包括恶意软件。
21.根据权利要求19所述的系统,还包括虚拟机,其中: 所述虚拟机被配置成: 模拟所述应用程序的执行;以及 创建所述新的存储器分配;以及 所述反恶意软件检测器被配置成检测在所述虚拟机上的所述应用程序的执行中的执行循环的终止; 其中反恶意软件检测器被配置成:在检测到所述执行循环的终止之后,比较所述新的存储器分配和所述先前的存储器分配。
22.根据权利要求19所述的系统,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:将所述新的存储器分配的校验和与所述先前的存储器分配中的一个或多个的校验和进行比较;以及 确定所述数据是否包括恶意软件包括:确定所述新的存储器分配是否与所述先前的存储器分配中的任何一个的校验和相等。
23.根据权利要求19所述的系统,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:将所述新的存储器分配的大小与一个或多个先前的存储器分配的大小进行比较;以及 确定所述数据是否包括恶意软件包括:确定所述新的存储器分配的大小是否在所述先前的存储器分配中的任何一个的大小的阈值量内。
24.根据权利要求19所述的系统,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:将所述新的存储器分配的创建时间与一个或多个先前的存储器分配的创建时间进行比较;以及 确定所述数据是否包括恶意软件包括:确定所述新的存储器分配是否在所述先前的存储器分配中的任何一个的阈值创建时间内创建。
25.根据权利要求19所述的系统,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括:将所述新的存储器分配的第一熵值与一个或多个先前的存储器分配的第二熵值进行比较;以及 确定所述数据是否包括恶意软件包括:确定所述新的熵值是否在所述第二熵值的阈值量内。
26.根据权利要求19所述的系统,其中: 将所述新的存储器分配与所述先前的存储器分配进行比较包括以下各项中的两项或更多项: 将所述新的存储器分配的校验和与所述先前的存储器分配中的一个或多个的校验和进行比较; 将所述新的存储器分配的大小与一个或多个先前的存储器分配的大小进行比较;将所述新的存储器分配的创建时间与一个或多个先前的存储器分配的创建时间进行比较;以及 将所述新的存储器分配的第一熵值与一个或多个先前的存储器分配的第二熵值进行比较;以及 确定所述数据是否包括恶意软件包括确定如下各项中的两项或更多项: 所述新的存储器分配校验和是否等于所述先前的存储器分配中的任何一个的校验和; 所述新的存储器分配的大小是否在所述先前的存储器分配中的任何一个的大小的第一阈值量内; 所述新的存储器分配是否在所述先前的存储器分配中的任何一个的第二阈值创建时间内创建; 所述第一熵值是否在所述第二熵值的第三阈值量内。
27.根据权利要求19所述的系统,其中,所述反恶意软件检测器还被配置成: 基于所述标准的应用,确定所述数据的恶意软件状态是未知的;以及 基于所述数据的内容,执行反恶意软件分析,以确定所述数据是否包括恶意软件。
【文档编号】G06F21/52GK103975337SQ201280060659
【公开日】2014年8月6日 申请日期:2012年12月7日 优先权日:2011年12月9日
【发明者】C·阿尔梅, S·芬克 申请人:迈克菲公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1