本申请要求于2014年9月25日提交的题为“Cross-View Malware Detection(交叉视图恶意软件检测)”的美国实用新型申请号14/496,860的优先权,所述申请通过引用结合在此。
技术领域
本申请涉及计算机安全领域,并且更具体地涉及交叉视图恶意软件检测引擎。
背景技术:
安全性研究已经演化成了一方面安全性研究者与另一方面恶意软件作者之间的永久性军备竞赛。对于安全性研究者来说,他们主要关注检测并修复恶意软件,从而保护最终用户和企业免受恶意和伤害。相反,恶意软件作者关注避免检测,从而使得其恶意软件对象可以继续跨企业和网络传播。
附图说明
当与附图一起阅读时,将从以下详细描述中最充分地理解本公开。要强调的是,根据行业中的标准实践,各种特征并未按比例绘制,并且仅用于说明目的。实际上,为了讨论的清晰起见,可以任意地增大或者减小各种特征的尺寸。
图1是根据本说明书的一个或多个示例的安全使能网络的框图。
图2是根据本说明书的一个或多个示例的计算设备的框图。
图3是根据本说明书的一个或多个示例的服务器的框图。
图4是根据本说明书的一个或多个示例的交叉视图检测引擎的功能框图。
图5是根据本说明书的一个或多个示例的一种由交叉视图检测引擎执行的方法的流程图。
具体实施方式
概述
在示例中,公开了一种用于检测恶意软件行为的交叉视图检测引擎。恶意软件可能试图通过尽可能长时间地留在易失性存储器中并且仅在必要时写入磁盘来试图避免检测。为了避免检测,所述恶意软件还可能在文件系统级提供伪驱动器,所述伪驱动器执行看似合法的假操作。固件级驱动器可以同时地执行多个恶意操作。所述交叉视图检测引擎通过以下方式检测这种行为:从所述文件系统级操作中解构调用追踪(call trace),并且从固件级操作中重构调用追踪。如果所述追踪不匹配,则可以将对象标记为可疑的
本公开的示例实施例
以下公开内容提供了用于实施本公开的不同特征的许多不同实施例或示例。以下描述了部件和安排的具体示例以便简化本公开。当然,这些仅是示例并且并不旨在是限制性的。进一步地,本公开在不同示例中可以重复参考标号和/或字母。这种重复是为了简单和清晰的目的,并且本身并不指定所讨论的各种实施例和/或配置之间的关系。
不同实施例可以具有不同优点,并且不一定需要任何实施例的任何特定优点。
安全性军备竞争的一种表现可见于由某些类别的恶意软件对象所执行的硬盘操作。在一个示例中,反病毒代理被安装在用户机中用于检测由可执行对象所进行的某些类别的写入操作。经验数据表明一般只有恶意软件才执行这些类型的写入操作。
具体地,某些恶意软件对象的目标是在最终用户的机器上保持持久,比如跨越重新引导和计算机死机。因而,恶意软件对象简单地停留在非易失性存储器中是不够的。然而,在某些实施例中,停留在非易失性存储器是可执行对象逃避检测的最佳选项。因而,在一个实施例中,“root kit”会尝试避免动态分析。例如,ZeroAccess rootkit使用两种技术来修改和存储磁盘上的永久性数据,而不被动态分析检测到。在第一种技术中,它使用低级API创建新的磁盘空间,它可以在所述新的磁盘空间上存储恶意的可执行文件。此空间对用户并对系统上运行的某些安全代理是不可见的。
在第二种技术中,它创建内核模式驱动器。此驱动器直接调用文件系统API,从而绕开可能被反恶意软件代理监测的接口。此驱动器在文件系统中秘密地创建配置文件,并且在每当安全性软件请求对已感染文件进行读取时返回假数据。由于恶意可执行文件存在于内核空间中,它不需要使用受到基于系统调用的动态分析器监测的接口。
在另一示例中,“TDSS”rootkit也通过将其恶意驱动器存储在原始磁盘扇区中并覆写主引导记录(MBR)来绕过文件系统分析。所述MBR在引导过程中加载来自所述原始磁盘扇区的恶意代码。这个读取在动态分析时可能不被检测到。
因而,传统的反恶意软件引擎会难以检测到所述恶意软件对象。然而,恶意软件对象最终必须向磁盘写入以保持永久。因而,反恶意软件引擎的某些实施例检测并标记可疑的写入操作。这会使可执行对象经受额外监督,并可以最终导致将恶意软件对象正确地识别为恶意软件。
继续讨论军备竞赛,某些恶意软件对象在“更高的”(更加抽象的)操作级假冒看起来合法的磁盘操作,而同时执行低级(不那么抽象的)磁盘操作,比如在不经过文件系统驱动器的情况下原始写入至桌面。计算机上运行的反恶意软件代理只可以看到看起来合法的磁盘操作在机器上保留恶意软件的永久副本。因而,反恶意软件代理会继续认为该磁盘不存在恶意软件,而事实上恶意软件对象已经成功地避开了检测。
因此,提供交叉视图恶意软件检测的系统和方法是有益的,其中,提供跨实体检测引擎用于监测高级磁盘操作和低级磁盘操作两者。在这种背景下,“高级”磁盘操作是比如通过应用程序编程接口(API)、其文件系统驱动器、或提供对文件系统操作的抽象的其他合法途径执行的磁盘操作。“低级”磁盘操作是在文件系统驱动器、或其他合法抽象机制的级别以下发生的操作。应该注意的是,这些高级和第一操作示例仅举例提供,并且并不旨在是限制性的。在本说明书的某些实施例中,被视为低级操作和高级操作的操作之间会存在一些重叠。因而,在一个实施例中,低级操作与高级操作相比是在更低的抽象级执行的操作。因而,高级操作与低级操作之间的一种示例区分特征是它们不运行于完全相同的抽象级。
在一个示例中,交叉视图在背景中监测引擎监测高级磁盘操作和低级磁盘操作两者。这可以例如通过将交叉视图检测引擎作为以提高的系统权限运行的背景进程来完成。在一个示例中,这些提高的系统权限可以仅比操作系统本身具有稍少的权限。在另一示例中,跨实体检测引擎被设置在固件中或极低级的软件中,从而使得它实际上以比操作系统更高的权限级别运行。本领域的实践者可以认识到,具体的交叉视图检测引擎的选择和设计、以及它所运行的权限级别是可以通过设计限制指定的设计决策。因此旨在交叉视图检测引擎的任何此类变化包括在本说明书中。
在另一示例中,交叉视图检测引擎包括两个或更多个部件。一个部件是以本质上不受限制的权限运行的固件级驱动器,而第二部件是文件系统级驱动器,所述文件系统级驱动器可以通过操作系统挂钩与操作系统和文件系统交互,并且所述文件系统级驱动器可以对操作系统具有应用程序级权限或提高的系统权限。这两个部件合作检测恶意软件磁盘操作。
在一个实施例中,可以假定,如果可执行对象同时执行“假的”高级磁盘操作,而同时还执行不与所述高级磁盘操作匹配的低级磁盘操作,可执行对象可以被安全地认定为恶意软件。
就其本质而言,低级磁盘操作将不会固有地或本质地比得上高级命令。就设计而言,高级操作旨在比低级操作更加抽象。在一个示例中,可以通过调用标准数据库函数比如fprintf()来在更高抽象级别进行对磁盘的简单写入。标准数据库函数之后提供必要的低级操作,以完成磁盘写入操作。因而,高级磁盘操作和第一磁盘操作之一或另一方或两者将需要被转换成新的形势,从而使得可以有效地将其进行对比。
在一个示例中,高级磁盘操作被减少至一系列调用追踪。调用追踪和调用图聚类在2010年8月27日公开的约里斯基纳伯(Joris Kinable)和奥勒提斯科斯塔基斯(Orestis Kostakis)所著的文章“Malware Classification based on Call Graph Clustering(基于调用图聚类的恶意软件分类)”中有所描述。自本申请日期起,在http://arxiv.org/abs/1008.4365可获得此文章。
同时,低级磁盘操作被重构成等效的调用追踪。因而,可以将高级操作的所述解构的调用追踪与第一操作的所重构的调用追踪进行比较,从而判断所述调用追踪是否匹配。
如果这些调用追踪不匹配,则可以推断出低级磁盘操作并非在做高级操作看起来正在做的事。这种行为是恶意软件高度特有的,并且可以对这种行为的对象进行标记。
在此认识到,磁盘事件与文件系统操作之间不一定存在简单的一对一关系,或者换种说法,不存在总是与示例操作(比如,“写入至文件”)相对应的明确事件顺序。当原始字节以其自己的方式被截取至磁盘时,结果是实际上磁盘本身上初见或将出现的内容的一部分。为了确定发生了什么操作,交叉视图检测引擎可以使用以下信息:
磁盘之前的状态(例如,哪些磁盘扇区包含在哪些文件和哪些元数据中)。
所截取的数据(例如,在这个单次交易中,什么数据或元数据正被写入磁盘)。
举例而言,在Windows新技术文件系统(NTFS)中,主数据结构是主文件表(MFT)。对于磁盘上的每个文件,MFT中存在一个表项,并且该MFT表项包含描述所述文件的元数据(例如,其名称和发现其内容的扇区上所有扇区的列表)。
当进行低级磁盘分析时,交叉视图检测引擎并不截取例如特定事件,所述特定事件与“创建称为newfile.txt的文件”或“删除称为newfile.txt的文件”清楚地相关。相反,交叉视图检测引擎可以简单地截取具有MFT表项的格式的(或存在于已知包含MFT表项的扇区上的)数据块。交叉视图检测引擎可以然后对元数据进行解析,从而判断自从上一次遇到元数据之后是否发生了任何改变。
类似地,为了截取文件写入操作,交叉视图检测引擎不能简单地识别与“将‘abc’写入至文件newfile.txt.”相对应的事件。相反,总线将简单地将原始字节‘abc’发送至已知属于文件“newfile.txt”的磁盘扇区。
在这个背景下,下面提供了调用追踪与低级操作之间的相关性的一些非限制性示例。
示例1追踪:
创建文件“newfile.txt”
写入至文件“newfile.txt”
低级磁盘事件和条件的相应集合可以包括:
写入至磁盘块8000
已知磁盘块8000属于MFT,并且因此存储MFT表项(关于文件的元数据)。
MFT表项被标记为“使用中”(有效)
之前,那个位置上不存在“使用中”(有效)的元数据。因此,这是新的文件。
所截取的MFT表明文件被称为“newfile.txt”并且将其内容存储在磁盘块123000至123400上。
磁盘写入至块123000
已知磁盘块123000属于文件newfile.txt
示例2追踪:
删除文件“newfile.txt”
低级磁盘事件和条件的相应集合可以包括:
写入至磁盘块8000
已知磁盘块8000是文件newfile.txt的MFT表项
所截取的MFT表项被标记为“未在使用”(无效)
数据记录之前被标记为“使用中”(有效)
示例3追踪:
删除文件“newfile.txt”
创建文件“newerfile.txt”
低级磁盘事件和条件的相应集合可以包括:
写入至磁盘块8000
已知磁盘块8000是文件newfile.txt的MFT表项
MFT表项被标记为“使用中”(有效)
数据记录之前被标记为“使用中”(有效)
MFT表项之前被列为具有序列号12
所截取的MFT表项显示序列号13
换言之,删除了一个文件并且非常快速地创建了另一个文件,并且较新的文件占据刚空出的MFT表项槽。
从原始数据进行操作的语义重构是文件系统特定的;即,这些探试法仅适用于Windows NTFS文件系统,但可能不一定适用于其他文件系统。
现在将更具体地参照所附附图来描述交叉视图检测引擎。
图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可以被配置成用于提供适当的网络服务,包括在本说明书的一个或多个示例中公开的某些服务。在一个实施例中,一个或多个安全管理员150管理服务器140和网络170的至少一部分。
用户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或Apple“应用程序商店”、类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,所述服务可以被配置成用于实施策略,并另外辅助计算设备110正确地分类并PUC采取动作。
图2是根据本说明书一个或多个示例的客户端设备110的框图。客户端设备110可以是任何适当的计算设备。在各种实施例中,通过非限制性示例的方式,“计算设备”可以是或可以包括:计算机、嵌入式计算机、嵌入式控制器、嵌入式传感器、个人数字助理(PDA)、膝上型计算机、蜂窝电话、IP电话、智能电话、平板计算机、可转换平板计算机、手持计算器或者用于处理和传达数据的任何其他电子、微电子或者微机电设备。
客户端设备110包括连接至存储器220的处理器210,已经在所述存储器中存储了用于提供操作系统222和交叉视图检测引擎224的可执行指令。客户端设备110的其他部件包括存储设备250、网络接口260以及外围接口240。
在示例中,处理器210通过存储器总线270-3与存储器220通信地耦连,所述存储器总线可以例如是直接存储器访问(DMA)总线,虽然其他存储器体系结构是可能的,包括其中存储器220通过系统总线270-1或某其他总线与处理器210通信的存储器体积结构。处理器210可以经由系统总线270-1通信地耦合至其他设备。如贯穿本说明书所使用的,“总线”包括任何有线或者无线互连线、网络、连接、线束、单条总线、多条总线、交叉式网络、单级网络、多级网络或可操作用于在计算设备的部分之间或在计算设备之间承载数据、信号或电力的其他传导介质。应当注意的是,仅通过非限制性示例的方式来公开这些用途,并且一些实施例这些用法前述总线中的一条或多条总线,而其他实施例可以采用附加或不同总线。
在各种示例中,“处理器”可以包括提供可编程逻辑的硬件、软件或者固件的任何组合,包括(通过非限制性示例的方式)微处理器、数字信号处理器、现场可编程门阵列、可编程逻辑阵列、专用集成电路或者虚拟机处理器。
处理器210可以在DMA配置中经由DMA总线270-3而连接至存储器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是执行根据本说明书的方法(如,5的图方法500或其他方法)的工具或程序。在各个实施例中,交叉视图检测引擎224可以在硬件、软件、固件或其一些组合中被具体化。例如,在一些情况下,交叉视图检测引擎224可以包括被设计成用于执行方法或方法的一部分的专用集成电路,并且还可以包括可操作用于指示处理器执行所述方法的软件指令。在一些情况下,交叉视图检测引擎224可以作为“守护进程”程序运行。“守护进程”可以包括作为后台进程、终止并驻留程序、服务、系统扩展、控制面板、启动程序、BIOS子例程或者在没有直接的用户交互的情况下进行操作的任何类似程序而运行的任何程序或者可执行指令系列(无论在硬件、软件、固件或其任何组合中实施)。还应当注意的是,交叉视图检测引擎224仅通过非限制性示例的方式被提供,并且包括交互式或用户模式软件的其他硬件和软件,还可以结合、除了或替代交叉视图检测引擎224而被提供,以便执行根据本说明书的方法。
在一个示例中,交叉视图检测引擎224包括存储在可操作用于执行反恶意软件操作的非瞬态介质上的可执行指令。在适当时间上(如根据启动客户端设备110或根据来自操作系统222或用户120的命令),处理器210可以从存储设备250中检索交叉视图检测引擎224(或其软件部分)的副本并将其加载到存储器220中。然后,处理器210可以迭代的执行交叉视图检测引擎224的指令。
交叉视图检测引擎224和反病毒引擎226可以组合以提供标准反病毒服务。交叉视图检测引擎224包括系统级接口254和低级接口252。
可以例如在固件或在极其低级的软件中提供低级接口252,从而使得它在一些情况下可以在操作系统222的抽象级以下运行。系统级接口254可以在操作系统222的抽象级以上运行,并且可以具有提高的系统权限。这意味着虽然系统级接口254不可以对低级接口252进行自由访问,它可以比用户空间应用程序具有更高的系统权限。这使得系统级接口254能够向操作系统222插入挂钩,从而截取磁盘操作以用于对比目的。在一些实施例中,系统级接口254可以被设置在虚拟化级或在管理员级。
外围接口240可以被配置成用于与连接至客户端设备110的但不一定是客户端设备110的核架构的一部分的任何辅助设备接口连接。外围设备可以可操作用于向客户端设备110提供扩展功能,并且可以或可以不完全依赖于客户端设备110。在一些情况下,外围设备可以是其自身的计算设备。通过非限制性示例的方式,外围设备可以包括输入和输出设备,如显示器、终端、打印机、键盘、鼠标、调制解调器、网络控制器、传感器、换能器、致动器、控制器、数据采集总线、照相机、麦克风、扬声器、或外部存储设备。
图3是根据本说明书的一个或多个示例的服务器140的框图。服务器140可以是如结合图2所描述的任何合适的计算设备。通常,除非另外特别指出,图2的定义和示例可以被认为同样适用于图3。
服务器140包括连接至存储器320的处理器310,所述存储器具有存储在其中的用于提供操作系统322和安全引擎324的可执行指令。服务器140的其他部件包括存储设备350、网络接口360以及外围设备接口340。
在示例中,处理器310经由存储器总线370-3被通信地耦合至存储器320,所述存储器总线可以是例如直接存储器访问(DMA)总线。处理器310可以经由系统总线370-1被通信地耦合至其他设备。
处理器310可以在DMA配置中经由DMA总线370-3而连接至存储器320。为了简化本公开,存储器320被公开为单个逻辑块,但是在物理实施例中可以包括任何合适的易失性或非易失性存储器技术(或多项技术)的一个或多个块,如结合图2的存储器220所描述的。在某些实施例中,存储器320可以包括相对低等待时间的易失性主存储器,而存储设备350可以包括相对更高等待时间的非易失性存储器。然而,存储器320和存储设备350无需是物理上分离的设备,如结合图2进一步描述的。
如结合图2的存储设备250而描述的,存储设备350可以是任何种类的存储器320或者可以是单独的设备。存储设备350可以是或其中可以包括一个或多个数据库或存储在其他配置中的数据,并且可以包括操作软件的存储副本,如操作系统322以及服务器引擎324的软件部分。许多其他配置也是可能的,并且旨在被涵盖在本说明书的广义范围内。
可以提供网络接口360来将服务器140与有线或无线网络通信地耦合。
在一个示例中,服务器引擎324是实现根据本说明书的方法的工具或程序,包括提供用于计算设备110的服务器侧反恶意软件服务和更新。服务器引擎324还可以进行对怀疑对象的“深入”分析,从而提供关于对象是否恶意的更高置信度。在各个实施例中,服务器引擎324可以在硬件、软件、固件或其一些组合中被具体化。例如,在一些情况下,服务器引擎324可以包括被设计成用于执行方法或方法的一部分的专用集成电路,并且还可以包括可操作用于指示处理器执行所述方法的软件指令。在一些情况下,服务器引擎324可以作为常驻程序处理运行,如以上所描述的。还应当注意的是,服务器引擎324仅通过非限制性示例的方式被提供,并且包括交互式或用户模式软件的其他硬件和软件还可以结合、除了或替代安全引擎324而被提供,以便执行根据本说明书的方法。
在一个示例中,服务器引擎324包括存储在可操作用于执行根据本说明书的方法的非瞬态介质上的可执行指令。在适当时间上(如根据启动服务器140或根据来自操作系统322或用户120的命令),处理器310可以从存储设备350中检索服务器引擎324(或其软件部分)的副本并将其加载到存储器320中。然后,处理器310可以迭代的执行服务器引擎324的指令。
外围设备接口340可以被配置成用于与连接至服务器140但不一定是服务器140的核心架构的一部分的任何辅助设备接口连接。外围设备可以可操作用于向服务器140提供扩展功能,并且可以或可以不完全依赖于服务器140。在一些情况下,外围设备可以是其自身的计算设备。通过非限制性示例的方式,外围设备可以包括结合图2的外围设备接口240讨论的任何设备。
图4是根据本说明书的一个或多个示例的功能框图和操作栈。在最低的抽象级或相反在最高的权限级的是硬件410。这表明,硬件410简单地能够做硬件410能够做的任何事。在这个抽象级上,不存在人为限制。相反,在这一级上的限制简单地是对固有能力的限制。同样,在硬件级410上未提供抽象。硬件410在大多数情况下基本上受电子或机电信号控制。此类信号驱动硬件410中的直接物理响应,从而提供期望的操作。
固件420在抽象级上恰好位于硬件410之上,并且在权限级上正好位于硬件410之下。固件420可以例如提供少量的直接命令,这些直接命令可以被转换成电信号以便用于硬件410。
监测“低级”磁盘操作可以在一个示例中发生于或者硬件级410或者固件级420上。一种方法可以是针对比如扇区号码、操作类型(读取或写入)、和被读取或写入的数据等信息来监测ATAPI、SCSI、或SATA总线。
恶意软件480和交叉视图检测引擎224均包括低级驱动器,用于直接操纵和/或监测固件420。交叉视图检测引擎224提供低级驱动器492。恶意软件480提供低级驱动器482。在一个示例中,恶意软件480使用低级驱动器482来通过固件420直接操纵硬件410上的磁盘操作。这些操作可能在操作系统级222不可见。然而,交叉视图检测引擎224使用低级驱动级492来观察这些交互。
在下一抽象级的是操作系统222。操作系统222可以提供使更高级程序能够执行硬件操作的各种驱动器、接口、和服务。操作系统222的一种有用功能是通过驱动器提供抽象,从而使得单个对象比如可执行进程可以下发完全相同的命令,从而对各硬件平台执行有用工作。例如,硬件410可以是制造商提供的硬盘驱动。由于操作系统222对提供给硬件410的磁盘操作进行抽象,最终用户不需要知道或关心来自哪个特定制造商的哪个特定硬盘驱动将用于硬件级410。
在下一抽象级上的是文件系统驱动器440。文件系统驱动器440通过操作系统222组织、存储、和检索文件来提供低级接口。流行的文件系统驱动器包括Windows NTFS,Linux上的ext3或ext4,Apple层级文件系统(HFS),和各种UNIX文件系统比如UFS、BSDFS、和ZFS。
恶意软件480可以提供与文件系统驱动器440对接的高级伪驱动器484。恶意软件伪驱动器484的目的是向文件系统驱动器440下发假命令来产生执行合法文件操作的表象。然而,低级驱动器482阻止这些命令,从而使得它们实际并不在磁盘硬件410上被执行。相反,当那些假命令被下发时,低级驱动器482执行的是恶意软件480实际要求的任务。要注意的是,在文件系统驱动器级对调用的截取仅作为示例提供。在其他情况下,这些操作可以发生于其他抽象级,包括虚拟化级或虚拟机级。
交叉视图检测引擎224还包括高级驱动器490。应该注意的是,将驱动器490指定为“高级的”在相对于低级驱动器492的,不一定是相对于其他抽象级,比如用户空间应用程序470,这些用户空间应用程序运行于甚至更高的抽象级并具有更低的权限级。高级驱动器490的目的是观察高级伪驱动器484的行为,从而使得可以将高级伪驱动器484表面上执行的操作与在固件级420实际执行的操作进行对比。
在下一抽象级是应用程序编程接口450。应用程序编程接口450提供各种标准方法,从而使得用户空间应用程序470可以执行文件操作,而没有必要关心那些操作的特定实现细节。例如,应用程序编程接口450可以提供fprintf()函数,用户空间应用程序可以使用该函数向磁盘写入,而不需要直到实现细节。
在下一抽象级上的是反病毒引擎226。反病毒引擎226可以提供标准反恶意软件或反病毒操作,比如对恶意软件对象的检测、迁移、和修复。除交叉视图检测引擎224之外还设置了反病毒引擎226,从而使得它们可以合作来提高计算设备110的安全性。然而,应该注意的是,在某些实施例中,反病毒引擎226是可选的。
在本示例中在最高抽象级上,并相反在最低的权限级上,是用户空间应用程序470。用户空间应用程序470可以仅具有向文件系统驱动器440提供的某些文件或文件夹写入的许可,或仅根据赋予用户空间应用程序470的某些许可。
图5是根据本说明书的一个或多个示例的执行交叉视图检测的方法500的流程图。在某些示例中,方法500可以由图2的交叉视图检测引擎224执行。
在一个示例中,方法500以两个并行路径开始。高级驱动器490可以使用框510的路径,而低级驱动器492可以使用框520的路径。
在框510,高级驱动器490进行对系统级调用追踪的动态实时分析。这可以包括在有用的级(比如在文件系统驱动器级440)截取磁盘操作并对其进行分析。
在框530,交叉视图检测引擎224从框510中所检测到的高级操作提取调用追踪。在框552中,这产生了所提取的调用追踪。
在框520的并行路径中,低级驱动器492从标准磁盘协议(比如固件420所提供的那些)截取磁盘访问信息。
在框540,交叉视图检测引擎224从这些低级访问操作中重构系统级调用追踪。在框550中,这产生了所重构的调用追踪。
在框560,交叉视图检测引擎224将所重构的调用追踪550与所解构的调用追踪552进行比较。
在决策框562,交叉视图检测引擎224判断这些重构的调用追踪是否与被解构的调用追踪552匹配。
在框580,如果重构的调用追踪550与被解构的调用追踪552匹配,则可以将操作传递至标准反病毒引擎226。然后,反病毒引擎226可以执行标准反病毒操作,比如寻找恶意软件行为的其他示例。
如贯穿本说明书中所使用的,“重构的”调用追踪是从较低抽象级转换成较高抽象级的调用追踪。“被解构的”调用追踪是从较高抽象级转换成较低抽象级的调用追踪。在一个示例中,重构的调用追踪和被解构的调用追踪被构造至类似的抽象级,从而使得可以有效地对其进行比较。
返回决策框562,如果所重构的调用追踪550与所解构的调用追踪552不匹配,则进行磁盘访问的对象可以被标记为或者恶意软件或者至少为可疑的。被标记为恶意软件的对象可以被列入黑名单,而被列为可疑的对象可以经历额外分析,在一些示例中包括:将此对象上报给服务器140,从而使得服务器140可以使用服务器引擎324对所述对象进行更大或更深入的分析,并向计算设备110回报是否应该阻止所述对象。
在框590中,完成所述方法。
前述内容概述了若干实施例的特征,从而使得本领域的技术人员可以更好地理解本公开的方面。本领域的技术人员应所述认识到,他们可以容易地将本公开用作设计或修改其他过程以及结构的基础,以便于实施相同的目的和/或实现在此介绍的实施例的相同优点。本领域的技术人员还应意识到,所述等同构造没有背离本公开的精神和范围,并且在不背离本公开的精神和范围的情况下,可做出各种改变、替换和替代。
本公开的特定实施例可以容易地包括片上系统(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)。源代码可以限定并使用各种数据结构和通信消息。源代码可以采用计算机可执行的形式(例如,经由解释器),或者源代码可以被转换(例如,经由转换器、汇编器、或编译器)成计算机可执行的形式。
在对以上实施例的讨论中,可以容易地替换、替代或者以其他方式修改电容器、缓冲器、图形元件、互连板、时钟、DDRs、相机传感器、除法器、电感器、电阻器、放大器、开关、数字核、晶体管和/或其他部件,以便满足特定电路需要。此外,应当注意的是,对互补电子设备、硬件、非瞬态软件等的使用提供了同样可行的选项,以便实施本公开的教导。
在一个示例性实施例中,可以在相关联的电子设备的板上实施附图的任何数量的电路。所述板可以是可以容纳电子设备的内部电子系统的各种部件并进一步为其他外围设备提供连接器的一般电路板。更具体地,所述板可以提供电连接,系统的其他部件可以通过这些电连接来进行电通信。可以基于特定配置需要、处理需求、计算机设计等来将任何合适的处理器(包括数字信号处理器、微处理器、支持芯片组等)、存储器元件等适当地耦合至所述板。如外部存储设备、附加传感器、用于音频/视频显示的控制器、以及外围设备等其他部件可以作为插入卡而经由线缆附接至所述板,或者集成到所述板本身中。在另一个示例实施例中,附图的电路可以被实施为独立的模块(例如,具有相关联的部件的设备和被配置成用于执行特定应用程序或功能的电路),或者被实施为到电子设备的专用硬件的插入模块。
注意,使用本文中所提供的许多示例,可以关于两个、三个、四个或更多个电气部件来对交互进行描述。然而,已经仅为了清晰和示例的目的而完成了这一点。应理解的是,可以采用任何适当方式来合并所述系统。根据类似设计替代方案,可以在各种可能的配置中组合附图中展示的部件、模块和元件中的任一者,所有所述配置在本说明书的广泛范围内。在某些情况下,通过仅参照有限数量的电气元件,可能更容易描述一组给定流程的功能中的一项或多项功能。应当理解的是,附图的电路及其教导是可容易扩展的,并且可以容纳大量部件以及更复杂/成熟的安排和配置。相应地,所提供的示例不应限制如潜在地应用到无数其他架构上的电路的范围或抑制其宽泛教导。
许多其他的改变、替代、变更、改变以及修改对本领域技术人员来说是确定的,并且旨在本公开包含了落在所附权利要求书的范围内的所有这种改变、替代、变更、改变以及修改。为了帮助美国专利及商标局(USPTO)以及另外本申请发布的任何专利的任何读取者理解本申请所附权利要求书,申请人希望注意本申请人:(a)并不旨在所附权利要求中的任一项因为在本申请的申请日存在而援引35U.S.C.第112章第(6)段,除非在特定权利要求中确切地使用了字词“用于……的装置”或“用于……的步骤”;并且(b)并不旨在通过本说明书中未在所附权利要求书中反映出的任何陈述以任何方式限制本公开。
示例实施方式
示例1中公开了一种计算装置,包括:存储器;以及交叉视图检测引擎,所述交叉视图检测引擎可操作用于:在第一抽象级上观察由所述存储器上的可执行对象所执行的第一操作;在第二抽象级上观察由所述存储器上的所述可执行对象所执行的基本上同时的第二操作;确定所述第一操作基本上不与所述第二操作匹配;并且对所述确定采取动作。
示例2中公开了如示例1所述的计算装置,其中,所述第一抽象级是文件系统驱动器级。
示例3中公开了如示例1所述的计算装置,其中,所述第二抽象级是固件级。
示例4中公开了如示例1所述的计算装置,其中,所述第二抽象级是比所述第一抽象级低的抽象级。
示例5中公开了如示例1所述的计算装置,其中,所述第二操作是写入操作。
示例6中公开了如示例1所述的计算装置,其中,对所述确定采取动作包括将所述可执行对象指定为恶意软件。
示例7中公开了如示例1所述的计算装置,其中,对所述确定采取动作包括:将所述可执行对象指定为可疑的并将所述可执行对象报告给服务器。
示例8中公开了如示例1所述的计算装置,其中,确定所述第一操作基本上不与所述第二操作匹配包括:从所述第二操作中重构一个或多个调用追踪。
示例9中公开了如示例1所述的计算装置,其中,确定所述第一操作基本上不与所述第二操作匹配包括:从所述第一操作中解构一个或多个调用追踪。
示例10中公开了如示例1所述的计算装置,其中,确定所述第一操作基本上不与所述第二操作匹配包括:从所述第二操作中重构一个或多个调用追踪;从所述第一操作中解构一个或多个调用追踪;并且将所述重构的调用追踪与所述解构的调用追踪进行比较。
示例11中公开了如示例1所述的计算装置,其中,在所述第一抽象级上观察由所述存储器上的所述可执行对象所执行的所述第一操作包括:进行对系统级调用追踪的动态分析。
示例12中公开了如示例11所述的计算装置,其中,在所述第一抽象级上观察由所述存储器上的所述可执行对象所执行的所述第一操作进一步包括:对调用追踪的实时分析。
示例13中公开了如示例1所述的计算装置,其中,在第二抽象级上观察由所述存储器上的所述可执行对象所执行的所述基本上同时的第二操作包括:截取来自磁盘协议的磁盘访问信息。
示例14中公开了一种或多种其上存储有可执行指令的计算机可读取介质,所述指令用于提供交叉视图检测引擎,所述交叉视图检测引擎可操作用于:在第一抽象级上观察由存储器上的可执行对象所执行的第一操作;在第二抽象级上观察由所述存储器上的所述可执行对象所执行的基本上同时的第二操作;确定所述第一操作基本上不与所述第二操作匹配;并且对所述确定采取动作。
示例15中公开了如示例14所述的一种或多种计算机可读取介质,其中,所述第一抽象级是文件系统驱动器级。
示例16中公开了如示例14所述的一种或多种计算机可读取介质,其中,所述第二抽象级是固件级。
示例17中公开了如示例14所述的一种或多种计算机可读取介质,其中,所述第二抽象级是比所述第一抽象级低的抽象级。
示例18中公开了如示例14所述的一种或多种计算机可读取介质,其中,所述第二操作是写入操作。
示例19中公开了如示例14所述的一种或多种计算机可读取介质,其中,对所述确定采取动作包括将所述可执行对象指定为恶意软件。
示例20中公开了如示例14所述的一种或多种计算机可读取介质,其中,对所述确定采取动作包括:将所述可执行对象指定为可疑的并将所述可执行对象报告给服务器。
示例21中公开了如示例14所述的一种或多种计算机可读取介质,其中,确定所述第一操作基本上不与所述第二操作匹配包括:从所述第二操作中重构一个或多个调用追踪;从所述第一操作中解构一个或多个调用追踪;并且将所述重构的调用追踪与所述解构的调用追踪进行比较。
示例22中公开了如示例14所述的一种或多种计算机可读取介质,其中,在所述第一抽象级上观察由所述存储器上的所述可执行对象所执行的所述第一操作包括:进行对系统级调用追踪的实时动态分析。
示例23中公开了如示例14所述的一种或多种计算机可读取介质,其中,在第二抽象级上观察由所述存储器上的所述可执行对象所执行的所述基本上同时的第二操作包括:截取来自磁盘协议的磁盘访问信息。
示例24中公开了一种提供交叉视图检测引擎的计算机实现的方法,包括:在第一抽象级上观察由所述存储器上的可执行对象所执行的第一操作;在第二抽象级上观察由所述存储器上的所述可执行对象所执行的基本上同时的第二操作;确定所述第一操作基本上不与所述第二操作匹配;并且对所述确定采取动作。
示例25中公开了如示例24所述的方法,其中,确定所述第一操作基本上不与所述第二操作匹配包括:从所述第二操作中重构一个或多个调用追踪;从所述第一操作中解构一个或多个调用追踪;并且将所述重构的调用追踪与所述解构的调用追踪进行比较。
示例26中公开了一种方法,所述方法包括执行在示例14至23中任一项中所公开的指令。
示例27中公开了一种装置,所述装置包括用于执行如示例26所述的方法的装置。
示例28中公开了如示例27所述的装置,其中,所述装置包括处理器和存储器。
示例29公开了如示例28所述的装置,其中,所述装置进一步包括计算机可读取介质,所述计算机可读取介质具有存储在其上的软件指令,所述软件指令用于执行如示例26所述的方法。