缓解恶意软件的系统和方法与流程

文档序号:13642479阅读:322来源:国知局

对相关申请的交叉引用

本申请在35u.s.c.§119(e)之下要求享有2015年2月26日在美国专利局提交的题为“systemandmethodtomitigatemalware(缓解恶意软件的系统和方法)”的美国临时申请号62/121,129和2015年6月26日在美国专利局提交的题为“systemandmethodtomitigatemalware(缓解恶意软件的系统和方法)”的美国非临时申请号14/751,935的权益,所述申请以其整体通过引用并入于此。

本公开一般地涉及信息安全领域,并且更特别地,涉及恶意软件的缓解。



背景技术:

在当今社会中,网络安全领域已经变得日益重要。因特网已经使得能够实现全世界的不同计算机网络的互连。特别地,因特网提供用于在经由各种类型的客户端设备连接到不同的计算机网络的不同用户之间交换数据的介质。尽管因特网的使用已经使商业和个人通信改头换面,但是它也被用作用于使恶意操作者获得对计算机和计算机网络的未经授权的访问以及用于敏感信息的有意或无意公开的工具。

感染主机计算机的恶意的软件(“恶意软件”)可能能够执行任何数目的恶意动作,诸如从与主机计算机相关联的企业或个体窃取敏感信息,向其它主机计算机传播,和/或协助分布式拒绝服务攻击,从主机计算机发出垃圾邮件或恶意电子邮件等。因此,对于保护计算机和计算机网络免受恶意的软件的恶意和无意的利用而言,仍然存在值得注意的管理挑战。

附图说明

为了提供本公开及其特征和优点的更完整的理解,参照结合随附各图来理解以下描述,其中相同的参考标号表示相同的部分,其中:

图1是依照本公开的实施例的用于网络环境中的恶意软件的缓解的通信系统的简化框图;

图2是依照本公开的实施例的网络环境中的检测模块的简化框图;

图3是依照本公开的实施例的网络环境中的编译器模块的简化框图;

图4是依照本公开的实施例的网络环境中的网络检测模块的简化框图;

图5a是依照本公开的实施例的一个脚本的简化框图;

图5b是依照本公开的实施例的另一脚本的简化框图;

图5c是依照本公开的实施例的抽象语法树的简化框图;

图6是图示了可以与本公开的实施例相关联的潜在操作的简化流程图;

图7是图示了可以与本公开的实施例相关联的潜在操作的简化流程图;

图8是图示了可以与本公开的实施例相关联的潜在操作的简化流程图;

图9是图示了可以与本公开的实施例相关联的潜在操作的简化流程图;

图10是图示了依照本公开的实施例的以点对点配置布置的示例计算系统的框图;

图11是与本公开的示例arm生态系统片上系统(soc)相关联的简化框图;以及

图12是图示了依照实施例的示例处理器核的框图。

附图各图未必按比例绘制,因为在不脱离本公开的范围的情况下,它们的尺寸可以被相当大地改变。

具体实施方式

示例实施例

图1是缓解网络环境中的恶意软件的通信系统100的简化框图。通信系统100可以包括电子设备102、安全服务器104和云服务106。电子设备102可以包括检测模块110、树生成模块112、处理器114和存储器116a。存储器116a可以包括子树校验和118。安全服务器104可以包括存储器116b、编译器模块120和网络检测模块122。存储器116b可以包括子树校验和118。云服务106可以包括存储器116c、编译器模块120和网络检测模块122。存储器116c可以包括子树校验和118。恶意设备126可能尝试向电子设备102引入恶意软件。恶意软件可以是恶意脚本128的形式。电子设备102、恶意设备126、安全服务器104和云服务106可以通过网络124连接。在一个示例中,恶意设备126可以(例如,通过通用串行总线(usb)类型连接)物理地连接到电子设备102。

在示例实施例中,通信系统100可以被配置成通过使用机器学习训练生成以一个或多个校验和树或抽象语法树(ast)的形式的分类情报(classificationintelligence)来对抗来自恶意设备126的已知恶意软件威胁和新的恶意软件变型威胁(例如,恶意脚本128)。通过使用编译器模块120,通信系统100可以确定每个文件(恶意的和安全的二者)的一系列模糊校验和(例如,子树校验和118)并且追踪校验和树(例如,从脚本数据创建的ast)上的校验和的总体普遍性。树生成模块112可以为诸如恶意脚本128之类的脚本创建校验和树。在运行时,通过使用检测模块110,校验和树可以被解释并且与诸如子树校验和118之类的校验和比较。与子树校验和118中的校验和匹配的校验和树的任何节点或叶可以被记住和被分配分类。检测模块110可以被配置成跨已经发生的各个分类执行统计投票(例如,识别一系列已发生的匹配,诸如有90%的概率文件包括js.exploit.d、有80%的概率文件包括js.exploit.blacole.b、有70%的概率文件包括js.exploitiframe.a等)。

如果总体检测概率低于可配置阈值(例如,低于90%),则检测模块110可以根据脚本数据计算更详细的校验和树,将校验和树串行化成特征向量,并且将特征向量传输到安全服务器104或云服务106,在这里可以在网络检测模块122中创建更全面的分类校验和树并且可以发生脚本的更精确的分类决定。术语“特征向量”要包括诸如每个脚本的校验和之类的属性的固定大小的列表。检测模块110、编译器模块120和网络检测模块122可以跨预置系统(premisesystem)或网络扫描仪(要求高扫描性能和合理地低的存储器占用)和可以依赖于更全面和专用的硬件来主控明显更大的分类数据的云服务而分布。特征向量中的脚本数据向网络检测模块122的供应允许编译器模块120以规则的间隔动态地调整和重训练检测模块110和网络检测模块122。由于只有不可逆的模糊校验和的向量被提交到云服务106和安全服务器104,并且原始文件及其任何子串及其源url均不需要被提交,因此支持数据隐私性。

图1的元件可以通过采用任何合适的连接(有线的或无线的)的一个或多个接口耦合到彼此,所述连接为网络通信提供切实可行的通路。此外,图1的这些元件中的任何一个或多个可以基于特定配置需要而组合或从架构移除。通信系统100可以包括能够进行传输控制协议/因特网协议(tcp/ip)通信以用于网络中的分组的传送或接收的配置。通信系统100还可以在适当的情况下和基于特定需要而与用户数据报协议/ip(udp/ip)或任何其它合适的协议结合地操作。

为了说明通信系统100的某些示例技术的目的,重要的是,理解可以遍历网络环境的通信。以下基础信息可以被视为可以从其适当地解释本公开的基础。

对因特网的增加的访问已经具有以下未预期到的效果:增加在没有用户的知情同意的情况下捕获用户的个人信息或者在没有用户的知晓和知情同意的情况下破坏计算机的软件程序的触及。如本文使用的术语恶意软件包括任何类型的软件程序,其被设计成在没有所有者的知情同意的情况下渗透、修改、改变、破坏或损坏计算机系统,而不管软件程序的动机如何并且也不管由软件程序对所有者的设备、系统、网络或者数据所导致的结果如何。

安全系统通常用于尝试检测恶意软件的存在。在一些实例中,安全系统典型地依赖于检测正在被检查的文件中的签名以确定文件是否是恶意软件或者包含恶意软件。在一些实例中,安全系统可以使用基于校验和的方法来确定文件是否是恶意软件。然而,恶意软件作者频繁地改变恶意软件文件的部分以避免被签名或者校验和方法检测。已知恶意软件的新变型可以通过在短时间间隔内重新包装或编译来创建,以便规避基于签名或校验和的检测和利用在创建和分发更新的检测签名或者校验和中的延迟。各种安全系统试图通过使用更通用的和更具启发式的检测来抵消增加量的新恶意软件变型和样本。然而,通用检测承受要求人工分析一个或者在大多数情况下至少两个恶意软件变型以便提供适当的检测的缺陷。另外,启发式检测承受假阳性的缺陷。

此外,各种安全系统通常依赖于软件仿真的使用。例如,为了确定脚本是否包含潜在危险行为,相应的恶意软件扫描仪可以在安全、虚拟的仿真环境内模拟所讨论的脚本的执行。该过程可以监视所执行的脚本对仿真环境具有什么影响。例如,恶意java脚本通常被模糊化,并且只有通过仿真才能移除脚本的外部模糊外壳以揭示恶意内容。

为了模拟诸如web浏览器之类的环境,系统需要模拟web浏览器暴露于在环境中运行的脚本代码的功能。当前,这由恶意软件研究员人工完成,(例如,每当某种已知恶意软件调用某些功能时,开发针对该恶意软件家族的检测的研究员就确保仿真环境模拟该功能)。除了正确的功能仿真之外,必须计及恶意软件实现的不同变型和抗仿真技巧,(例如,通过利用工具套件自动生成脚本内容,通过使用随机变量名称、使用不同的去模糊密钥略微更改代码或改变过程流等,而进行)。

人工创作功能仿真的当前方案是反应性的、易出错的和昂贵的。此外,脚本内容的完全仿真伴随高性能成本而发生。所需要的是一种系统和方法,所述系统和方法使用基于诸如ast之类的广义语法表示的校验和,以在没有对仿真的单独依赖的情况下实现抵挡新的、零日恶意软件变型的主动保护。如果可以以通用的方式检测恶意软件家族的重生成或重构的变型或重用来自之前的恶意软件家族的组件的新恶意软件,则将是有益的。

如图1中所概述的用于缓解恶意软件的通信系统可以解决这些问题(和其它问题)。在图1的通信系统100中,为了对抗来自恶意设备126的恶意软件威胁和新的恶意软件变型威胁,系统可以为脚本内容产生一个或多个标准化的ast并且针对所生成的ast的指定子树计算校验和。标准化的ast不包括脚本特定内容,比如变量或者函数名称,并且因此脚本特定内容不影响校验和计算。通过使用该方案,系统能够仅基于其结构来检测恶意软件并且避免完全仿真、抗仿真技巧和负面性能影响。系统可以在后端使用机器学习训练来生成必需的分类情报。系统可以为每个ast的指定子树确定一系列校验和并且追踪整个恶意软件训练集合上的总体普遍性与干净训练集合上的普遍性。系统然后可以为每一个指定子树创建最普遍的校验和的数据库(例如,子数校验和118)。校验和与分析的精确度可以通过指定应当针对其计算校验和的附加的子树的“根”节点(例如,循环,函数,如果等)来改进。在运行时,系统可以生成和遍历针对所讨论的脚本的ast,计算相应ast子树处的校验和,并且将所述校验和对照存储在数据库内的校验和进行比较。相应的ast子树可以取决于经训练的数据库(例如,布置在循环或函数调用节点下方的子树)。每一个校验和可以与贝叶斯分数相关联,并且对于每一个校验和匹配,可以将相关联的贝叶斯分数添加到总体恶意软件概率。

系统可以通过使用识别新的未知恶意软件与现有的已知恶意软件变型和组件的最密切关系的一系列校验和来提供主动保护。例如,即使恶意软件变型m1已经被扩展有新代码、代码被移除/改变或者重新生成(例如,如果通过利用工具套件来创建),在恶意软件变型m1上计算的校验和也很可能匹配在后代恶意软件变型m2上计算的校验和。

简单地基于在经分析的脚本上匹配所必需的校验和的数目,可以按照所期望的那样配置检出率和假阳性率之间的比值。例如,激进的检测可以向每一个校验和分配更高的各个贝叶斯分数,使得需要匹配更少的校验和来使得样本被检测,而更精确的检测可以向每一个校验和分配较低的分数,从而需要更多匹配的校验和以用于检测。另外,可以针对每一个校验和单独地限定相关联的贝叶斯分数以降低或升高特定校验和对总体检测概率的影响。

在一些之前的系统中,必须持续扩展模拟环境以能够仿真最新的脚本。需要在模拟环境中添加或调节由脚本语言本身或者由web浏览器提供的每一个新的或者经改变的功能。当当前系统分析脚本内容的结构时,当前系统可以独立于特定的功能实现。可以通过机器学习来自动训练分类内容并且因此可以相对容易地维护分类内容。

针对系统的分类仅取决于针对ast计算的校验和与对应的贝叶斯分数。作为结果,存储器中和存储上的占用可以保持非常低。此外,可以通过限定较少的节点类型以计算校验和而不改变检测算法来简单地缩放存储器中和存储器上的占用。ast生成和ast中指定节点处的校验和的计算和比较对总体性能的影响比脚本的完整仿真微小的多得多。关于存储器占用,性能比可以通过更改每个ast的校验和的数目而可缩放。另外,取决于匹配的校验和,系统可以允许恶意软件家族关系的列表的递送,每个恶意软件家族关系具有关系似然性。也就是说,系统可以返回关系似然性列表(例如,js.exploit.d”:90%,js.exploit.blacole.b”:80%,js.exploitiframe.a”:70%),而不是只返回单个检测名称。

此外,基于合理大小(100,000+)的恶意软件和良性文件样本集合,分类数据可以完全通过数据挖掘和机器学习技术来生成而不需要人工规则创作。系统可以在后端中使用已知的恶意的和已知的良性的脚本样本二者的训练集合来生成必需的分类情报。在一个示例中,对于每一个样本,系统可以生成标准化的ast,确定ast的指定子树之上的一系列校验和,并且追踪完整训练集合上的任何校验和的总体普遍性。所产生的数据库应当反映已经被证明是仅在恶意软件集合中是最普遍的的那些校验和。

在运行时,系统可以为所讨论的脚本生成标准化的ast表示。检测模块(例如,检测模块110)可以遍历树并且为指定子树计算校验和。算法将较低子树的已经计算的校验重用于位于树的较高层级中的子树以避免重计算。然后对照经训练的数据库中的条目(子树校验和118)比较这些校验和。如果校验和与条目匹配,则该条目的贝叶斯分数被添加到总体恶意软件概率。

该过程允许创建模糊校验和的校验和树以实现抵挡新的恶意软件变型(或“零日”恶意软件变型)的主动保护。可以以通用的方式检测恶意软件家族的重新编译或重新包装的变型或重用来自之前的恶意软件家族的组件的新的恶意软件,从而保护用户,包括可能在传统的反应性方案中会牺牲的恶意软件的第一受害人或者“患者零”。通信系统100可以被配置成通过使用校验和树中的模糊校验和以检测新的或者“零日”恶意软件来帮助缓解恶意软件。“模糊”意味着校验和不仅与数据(最初从其计算校验和)的相同部分匹配,而且校验和还与具有低的或相对低的编辑距离的近亲匹配。照此,该过程可以比之前的方法更精确并且文件格式更不可知,在之前的方法中代码的变换移除太多信息和/或要求深入的反汇编、仿真和对恶意软件的理解。恶意软件检测可以相对于诸如检出率于错误率与存储器占用与扫描性能比之类的各种方面而被缩放,并且可以在运行时控制每一个方面而不用通过更改每个文件所使用的校验和的数目、在校验和比较中所允许的位置偏差以及为每个校验和匹配分配的百分比或分数(例如,贝叶斯分数或者某个其它类似类型的分数)进行算法改变。恶意软件检测可以包括识别新的未知恶意软件与现有的已知的恶意软件变型和组件的最密切关系的一系列模糊校验和。作为结果,即使恶意软件变型m1被扩展有新的代码,代码被移除、重新编译或者重新包装等,在恶意软件变型m1上计算的校验和也仍然很可能在后代m2上匹配。

恶意软件的检测可以跨多个系统以分阶段的方式工作,诸如在本地安装的“预置(onpremise)”网络扫描仪上执行第一“下选”,并且然后,在初始匹配时,将详细的分类作为特征向量卸载到所连接的云服务或服务器。由于特征向量的固定大小,检测模块可以相对容易地通过云服务(或者安全服务器)中的网络检测模块来计算透彻分析所需的特征向量。检测模块可以向云服务(或者安全服务器)发送特征向量,并且可以对照位于云服务(或者安全服务器)中的更大校验和树而比较特征向量中的校验和。这允许系统保持本地设备(例如,电子设备102)上的数据占用为小的而不必牺牲精确度。基于检测恶意软件所必需的一系列校验和的大小,可以按照所期望的那样配置检出率和假阳性率之间的比值。例如,激进的检测可以仅要求每个脚本四(4)个校验和匹配,而更精确的检测可以要求三十二(32)个校验和匹配,等等。

此外,计算和比较校验和所需要的cpu周期的量与ast子树的大小有关。分类数据库的大小对性能没有过多影响(除了非常小的i/o相关部分)。该过程可以提供o(logn)性能特性,而传统的基于全文件散列的检测列表具有o(n+logm)性能特性(例如,文件大小*列表大小)。项“o(logn)”意味着性能略微取决于所扫描的文件的大小(特别地,取决于在该文件中编码的脚本的复杂性)。性能总是保持或多或少相同,其中文件大小对性能具有轻微的间接影响。项“o(n+logm)”意味着性能取决于所扫描的文件的大小(n表示文件大小)和树的大小(其是logm)二者。表示树中的节点总量和查找表性能的项“m”是m的对数,因为它被存储为排序树(例如,“红-黑”二叉树)而不是存储为顺序列表。

系统也可以允许家族关系列表的递送,每一个家族关系具有关系似然性。也就是说,系统可以返回诸如“js.exploit.d":90%、js.exploit.blacole.b":80%、和js.exploitiframe.a":70%之类的列表,而不是只返回单个检测名称。在一个示例中,为了确定百分比,可以存储针对校验和树中的每一个匹配节点的概率值。可以从与干净训练集合相比的恶意软件和良性文件训练集合中的校验和的普遍性导出概率值。另外,基于合理大小(100,000+)的恶意软件和良性文件样本集合,可以完全通过数据挖掘和机器学习技术来生成分类数据。因此,不存在对于人工规则创作的需要。

通信系统100可以被配置成使用已知的恶意的和已知的良性的文件样本二者的训练集合来生成校验和树的分类情报。从每一个样本,通信系统100可以确定一系列模糊校验和并且追踪完整的训练集合上的任何校验和的总体普遍性。通过使用训练集合,通信系统100然后可以产生反映已经被证明在恶意软件集合和良性文件集合中最普遍的一系列那些校验和的校验和树。

在运行时,通信系统100可以被配置成解释校验和树,使得其起源于(一个或多个)根节点,并且对于校验和树中的每一个节点,将校验和与利用校验和树节点存储的校验和进行比较。校验和数中的叶节点(或者至少大多数叶节点)具有已分配的类标签或者分类。所分配的分类指定最可能的恶意软件家族名称(例如,js.exploit.d)或者良性标签(例如,clean(干净)),并且可以基于匹配ast子树校验和的一个或多个节点以及校验和与节点匹配得有多好来分配匹配似然性(例如,0..100%)。记住通过匹配节点到达的任何分类,并且执行跨各个分类的投票以得出最可能的分类。在一个示例中,使用各个检测的加权组合来创建概率和。更具体地,随机森林分类器可以与跨匹配的分类节点的贝叶斯投票一起使用。

转向图1的基础设施,示出依照示例实施例的通信系统100。一般地,通信系统100可以在任何类型或拓扑的网络中实现。网络124表示用于接收和传送通过通信系统100传播的信息分组的互连通信路径的一系列点或节点。网络124提供节点之间的通信接口,并且可以被配置为任何局域网(lan)、虚拟局域网(vlan)、广域网(wan)、无线局域网(wlan)、城域网(man)、内联网、外联网、虚拟私人网络(vpn)以及促进网络环境中的通信的任何其它适当的架构或系统,或者其任何合适的组合,包括有线和/或无线通信。

在通信系统100中,可以根据任何合适的通信消息传递协议而发送和接收包括分组、帧、信号、数据等的网络业务。合适的通信消息传递协议可以包括诸如开放系统互连(osi)模型或其任何派生物或变型(例如,传输控制协议/因特网协议(tcp/ip),用户数据报协议/ip(udp/ip))之类的多层方案。此外,也可以在通信系统100中提供蜂窝网络之上的无线电信号通信。可以提供合适的接口和基础设施以使得能够实现与蜂窝网络的通信。

如本文所使用的术语“分组”是指可以在分组交换网络上的源节点和目的地节点之间路由的数据单元。分组包括源网络地址和目的地网络地址。这些网络地址可以是tcp/ip消息传递协议中的因特网协议(ip)地址。如本文所使用的术语“数据”是指任何类型的二进制、数字、语音、视频、文本或脚本数据,或者任何类型的源或目标代码,或者可以在电子设备和/或网络中从一个点传送至另一个的以任何适当格式的任何其它合适的信息。此外,消息、请求、响应和查询是网络业务的形式,并且因此可以包括分组、帧、信号、数据等。

在示例实现中,电子设备102、安全服务器104和云服务106是网络元件,其意图涵盖网络器具、服务器、路由器、交换机、网关、桥接器、负载平衡器、处理器、模块或者可操作成在网络环境中交换信息的任何其它合适的设备、组件、元件或对象。网络元件可以包括促进其操作的任何合适的硬件、软件、组件、模块或对象,以及用于在网络环境中接收、传送和/或以其它方式传送数据或信息的合适接口。这可以包括允许数据或信息的有效交换的适当算法和通信协议。云服务106一般被限定为在诸如因特网之类的网络之上作为服务来递送的计算资源的使用。典型地,在云基础设施中提供计算、存储和网络资源,从而有效地将工作负载从本地网络转移到云网络。

关于与通信系统100相关联的内部结构,电子设备102、安全服务器104和云服务106中的每一个可以包括用于存储要在本文所概述的操作中使用的信息的存储器元件。电子设备102、安全服务器104和云服务106中的每一个可以在适当的情况下并且基于特定需要而在任何合适的存储器元件(例如,随机存取存储器(ram)、只读存储器(rom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、专用集成电路(asic)等)、软件、硬件、固件或者任何其它合适的组件、设备、元件或对象中保持信息。本文讨论的任何存储器术语应当被解释为被涵盖在宽泛术语“存储器元件”内。而且,在通信系统100中使用、追踪、发送或接收的信息可以在任何数据库、寄存器、队列、表、高速缓存、控制列表或者其它存储结构(所有这些都可以在任何合适的时间帧处被引用)中提供。任何这样的存储选项也可以包括在如本文使用的宽泛术语“存储器元件”内。

在某些示例实现中,本文所概述的功能可以由在一个或多个有形介质中编码的逻辑(例如,在asic中提供的嵌入式逻辑,数字信号处理器(dsp)指令,要由处理器或其它类似的机器等执行的软件(潜在地包括目标代码和源代码))实现,所述有形介质可以包括非暂时性计算机可读介质。在这些实例中的一些中,存储器元件可以存储用于本文所描述的操作的数据。这包括存储器元件能够存储软件、逻辑、代码或者被执行以实施本文所描述的活动的处理器指令。

在示例实现中,诸如电子设备102、安全服务器104和/或云服务106之类的通信系统100的网络元件可以包括软件模块(例如,检测模块110、编译器模块120和/或网络检测模块122)以实现或促成如本文所概述的操作。这些模块可以以任何适当的方式合适地组合,这可以基于特定配置和/或供应需要。在示例实施例中,这样的操作可以由在这些元件外部实现的或者包括在某个其它网络设备中的硬件来实施以实现预计功能。另外,模块可以实现为软件、硬件、固件或其任何合适的组合。为了实现如本文所概述的操作,这些元件还可以包括能够与其它网络元件协作的软件(或者往复式软件)。

此外,电子设备102、安全服务器104和云服务106中的每一个可以包括能够执行软件或算法以施行如本文所讨论的活动的处理器。处理器可以执行与数据相关联的任何类型的指令以实现本文详细描述的操作。在一个示例中,处理器可以将元件或制品(例如,数据)从一个状态或事物变换成另一状态或事物。在另一示例中,本文所概述的活动可以利用固定逻辑或可编程逻辑(例如,由处理器执行的软件/计算机指令)实现,并且本文所识别的元件可以是某种类型的可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(fpga)、eprom、eeprom)或包括数字逻辑、软件、代码、电子指令或其任何合适的组合的asic。本文所描述的任何潜在的处理元件、模块和机器应当被解释为涵盖在宽泛术语“处理器”内。

电子设备102可以是网络元件并且包括例如台式计算机、膝上型计算机、移动设备、个人数字助理、智能电话、平板电脑或其它类似设备。安全服务器104可以是诸如服务器或虚拟服务器的网络元件,并且可以与希望经由某个网络(例如,网络124)在通信系统100中发起通信的客户端、客户、端点、或最终用户相关联。术语“服务器”包括用于服务客户端的请求和/或代表通信系统100内的客户端执行某种计算任务的设备。尽管在图1中将检测模块110、编译器模块120和网络检测模块122表示为单独的模块,但是这只是为了说明的目的。这些模块可以以任何合适的配置组合或分离。另外,这些模块可以被集成到或分布在云服务106或安全服务器104中或在可由电子设备102访问的另一网络中。

转向图2,图2图示了检测模块110的一个示例。检测模块110可以包括校验和模块130、树生成模块132、分类模块134、更新模块136和配置模块140。校验和模块130可以被配置为校验和计算器和比较器。校验和模块130可以使用一系列模糊校验和,以识别良性文件、现有恶意软件和新的未知的恶意软件。即使变型恶意软件已经被扩展有新代码、代码被移除、重新编译或者重新包装,在恶意软件变型m1上计算的校验和也仍然很可能在后代m2上匹配。

树生成模块132可以被配置成从脚本数据生成校验和树。校验和树中的每一个节点可以反映已经被证明在良性文件或已知的恶意软件文件中是最普遍的脚本数据中的逻辑。在示例中,树生成模块132可以被配置成生成ast。

分类模块134可以被配置为分类队列和投票器。分类模块134可以创建家族关系的列表,每一个家族关系具有关系似然性。也就是说,分类模块134可以返回诸如“js.exploit.d:90%、js.exploit.blacole.b:80%和js.exploitiframe.a:70%等之类的列表,而不是只返回单个检测名称(例如,js.exploit.d)。分类数据可以完全通过数据挖掘和机器学习技术使用现有的已知恶意软件和良性的脚本变型和组件来生成。现有的已知恶意软件和良性的脚本变型和组件可以是合理大小(100,000+)的恶意软件和良性文件样本集合。不存在对于人工规则创作的需要。

更新模块136可以被配置成接收所生成的校验和树的更新版本以用于存储在子校验和树118中。安全服务器104或云服务106可以可操作成以某种间隔或在生成新的校验和树时利用新校验和树更新子树校验和118。在各种实施例中,更新模块136利用来自安全服务器104中或云服务106中的编译器模块120的新的校验和子树来控制子树校验和118的更新。

配置模块140可以被配置成按照所期望的那样改变检出率和假阳性率之间的比值。该比值可以基于文件上的匹配所必需的一系列校验和的大小。例如,激进的检测可以仅要求匹配每个文件的4个校验和,而更精确的检测可以要求匹配32个校验和,等等。计算和比较校验和所需要的cpu周期的量与ast子树的大小有关。脚本的大小和分类数据库(例如,子树校验和118)的大小将均不影响性能,除了小的i/o相关部分。这提供了一个优点,因为可以提供o(logn)性能特性,而传统的基于全文件散列的检测列表具有o(n+logm)性能特性(文件大小*列表大小)。

转向图3,图3图示了编译器模块120的一个示例。编译器模块120可以包括树生成模块132和追踪模块138。追踪模块138可以被配置成追踪已知的和新的恶意软件以及良性文件。追踪模块138还可以向树生成模块132发送对于要针对新的恶意软件和新的良性文件生成的新的校验和树的请求。

转向图4,图4图示了网络检测模块122的一个示例。网络检测模块122可以包括校验和模块130、树生成模块112和分类模块134。网络检测模块122可以在脚本数据上执行更详细的分析。

转向图5a-5c,图5a图示了脚本变型a142,图5b图示了脚本变型b144,并且图5c图示了表示脚本变型a142和脚本变型b144二者的ast146。例如,ast146的for(循环)节点148可以表示脚本变型a142和脚本变型b144的第二行中的“for(循环)”代码。

assign(分配)节点150可以表示脚本变型a142和脚本变型b144的第三行中的“=”符号,其表示右侧常数或表达式向左侧变量的分配。identifier(标识符)节点152可以表示脚本变型a142的第三行中的标识符“a”和脚本变型b144的第三行中的标识符“b”。string(字符串)节点154可以表示脚本变型a142的第三行中的字符串文字“thisisakey”和脚本变型b144的第三行中的字符串文字“thisisanotherkey”。在该示例中,即使每一行稍微不同,但是ast146的assign节点150、identifier节点152和string节点157可以表示脚本变型a142和脚本变型b144中的第三行。

类似地,call(调用)节点156可以表示对脚本变型a142的第四行中的函数“abcdef”的调用和脚本变型b144的第四行中的函数“decode”的调用。identifier节点152可以表示使用在脚本变型a142的第四行中的函数调用的标识符“a”和使用在脚本变型b144的第四行中的函数调用的标识符“b”。通过使用一个标准化的ast(例如,ast146)以表示脚本变型a142和脚本变型b144二者,标准化的ast不包括脚本特定内容,比如实际的变量或函数名称,也不包括常量值(比如字符串文字),并且因此脚本特定内容不影响校验和计算。通过使用该方案,系统能够仅基于其结构而检测恶意软件并且避免完整仿真、抗仿真技巧和负面的性能影响。

转向图6,图6是图示了依照实施例可以与缓解恶意软件相关联的流600的可能操作的示例流程图。在实施例中,流600的一个或多个操作可以由检测模块110和树生成模块112执行。在602处识别脚本。在604处,创建针对脚本的ast。在606处,将校验和与ast中的子树比较。例如,来自子树校验和118的一个或多个校验和可以与ast146中的子树比较。在608处,系统确定校验和是否与ast中的子树的校验和匹配。

如果校验和与校验和树的校验和匹配,则系统确定校验和的节点是否具有分类,如在610中那样。如果校验和的节点不具有分类,则系统确定子树是否具有任何子代,如在614中那样。如果校验和的节点具有分类,则存储分类,如在612中那样,并且系统确定子树是否具有任何子代,如在614中那样。如果子树具有子代,则系统返回到606并且将校验和与ast中的另一子树比较。如果子树不具有任何子代,则系统确定是否已经分析ast中的每一个子树,如在618中那样。这确保ast的所有子树被分析。例如,ast146可以包括2、5、10或任何数目的子树。如果已经分析了ast中的每一个子树,则组合所存储的分类(如果有的话),如在620中那样。如果ast中的每一个子树尚未被分析,则系统返回到606并且将校验和与ast中的(新)子树比较。

返回到608,如果校验和与ast中的子树的校验和不匹配,则系统确定子树是否具有同代,如在616中那样。例如,如图5c中所图示的,assign节点150、identifier节点152和string节点154可以是子树,并且是call节点156和identifier节点152的同代,所述call节点156和identifier节点152是另一子树。在根节点以及校验和树中的任何其它节点下具有许多同代是可能的,并且这确保每一个同代都被分析。如果子树具有同代,则将校验和与ast中的子树(同代子树)比较。如果子树没有同代,则系统确定是否已经分析了ast中的每一个子树,如在618中那样。

转向图7,图7是图示了依照实施例的可以与缓解恶意软件相关联的流700的可能操作的示例流程图。在实施例中,流700的一个或多个操作可以由检测模块110和树生成模块112执行。在702处接收脚本。在704处,创建用于脚本的ast。在706处,将ast中的每一个子树与已知的子树校验和比较。在708处,确定总体恶意软件概率。例如,检测模块110可以确定脚本的总体恶意软件概率。在710处,系统确定脚本是否需要进一步分析。如果脚本需要进一步分析,则向网络元件发送涉及脚本的数据以用于进一步分析,如在712中那样。例如,如果脚本的分类具有小于90%的概率脚本是恶意的(或良性的),则可以向安全服务器104或云服务106发送特征向量,以用于使用网络检测模块122的进一步分析。如果脚本不需要进一步分析,则过程结束。例如,如果脚本的分类具有超过90%的可能性脚本包括恶意软件,则非常可能(超过90%的概率)脚本包含恶意软件并且不需要进一步分析。

转向图8,图8是图示了依照实施例的可以与缓解恶意软件相关联的流800的可能操作的示例流程图。在实施例中,流800的一个或多个操作可以由检测模块110和树生成模块112执行。在802处,接收脚本数据。在804处,创建用于脚本的ast。在806处,使用校验和分析ast。例如,可以使用子树校验和118分析ast。在808处,基于ast的分析,创建与脚本数据相关的向量。在810处,向将使用向量来分类脚本数据的设备发送向量。

转向图9,图9是图示了依照实施例的可以与缓解恶意软件相关联的流900的可能操作的示例流程图。在实施例中,流900的一个或多个操作可以由检测模块110和树生成模块112执行。在902处,接收脚本数据。脚本数据可以涉及新的恶意软件或者新的良性文件。在904处,确定脚本的特性。在906处,确定针对脚本的模糊校验和。在908处,向将使用校验和来分析脚本数据的设备发送校验和。例如,编译器模块120可以生成和向检测模块110中的更新模块136传送子树校验和118。

图10图示了根据实施例的布置在点对点(ptp)配置中的计算系统1000。特别地,图10示出系统,其中处理器、存储器和输入/输出设备通过数个点对点接口互连。一般地,通信系统100的一个或多个网络元件可以以与计算系统1000相同或类似的方式配置。

如图10中所图示的,系统1000可以包括若干处理器,为了清楚而仅示出若干处理器中的两个处理器1070和1080。虽然示出两个处理器1070和1080,但是要理解的是,系统1000的实施例也可以仅包括一个这样的处理器。处理器1070和1080均可以包括一组核(即,处理器核1074a和1074b以及处理器核1084a和1084b)以执行程序的多个线程。核可以被配置成以与以上参照图6-9讨论的方式类似的方式执行指令代码。每一个处理器1070、1080可以包括至少一个共享高速缓存1071、1081。共享高速缓存1071、1081可以存储由诸如处理器核1074和1084之类的处理器1070、1080的一个或多个组件利用的数据(例如,指令)。

处理器1070和1080均还可以包括集成的存储器控制器逻辑(mc)1072和1082以与存储器元件1032和1034通信。存储器元件1032和/或1034可以存储由处理器1070和1080使用的各种数据。在可替换的实施例中,存储器控制器逻辑1072和1082可以是与处理器1070和1080分离的分立逻辑。

处理器1070和1080可以是任何类型的处理器并且可以分别使用点对点接口电路1078和1088经由点对点(ptp)接口1050交换数据。处理器1070和1080均可以使用点对点接口电路1076、1086、1094和1098经由各个点对点接口1052和1054与芯片集1090交换数据。芯片集1090还可以使用接口电路1092(其可以是ptp接口电路)经由高性能图形接口1039与高性能图形电路1038交换数据。在可替换的实施例中,图10中图示的任何或所有ptp链路可以实现为多点总线而不是ptp链路。

芯片集1090可以经由接口电路1096与总线1020通信。总线1020可以具有在其之上通信的一个或多个设备,诸如总线桥1018和i/o设备1016。经由总线1010,总线桥1018可以与其它设备通信,所述其它设备诸如键盘/鼠标1012(或者诸如触摸屏、跟踪球等之类的其它输入设备)、通信设备1026(诸如调制解调器、网络接口设备或者可以通过计算机网络1060通信的其它类型的通信设备)、音频i/o设备1014和/或数据存储设备1028。数据存储设备1028可以存储代码1030,代码1030可以由处理器1070和/或1080执行。在可替换的实施例中,总线架构的任何部分可以利用一个或多个ptp链路实现。

图10中所描绘的计算机系统是可以用于实现本文所讨论的各种实施例的计算系统的实施例的示意性图示。将领会的是,图10中所描绘的系统的各种组件可以以片上系统(soc)架构或以任何其它合适的配置组合。例如,本文所公开的实施例可以并入到包括诸如智能蜂窝电话、平板计算机、个人数字助理、便携式游戏设备等之类的移动设备的系统中。将领会的是,在至少一些实施例中,这些移动设备可以提供有soc架构。

转向图11,图11是与本公开的示例arm生态系统soc1100相关联的简化框图。本公开的至少一个示例实现可以包括本文所讨论的恶意软件特征的缓解以及arm组件。例如,图11的示例可以与任何arm核(例如,a-9,a-15等)相关联。另外,该架构可以是任何类型的平板电脑、智能电话(包括androidtm电话、iphonestm、ipadtm、googlenexus(谷歌关系)tm、microsoftsurface(微软表面)tm)、个人计算机、服务器、视频处理组件、膝上型计算机(包括任何类型的笔记本电脑)、ultrabook(超极本)tm系统、任何类型的支持触摸的输入设备等的部分。

在图11的该示例中,arm生态系统soc1100可以包括多个核1106-1107、l2高速缓存控件1108、总线接口单元1109、l2高速缓存1110、图形处理单元(gpu)1115、互连1102、视频编解码器1120和液晶显示器(lcd)i/f1125,其可以与耦合到lcd的移动工业处理器接口(mipi)/高清晰度多媒体接口(hdmi)链路相关联。

arm生态系统soc1100还可以包括订户身份模块(sim)i/f1130、启动只读存储器(rom)1135、同步动态随机存取存储器(sdram)控制器1140、闪存控制器1145、串行外设接口(spi)主机1150、合适的功率控件1155、动态ram(dram)1160和闪存1165。此外,一个或多个示例实施例包括一个或多个通信能力、接口和特征,诸如bluetooth(蓝牙)tm1170、3g调制解调器1175、全球定位系统(gps)1180和802.11wi-fi1185的实例。

在操作中,图11的示例可以提供处理能力,连同相对低的功耗,以使得能够实现各种类型的计算(例如,移动计算、高端数字家庭、服务器、无线基础设施等)。此外,这样的架构可以使得能够实现任何数目的软件应用(例如,androidtm、adobetmflashtm播放器、java平台标准版本(javase)、javafx、linux、嵌入式微软视窗、symbian和ubuntu等)。在至少一个示例实施例中,核处理器可以实现具有耦合的低等待时间2级高速缓存的无序超标量流水线。

图12图示了根据实施例的处理器核1200。处理器核1200可以是用于诸如微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器或者执行代码的其它设备之类的任何类型的处理器的核。尽管图12中仅图示了一个处理器核1200,但是处理器可以可替换地包括多于一个图12中所图示的处理器核1200。例如,处理器核1200表示参照图10的处理器1070和1080示出和描述的处理器核1074a、1074b、1084a和1084b的一个示例实施例。处理器核1200可以是单线程核或者,对于至少一个实施例,处理器核1200可以是多线程的,因为它可以包括每个核的多于一个硬件线程上下文(或“逻辑处理器”)。

图12还图示了依照实施例的耦合到处理器核1200的存储器1202。存储器1202可以是如本领域技术人员已知的或以其它方式对本领域技术人员可用的任何各种各样的存储器(包括存储器层级的各种层)。存储器1202可以包括代码1204,其可以是由处理器核1200执行的一个或多个指令。处理器核1200可以遵循由代码1204指示的指令的程序序列。每一个指令进入前端逻辑1206并且由一个或多个解码器1208处理。解码器可以以预定格式生成作为其输出的诸如固定宽度微操作之类的微操作,或者可以生成其它指令、微指令或者反映原始代码指令的控制信号。前端逻辑1206还包括寄存器重命名逻辑1210和调度逻辑1212,其一般分配资源并且将与指令对应的操作进行排队以执行。

处理器核1200还可以包括具有一组执行单元1216-1至1216-n的执行逻辑1214。一些实施例可以包括专用于特定功能或功能集合的数个执行单元。其它实施例可以仅包括一个执行单元或者仅包括能够执行特定功能的一个执行单元。执行逻辑1214执行由代码指令指定的操作。

在由代码指令指定的操作执行完成之后,后端逻辑1218可以引退代码1204的指令。在一个实施例中,处理器核1200允许无序执行但是要求指令的有序引退。引退逻辑1220可以采取各种已知形式(例如,重排序缓冲器等等)。以这种方式,至少在由解码器生成的输出、由寄存器重命名逻辑1210利用的硬件寄存器和表以及由执行逻辑1214修改的任何寄存器(未示出)方面,在代码1204的执行期间转换处理器核1200。

尽管在图12中未图示,但是处理器可以包括具有处理器核1200的芯片上的其它元件,参照图10在本文示出和描述了所述其它元件中的至少一些。例如,如图10中所示,处理器可以包括存储器控制逻辑与处理器核1200。处理器可以包括i/o控制逻辑和/或可以包括与存储器控制逻辑集成的i/o控制逻辑。

要指出的是,利用本文提供的示例,交互可以在两个、三个或者更多网络元件方面来描述。然而,这仅仅是为了清楚和示例的目的而做出。在某些情况下,通过仅参考有限数目的网络元件来描述给定流集合的一个或多个功能可能更容易。应当领会的是,通信系统100及其教导是可容易缩放的并且可以容纳大量组件以及更复杂的/精细的布置和配置。因此,所提供的示例不应当限制范围或抑制如潜在地应用于无数其它架构的通信系统100的广泛教导。

同样重要的是要指出,前述流程图(即,图6-9)中的操作仅图示了可以由通信系统100执行或者在通信系统100内执行的可能的相关场景和模式中的一些。在不脱离本公开的范围的情况下,可以在适当的情况下删除或移除这些操作中的一些,或者可以相当大地修改或改变这些操作。此外,数个这些操作已经被描述为与一个或多个附加操作同时或并行地执行。然而,可以相当大地更改这些操作的时序。为了示例和讨论的目的而已经提供了前述操作流。由通信系统100提供相当大程度的灵活性,因为在不脱离本公开的教导的情况下,可以提供任何合适的布置、年表、配置和时序机制。

尽管已经参照特定布置和配置详细描述了本公开,但是在不脱离本公开的范围的情况下可以显著地改变这些示例配置和布置。而且,某些组件可以基于特定需要和实现而组合、分离、消除或添加。此外,尽管已经参照促进通信过程的特定元件和操作说明了通信系统100,但是这些元件和操作可以被任何合适的架构、协议和/或实现通信系统100的预计功能的过程取代。

可以为本领域技术人员确定众多其它改变、替代、变型、更改和修改,并且意图在于本公开涵盖如落入随附权利要求的范围内的所有这样的改变、替代、变型、更改和修改。为了帮助美国专利商标局(uspto)以及此外关于本申请授予的任何专利的任何读者解释随附于此的权利要求,申请人希望指出的是,申请人:(a)不意图任何随附权利要求在其于提交日起存在时援引35u.s.c第112章第六(6)款,除非在特定权利要求中特别地使用词语“用于……的部件”或“用于……的步骤”;并且(b)不意图通过说明书中的任何陈述来以未以其它方式在随附权利要求中反映的任何方式限制本公开。

其它注释和示例

示例c1是具有一个或多个指令的至少一个机器可读介质,所述一个或多个指令在由至少一个处理器执行时,使得所述至少一个机器可读存储介质接收脚本数据,确定针对脚本数据的校验和树,将校验和树的每一个校验和与一个或多个子树校验和比较,以及向脚本数据分配一个或多个分类。

在示例c2中,示例c1的主题可以可选地包括其中在抽象语法树上计算校验和树。

在示例c3中,示例c1-c2中的任何一个的主题可以可选地包括其中子树校验和中的每一个校验和是普遍的恶意软件或良性的校验和。

在示例c4中,示例c1-c3中的任何一个的主题可以可选地包括其中分类是基于与子树校验和中的校验和匹配的校验和树的子树。

在示例c5中,示例c1-c4中的任何一个的主题可以可选地包括其中向分类分配百分比。

在示例c6中,示例c1-c5中的任何一个的主题可以可选地包括其中校验和树的一个或多个校验和是模糊校验和。

在示例c7中,示例c1-c6中的任何一个的主题可以可选地包括其中指令在由所述至少一个处理器执行时,还使得所述至少一个机器可读存储介质将校验和树串行化为特征向量。

在示例c8中,示例c1-c6中的任何一个的主题可以可选地包括其中指令在由所述至少一个处理器执行时,还使得所述至少一个处理器将特征向量传送至网络元件以用于进一步分析。

在示例a1中,一种装置可以包括树生成模块和检测模块。树生成模块可以被配置成接收脚本数据,并且确定针对脚本数据的校验和树。检测模块可以被配置成将校验和树的每一个校验和与一个或多个子树校验和比较,并且向脚本数据分配一个或多个分类。

在示例a2中,示例a1的主题可以可选地包括其中在抽象语法树上计算校验和树。

在示例a3中,示例a1-a2中的任何一个的主题可以可选地包括其中子树校验和中的每一个校验和是普遍的恶意软件或良性的校验和。

在示例a4中,示例a1-a3中的任何一个的主题可以可选地包括其中分类是基于与子树校验和中的校验和匹配的校验和树的子树。

在示例a5中,示例a1-a4中的任何一个的主题可以可选地包括其中向分类分配百分比。

在示例a6中,示例a1-a5中的任何一个的主题可以可选地包括其中校验和树的一个或多个校验和是模糊校验和。

在示例a7中,示例a1-a6中的任何一个的主题可以可选地包括其中检测模块还被配置成将校验和树串行化为特征向量。

在示例a8中,示例a1-a6中的任何一个的主题可以可选地包括其中检测模块还被配置成将特征向量传送至网络元件以用于进一步分析。

示例m1是一种方法,包括接收脚本数据,确定针对脚本数据的校验和树,将校验和树的每一个校验和与一个或多个子树校验和比较,以及向脚本数据分配一个或多个分类。

在示例m2中,示例m1的主题可以可选地包括其中在抽象语法树上计算校验和树。

在示例m3中,示例m1-m2中的任何一个的主题可以可选地包括其中子树校验和中的每一个校验和是普遍的恶意软件或良性的校验和。

在示例m4中,示例m1-m3中的任何一个的主题可以可选地包括其中分类是基于与子树校验和中的校验和匹配的校验和树的子树。

在示例m5中,示例m1-m4中的任何一个的主题可以可选地包括其中向分类分配百分比。

在示例m6中,示例m1-m5中的任何一个的主题可以可选地包括其中校验和树的一个或多个校验和是模糊校验和。

在示例m7中,示例m1-m6中的任何一个的主题可以可选地包括将校验和树串行化为特征向量并且将特征向量传送至网络元件以用于进一步分析。

示例s1是一种用于缓解恶意软件的系统,所述系统包括树生成模块和检测模块。树生成模块可以被配置成接收脚本数据,并且确定针对脚本数据的校验和树。检测模块可以被配置成将校验和树的每一个校验和与一个或多个子树校验和比较,并且向脚本数据分配一个或多个分类。

在示例s2中,示例s1的主题可以可选地包括其中分类是基于与子树校验和中的校验和匹配的校验和树的子树。

示例x1是一种机器可读存储介质,包括实施如在示例m1-m7中的任何一个中的方法或者实现如在示例a1-a8中的任何一个中的装置的机器可读指令。示例y1是一种包括用于执行示例方法m1-m7中的任何一个的部件的装置。在示例y2中,示例y1的主题可以可选地包括用于执行所述方法的部件包括处理器和存储器。在示例y3中,示例y2的主题可以可选地包括存储器包括机器可读指令。

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