首页> 中国专利> 启发式代码分析方法

启发式代码分析方法

摘要

一种在计算设备检测恶意软件的方法。所述方法包括:检查软件程序,所述软件程序包括程序指令序列;判定所述序列中每个指令是否符合怀疑准则组中的任一准则;给符合所述怀疑准则中任一准则的每个指令分派一指令级评分;对每个指令的所述指令级评分求和来得到程序级评分;判定所述程序级评分是否超过阈值;以及如果所述程序级评分超过阈值,生成报告,所述报告表明恶意软件检测结果。

著录项

  • 公开/公告号CN102203792A

    专利类型发明专利

  • 公开/公告日2011-09-28

    原文格式PDF

  • 申请/专利权人 AVG技术捷克有限责任公司;

    申请/专利号CN200980142935.0

  • 发明设计人 Z·布里特恩巴彻;

    申请日2009-08-28

  • 分类号G06F21/00(20060101);

  • 代理机构北京嘉和天工知识产权代理事务所;

  • 代理人严慎

  • 地址 捷克布尔诺

  • 入库时间 2023-12-18 03:30:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-21

    专利权的转移 IPC(主分类):G06F21/56 登记生效日:20190430 变更前: 变更后: 申请日:20090828

    专利申请权、专利权的转移

  • 2014-05-07

    授权

    授权

  • 2011-11-23

    实质审查的生效 IPC(主分类):G06F21/00 申请日:20090828

    实质审查的生效

  • 2011-09-28

    公开

    公开

说明书

相关申请的交叉引用:本申请要求2009年8月27日递交的美国专利申请No.12/548,747的优先权权益,该美国专利申请No.12/548,747要求2008年8月28日递交的美国临时申请No.61/092,602的优先权。

背景

本公开涉及对经由通信网络传送的数据的识别和分析,并且更具体地,涉及对有害或有恶意的软件或数据的检测和分析。

随着计算机网络技术和架构在数年来已经得到改进,计算机网络设备之间所传送的数据量和数据速率已经急剧增长。在这些所传送的数据中,有一类数据被称为恶意软件。恶意软件(malware或者malicious software)是一种设计来在未经设备所有者知悉或者同意的情况下潜入计算设备的计算机程序。恶意软件已经开始指代一类广泛的软件,其包括各种敌意的、侵入式或者其他恼人形式的软件或计算机代码。恶意软件包括各种病毒、蠕虫、木马(trojan horse或者trojan)、后门(rootkit)、间谍软件、广告软件和任何其他不希望的有恶意的软件。各种类型的恶意软件可以收集与用户相关的个人信息并且将这些信息发送回信息收集设备。其他类型的恶意软件可以导致计算设备工作性能低下或者完全不工作。

识别并移除恶意软件的一种尝试即反病毒软件。常规的反病毒软件使用基于搜索序列和规则的分析来查找已知恶意软件。然而,恶意软件代码可以被恶意软件程序作者频繁地改动,从而基于搜索序列和规则的分析可能对检测更新的程序力不能及。

较新的反病毒软件使用更高级精深的识别技术,尤其是在试图检测新的和未知的恶意软件程序时。现有的恶意软件程序可能共享类似的命令模式,不管用于实现恶意软件的实际编码如何,所述类似的命令模式可以被反病毒软件识别。然而,这样的方法对于检测不具有之前所检测到的操作模式的新病毒和未知病毒来说不是非常有用。

为了解决该问题,新近开发的反病毒软件检测方法评估可疑程序行为。如果反病毒软件找到与可以被称为“良好样式”的行为的巨大差异,反病毒软件应用可以假设其已经检测到了新的病毒或恶意软件程序。这些方法可以使用总体术语而被称为“启发式”恶意软件检测方法。通常,启发式分析意味着在某个隔离且安全的环境中启动被检查程序,并且该方法调查其性能。该方法试图收集尽可能多的信息并且评估被检查程序的性能是否可以被认为是正当的,或者该程序是否图谋一些不平常或者危险的东西。如果检测到可疑活动,则可以将该程序归类为可疑的或者甚至是有害的。

启发式分析可以提供某些优点。它在无论被检查程序在过去是否曾被检查过的情况下起作用。它还可以识别新的病毒和木马。然而,也有一些缺点。缺点包括:

1)缺乏精确性。没有启发式方法可以被认为是完全精确的。正确的软件行为和有害的软件行为之间的界线可能是模糊的。因此,对干净程序的误告警以及对真正恶意软件错失检测可能是普遍的。

2)时间要求。在人们可以肯定不会导致伤害的安全环境中启动程序是时间要求非常高的。

3)对策众多。恶意软件作者使用数种花招来防止这类分析。避免所有陷阱和诡计是极度困难的。

发明内容

在该文献中所描述的发明并不限于所描述的特定系统、方法或协议,因为它们可以改变。本文所使用的术语仅用于描述特定实施方案的目的,并且其并不意图限制本公开的范围。

必须注意,如本文及所附权利要求书中所使用的,除非上下文另外明确指出,否则单数形式“一”(“a”和“an”)和“所述”包括复数指称。除非另外定义,否则本文使用的所有技术和科学术语具有本领域普通技术人员所普遍理解的含义。使用在这里,术语“包括”意味着“包括但不限于”。

在一个总的方面,实施方案公开在计算设备检测恶意软件的方法。所述方法包括:通过所述计算设备的处理器检查软件程序,所述软件程序包括储存在计算机可读介质上的程序指令序列,所述计算机可读介质可操作地连接到所述处理器;通过所述处理器判定所述序列中每个指令是否符合怀疑准则组中的任一准则;通过所述处理器给符合所述怀疑准则中任一准则的每个指令分派一指令级评分;通过所述处理器对每个指令的所述指令级评分求和来得到程序级评分;通过处理器判定所述程序级评分是否超过阈值;以及如果所述程序级评分超过阈值,通过所述处理器生成报告,所述报告表明恶意软件检测结果。

在另一个总的方面,实施方案公开在计算设备检测恶意软件的方法。所述方法包括通过所述计算机设备的处理器运行软件分析程序的步骤。具体地,运行所述软件分析程序的操作包括:通过所述处理器加载程序指令序列,所述程序指令序列储存在计算机可读介质上,所述计算机可读介质可操作地连接到所述处理器;通过所述处理器,当所述序列中的每个程序指令被执行时检查所述每个程序指令;通过所述处理器,在执行过程中判定所述序列中每个指令是否符合怀疑准则组中的任一准则;通过所述处理器给符合所述怀疑准则中的任一准则的每个指令分派一指令级评分;通过所述处理器对每个指令的所述指令级评分求和来得到程序级评分;通过处理器判定所述程序级评分是否超过阈值;以及如果所述程序级评分超过阈值,通过所述处理器生成报告,所述报告表明恶意软件检测结果。

在一个总的方面,实施方案公开在计算设备检测恶意软件的方法。所述方法包括:通过所述计算机设备的处理器检查软件程序,所述软件程序包括储存在计算机可读介质上的程序指令序列,所述计算机可读介质可操作地连接到所述处理器;通过所述处理器判定所述序列中每个指令是否符合怀疑准则组中的任一准则,其中所述怀疑准测组包括对所述指令是否会导致数据转换的判定,对所述指令是否会引起进入到另一个指令的跳转的判定,以及对至少两个顺序指令是否有同一含义的判定;通过所述处理器给符合所述怀疑准则中任一准则的每个指令分派一指令级评分;通过所述处理器对每个指令的所述指令级评分求和来得到程序级评分;通过处理器判定所述程序级评分是否超过阈值;以及如果所述程序级评分超过阈值,通过所述处理器产生成报告,所述报告表明恶意软件检测结果。

附图说明

参照以下描述和附图,将清楚本发明的方面、特征、益处和优点,在附图中:

图1图示与技术上纯粹的(technically pure)软件程序相关的示例性代码;

图2图示与恶意软件程序相关的示例性代码;

图3图示示例性恶意软件检测过程;

图4图示用于实现图3所描述过程的示例性计算设备。

具体实施方式

本公开描述分析潜在可疑程序的新的启发式方法,所述方法在无需在实际操作环境中运行所述程序的情况下起作用,由此消除可疑程序进行任何有害操作的可能性。如上面提及的,启发式恶意软件检测方法可以在可疑程序正在安全环境中运行时检查该可疑程序——一种在本文中被称为“动态”方法的方法。然而,这些动态方案具有各种与在安全环境中运行软件所需的时间和资源相关的缺点。相反,下面被描述为“静态”启发式分析方法在无需运行可疑程序的情况下检查所述可疑程序代码。

本公开还描述一种用于分析程序代码的静态方法。该分析不仅仅是从基于程序行为的范围进行的,而是从基于技术纯粹性(purity)的范围进行的。该方法查找程序代码与普通“官方”工具所产生程序代码相比的差异。使用在这里,术语“官方工具”指普遍使用的汇编器和运行时压缩器。本公开中描述的方法认定以标准且正确的方式创建的程序代码是技术上纯粹的、功能上直截了当的,并且没有包括任何有恶意的编码花招来阻挡分析。

技术纯粹性本身可以帮助将正确的代码与包括各种不合逻辑或冗余指令、非必要跳转、粗略未优化处理流程等的代码区分开来。恶意软件作者越多地尝试阻挡分析,在恶意软件代码中就可以找到越多类似的不合逻辑问题和技术错误。

图1图示以官方工具创建的示例性程序指令序列,在该实施例中看起来像是通过Microsoft Visual C++6.0创建的。图1A中示出的代码是公知的无害的WGET.EXE程序。WGET.EXE代码在技术上是纯粹的,并且不具有无用或不合逻辑的操作。

与图1所示的技术上纯粹的代码相反,图2图示反面的极限——恶意的木马蠕虫。该木马蠕虫中所包含的指令以不同的阴影(例如线1314555A和1314555D)显示,所述指令在给定上下文内绝对不具有含义,即它们的唯一意图是要阻挡对代码的分析以及因此阻挡将该代码检测为恶意软件。

图2所示的实施例图示出:所述木马蠕虫程序包含最少量正确且有含义的指令(以黑体显示),而该程序代码的大多数由无意义的垃圾指令构成。如果一专家看到这样的程序,专家可以立马知道该代码有问题,并且该程序多半是恶意的。因此,期望将病毒检测软件编程为像专家那样工作,分析代码的纯粹性而不仅仅牵绊于实现来愚弄反病毒软件的狡猾的编码花招和技术。

图3图示用于启发式分析和检测恶意软件程序的示例性过程300。初始,该过程加载程序指令序列中的每一条,检查302包括在该软件程序中的程序指令之一。取决于分析过程或软件,或者分析软件的操作环境,可以单独地加载该序列的每条指令,或者可以一次加载包括多条指令的模块来进行检查302。类似地,一次可以分析一条指令,或者,基于资源可用性,可以同时分析多条指令。为了简单,在示例性过程300中,一次分析单条指令。

在检查302期间,将指令与怀疑准则进行比较304。总体地,怀疑准则基于运行的时候对指令所期待的结果来评判每条指令。被分析指令的不同结果可以满足各种怀疑准则,并且基于这些结果,可以向每条指令分派一指令级评分。分析软件可以检查每条指令,并且判定306所述指令是否违反以下准则中的一些或者全部:

1)被检查的指令是否实际执行某动作。例如,如果32-位寄存器的内容轮转(rotate)32位,则数据应当保持相同。评分系统记下该事实,并且对这样的指令“处罚”以足够数量的惩罚(penalty)。处罚可以是负分,或者其可以是所分派数字点数体系,其中超出预定水平的总评分被假定为指示存在恶意软件。

2)被检查的指令是否属于实际上不改变或更改数据的指令组。例如,对同一注册表的两次连续取反意味着该注册表内容根本未曾改变。同样,这将被处罚以合理数量的惩罚。

3)被检查的指令是否跳转到另一指令中间。分析软件可以识别这样的花招,并且其可以对此处罚以高数量的惩罚。

4)两条连续指令是否具有相同含义。例如,如果设定了STD指令的字符串操作方向,并且之后马上再次执行同一指令,则后一指令完全冗余并且因此是可疑的。同样,其将被惩罚。

5)是否正在设定一些不再使用的特定标志,或者所述标志被再次独立地设立。例如,如果进行了比较,并且随后进行另一比较,则后一比较的结果覆写第一结果。该指令也被惩罚。

6)数据轮转是否是有意义的。如果某注册表或者存储器段正在轮转的位数比正轮转的操作数位宽多,则该指令被认为是不合逻辑的并且它将被惩罚。

7)不那么可疑但是至少非寻常的其他特征。例如:在入口点使用浮点指令,前缀串联,频繁使用各种非均匀变量,等等。

任何上述情况(如果在指令中检测到的话)可能导致指令级评分更新308,以反映基于经验、与官方工具所产生代码或指令序列的比较而被分派给具体准则的某些数量的惩罚。可以基于长期和大量的测试来确定对于具体情况的确切惩罚数量。随着系统获得对另外的程序的经验,可以针对不同的情况修订惩罚。

如果所述分析判定306指令未违反具体准则,或者如果指令已经违反了准则且指令级评分已经更新308,则该过程可以判定310是否存在该指令要比较的另外的怀疑准则。如果存在另外的准则,则该指令被进一步地比较304和分析,可能导致对指令级评分的另一次更新308。相反,如果不存在该指令要比较304的另外的准则,则可以对所述被检查指令判定312总指令级评分。

可以作出是否存在任何另外的指令要检查302的判定314。如果在指令序列中存在另外的指令,则该过程返回来检查302并将所述另外的指令与怀疑准则进行比较。一旦检查302、比较304了所有指令并且判定312了所有指令级评分,则可以对软件程序的总评分进行求和316。该求和316可以简单地加和每个指令级评分,或者可以基于所述软件程序所违反的各准则数量而包括各种乘数。基于该求和316,判定318该软件程序是无害的还是恶意的。该判定318可以基于对官方工具所编码类似软件程序(例如图1所图示的代码)的比较。该判定318还可以单独基于对软件程序评分的检查以及分析程序为识别恶意软件所设的可接受阈值,即,如果评分高于某数,则该软件程序被识别为恶意的。一旦被识别,可以创建一报告,所述报告表明判定318的结果,并且取决于应用可以进行对该软件程序的进一步分析。

图4描绘示例性内部硬件的框图,所述内部硬件可以用于包含或者实现诸如图3所描述恶意软件检测过程的程序指令。总线400可以充当将硬件其他图示组件进行互连的主信息通道。CPU 405可以是系统的中央处理单元,进行执行程序所需的运算和逻辑操作。只读存储器(ROM)410和随机访问存储器(RAM)415可以构成示例性存储器设备。

控制器420可以将一个或更多个可选存储器设备425接口到系统总线400。这些存储器设备425可以包括例如外部或内部DVD驱动、CD ROM驱动、硬盘驱动、闪存存储器、USB驱动等。如之前指示的,这些各种驱动和控制器是可选的设备。

程序指令可以储存在ROM 410和/或RAM 415中。可选地,程序指令可以储存在例如致密盘、数字盘、闪存存储器、存储卡、USB驱动的实体计算机可读介质,诸如蓝光(Blu-rayTM)盘的光盘储存介质,和/或其他记录介质上。

可选显示接口430可以允许来自总线400的信息以音频、视觉、图形或者字母数字形式显示在显示器435上。可以使用各种通信端口440进行与外部设备的通信。示例性通信端口440可以附接到通信网络,例如因特网或者内网。

所述硬件还可以包括接口445,该接口445允许从诸如键盘450的输入设备或者诸如鼠标、游戏杆、触摸屏、遥控器、指点设备、视频输入设备和/或音频输入设备的其他输入设备455接收数据。

应当注意,本文讨论的启发式分析过程可以在任何程序段处开始。在一些情况下,可能仅检查代码的一部分(例如入口点的头512字节)是足够的。在模拟器不得不启动整个程序并且在其真正找到重要的东西前经历数百万个周期的循环时,上述启发式方法可以在数毫秒内提供其结果。

应当意识到,上述公开的各种和其他特征以及功能或者其替换方案可以合乎期望地组合成很多其他不同的系统或应用。还有,本领域技术人员可以后续作出各种当前未预见或者未料想到的替换方案、修改、改动或其改进,所附权利要求书也意图包括这些替换方案、修改、改动或其改进。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号