分类恶意软件检测和抑制的制作方法

文档序号:12513058阅读:229来源:国知局
分类恶意软件检测和抑制的制作方法与工艺

本申请要求2014年9月26日提交的题为“Taxonomic Malware Detection and Mitigation(分类恶意软件检测和抑制)”的美国实用新型申请号14/497,757的优先权,所述申请通过引用结合在此。

技术领域

本申请涉及计算机安全领域,并且更具体地涉及一种用于进行分类恶意软件检测和抑制的系统和方法。



背景技术:

反病毒和反恶意软件研究已经演变成恶意软件作者与安全研究员之间正在进行的军备竞赛。在反恶意软件研究的更早些时候,安全研究员识别已知为恶意软件的可执行对象并对其进行采指纹就足够了。然后,用户计算机上的反恶意软件代理可以在计算机中搜索与已知恶意软件指纹相匹配的可执行对象。

然而,随着恶意软件作者已经增加其努力来避免检测和抑制,依靠简单的指纹识别解决方案已经变得更加困难。在一个示例中,根据可执行对象的校验和来计算所述对象的指纹。校验和是比较两个二进制对象并高度可信地判定它们是否相同的非常有效的方式。如果两个二进制对象具有相同的校验和,则所述两个对象被认为非常高度可信地相同。由此,如果发现可执行对象与已知恶意软件对象具有相同的校验和,则可以安全地隔离可执行对象,隔离有用对象的概率可忽略。

附图说明

当与附图一起阅读时,将从以下详细描述中更好地理解本公开。强调的是,根据行业中的标准实践,不同特征未按比例绘制,并且仅用于说明性目的。实际上,为了讨论清楚,不同特征的尺寸可以被任意放大或减小。

图1是根据本说明书的一个或多个示例的安全使能网络的框图。

图2是根据本说明书的一个或多个示例的计算设备的框图。

图3是根据本说明书的一个或多个示例的服务器的框图。

图4是根据本说明书的一个或多个示例的由分类引擎执行的方法的流程图。

图5是根据本说明书的一个或多个示例的分类引擎的功能性框图。

图6是根据本说明书的一个或多个示例的由分类引擎执行的方法的流程图。

具体实施方式



技术实现要素:

在示例中,分类引擎比较两个二进制对象以便判定它们是否可以被分类为属于共同的族。如示例应用程序,所述分类引擎可用于检测源自共同祖先的恶意软件对象。为了对所述对象进行分类,对所述二进制进行反汇编并且标准化所产生的汇编代码。过滤出如编译器生成的库代码等已知“干净(clean)”函数。然后,可以表征汇编代码的标准化块,如通过形成N-grams并且对每个N-gram进行校验和。可以将这些与已知恶意软件例程进行比较。

本公开的示例实施例

以下公开内容提供了用于实施本公开的不同特征的许多不同实施例或示例。以下描述了部件和安排的具体示例以便简化本公开。当然,这些仅是示例并且并不旨在是限制性的。另外,本公开在各种示例中可以重复参考标号和/或字母。这种重复是为了简单和清晰的目的,并且本身并不指定所讨论的各种实施例和/或配置之间的关系。

不同实施例可以具有不同优点,并且不一定需要任何实施例的任何特定优点。

基于校验和的指纹识别技术和其他常用的恶意软件检测方法受制于由恶意软件作者进行的隐藏技术。例如,尽管校验和是比较两个二进制对象的非常快速且准确的方法,但是通过例如对恶意软件对象进行微小变化及重新编译也很容易将其击败。因为即使微小变化完全改变了校验和,重新编译的恶意软件对象也必须被独立地发现并重新表征。

由此,安全研究员与恶意软件作者之间的军备竞赛的一方面是:恶意软件作者可以频繁地对恶意软件对象进行细微变化,以便击败老的校验和。然后,这些新恶意软件对象在安全研究员能够识别它们并更新它们的校验和之前被释放到它们可能引起一些程度的危害的野外。这种动作对所谓“零日”利用而言特别危险,其中,恶意软件对象保持不被检测直到它达到它选择的某个日期和时间或其他条件,在所述点处,恶意软件对象在野外的所有副本同时递送有效载荷。在零日利用的情况下,在所述对象被检测且使用新校验和更新反恶意软件代理之前可能已经完成大量损害。

用于检测恶意软件对象的另一个有用方法是在沙箱环境中运行新可疑的可执行对象,并且监测它们来查看它们是否展现恶意软件行为。尽管和校验和一样,这种方法提供了非常有价值的服务,但是恶意软件作者已经适应了。在一些情况下,恶意软件作者将使用环境触发器来防止恶意软件对象在所有机器上递送其有效载荷。这可能包括例如:检查被感染的机器上的网络卡的MAC地址是否具有特殊数字序列、IP地址是否满足某个标准、或任何其他伪随机因素。这使得特殊沙箱环境将不太可能触发环境触发器并检测恶意软件有效载荷。尽管这种技术意味着,N个被感染的计算机中,仅k·N(k<1)个机器将实际上接收有效载荷,但是对检测的阻碍可以帮助恶意软件对象更长时间保持未检测,并且由此实现有效载荷递送的网络增加。

恶意软件作者还可以使用如压缩机、保护器、加密门、粘合剂、多层封装等混淆技术和类似技术来避免检测。在一些情况下,可商购的远程管理工具(RAT)被修改以便包含反调试和反虚拟化能力,使其作为恶意工具更加有效。

本说明书的申请人已经认识到,尽管当前恶意软件检测方法执行有价值的服务,但是提供新颖方法是有用的,由此,在恶意软件对象有机会递送有效载荷之前可以检测并很好地修复恶意软件对象。在一个示例中,提供了分类引擎,包括硬件和软件,所述硬件和软件可操作用于分析可执行对象并高可信度地判定可执行对象是否属于恶意软件分类中的恶意软件对象的“族”。

这种方法承认,尽管可以例如通过如重新编译等微小变化来击败校验和,但是恶意软件对象的基本特征中的许多特征保持不变。具体地,像许多软件一样,恶意软件通常不是从零开始发展的。相反,恶意软件作者可以依赖于与其他软件开发者分享的有用和合法例程库类似的恶意软件例程库。由此,尽管每个个别恶意软件对象可以具有单独的校验和,但是大量恶意软件对象可以分享某些特征。由此,可以计算“模糊指纹”以便不仅检测可执行对象的校验和,还通过检测某些共同子例程或函数的存在来将所述对象分类为属于恶意软件族。

族分类是一种经由静态代码分析标识类似可执行对象的方法。尽管本文中将检测和分类描述为族分类的示例,但是所公开的系统和方法实际上同样适用于为了实质相似性而比较可执行对象或其他二进制对象是有用的或有价值的任何情况。由此,本文中所公开的系统和方法可以同样适用于例如检测版权侵犯的应用程序。贯穿本说明书的剩余部分,将具体参考恶意软件检测将族分类和分类引擎描述为示例。然而,此示例意在是非限制性的。

族分类使用可执行对象的反汇编来计算被分析对象与已知恶意软件对象的零个或多个族之间的相似度,由此,潜在地将被分析对象分类为属于恶意软件族。

本说明书的方法对检测恶意软件对象的许多规避族或类别是有效且可扩展的。分类引擎可以使用代码指令语义、用于过滤出库或编译器产生的代码的过滤器,从而使得仅对用户定义的代码执行分析。这增加了恶意软件检测率同时减少了误肯定。

分类引擎是可扩展且有效的。其通过发现恶意对象之间的共同代码序列来检测库代码重用。分类引擎还可以采用有效方式跟踪与恶意软件族相关联的共同代码段。由此,可以采用前摄方式来标识、跟踪和阻止目标攻击。

鉴于对多种模糊技术的固有挑战,当基于或者完整用户代码或者与恶意软件对象相关的某些代码或功能块来进行检测时,还可以使用混合方法。

根据本说明书的一个实施例,可执行对象经受沙箱动态分析,以便标识分类候选项。一旦标识了分类候选项,它就作为用于分类引擎的被分析对象。

对可执行对象进行反汇编,产生“ASM”汇编列表文件。在一些情况下,可以将ASM列表调节成调用踪迹。如贯穿本说明书所使用的,“调用踪迹”是可用于由分类引擎进行的模糊匹配的骨架或架构,并且具体地可以从匹配函数中移动调用顺序。由此,使用调用踪迹,如果两个函数具有相似的调用,甚至如果那些调用有略微不同的顺序,则可以对它们进行匹配。

然后,所述分类可以使用干净函数列表(CFL)来过滤出编译器产生的代码并减少噪音和对候选恶意软件例程之间的相似度的测量。在一个实施例中,为了实现这一点,收集来自不同编译器的文件,并且创建模糊散列来标识并隔离干净函数。在此阶段,可以移除来自共同库例程的函数或其他编译器产生的代码。

例如,C编程语言中的共同子例程是“安全字符串复制”函数strncpy_s()。此函数的x86实现的一个示例如下所示:

前述列表的每一行采用以下形式:

:[地址] [操作码] [助记符] [操作数]

此函数的散列为068a67f4ac41399c4d48128bff929ffc。在一个示例中,分类引擎由此将此列表标识为属于strncpy_s()函数,所述strncpy_s()函数是标准库函数。由此,包含此例程的几乎没有提供关于被分析对象是否是恶意的或如何对其进行分类的信息。可以进一步提供来自不同编译器和库中的相同函数的实现方式的校验和。由此,当分类引擎遇到具有与这些校验和之一相匹配的代码块的二进制对象或此例程的模糊指纹时,它可以自信地断言:这是为了有效的目的可以被安全地过滤出的编译器生成的strncpy_s()函数。

在另一个示例中,可以提供恶意软件函数的“黑名单”。这可以包括与已知函数相匹配的模糊散列的相似库,所述已知函数不应当出现在合法软件中,或可以被安全地认为是“恶意软件函数”。鉴于上述“干净函数”由于几乎不提供有用信息而可以被安全地忽略,对已知恶意软件函数的包含可以指示被分析对象应当被列入黑名单或以其他方式被修复,无论是否进行进一步分析。

分类引擎可能采用的另一种技术是“ASM标准化”。这种技术承认,典型汇编指令包括操作代码(操作码(opcode)),所述操作代码可以与如“MOV”或“PUSH”等有用助记符相关联。这之后可能是零个或多个操作数。所述操作数可以表示例如寄存器、常量、或存储器位置。由此,在一个示例中,一段代码可以包括:

mov di,ecx

mov ebp,esp

mov dword ptr ss:[esp+24],1

在一些情况下,标准化可以包括仅考虑指令的助记符。然而,在其他情况下,这可能导致丢失指令的语义。

由此,在本说明书的一个或多个示例中,汇编代码标准化方法提供了有用抽象层,同时仍然保留指令的语义。例如,前述代码样本可以被标准化为以下:

mov di,ecx mov REG,REG

push ebp,esp push REG,REG

mov dword ptr ss:[esp+24],1 mov MEM,CONST

由此,汇编代码标准化算法可以将操作数归类到一起,如寄存器、存储器位置、和常量。以此方式,指令的语义被保留,并且即使当指令使用不同寄存器、常量、和/或存储器位置时,也可以进行匹配。

然而,注意,在某些架构中,可以提供单独的指令操作码和助记符用于基于寄存器的操作、基于存储器的操作、和基于常量的操作。在那些情况下,汇编代码标准化可以被最小化。换言之,在操作码或助记符本身承载指令的语义的情况下,可能减少或消除对标准化的需要。

由本说明书的分类引擎执行的另一种技术是N-gram生成。N-gram是来自给定指令序列的N个项目的连续序列。N-gram在浮动窗口上计算。例如,指令的以下序列导致以下两个3-grams:

原始样本:

mov REG,REG

xor REG,REG

push REG,REG

mov MEM,CONST

第一个3-gram:

mov REG,REG

xor REG,REG

push REG,REG

第二个3-gram:

xor REG,REG

push REG,REG

mov MEM,CONST

在一个示例中,每个N-gram可以被转换成如32比特散列等散列来降低比较的复杂性。显然,N-gram中N的值越小,比较的解析度越高,并且需要处理它的处理功率越大。

使用散列的N-grams,可以确定被分析对象与已知恶意软件对象之间的相似度。在一个示例中,经由杰卡德指数对两个对象进行比较。如果杰卡德指数与例如由安全研究团队定义的预定阈值相匹配,则文件被认为是相似的。可以根据以下计算文件对的杰卡德指数:

本说明书的分类引擎的原型实验性地运行于被称为“Zbot”的特定恶意软件样本上。Zbot样本随时间偏离,从而使得在大约一年之后,近期的Zbot样本与原始Zbot仅共享大约83%的代码。分类引擎能够以大约98%的准确度将测试样本分类为属于恶意软件的Zbot族。

相同的原型还能够高准确度地正确地将其他样本分类为属于恶意软件的“Swizzor”族。

在另一个实施例中,分类引擎可以被修改成还提供对“灰色软件”应用程序的检测。这些包括除过度攻击性的或侵入性的应用程序外的半合法的且可以提供一些有用功能的应用程序。例如,用于智能电话的闪光灯应用程序可以提供通告功能(闪光灯),但也可以执行与通告功能完全无关的其他任务,如上传用户内容、电子邮件、照片、口令、或敏感信息。

如使用恶意软件检测示例,分类引擎的这种实施例对可执行对象进行反汇编,以便创建汇编列表文件。然后,如以上所描述的,分类引擎可以从ASM列表中创建调用踪迹。还如以上所描述的,可以根据函数黑名单和CFL来过滤函数。

基于剩下的子例程,可以根据分类法对所述对象进行分类。这种分类法可能与先前示例的分类法有点不同。尽管先前示例专注于使用恶意软件族对对象进行分类,但是这种分类法更关心根据它们预期的函数对对象进行分类。

然后,分类引擎可以生成多重图,从所述对象的自报告行为和所述对象类别的预期行为中接收输入。此多重图可用于判定所述对象是否像这种类别中的对象预期表现的那样表现。例如,被分类为闪光灯应用程序的对象将被期望提供用户界面并访问所述闪光灯。然而,将不期望收集用户信息、记录音频或视频、或者拍照。由此,如果所述对象执行那些不期望的任务,则可以将其标记为灰色软件。

现在将更具体地参照所附附图来描述分类引擎。

图1是根据本说明书的一个或多个示例的分布式安全网络100的网络层次图。在图1的示例中,多个用户120操作多个计算设备110。具体地,用户120-1操作台式计算机110-1。用户120-2操作膝上型计算机110-2。并且用户120-3操作移动设备110-3。

每台计算设备可以包括适当的操作系统,如微软Windows、Linux、安卓、Mac OSX、苹果iOS、Unix等。相比一种类型的设备,可能在另一种类型的设备上更经常地使用前述项中的一些项。例如,台式计算机110-1(在一些情况下也可以是工程工作站)可能更有可能使用微软Windows、Linux、Unix或者Mac OSX之一。膝上型计算机110-2(通常是具有更小定制化选项的便携的现成设备)更有可能运行微软Windows或者Mac OSX。移动设备110-3更有可能运行安卓或者iOS。然而,这些示例并不旨在是限制性的。

计算设备110可以经由网络170而彼此通信地耦合以及耦合到其他网络资源。网络170可以是任何适当的网络或网络的组合,通过非限制性示例的方式,包括例如局域网、广域网、无线网络、蜂窝网络或互联网。在此展示中,为简单起见,网络170被示出为单个网络,但是在一些实施例中,网络170可以包括大量网络,如连接至互联网的一个或多个企业内部网。

连接至网络170的还有一个或多个服务器140、应用程序储存库160以及通过各种设备连接的人类参与者(包括例如攻击者190和开发者180)。服务器140可以被配置成用于提供合适的网络服务,包括在本说明书的一个或多个示例中公开的某些服务。在一个实施例中,服务器140和网络170的至少一部分由一个或多个安全管理员150管理。

用户120的目标可以是在没有来自攻击者190和开发者180的干扰的情况下成功地操作他们各自的计算设备110。在一个示例中,攻击者190是恶意软件作者,其目标或者目的是引起恶意伤害或损害。恶意伤害或损害可以采取以下形式:在计算设备110上安装Root kit或其他恶意软件以便篡改系统、安装间谍软件或广告软件以便收集个人和商用数据、丑化网站、操作如垃圾邮件服务器等僵尸网络、或仅打搅和骚扰用户120。因此,攻击者190的一个目的可能是在一个或多个计算设备110上安装其恶意软件。如贯穿本说明书所使用的,恶意软件(“恶意软件”)包括被设计成用于采取可能不需要的行动的任何病毒、木马、僵尸、根程序病毒包、后门、蠕虫、间谍软件、广告软件、勒索软件、拨号器、有效载荷、恶意浏览器辅助对象、cookie、记录器等,通过非限制性示例的方式,包括数据毁坏、隐藏数据收集、浏览器劫持、网络代理或重定向、隐藏跟踪、数据记录、键盘记录、过多的或蓄意的移除阻碍、联系人采集以及未授权的自传播。

服务器140可以由合适的企业操作,以便提供安全更新和服务(包括反恶意软件服务)。服务器140还可以提供如路由、联网、企业数据服务、和企业应用程序等实质服务。在一个示例中,服务器140被配置成用于分布并实施企业计算和安全政策。这些政策可以由安全管理员150根据写企业政策来管理。安全管理员150还可以响应于管理和配置服务器140和网络170的全部或部分。

开发者180也可以在网络170上进行操作。开发者180可能没有恶意的意图,但是可能开发造成安全风险的软件。例如,众所周知的且经常被利用的安全缺陷是所谓的缓冲器溢出,其中,恶意用户(如攻击者190)能够将过长的字符串输入输入表中并且由此获得执行任意指令或者使用提升的特权来操作计算设备110的能力。缓冲器溢出可以是例如不良输入验证或未完成的垃圾收集的结果,并且在许多情况下,在非显而易见的情境中出现。因此,尽管开发者180本身不是恶意的,但是其可能为攻击者190提供攻击向量。开发者180所开发的应用程序也可以引起固有问题,比如崩溃、数据丢失或其他非期望的行为。开发者180可以自己托管软件,或者可以将他的软件上传到应用程序储存库160。因为来自开发者180的软件本身可能是期望的,所以开发者180在漏洞变得已知时偶尔提供修复漏洞的更新或补丁是有益的。

应用程序储存库160可以表示向用户120提供交互地或自动地下载应用程序并将其安装在计算设备110上的能力的Windows或苹果“应用程序商店”、类Unix储存库或端口收集、或者其他网络服务。开发者180和攻击者190都可以经由应用程序储存库160提供软件。如果应用程序储存库160具有适当的使攻击者190难以分散明显恶意的软件的安全措施,那么攻击者190反而可以暗中将漏洞插入到显然有益的应用程序中。

在一些情况下,一个或多个用户120可以属于企业。企业可以提供对可以安装的应用程序(例如来自应用程序储存库160)的类型进行限制的政策指示。因此,应用程序储存库160可以包括并非无意开发的且不是恶意软件的但却违背政策的软件。例如,一些企业限制对娱乐软件(如媒体播放器和游戏)的安装。因此,甚至安全的媒体播放器或游戏也可能不适合企业计算机。安全管理员150可以响应于分布与这些限制一致的计算政策。

在另一示例中,用户120可以是小孩子的父母,并且希望保护小孩子不受非期望内容(通过非限制性示例的方式,比如,色情作品、广告软件、间谍软件、不符合年龄的内容、对某些政治、宗教或社会运动的倡导、或用于讨论非法或危险活动的论坛)的影响。在这种情况下,父母可以执行安全管理员150的职责中的一些或所有。

总的来说,作为前述类型内容之一的候选项的任何对象可以被称为“可能不想要的内容”(PUC)。PUC的“可能”方面指当对象被标记为PUC时,其不一定被列入黑名单。相反,它是作为不应当被允许在计算设备110上驻留或工作的对象的候选项。由此,用户120和安全管理员150的目标是配置和操作计算设备110,以便有用地分析PUC并做出关于如何响应PUC对象的明智决策。这可以包括计算设备110上的代理(如图2的反恶意软件代理224),为了附加情报,所述代理可以与服务器140通信。服务器140可以提供基于网络的服务(包括图3的分类引擎324),所述基于网络的服务被配置成用于实施政策并且以其他方式在适当地对PUC进行分类以及对PUC起作用方面辅助计算设备110。

图2是根据本说明书的一个或多个示例的客户端设备110的框图。客户端设备110可以是任何合适的计算设备。在各种实施例中,通过非限制性示例的方式,“计算设备”可以是或可以包括:计算机、嵌入式计算机、嵌入式控制器、嵌入式传感器、个人数字助理(PDA)、膝上型计算机、蜂窝电话、IP电话、智能电话、平板计算机、可转换平板计算机、手持计算器或者用于处理和传达数据的任何其他电子、微电子或者微机电设备。

客户端设备110包括连接至存储器220的处理器210,所述存储器具有存储在其中的用于提供操作系统222和反恶意软件代理224的可执行指令。客户端设备110的其他部件包括存储设备250、网络接口260以及外围设备接口240。

在示例中,尽管其他存储器架构是可能的(包括在其中存储器220经由系统总线270-1或一些其他总线与处理器210进行通信的存储器架构),但是处理器210经由存储器总线270-3通信地耦合至存储器220,通过示例的方式,所述存储器总线可以是例如直接存储器访问(DMA)总线。处理器210可以经由系统总线270-1通信地耦合至其他设备。如贯穿本说明书所使用的,“总线”包括任何有线或无线互连线、网络、连接、束、单条总线、多条总线、交叉式网络、单级网络、多级网络或可操作用于在计算设备的各个部分之间或计算设备之间承载数据、信号或功率的其他传导介质。应当注意的是,仅通过非限制性示例的方式来公开这些用途,并且一些实施例可以省略前述总线中的一条或多条总线,而其他实施例可以采用附加或不同总线。

在各个示例中,“处理器”可以包括硬件、软件或提供可编程逻辑的固件的任何组合,通过非限制性示例的方式,包括微处理器、数字信号处理器、现场可编程门阵列、可编程逻辑阵列、专用集成电路或虚拟机处理器。

处理器210可以经由DMA总线270-3连接至DMA配置中的存储器220。为了简化本公开,存储器220被公开为单个逻辑块,但是在物理实施例中可以包括具有任何一种或多种适当的易失性或非易失性存储器技术的一块或多块,包括例如DDR RAM、SRAM、DRAM、缓存、L1或L2存储器、片上存储器、寄存器、闪存、ROM、光学介质、虚拟存储器区域、磁性或磁带存储器等。在某些实施例中,存储器220可以包括相对低等待时间的易失性主存储器,而存储设备250可以包括相对更高等待时间的非易失性存储器。然而,存储器220和存储设备250无需是物理分离的设备,并且在一些示例中可以仅表示功能的逻辑分离。还应当注意的是,尽管通过非限制性示例的方式公开了DMA,但是DMA并不是与本说明书一致的唯一协议,并且其他存储器架构是可用的。

存储设备250可以是任何种类的存储器220,或者可以是分离的设备,如硬盘驱动器、固态驱动器、外部存储设备、独立磁盘冗余阵列(RAID)、网络附接存储设备、光学存储设备、磁带驱动器、备份系统、云存储设备、或前述任何组合。存储设备250可以是或者可以在其中包括一个或多个数据库或者存储在其他配置中的数据,并且可以包括所存储的操作软件拷贝,如操作系统222和反恶意软件代理224的软件部分。许多其他配置也是可能的,并且旨在包括在本说明书的宽泛范围内。

可以提供网络接口260来将客户端设备110与有线或无线网络通信地耦合。如贯穿本说明书所使用的“网络”可以包括可操作用于在计算设备内或在计算设备之间交换数据或信息的任何通信平台,通过非限制性示例的方式包括自组织本地网、提供具有电交互能力的通信设备的互联网架构、简易老式电话系统(POTS)(计算设备可以使用所述简易老式电话系统来执行交易,在所述交易中它们可以由人类操作员来帮助或在所述交易中它们可以自动地将数据键入到电话或其他合适的电子设备中)、提供通信接口或在系统中的任何两个节点之间进行交换的任何分组数据网络(PDN)、或任何局域网(LAN)、城域网(MAN)、广域网(WAN)、无线局域网(WLAN)、虚拟专用网(VPN)、内联网、或促进网络或电话环境中的通信的任何其他适当的架构或系统。

在一个示例中,反恶意软件代理224是从服务器140处接收更新并且根据从服务器140处接收的信息来阻止或修复恶意软件的工具或程序。在一些情况下,反恶意软件代理224可以作为“守护进程”而运行。“守护进程”可以包括任何程序或一系列可执行指令,无论在硬件、软件、固件或其任何组合中实施与否,那些可执行指令都作为后台进程、终止并驻留程序、服务、系统扩展、控制面板、启动程序、BIOS子例程、或没有直接用户交互操作的任何类似程序的运行。还应当注意的是,反恶意软件代理224仅通过非限制性示例的方式被提供,并且包括交互式或用户模式软件的其他硬件和软件还可以结合、除了或替代反恶意软件代理224而被提供,以便执行根据本说明书的方法。

在一个示例中,反恶意软件代理224包括存储在可操作用于执行恶意软件活动的非瞬态介质上的可执行指令。在适当时间(如在启动客户端设备110之后或在来自操作系统222或用户120的命令之后),处理器210可以从存储设备250中检索反恶意软件代理224(或其软件部分)的副本并将其加载到存储器220中。然后,处理器210可以迭代地执行反恶意软件代理224的指令。

外围设备接口240可以被配置成用于与连接至客户端设备110但不一定是客户端设备110的核心架构的一部分的任何辅助设备接口连接。外围设备可以可操作用于向客户端设备110提供扩展功能,并且可以或可以不完全依赖于客户端设备110。在一些情况下,外围设备可以是其自身的计算设备。通过非限制性示例的方式,外围设备可以包括输入和输出设备,如显示器、终端、打印机、键盘、鼠标、调制解调器、网络控制器、传感器、换能器、致动器、控制器、数据采集总线、照相机、麦克风、扬声器或者外部存储设备。

图3是根据本说明书的一个或多个示例的服务器140的框图。如结合图2所描述的,服务器140可以是任何合适的计算设备。通常,除非另外特别指出,图2的定义和示例可以被认为同样适用于图3。

服务器140包括连接至存储器320的处理器310,所述存储器具有存储在其中的用于提供操作系统322和分类引擎324的可执行指令。服务器140的其他部件包括存储设备350、网络接口360和外围设备接口340。

在示例中,处理器310经由存储器总线370-3通信地耦合至存储器320,所述存储器总线可以是例如直接存储器访问(DMA)总线。处理器310可以经由系统总线370-1通信地耦合至其他设备。

处理器310可以经由DMA总线370-3连接至DMA配置中的存储器320。为了简化本公开,如结合图2的存储器220而描述的,存储器320被公开为单个逻辑块,但是在物理环境中可以包括具有任何一种或多种合适的易失性或非易失性存储器技术的一个或多个块。在某些实施例中,存储器320可以包括相对低等待时间的易失性主存储器,而存储设备350可以包括相对更高等待时间的非易失性存储器。然而,如结合图2而进一步描述的,存储器320和存储设备350无需是物理分离的设备。

如结合图2的存储设备250所描述的,存储设备350可以是任何种类的存储器320,或者可以是分离的设备。存储设备350可以是或其中可以包括一个或多个数据库或存储在其他配置中的数据,并且可以包括操作软件的存储副本,如操作系统322和分类引擎324的软件部分。许多其他配置也是可能的,并且旨在包括在本说明书的宽泛范围内。

可以提供网络接口360来将服务器140与有线或无线网络通信地耦合。

在一个示例中,分类引擎324是执行方法(如图4的方法400或图6的方法600)的工具或程序。在各个实施例中,分类引擎324可以在硬件、软件、固件或其一些组合中被具体化。例如,在一些情况下,分类引擎324可以包括被设计成用于执行方法或其一部分的专用集成电路,并且还可以包括可操作用于指示处理器执行所述方法的软件指令。如以上所描述的,在一些情况下,分类引擎324可以作为守护进程而运行。还应当注意的是,分类引擎324仅通过非限制性示例的方式被提供,并且包括交互式或用户模式软件的其他硬件和软件还可以结合、除了或替代分类引擎324而被提供,以便执行根据本说明书的方法。

在一个示例中,分类引擎324包括存储在可操作用于执行根据本说明书的方法的非瞬态介质上的可执行指令。在适当时间(如在启动服务器140之后或在来自操作系统322或用户120的命令之后),处理器310可以从存储设备350中检索分类引擎324的副本(或其软件部分)并将其加载到存储器320中。然后,处理器310可以迭代地执行分类引擎324的指令。

外围设备接口340可以被配置成用于与连接至服务器140但不一定是服务器140的核心架构的一部分的任何辅助设备接口连接。外围设备可以可操作用于向服务器140提供扩展功能,并且可以或可以不完全依赖于服务器140。在一些情况下,外围设备可以是其自身的计算设备。通过非限制性示例的方式,外围设备可以包括结合图2的外围设备接口240所讨论的设备中的任何设备。

图4是根据本说明书的一个或多个示例的由分类引擎324执行的方法400的流程图。在执行方法400时,分类引擎324可以具体地按以可接受的可信度将被分析对象与已知对象进行匹配的意图来操作。在一个示例中,已经根据本文中所公开的方法对已知对象进行反汇编、分析、表征和分类。在方法400中,分类引擎324将被分析对象分类为或者是对已知对象的匹配或者不是。

在框410中,如在本文中所描述的,分类引擎324对被分析对象进行反汇编。

在框420中,分类引擎324为被分析对象创建一个或多个ASM列表文件。

在框430中,分类引擎324将ASM列表文件与CFL进行比较。将CFL提供为来自框432的输入。在此框中,可以标识编译器产生的代码,并且可以标识其他已知好的或良好的子例程。框430还可以接收函数黑名单434。函数黑名单434可以包括高度可信地已知仅发生在恶意软件对象中的许多函数。

在决策框452中,分类引擎324判定是否发现被列入黑名单的函数。如果发现被列入黑名单的函数,则在框454中,分类引擎324可以将被分析对象列入黑名单或者以其他方式修复被分析对象。然后,可以将控制转到框490,并且完成方法400。

这代表标识恶意软件对象比将恶意软件对象分类成族更重要的示例。如果特定实施例的主要目的仅是确保恶意软件被标识和抑制,则对被分析对象中的已知恶意软件例程的包含对此目的来说可能足够了。

然而,存在对所述对象进行完全分类仍然有用的情况。在那种情况下,从框430直接到框440之后可能是平行路径。在那种情况下,可以将所述对象列入黑名单,但是如果可能,对所述对象进行分类仍然有用。

返回至框452,如果没有发现黑名单函数,则将控制转到框440。如以上所描述的,在平行路径中,还可以将控制直接从框430转到框440。

在框440中,分类引擎324丢弃已知干净函数,如编译器生成的代码和标准库例程。如以上所描述的,这些函数可能不是有意义地有助于判定对象是否是恶意软件。

在框442中,分类引擎324可以标准化剩余函数。这可以包括将操作数分类为例如寄存器、存储器位置和常量。在其他情况下,这可以包括简单地保持操作码,其中,指令的语义由操作码完全确定。这种标准化过程的结果是标准化ASM列表。

在框450中,对框442的标准化ASM列表进行操作,如以上所描述的,分类引擎324可以生成N-grams并对其进行散列。对N的选择可以取决于期望的粒度或精确度以及可用计算资源。在一个示例中,将N选择为3。在另一个示例中,将N选择为从2到10的值。这些示例是非限制性的,并且仅以说明的方式提供。

在框460中,分类引擎324接收应用程序分类法并执行相似性分析。应用程序分类法462可以提供例如用于将恶意软件对象组成族的分类方案。由此,可以根据这种分类法将此示例的已知对象分类成恶意软件族。框460的相似性分析的目的是判定第一可执行对象是否还应当被分类成相同的恶意软件族。如以上所描述的,相似性分析460可以包括杰卡德指数。相似性分析的结果是计算的变量J。

在框470中,分类引擎324判定J是否大于所提供的阈值。如果J大于所述阈值,则在框480中,第一可执行对象被认为是对第二可执行对象的匹配,并且可以接收相同的分类。

返回至框470,如果J不大于所述阈值,则在框482中,被分析对象不被考虑为对已知对象的匹配。

在框490中,所述方法完成。

图5是根据本说明书的一个或多个示例的对象分类的功能性框图。框510是恶意软件样本储存库。可以根据分类法(如图4的分类法462)对恶意软件样本510进行分类。

恶意软件样本510以及被分析对象512可以被提供给如高级威胁防御(ATD)装置520等功能框。ATD装置520可以可操作用于创建反汇编的ASM列表文件522。在一些情况下,可以将ASM列表文件522转换成调用踪迹。

将ASM列表文件522提供给ASM标准化框530。如本文中所描述的,ASM标准化框530执行ASM标准化,如从助记符和/或操作码中对操作数进行分类和/或修整。然后,将标准化ASM文件提供给过滤元框550。

过滤元框550接收例如输入黑名单函数数据库540和干净函数列表数据库432。在框552中,过滤元框550根据干净函数列表数据库432标识并隔离干净函数。在框554中,过滤框550标识被列入黑名单的函数。如结合图4所指出的,在某些实施例中,标识一个或多个被列入黑名单的函数对完成必要分析和将对象本身列入黑名单来说可能足够了。在其他示例中,可以执行附加分析。

在框580中,分类引擎324生成N-grams以便进行分析。在元框570中,分类引擎324对N-grams进行操作。这可以包括特征散列572和特征向量574。

在框560中,分类引擎324例如根据杰卡德指数执行相似性分析。对相似性的输入可以是分类法数据库462。一个或多个安全研究员590可以贡献于分类法数据库462。

相似性分析560向元框592提供值J。元框592可以从安全研究员590处接收输入,并且可以包括分类度量,如族名称594和匹配百分比596。

根据图5的功能性框图,基于相似性分析560,将被分析对象512与一个或多个恶意软件样本510进行比较并使用零个或多个恶意软件样本对其进行分类。

图6是根据本说明书的一个或多个示例的由分类引擎324执行的方法600的流程图。在执行方法600时,分类引擎324可以具体地按以高可信度标识灰色软件或恶意软件应用程序的意图来操作。在一个示例中,已经根据本文中所公开的方法对某些已知对象进行反汇编、分析、表征和分类。在方法600中,分类引擎324将被分析对象分类为或者合法的或者可疑的。

在框610中,如在本文中所描述的,分类引擎324对被分析对象进行反汇编。

在框620中,分类引擎324为被分析对象创建一个或多个ASM列表文件并从ASM列表文件中生成调用踪迹。

在框630中,分类引擎324将调用踪迹与CFL进行比较。将CFL提供为来自框632的输入。在此框中,可以标识编译器产生的代码,并且可以标识其他已知好的或良好的子例程。框630还可以接收函数黑名单634。函数黑名单634可以包括高度可信地已知仅发生在恶意软件或灰色软件对象中的许多函数。

在框640中,分类引擎324丢弃已知干净函数,如编译器生成的代码和标准库例程。如以上所描述的,这些函数可能不是有意义地有助于判定对象是否是灰色软件。

在框650中,分类引擎324接收应用程序分类法652,并根据所述分类法对被分析对象进行分类。

在框660中,分类引擎324生成被分析对象的多重图,包括预期类别行为662。在Joris Kinable和Orestis Kostakis于2010年8月27日发表的“Malware Classification based on Call Graph Clustering(基于调用图聚类的恶意软件分类)”论文中更加详细地描述了多重图生成。自本申请的日期起,可以在http://arxiv.org/abs/1008.4365获得本论文。

在决策框670中,分类引擎判定被分析对象是否与针对其应用程序类别(如在框660中所确定的)的预期行为相匹配。

在框680中,如果所述行为与预期相匹配,则被分析对象可以被认为是合法的。

在框682中,如果所述行为与预期不匹配,则被分析对象可以酌情被认为是灰色软件或恶意软件。

在框690中,所述方法完成。

前述内容概述了若干实施例的特征,从而使得本领域的技术人员可以更好地理解本公开的方面。本领域的技术人员应该认识到,他们可以容易地将本公开用作设计或修改其他过程以及结构的基础,以便于实施相同的目的和/或实现本文中介绍的实施例的相同优点。本领域的技术人员还应意识到,所述等同构造没有背离本公开的精神和范围,并且在不背离本公开的精神和范围的情况下,可做出各种改变、替换和替代。

本公开的特定实施例可以容易地包括片上系统(SOC)中央处理单元(CPU)封装件。SOC表示将计算机或其他电子系统的部件整合到单个芯片中的集成电路(IC)。其可以包含数字、模拟、混合信号、以及射频功能,所有所述功能可以在单个芯片基底上提供。其他实施例可以包括多芯片模块(MCM),多个芯片位于单个电子封装件内并且被配置成用于通过电子封装件彼此密切交互。在各个其他实施例中,数字信号处理功能可以在专用集成电路(ASIC)、现场可编程门阵列(FPGA)和其他半导体芯片中的一个或多个硅核中实施。

在示例实施方式中,本文中概述的处理活动的至少一些部分也可以在软件中实施。在一些实施例中,这些特征中的一个或多个特征可以在所公开的附图的元件外部提供的硬件中实施,或者可以采用任何适当方式来合并,以便实现预期功能。各种部件可以包括可以协调以便实现如在此所概述的操作的软件(或者往复式软件)。在仍其他实施例中,这些元件可以包括促进其操作的任何适当的算法、硬件、软件、部件、模块、接口或者对象。

此外,可以移除或以其他方式合并与所描述的微处理器相关联的部件中的一些部件。在一般意义上,在附图中所描绘的安排可以在其表示上可以更合逻辑,而物理架构可以包括这些元件的各种排列、组合和/或混合。必须注意,可以使用无数可能的设计配置来实现本文中所概述的操作目标。相应地,相关联的基础设施具有大量替代安排、设计选择、设备可能性、硬件配置、软件实施方式、设备选项等。

任何适当配置的处理器部件可以执行与数据相关联的任何类型的指令以便实现在此详细说明的操作。在此公开的任何处理器可以将元件或物品(例如,数据)从一个状态或一种东西转换为另一个状态或另一种东西。在另一个示例中,在此概述的一些活动可以使用固定逻辑或者可编程逻辑(例如,由处理器执行的软件和/或计算机指令)实施,并且在此标识的元件可以是某种类型的可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(FPGA)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))、包括数字逻辑、软件、代码、电子指令、闪速存储器、光盘、CD-ROM、DVD ROM、磁性或者光学卡、适合于存储电子指令的其他类型的机器可读介质的ASIC、或者其任何适当的组合。在操作中,处理器可以将信息存储在任何适当类型的非瞬态存储介质(例如,随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)、可擦除可编程只读存储器(EPROM)、电可擦除可编程ROM(EEPROM)等)、软件、硬件中或者在适当况下并基于特定需要存储在任何其他适当部件、设备、元件或者物体中。进一步地,可以在任何数据库、寄存器、表格、缓存、队列、控制列表或者存储结构(所有这些可以在任何适当的时间帧被引用)中基于特定需要和实施方式提供在处理器中被跟踪、发送、接收或者存储的信息。本文中所讨论的存储器项中的任何存储器项应当被理解为包括在宽泛术语‘存储器’内。类似地,本文中所描述的可能的处理元件、模块以及机器中的任何一者应当被理解为包括在宽泛术语‘微处理器’或者‘处理器’内。另外,在各种实施例中,本文中所描述的处理器、存储器、网卡、总线、存储设备、相关外围设备以及其他硬件元件可以由软件或固件配置来模仿或者虚拟化这些硬件元件的功能的处理器、存储器以及其他相关设备实施。

采用各种形式来具体化实施在此描述的功能中的所有或部分功能的计算机程序逻辑,包括但决不限于源代码形式、计算机可执行的形式、以及各种中间形式(例如,由汇编器、编辑器、链接器或定位器生成的形式)。在示例中,源代码包括以各种编程语言实施的一系列计算机程序指令,如目标代码、汇编语言、或高级语言(比如,与各种操作系统或操作环境一起使用的OpenCL、Fortran、C、C++、JAVA或HTML)。源代码可以限定并使用各种数据结构和通信消息。源代码可以采用计算机可执行的形式(例如,经由解释器),或者源代码可以被转换(例如,经由转换器、汇编器、或编译器)成计算机可执行的形式。

在对以上实施例的讨论中,可以容易地替换、替代或以其他方式修改电容器、缓冲器、图形元件、互连板、时钟、DDR、相机传感器、除法器、电感器、电阻器、放大器、开关、数字核、晶体管和/或其他部件,以便满足特定电路需要。此外,应当注意的是,对互补电子设备、硬件、非瞬态软件等的使用提供了同等可行的选项,以便实施本公开的教导。

在一个示例实施例中,可以在相关联的电子设备的板上实施附图的任何数量的电路。所述板可以是能够容纳电子设备的内部电子系统的各个部件并进一步为其他外围设备提供连接器的一般电路板。更具体地,所述板可以提供电连接,系统的其他部件可以通过这些电连接来进行电通信。可以基于特定配置需要、处理需求、计算机设计等来将任何合适的处理器(包括数字信号处理器、微处理器、支持芯片组等)、存储器元件等适当地耦合至所述板。如外部存储设备、附加传感器、用于音频/视频显示的控制器、以及外围设备等其他部件可以作为插入卡而经由线缆附接至所述板,或者整合到所述板本身中。在另一个示例实施例中,附图的电路可以被实施为独立的模块(例如,具有相关联的部件的设备和被配置成用于执行特定应用程序或功能的电路),或者被实施为到电子设备的专用硬件的插入模块。

注意,使用在此所提供的许多示例,可以关于两个、三个、四个或更多个电气部件来对交互进行描述。然而,已经仅为了清晰和示例的目的而完成了这一点。应理解的是,可以采用任何适当方式来合并所述系统。根据类似设计替代方案,可以在各种可能的配置中组合附图中展示的部件、模块和元件中的任一者,所有所述配置在本说明书的广泛范围内。在某些情况下,通过仅参照有限数量的电气元件,可能更容易描述一组给定流程的功能中的一项或多项功能。应当理解的是,附图的电路及其教导是可容易扩展的,并且可以容纳大量部件以及更复杂/成熟的安排和配置。相应地,所提供的示例不应限制如潜在地应用程序到无数其他架构上的电路的范围或抑制其宽泛教导。

许多其他的改变、替代、变更、改变、和修改对本领域技术人员来说是确定的,并且旨在本公开包含了落在所附权利要求书的范围内的所有的改变、替代、变更、改变、和修改。为了帮助美国专利和商标局(USPTO)以及另外在此申请上发布的任何专利的任何阅读者解释在此所附权利要求书,申请人希望注意的是,申请人:(a)不旨在所附权利要求书中的任何一项当出现于其提交日期时调用美国专利法第35章第112节第(6)段,除非具体权利要求中特别适用了单词“用于……的装置”或“用于……的步骤”;并且(b)不旨在借助说明书中的任何声明以任何所附权利要求书中未另外反应的方式限制本公开。

示例实施方式

示例1公开了一种计算装置,包括:处理器;以及一个或多个逻辑元件,所述一个或多个逻辑元件包括分类引擎,所述分类引擎可操作用于:对被分析对象进行反汇编;创建所述被分析对象的汇编语言列表;将所述汇编语言列表与已知对象进行比较,所述已知对象属于对象分类法中的族;以及将所述被分析对象分类为属于所述对象分类法中的所述族。

示例2公开了如示例1所述的计算装置,其中,所述分类引擎进一步可操作用于从所述汇编语言列表中过滤已知干净函数。

示例3公开了如示例1所述的计算装置,其中,所述分类引擎进一步可操作用于:在所述汇编语言列表中标识至少一个被列入黑名单的函数;以及将所述被分析对象指定为被列入黑名单的对象。

示例4公开了如示例1所述的计算装置,其中,所述分类引擎进一步可操作用于创建所述汇编语言列表的调用踪迹。

示例5公开了如示例1所述的计算装置,其中,所述分类引擎进一步可操作用于标准化所述汇编语言列表的指令。

示例6公开了如示例5所述的计算装置,其中,标准化所述汇编语言列表包括:保留操作代码或助记符;以及对操作数进行分类。

示例7公开了如示例6所述的计算装置,其中,对操作数进行分类包括将至少一些操作数分类为寄存器、存储器地址和常量之一。

示例8公开了如示例5所述的计算装置,其中,所述汇编语言的指令包括至少一些指令的语义,并且其中,标准化所述汇编语言列表包括丢弃针对所述至少一些包括语义的指令的操作数。

示例9公开了如示例1所述的计算装置,其中,所述分类引擎进一步可操作用于对所述汇编语言列表执行N-gram分析。

示例10公开了如示例9所述的计算装置,其中,所述分类引擎进一步可操作用于生成所述N-gram分析中的每个N-gram的散列。

示例11公开了如示例1所述的计算装置,其中,所述分类引擎进一步可操作用于对所述被分析对象和所述已知对象执行相似性分析。

示例12公开了如示例11所述的计算装置,其中,所述相似性分析包括计算杰卡德指数。

示例13公开了如示例1所述的计算装置,其中,所述已知对象为恶意软件对象。

示例14公开了一种或多种计算机可读介质,具有存储在其上的可执行指令,所述可执行指令用于指示处理器提供分类引擎,所述分类引擎可操作用于:对被分析对象进行反汇编;

创建所述被分析对象的汇编语言列表;将所述汇编语言列表与已知对象进行比较,所述已知对象属于对象分类法中的族;以及将所述被分析对象分类为属于所述对象分类法中的所述族。

示例15公开了如示例14所述的一种或多种计算机可读介质,其中,所述分类引擎进一步可操作用于从所述汇编语言列表中过滤已知干净函数。

示例16公开了如示例14所述的一种或多种计算机可读介质,其中,所述分类引擎进一步可操作用于:在所述汇编语言列表中标识至少一个被列入黑名单的函数;以及将所述被分析对象指定为被列入黑名单的对象。

示例17公开了如示例14所述的一种或多种计算机可读介质,其中,所述分类引擎进一步可操作用于创建所述被分析对象的调用踪迹。

示例18公开了如示例14所述的一种或多种计算机可读介质,其中,所述分类引擎进一步可操作用于标准化所述汇编语言列表的指令。

示例19公开了如示例18所述的一种或多种计算机可读介质,其中,标准化所述汇编语言列表包括:保留操作代码或助记符;将至少一些操作数分类为寄存器、存储器地址和常量之一。

示例20公开了如示例18所述的一种或多种计算机可读介质,其中,所述汇编语言的指令包括至少一些指令的语义,并且其中,标准化所述汇编语言列表包括丢弃针对所述至少一些包括语义的指令的操作数。

示例21公开了如示例14所述的一种或多种计算机可读介质,其中,所述分类引擎进一步可操作用于:对所述汇编语言列表执行N-gram分析,以及生成所述N-gram分析中的每个N-gram的散列。

示例22公开了如示例14所述的一种或多种计算机可读介质,其中,所述分类引擎进一步可操作用于对所述被分析对象和所述已知对象执行相似性分析,其中,所述相似性分析包括计算杰卡德指数。

示例23公开了如示例14所述的一种或多种计算机可读介质,其中,所述已知对象为恶意软件对象。

示例24公开了一种提供分类引擎的计算机实现的方法,所述方法包括:对被分析对象进行反汇编;创建所述被分析对象的调用踪迹;将所述调用踪迹与已知对象进行比较,所述已知对象属于对象分类法中的族;以及生成所述被分析对象的多重图。

示例25公开了如示例24所述的计算机实现的方法,进一步包括:根据所述多重图确定所述被分析对象与预期不匹配;以及将所述被分析对象指定为不属于所述对象分类法中的所述族。

示例26公开了一种方法,包括执行如示例14至23中任一项公开的指令。

示例27公开了一种装置,包括用于执行如示例26所述的方法的装置。

示例28公开了如示例27所述的装置,其中,所述装置包括处理器和存储器。

示例29公开了如示例28所述的装置,其中,所述装置进一步包括具有存储在其上的软件指令的计算机可读介质,所述软件指令用于执行如示例26所述的方法。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1