本申请要求2014年6月27日提交的题为“Mitigation of Malware(恶意软件抑制)”的美国非临时申请号14/318,406的优先权,所述申请通过引用结合在此。
技术领域
本公开总体上涉及信息安全领域,并且更具体地涉及恶意软件抑制。
背景技术:
网络安全领域在当今社会中已经变得越来越重要。互联网已经使得全世界不同计算机时间能够互连。具体地,互联网提供了用于在经由各种类型的客户端设备连接至不同的计算机网络的不同用户之间交换数据的介质。虽然互联网的使用已经改变了商务和个人通信,它还已被用作工具以由恶意操作者获取对计算机和计算机网络的未授权访问以及用于有意或无意地公开敏感信息。
使主机感染的恶意软件(“malware”)可能能够执行任何数量的恶意行为,如从与主机相关联的商务或个人窃取敏感信息、传播至其他主机、和/或协助分布式拒绝服务攻击、从主机发出垃圾邮件或恶意邮件等。因此,对于保护计算机和计算机网络免受恶意软件的恶意或无意利用,存在着显著的管理性挑战。
附图说明
为了对本公开的更完整的理解以及其特征和优点,参照一下说明书结合其附图,其中,相同的参考号代表相同的零件,在附图中:
图1是根据本公开的实施例的一种用于在网络环境中抑制恶意软件的通信系统的简化框图;
图2是根据本公开的实施例的在网络环境中的检测模块的简化框图;
图3是根据本公开的实施例的在网络环境中的编译器模块的简化框图;
图4是根据本公开的实施例的在网络环境中网络检测模块的简化框图;
图5是根据本公开的实施例的可执行文件布局的简化框图;
图6A和图6B是根据本公开的实施例的校验和树的简化框图;
图7是展示了可以与本公开的实施例相关联的潜在操作的简化流程图;
图8是展示了可以与本公开的实施例相关联的潜在操作的简化流程图;
图9是展示了可以与本公开的实施例相关联的潜在操作的简化流程图;
图10是展示了可以与本公开的实施例相关联的潜在操作的简化流程图;
图11是根据本公开的实施例的文件校验和的简化框图。
图12是展示了根据实施例的采用点对点配置安排的示例计算系统的框图;
图13是与本公开的示例ARM生态系统片上系统(SOC)相关联的简化框图;以及
图14是展示了根据实施例的示例处理器核的框图。
附图中的这些图不必按比例绘制,因为在不背离本公开的范围的情况下其尺寸可以显著地改变。
具体实施方式
图1是一种用于帮助在网络环境中抑制恶意软件的通信系统100的简化框图。通信系统100可以包括电子设备102、安全服务器106、和云服务108。电子设备可以包括检测模块110。安全服务器106可以包括编译器模块112和网络检测模块114。云服务108还可以包括编译器模块112和网络检测模块114。恶意设备104可能试图向电子设备102中引入恶意软件。电子设备102、恶意设备104、安全服务器106、和云服务108可以通过网络170连接。在一个示例中,恶意设备104可以物理地连接至电子设备102(例如,通过通用串行总线(USB)类型连接)。
在示例实施例中,通信系统100可以被配置成用于通过使用机器学习训练生成具有一个或多个校验和树形式的分类智能来对抗来自恶意设备104的已知恶意软件威胁和新恶意软件变体威胁。使用编译器模块112,通信系统100可以确定可以每个文件确定一系列模糊校验和(恶意的和安全的两种)并在完整训练集上跟踪校验和的总流行率。编译器模块112然后可以产生最流行的校验和系列的校验和树。所述校验和树可以由任何附加文件特性增强,如几何特性(文件大小、熵、段数量等)或行为特性(进行解压、调用Winlnet API等)。在运行时间,使用检测模块110,可以对校验和树进行解释,可以在对应的(逻辑的)文件位置或文件子串处计算文件的校验和,并且可以将文件的校验和与校验和树的树节点内存储的校验和进行比较。“逻辑的”文件位置可以例如是可执行文件的入口点区、可执行代码段的终点等。记住通过匹配节点到达的校验和树的任何分类节点或叶子,并且可以为其分配分类。检测模块110可以被配置成用于跨已经出现的个体分类进行统计表决(例如,标识一系列已出现的匹配,如90%概率文件包括Win32.IRCBot以及80%概率文件包括Win32.FakeAlert.B)。
如果整体检测概率低于可配置阈值(例如,低于90%),则检测模块110可以从被扫描的文件计算预定义的更加详细的系列模糊校验和,将所述系列模糊校验和串行化成特征向量,并将所述特征向量传输至安全服务器106或云服务108,其中,在网络检测模块114中可获得更加广泛的分类校验和树并且文件的更加准确的分类决策可以出现。术语“特征向量”包括属性的固定大小列表,如每个文件的校验和。检测模块110、编译器模块112、和网络检测模块114可以跨(需要高扫描性能和合理低内存占用)前置系统或网络扫描器以及云服务分布,所述云服务可以依赖于更加广泛且专用的硬件来主持显著更大的分类数据。将特征向量中的文件数据供应给网络检测模块114允许编译器模块112动态地定期调谐并重新训练检测模块110和网络检测模块114。数据隐私是受支持的,因为仅不可逆的模糊校验和的向量被提交至云服务108和安全服务器106,并且原始文件、其任何子串、其源URL都不需要提交。
图1的元件可以采取任何适当连接(有线或无线)通过一个或多个接口彼此耦合,这为网络通信提供了可行的通路。另外,可以基于具体配置需求将图1的这些元件中的任何一个或多个与架构结合或从中移除。通信系统100可以包括能够进行传输控制协议/互联网协议(TCP/IP)通信以便在网络中传输或接收分组报文的配置。通信系统100还可以在适当情况下并基于具体需要结合用户数据报协议/IP(UDP/IP)或任何其他适当协议运行。
出于展示通信系统100的某些示例技术的目的,重要的是理解可以贯穿网络环境的通信。以下基础信息可以被视为可以从其中正确解释本公开的基础。
对互联网的增加访问已具有增加下述软件程序的触及的非预期效果:在没有用户知会同意的情况下捕捉其私人信息的软件程序,或者在没有用户的了解和知会同意的情况下使计算机恶化的软件程序。如在此所使用的术语“恶意软件”包括任何类型的软件程序,所述软件程序被设计成用于在没有所有者的知会同意的情况下混入、修改、改变、恶化、或损坏计算机系统,不管软件程序的动机如何,并且不管软件程序对所有者的设备、系统、网络或数据造成的结果如何。
各种安全程序可以用于试图检测恶意软件的存在。在一些实例中,安全程序依赖在正被检查的文件中检测签名,从而判定所述文件是否是或包含恶意软件。在一些实例中,安全程序可以使用基于校验和的方法来判定文件是否是恶意软件。然而,恶意软件作者频繁地更改恶意软件文件的部分以便避免被签名或校验和方法检测到。通过在短时间间隔内重新打包或编译可以创造已知恶意软件的新变体,以便规避基于签名或校验和的检测并在创造和分配更新的检测签名或校验和时利用所述延迟。
安全程序的供应商尝试通过使用更加通用的和更加启发式检测来阻碍新的恶意软件变体和样本的数量增加。然而,通用的检测具有需要对一个或在大多数情况下至少两个恶意软件变体进行人工分析以便提供适当检测的缺陷。进一步,启发式检测具有误报的缺陷。
用于抑制恶意软件的通信系统(如图1中描绘的)可以解决这些问题(以及其他)。在图1的通信系统100中,为了对抗来自恶意设备104的恶意软件威胁和新恶意软件变体威胁,系统可以使用模糊校验和的校验和树实现对新恶意软件变体(或“零日(zero-day)”恶意软件变体)的主动防御。可以以通用的方式检测恶意软件家族的经重新编译或重新打包的变体、或重新使用来自之前的恶意软件家族的成分的新恶意软件,从而保护所有用户,包括恶意软件的将在传统反应方法中牺牲掉的最早受害者(或“零号患者”)。
通信系统100可以被配置成通过使用校验和树中的模糊滚动校验和来检测新的或“零日”恶意软件来帮助抑制恶意软件。“模糊(Fuzzy)”意味着校验和不仅与最初用来计算所述校验和的数据的同一部分相匹配,而且在具有低或相对较低编辑距离的接近的相关物上也匹配。“滚动(Rolling)”意味着校验和比较是以合理地位置无关的方式进行的。这样,与之前的方法相比,所述过程可以更加准确并且更加文件格式不可知,在之前的方法中,将代码转换成熵图去除了太多信息和/或需要对恶意软件进行深度反汇编、仿真和理解。恶意软件检测关于各方面(如,检测率vs.误判率vs.内存占用vs.扫描性能比)可以是可扩展的,并且可以通过改变每个文件使用的校验和的数量、滚动校验和比较中所允许的位置偏差、以及每个校验和匹配所分配的百分比或评分(例如,贝叶斯评分或某种其他类似类型的评分)在没有算法改变的情况下在运行时间控制每个方面。恶意软件检测可以包括系列模糊校验和,所述系列模糊校验和标识新未知恶意软件离现有已知恶意软件变体和成分的最接近的关系。结果,即使用新代码对恶意软件变体M1进行了扩展,代码被移除、重新编译或重新打包等,在恶意软件变体M1上计算的校验和在后代M2上仍然趋向于匹配。
对恶意软件的检测可以跨多个系统以分阶段的方式工作,如对本地安装的“前置(On Premise)”网络扫描器进行第一“向下选择”,并且然后在初始匹配时将详细分类卸载至连接的云服务或服务器作为特征向量。由于特征向量的大小固定,检测模块可以相对容易地计算网络检测模块在云服务(或安全服务器)中进行彻底分析所需的特征向量。检测模块可以将特征向量发送至云服务(或安全服务器),并且可以将特征向量中的校验和与位于云服务(或安全服务器)中的更大的校验和树进行比较。这允许系统在不需要牺牲准确度的情况下保持本地设备(例如,电子设备102)上的数据占用较小。可以基于检测恶意软件所需的系列校验和的大小按照期望配置检测率与误报率之比。例如,攻击性检测可以仅需要每个文件4个校验和来匹配,而更加准确的检测可以需要32个校验和来匹配等等。
另外,计算并比较校验和所需的CPU周期数是相对于校验和范围的大小(例如,256字节)的,并且此类范围的数量可以是每个文件固定的(例如,固定为所使用的特征向量的大小)。文件的大小和分类数据库的大小对性能都没有多少影响(除了非常小的I/O相关分数)。这个过程可以提供O(1)个性能特性,而传统的基于完整文件哈希的检测表具有O(n+log m)个性能特性(例如,文件大小*列表大小)。术语“O(1)”意味着性能是固定的,其中,被扫描的文件的大小和校验和树的大小都不影响性能。性能总是或多或少保持相同,不管针对小数据库对小文件进行扫描,还是针对大数据库对大文件进行扫描。术语“O(n+log m)”意味着性能取决于被扫描的文件的大小(n代表文件大小)和树的大小(其为log m)两者。术语“m”代表树中的总节点数,并且查找表性能是m的对数,因为它作为排序树(例如,“红-黑”二叉树)而不是作为顺序列被存储。
同样,系统可以允许传递家族关系列表,每一种关系具有关系可能性。即,系统可以返回列表,如“Win32.IRCBot.D”:90%,“Win32.FakeAlert.B”:80%和“Win32.AutoRun.X”:70%,而不是仅返回单个检测名称。在示例中,为了确定百分比,可以存储校验和树中的每一个匹配节点的概率值。所述概率值可以从校验和在恶意软件中的流行率以及与净训练集相比的良性文件训练集导出。进一步地,可以完全通过数据挖掘和机器学习技术基于具有合理大小(100,000+)的恶意软件和良性文件样本集生成分类数据。因此,不需要手动的规则编写。
通信系统100可以被配置成使用已知恶意和已知良性文件样本两者的训练集来成生对校验和树的分类智能。从每个样本,通信系统100可以确定可以确定一系列模糊校验和并在完整的训练集上跟踪任何校验和的总流行率。使用训练集,通信系统100可以然后产生校验和树,所述校验和树反映那些已经被证明在恶意软件集和良性文件集中最流行的一系列校验和。校验和树中的每一个点可以由校验和在文件中的(逻辑)位置和校验和本身组成。所述位置可以反映数字偏移(例如,从文件开头的+2048字节)、或预定义的格式特定的逻辑偏移或子串(例如,在可执行文件的入口点,在资源段的中间等)。
在运行时间,通信系统100可以被配置成用于解释校验和树,这样使得它从(多个)根节点传下去并且针对校验和树中的每个节点在对应的文件位置计算校验和并将校验和与存储在校验和树节点的校验和进行比较。校验和树的叶节点(或至少大多数叶节点具有类标签或分配的分类)。所分配的分类指定了最可能的恶意软件家族名称(例如,Win32.IRCBot.D)或良性文件名称(例如,Win32.FakeAlert.B,*CLEAN*等)并且可以基于与文件校验和匹配的一个或多个节点以及文件校验和与节点匹配的程度分配匹配可能性(例如,0……100%)。记住通过匹配节点达到的任何分类,并进行跨个体分类的表决从而得出最可能的分类。在一个示例中,使用个体检测的加权组合来创建概率和。更确切地,随机森林(Random Forest)分类器可以跨匹配分类节点与贝叶斯表决一起使用。
当电子设备102接收到文件、程序、或数据时,检测模块110可以被配置成应用文件格式特定的分解,如对压缩内容进行解包(例如,对经打包的可执行文件、SWF视频、ZIP档案、PDF文档流等进行解包)。可以对有待进行校验和的每个数据子串应用规范化。如果所述数据已知是可执行代码,可以对数据进行反汇编(递归遍历),并且可以将每条指令的操作数规范化成通用形式(如仅代表操作数类型,像REGister或MEMory)。可以基于文件类型、文件大小、或用于确定起始位置的某些其他过程来确定反汇编的起始位置。对任意数据,检测模块110可以应用二进制逐位规范化以减小字节值的方差。然后,可以在数据子串的开头从字节位置N至M计算初始校验和C,其中,校验和算法可以在不需要重新计算校验和范围的情况下从C导出具有校验和范围N+x至M+x的校验和。例如,可以使用拉宾-卡普(Rabin-Karp)算法或某种其他算法导出校验和。然后针对(多个)校验和树中的每个节点进行比较,这样使得每个节点定义期望的比较位置。(取决于期望的搜索跨度)在子串的对应滑动窗口上计算(多个)滚动校验和,并在每个字节位置将校验和与校验和树节点中存储的校验和进行比较。例如,所述比较可以开始于32位的对齐偏移并且然后针对每个滚动校验和前进4字节。校验和树中的每个节点的校验和范围可以包括在所述校验和树的对应节点中。
转至图1的基础设施,示出了根据示例实施例的通信系统100。总体上,通信系统100可以以任何网络类型或拓扑实现。网络170代表互连的通信路径中的一系列点或节点用于接收和发射通过通信系统100传播的信息报文。网络170在节点之间提供通信接口,并且可以被配置成任何局域网(LAN)、虚拟局域网(VLAN)、广域网(WAN)、无线局域网(WLAN)、城域网(MAN)、互联网、以太网、虚拟私人网络(VPN)、以及任何其他便于网络环境中通信的适当架构或系统,或其任何适当组合,包括有线和无线通信。
在通信系统100中,可以根据任何适当的通信消息协议发送和接收网络流量(包括分组报文、帧、信号、数据等)。适当的通信消息协议可以包括多层方案如开放系统互联(OSI)模型,或其任何推导或变形(例如,传输控制协议/互联网协议(TCP/IP)、用户数据报协议/IP(UDP/IP))。相应地,在通信系统100中还可以通过蜂窝网络上的无线电信号通信。可以提供合适的接口和基础设施来使能与蜂窝网络的通信。
如在此所使用的术语“报文”指可以在报文交换网络上的源节点与目的节点之间路由的数据单元。报文包括源网络地址和目的网络地址。在TCP/IP消息协议中,这些网络地址可以是互联网协议(IP)地址。如在此所使用的术语“数据”指任何类型的二进制、数字、语音、视频、文本、或脚本数据,或任何类型的源代码或对象代码,或在电子设备和/或网络中可以从一个点传达至另一个点的、任何其他恰当格式的任何其他适当信息。另外,消息、请求、响应、和询问是网络流量的形式,并且因此可以包括报文、帧、信号、数据等。
在示例实施方式中,电子设备102、安全服务器106、和云服务108是网络元件,它们意味着包含网络电器、服务器、路由器、交换机、网关、桥接器、负载均衡器、处理器、模块,或任何其他合适的设备、部件、元件、或可运行以在网络环境中交换信息的对象。网络元件可以包括任何适当的硬件、软件、部件、模块、或便于其运行的对象,以及用于在网络环境中接收、发射、和/或另外传达数据或信息的适当接口。这可以包括允许数据或信息的有效交换的适当的算法和通信协议。云服务108总体上被定义为作为服务在网络(如互联网)上传递的计算资源的使用。通常,在云基础设施中提供了计算、存储、和网络资源,从而有效地将工作负荷从本地网络转移至云网络。
关于与通信系统100相关联的内部结构,电子设备102、安全服务器106、和云服务108中的每一个可以包括存储器元件,所述存储器元件用于存储有待用于在此所描绘的操作的信息。电子设备102、安全服务器106、和云服务108中的每一个可以将信息保持在任何适当的存储器元件(例如,随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、专用集成电路(ASIC)等)、软件、硬件、固件中,或(在合适的情况下并基于具体需要)任何其他适当的部件、设备、元件、或对象中。在此所讨论的存储器项中的任何一个应当被理解为包含在宽泛术语‘存储器元件’内。而且,可以在任何数据库、寄存器、队列、表格、缓存器、控制列表、或其他结构(所有这些可以在任何适当的时间帧被引用)中提供在通信系统100中被使用、跟踪、发送、或接收的信息。任何此类存储选项也可以包括在如在此所使用的宽泛术语‘存储器元件’内。
在某些示例实现方式中,在此所描绘的功能可以通过被逻辑编码在一种或多种有形介质(例如,ASIC中所设置的嵌入式逻辑、数字信号处理器(DSP)指令、有待由处理器执行的软件(潜在地包括对象代码和源代码)、或其他类似机器等)中来实现,所述一种或多种有形介质可以包括非瞬态计算机可读介质。在这些实例的一部分中,存储器元件可以存储用于在此所描述的操作的数据。这包括能够存储被执行以实施在此所描述的活动的软件、逻辑、代码、或处理器指令的存储器元件。
在示例实现方式中,通信系统100的网络元件,如电子设备102、安全服务器106、和/或云服务108,可以包括软件模块(例如,检测模块110、编译器模块112、和/或网络检测模块114)用于实现或用于培养在此所描绘的操作。这些模块可以通过任何适当的方式合适地组合,这可以基于具体配置和/或规定需要。在示例实施例中,此类操作可以由硬件实施、在这些元件之外实现、或包括在某个其他网络设备中以用于实现预期的功能。此外,这些模块可以被实现为软件、硬件、固件、或其任何适当组合。这些元件还可以包括软件(或往复式软件),所述软件可以与其他网络元件协调以便实现如在此所描绘的操作。
另外,电子设备102、恶意设备104、安全服务器106、以及云服务108中的每一个可以包括处理器,所述处理器可以执行软件或算法来执行如在此所讨论的活动。处理器可以执行与数据相关联的任何类型的指令,从而实现在此详述的操作。在一个示例中,处理器可以将原件或物品(例如数据)从一个状态或事物转换至另一种状态或事物。在另一示例中,在此所描绘的活动可以用固定逻辑或可编程逻辑(例如,由处理器执行的软件/计算机指令)实现,并且在此所标识的元件可以是某种类型的可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(FPGA)、EPROM、EEPROM)或包括数字逻辑的ASIC、软件、代码、电子指令、或其任何适当组合。在此所描述的潜在处理元件、模块、和机器中的任何一个可以被理解为包含在宽泛术语‘处理器’中。
电子设备102可以是网络元件,并且包括例如台式计算机、膝上计算机、移动设备、私人数字助手、智能电话、平板、或其他类似设备。安全服务器106可以是网络元件(如服务器或虚拟服务器)并且可以与客户端、顾客、端点、或期望通过某个网络(例如,网络170)在通信系统100中发起通信的末端用户相关联。术语‘服务器’包括用于代表通信系统100内的客户端服务客户端的请求和/或执行某种计算任务的设备。尽管检测模块110、编译器模块112和网络检测模块114在图1中被展示为分离的模块,这仅仅是出于说明性目的。在任何适当的配置中,这些模块可以是组合的或分离的。而且,这些模块可以与云服务108或安全服务器106或电子设备102可访问的另一网络整合或分布于其中。
转至图2,图2展示了检测模块110的一个示例。检测模块110可以包括校验和模块116、树模块118、分类模块120、配置模块122、和更新模块124。校验和模块116可以被配置成校验和计算器和比较器。校验和模块116可以使用一系列模糊校验和来标识良性文件、现有恶意软件、和新的未知恶意软件。即使用新代码对变体恶意软件进行了扩展,代码被移除、重新编译或重新打包,在恶意软件变体M1上计算的校验和在后代M2上仍然趋向于匹配。
树模块118可以被配置成校验和树数据库和解译器。树模块118可以反映已经被证明在良性文件和已知的恶意软件集中最流行的一系列校验和。每个校验和树中的每个节点由校验和在文件或子串中的(逻辑)位置以及校验和本身组成。所述位置可以反映数字偏移(例如,从文件开头的+2048字节)、或预定义的格式特定的逻辑偏移(例如,在可执行文件的入口点,在资源段的中间等)。
分类模块120可以被配置成分类队列和表决器。分类模块120可以创建家族关系列表,每一种关系具有关系可能性。即,分类模块120可以返回列表,如Win32.IRCBot.D:90%(后门木马)、Win32.FakeAlert.B:80%(给出错误或假警告的良性文件)、和Win32.AutoRun.X:70%(木马),而不是仅返回单个检测名称(例如,Win32.IRCBot.D)。可以完全通过数据挖掘和机器学习技术使用现有的已知恶意软件和良性文件变体和部件生成分类数据。现有的已知恶意软件和良性文件变体和部件可以是具有合理大小(100,000+)的恶意软件和良性文件样本集。不需要手动的规则编写。
配置模块122可以被配置成用于按照期望改变检测率与误报率之间的比例。所述比例可以基于文件上所使用的一系列校验和的大小。例如,攻击性检测可以仅需要每个文件4个校验和来匹配,而更加准确的检测可以需要32个校验和来匹配等等。计算并比较校验和所需的CPU周期数是相对于校验和范围的大小(例如,256字节)。此类范围的数量可以是每个文件固定的(例如,固定为特征向量的大小)。文件的大小和分类数据库的大小都不会影响性能,除了非常小的I/O相关分数。这提供了一个优点:可以提供O(1)性能特性,而传统的基于完整文件哈希的检测表具有O(n+log m)个性能特性(文件大小*列表大小)。
更新模块124可以被配置成用于接收所生成的校验和树的更新版本,以便存储在树模块118中。安全服务器106或云服务可以是可运行的以便以一定的间隔或当新校验和树生成时用新校验和树来更新树模块118。在各实施例中,更新模块124用来自安全服务器106中或云服务108中的编译器模块112的新校验和树控制树模块118的更新。
转至图3,图3展示了编译器模块112的一个示例。编译器模块112可以包括跟踪模块126和树生成模块128。跟踪模块126可以被配置成用于跟踪已知的和新的恶意软件以及良性文件。跟踪模块126还可以向树生成模块128发送请求以针对新的恶意软件和新的良性文件生成新的校验和树。
树生成模块128可以被配置成使用已知恶意和已知良性文件样本两者的训练集来生成校验和树。从每个文件样本或子串,树生成模块128可以确定一系列模糊校验和并在完整的训练集上跟踪任何校验和的流行率。使用这一系模糊校验和,树生成模块128可以创建并产生校验和树,所述校验和树可以被配置成反映那些已经被证明在恶意软件和良性文件集中最流行的一系列校验和。校验和树中的每个节点可以由校验和在文件中的(逻辑)位置和校验和本身组成。所述校验和的位置可以反映数字偏移(例如,从文件开头的+2048字节)、或预定义的格式特定的逻辑偏移(例如,在可执行文件的入口点,在资源段的中间等)。
转至图4,图4展示了网络检测模块114的一个示例。网络检测模块114可以包括网络树模块130和网络分类模块132。网络树模块130可以被配置成用于反映比树模块118中的校验和树更加广泛的校验和树。网络树模块130中的校验和树可以包括已经被证明在恶意软件或良性文件集中最流行的扩展系列的校验和。校验和树中的每节个点由校验和在文件中的(逻辑)位置和校验和本身组成。所述校验和的位置可以反映数字偏移(例如,从文件开头的+2048字节)、或预定义的格式特定的逻辑偏移(例如,在可执行文件的入口点,在资源段的中间等)。网络分类模块132可以被配置成允许传递家族关系列表,每一种关系具有关系可能性。即,网络分类模块可以返回列表(如Win32.IRCBot.D:90%,Win32.FakeAlert.B:80%和Win32.AutoRun.X:70%),而不是仅返回单个检测名称(如Win32.IRCBot.D)。可以完全通过数据挖掘和机器学习技术使用现有的已知恶意软件和良性文件变体和部件生成分类数据。已知恶意软件和良性文件变体和部件可以是具有合理大小(100,000+)的恶意软件和良性文件样本集。不需要手动的规则编写。
转至图5,图5展示了可执行文件136的一种可能布局的图134。在实施例中,可执行文件136是包括(或是)恶意软件的文件。在各实施例中,可执行文件136是以下文件:所述文件将具有针对所述文件生成的校验和,从而使得可以将文件136的校验与校验和树中的节点进行比较。在各实施例中,文件136包括代码段138、数据段156、和资源段162。在各实施例中,代码段138包括原始数据段140和填充152a。原始数据段140可以包括导入地址表142、调试目录144、机器代码146、导入目录148、和导入名称表150。在各实施例中,数据段156可以包括经初始化数据158和填充152b。在各实施例中,资源段162可以包括资源目录164和填充152c。
取决于生成编译器和链接器,复杂水平贯穿文件136的不同部分可以不同。填充152a至152c一般是具有极低信息熵的区,并且可以分别被用作代码段138、数据段156或资源段162的复杂度的度量。导入名称表150和资源目录164通常是具有低或中等信息熵的区。机器代码146通常是具有中等信息熵的区。机器代码146很可能是文件136中包括使文件136为恶意软件的程序编制的点。因此,可以使用来自机器代码146的至少一个子文件,并且可以从机器代码146创建文件136的至少一个校验和。在各实施例中,可以在机器代码146中选择入口点154,作为用于比较文件136的校验和中所使用的块以及用于校验和与校验和树上的节点之间的比较的起始点。
转至图6A,图6A展示了可能的第一校验和树170。在实施例中,第一校验和树170可以包括入口点校验和节点174、第二区域校验和节点176a和176b、第三区域校验和节点178a至178c、以及第一校验和树分类180a至180c。入口点校验和节点174可以是来自文件的区域或区的校验和,所述校验和有待分析以判定文件是否可能是恶意软件或包含恶意软件或者文件是否是良性的。第二区域校验和节点176a和176b可以是来自文件的区域或区的校验和,所述校验和是来自入口点校验和174的区域或区的一定数量的字节。
例如,在第一校验和树170中,图6A展示了第二区域校验和节点176a和176b中的第二区域校验和是来自入口点校验和节点174的一千(1,000)个字节。第三区域校验和节点178a和178b中的第三区域校验和可以是文件的是来自入口点校验和节点174的一定数量的字节的区域或区。例如,图6A展示了第三区域校验和节点178a至178c是来自入口点校验和174的区域或区的一万六千(16,000)个字节。
当来自文件的子串的校验和与第一校验和树170中的节点匹配时,使用第一校验和树分类180a至180c。例如,如果来自所述子串的校验和与初始校验和174匹配,则对所述文件进行校验以判定校验和是否与第二区域校验和176a和176b匹配。如果存在匹配,则对所述文件进行校验以判定校验和是否与第三区域校验和178a至178c匹配。在对校验和树170的节点进行校验之后,然后将来自第一校验和树分类180a至180c的分类分配给所述文件。例如,如果所述文件的区域与初始校验和174、第二区域校验和176a、和第三区域校验和178a匹配,则可以将WIN32.Fake.Alert分类分配给所述文件。在实施例中,可以基于匹配的节点来分析匹配区域,并且可以将WIN32.Fake.Alert分类正确的可能性百分比分配给所述分类。如图6A中所展示的,根据第一校验和树170,具体的文件可以具有百分之八十(80%)的可能性包括WIN32.Fake.Alert(假警告)、80%的可能性包括恶意软件WIN32.IRCBot.X(后门木马)、以及百分之六十(60%)的可能性包括恶意软件WIN32.AutoRun.C(木马)。
转至图6B,图6B展示了可能的第二校验和树172。在实施例中,第二校验和树172可以包括文本段校验和182、文本段终点校验和184a至184c、资源校验和节点186a和186b、以及第二校验和树分类188a至188c。在第二校验和树172中,文本段校验和182可以是文本文件的特定区域的校验和或者可以针对整个文本文件。文本段终点校验和184a至184c可以是针对文本文件的终点的校验和。资源段校验和节点186a和186b可以是针对文件的资源段的校验和。
在示例中,如果所述文件的校验和与文本段校验和182匹配,则对所述文件进行校验以判定校验和是否与文本段终点校验和184a匹配。如果存在匹配,则对所述文件进行校验以判定校验和是否与资源段校验和节点186a或186b匹配。如果存在匹配,则可以将来自第二校验和树分类188a或188b的分类分配给所述文件。同样,如果校验和与文本段终点校验和184b或184c匹配,则可以将来自第二校验和树分类186c的分类分配给所述文件。例如,如果所述文件的区域与文本段校验和182、文本段终点校验和184a、和资源段校验和186a匹配,则可以将WIN32.IRCBot.X分类分配给所述文件。在实施例中,可以对匹配区域进行分析,并且可以将WIN32.IRCBot.X分类正确的可能性百分比分配给所述分类。如图6B中所展示的,根据校验和树172,文件可以具有百分之七十(70%)的可能性包括WIN32.IRCBot.X、60%的可能性包括恶意软件WIN32.Fake.Alert、以及百分之五十五(55%)的可能性包括恶意软件WIN32.Sality.B(木马滴管)。
转至图7,图7是根据实施例展示了流程700的可能操作的示例流程图,所述流程可能与恶意软件抑制相关联。在实施例中,可以由检测模块110执行流程700的一个或多个操作。在702,对文件进行解包或解压缩。在704,确定所述文件的特性。在706,系统判定一个(或任何)校验和树是否与所述文件相关。例如,系统可以判定树模块118中的校验和树中的任何一个是否与所述文件相关。如果没有校验和树与所述文件相关,则过程结束。如果有校验和树与所述文件相关,则如708中使用所述相关的校验和树对所述文件进行分类。例如,可以将所述文件分类成恶意的或良性的。在710,系统判定是否需要发送所述文件以进行进一步分析。如果需要发送所述文件以进行进一步分析,则如712中提取并发送与所述文件相关的数据以进行进一步分析。例如,如果所述文件的分类具有小于90%的可能性使得所述文件是恶意的(或良性的),则可以将特征向量发送至安全服务器106或云服务108以便使用网络检测模块114进行进一步分析。如果不需要发送所述文件以进行进一步分析,则过程结束。例如,如果所述文件的校验和与校验和树中的具有超过90%的可能性使所述文件包括恶意软件的节点相匹配,则极有可能(例如,超过90%的概率)使得所述文件包含恶意软件并且不需要进一步分析。
转至图8,图8是根据实施例展示了流程800的可能操作的示例流程图,所述流程可能与恶意软件抑制相关联。在实施例中,可以由检测模块104或网络检测模块114执行流程800的一个或多个操作。在802,确定在校验和树的根部引用的子串。例如,校验和树的根可以是图6A中所展示的入口点校验和节点174。在804,将所述文件的子串中的数据规范化。在806,确定初始校验和。在808,将校验和与校验和树中的节点进行比较。在810,系统判定校验和是否与校验和树中的节点匹配。
如果校验和与校验和树中的节点匹配,则系统如816中判定所述节点是否具有分类。如果所述节点不具有分类,则系统如820中判定所述节点是否具有任何子节点。如果所述节点具有分类,则如818中对所述分类进行存储,并且系统如820中确定所述节点是否具有任何子节点。如果所述节点具有任何子节点,则系统返回至804并且所述文件的所述子串中的数据被规范化。如果所述节点不具有任何子节点,则系统如822中判定是否已经分析了在校验和树的根处引用的每个文件位置。这保证了与所述文件相关的所有的校验和树被分析。例如,树模块118可以包括与文件相关的2个、5个、10个或任意数量的校验和树。如果已经对在校验和树的根部引用的每个文件位置进行了分析,则如824中将所存储的分类(如果有的话)进行组合。如果未对校验和树根部所引用的每个文件位置进行分析,则系统返回至802并且确定在(新的)校验和树的根部所引用的子串。这允许使用多个校验和树来分析单个文件。
返回至810,如果校验和不与校验和树中的节点匹配,则系统如812中判定是否已经完全校验了所述子串的校验和范围。如果尚未完全校验所述子串的校验和范围,则如814中更新校验和并且如808中将(经更新的)校验和与校验和树中的节点进行比较。这允许系统进行滚动校验和分析。如果尚未完全校验所述文件的校验和范围,则系统如826中判定所述节点是否具有兄弟节点(sibling)。例如,如图6A中所展示的,第二区域校验和节点176a是第二区域校验和节点176b的兄弟节点。在根节点以及校验和树中的任何其他节点下可以具有许多兄弟节点,并且这保证了匹配节点下的每个兄弟节点被分析。如果所述节点具有兄弟节点,则系统如822中判定是否已经分析了在校验和树的根处引用的每个文件位置。
转至图9,图9是根据实施例展示了流程900的可能操作的示例流程图,所述流程可能与恶意软件抑制相关联。在实施例中,可以由检测模块110执行流程900的一个或多个操作。在902,接收文件数据。在904,确定所述文件的特性。在906,使用具有包括模糊校验和的节点的校验和树来分析所述文件。在908,在使用所述校验和树对所述文件进行分析的基础上,创建与所述文件相关的向量。在910,将所述向量发送至将使用所述向量对所述文件进行分类的设备。
转至图10,图10是根据实施例展示了流程1000的可能操作的示例流程图,所述流程可能与恶意软件抑制相关联。在实施例中,可以由编译器模块112执行流程1000的一个或多个操作。在1002,接收文件数据。所述文件数据可以与新的恶意软件或新的良性文件相关。在1004,确定所述文件的特性。在1006,确定所述文件的模糊校验和。在1008,创建与所述文件相关的校验和树。所述校验和树可以是将用于标识所述新的恶意软件或新的良性文件的新的校验和树。在1010,将所述校验和树发送至设备,所述设备将使用所述校验和树分析由所述设备接收到的未知文件。
转至图11,图11是文本文件190、资源文件192、和数据文件194的一系列校验和的示例。例如,子串202a至202c可以是文本文件的一部分,如被进行校验和的Word文档。同样,子产202a至202c可以是整个特征向量或特征向量的一部分。滚动搜索范围204a至204c可以是子串202a至202c的用于与校验和树(例如,校验和树172)进行比较以判定所述文件可能是恶意还是良性文件的区。同样,图10中所展示的这一系列子串可以用于创建校验和以及校验和树的节点。例如,特定类型的恶意软件可能具有已知代码,所述已知代码是在距离所述文件的开头的1,104字节处发现的。滚动搜索范围204c可以代表校验和树上的模糊校验和节点,所述模糊校验和节点用于针对所述已知代码分析文件。
图12展示了根据实施例的采用点对点(PtP)配置安排的计算系统1200。具体地,图12示出了一个系统,其中,处理器、存储器、和输入/输出设备通过多个点对点接口互连。总体上,通信系统100的一个或多个网络元件中可以以与计算系统1200相同或类似的方式被配置。
如图12中所展示的,系统1200可以包括若干处理器,为了清晰仅示出了所述处理器中的两个处理器1270和1280。虽然示出了两个处理器1270和1280,应当理解的是,系统1200的实施例还可以仅包括一个这种处理器。处理器1270和1280可以各自包括一组核(即,处理器核1274A和1274B以及处理器核1284A和1284B)以用于执行程序的多个线程。这些核可以被配置成用于以与上文参照图7至图10所讨论的类似方式执行指令代码。每个处理器1270、1280可以包括至少一个共享缓存器1271、1281。共享缓存器1271、1281可以存储由处理器1270、1280的一个或多个部件(如,处理器核1274和1284)利用的数据(例如,指令)。
处理器1270和1280还可以各自包括集成式存储器控制器逻辑(MC)1272和1282以与存储器元件1232和1234通信。存储器元件1232和/或1234可以存储处理器1270和1280所使用的各种数据。在替代性实施例中,存储器控制器逻辑1272和1282可以将逻辑与处理器1270和1280分离。
处理器1270和1280可以是任何类型的处理器并且可以分别使用点对点接口电路1278和1288经由点对点(PtP)接口1250交换数据。处理器1270和1280可以各自使用点对点接口电路1276、1286、1294、和1298经由单独的点对点接口1252和1254与控制逻辑1290交换数据。控制逻辑1290还可以使用接口电路1292经由高性能图形接口1239与高性能图形电路1238交换数据,所述接口电路可以是PtP接口电路。在替代性实施例中,图12中所展示的PtP链接中的任何一个或全部可以被实现为多点分支总线而不是PtP链路。
控制逻辑1290可以经由接口电路1296与总线1220通信。总线1220可以具有一个或多个通过它进行通信的设备,如总线桥接器1218和I/O设备1216。通过总线1210,总线桥接器1218可以与其他设备进行通信,如键盘/鼠标1212(或其他输入设备,如触摸屏、滚动球等)、通信设备1226(如调制解调器、网络接口设备、或其他类型的可以通过计算机网络1260进行通信的通信设备)、音频I/O设备1214、和/或数据存储设备1228。数据存储设备1228可以存储代码1230,所述代码可以由处理器1270和/或1280执行。在替代性实施例中,总线架构的任何部分可以由一个或多个PtP链路实现。
图12中所描绘的计算机系统是可以用于实现在此所讨论的各实施例的计算系统的实施例的示意性展示。将理解的是,图12中所描绘的系统的各个部件可以结合在片上系统(SoC)架构中或任何其他合适的配置中。例如,在此所公开的实施例可以并入包括移动设备(如智能蜂窝电话、平板计算机、个人数字助手、可移动游戏设备等)的系统中。将理解的是,在至少一些实施例中,这些移动设备可以配备有SoC架构。
转至图13,图13是与本公开的示例ARM生态系统SOC 1300相关联的简化框图。本公开的至少一个示例实现方式可以包括在此所讨论的恶意软件抑制特征以及ARM部件。例如,图13的示例可以与任何ARM核(例如,A-9、A-15等)相关联。进一步,所述架构可以是以下各项的一部分:任何类型的平板、智能电话(包括安卓(AndroidTM)电话、iPhoneTM)、iPadTM、谷歌(Google)NexusTM、微软SurfaceTM、个人计算机、服务器、视频处理部件、膝上计算机(包括任何类型的笔记本)、超级笔记本(UltrabookTM)系统、任何类型的触摸使能的输入设备等。
在图13的这个示例中,ARM生态系统SOC 1300可以包括多个核1306-1307、L2缓存器控制装置1308、总线接口单元1309、L2缓存器1310、图形处理单元(GPU)1315、互连1302、视频编解码器1320、以及液晶显示器(LCD)I/F 1325,它可以与耦合至LCD的移动工业处理器接口(MIPI)/高清晰多媒体接口(HDMI)链路相关联。
ARM生态系统SOC 1300还可以包括用户标识模块(SIM)I/F 1330、引导只读存储器(ROM)1335、同步动态随机存取存储器(SDRAM)控制器1340、闪存控制器1345、串行外围接口(SPI)主设备1350、合适的电源控制装置1355、动态RAM(DRAM)1360、和闪存1365。另外,一个或多个示例实施例包括一种或多种通信能力、接口、和特征,如实例蓝牙(BluetoothTM)1370、3G调制解调器1375、全球定位系统(GPS)1380、以及802.11Wi-Fi 1385。
在运行时,图13的示例可以提供处理能力,伴随着相对低的功耗使能各种类型的计算(例如,移动计算、高端数字家居、服务器、无线基础设施等)。另外,这种架构可以使能任何数量的软件应用(例如,安卓(AndroidTM)、AdobeTMFlashTMPlayer、Java平台标准版本(Java SE)、JavaFX、Linux、微软Windows Embedded、塞班(Symbian)和乌班图(Ubuntu)等)。在至少一个示例实施例中,核处理器可以用耦合的低延迟2级缓存器实现无序超标量流水线。
图14展示了根据实施例的处理器核1400。处理器核1400可以是针对任何类型处理器的核,如微型处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、或用于执行代码的其他设备。虽然图14中只展示了一个处理器核1400,处理器可以可替代地包括不止一个图14中所展示的处理器核1400。例如,处理器核1400代表参照图12的处理器1270和1280所示和所描述的处理器核1274a、1274b、1284a、和1284b的一个示例实施例。处理器核1400可以是单线程核,或者针对至少一个实施例,处理器核1400可以是多线程,因为它可以包括每个核不止一个硬件线程上下文(或“逻辑处理器”)。
图14还展示了根据实施例的耦合至处理器核1400的存储器1402。存储器1402可以是本领域技术人员已知或另外可用的广泛存储器(包括存储器层次结构中的各个层)中的任何一种。存储器1402可以包括有待由处理器核1400执行的代码1404,所述代码可以是一条或多条指令。处理器核1400可以遵守代码1404所指示的程序指令序列。每条指令进入前端逻辑1406并由一个或多个解码器1408处理。所述解码器可以生成微操作作为其输出,如预定格式的固定宽度微输出,或者可以生成其他指令、微指令、或反映原始代码指令的控制信号。前端逻辑1406还包括寄存器重命名逻辑1410和调度逻辑1412,后者一般给资源和队列分配对应于用于执行的指令的操作。
处理器核1400还可以包括执行逻辑1414,所述执行逻辑具有一组执行单元1416-1至1416-N。一些实施例可以包括专用于特定功能或功能集的多个执行单元。其他实施例可以包括仅一个执行单元、或可以执行特定功能的一个执行单元。执行逻辑1414执行由代码指令所指定的操作。
在完成了所述指令所指定的操作的执行之后,后端逻辑1418可以撤退代码1404的指令。在一个实施例中,处理器核1400允许指令的无序执行但需要指令的有序引退。引退逻辑1420可以采取各种已知形式(例如,重排缓存器等)。以这种方式,在代码1404执行的过程中处理器核1400被变换,至少依据解码器所生成的输出、寄存器重命名逻辑1410所利用的硬件寄存器和表格、以及经执行逻辑1414修改的任何寄存器(未示出)。
虽然图14中未加以展示,处理器在具有处理器核1400的芯片上可以包括其他元件,在此参照图12示出并描述了其中的至少一部分。例如,如图121中所示,处理器可以包括存储器控制逻辑连同处理器核1400一起。所述处理器可以包括I/O控制逻辑和/或可以包括与存储器控制逻辑整合的I/O控制逻辑。
注意,就在此所提供的示例,可以按照两个、三个、或更多个网络元件对相互作用进行描述。然而,这样做只是出于清楚和示例的目的。在某些情况下,通过仅参照有限数量的网络元件,可以更容易描述给定流程组的功能中的一个或多个。应当理解的是,通信系统100及其教导是随时可扩展的并且可以容纳大量部件以及更加复杂/精细的安排和配置。相应地,所提供的示例不应该限制范围或禁止如潜在应用于无数其他架构中的通信系统100的广泛教导。
同样重要的是注意,前述流程图(即,图7至图9)中的操作仅展示了可以由通信系统100或在其内部执行的可能的相关场景和图案中的一部分。在适当的情况下可以删除或移除这些操作中的一部分,或者在不背离本公开范围的情况下可以显著地修改或改变这些操作。另外,多个这种操作被描述为与一个或多个附加操作共同或并行执行。然而,这些操作的定时可以显著地改变。已经出于示例和讨论的目的提供了前述操作流程。通信系统100提供了的本质灵活性,因为在不背离本公开的教导的情况下,可以提供任何适当的安排、时间顺序、配置、和定时机制。
虽然已经参照了具体安排和配置对本实施了进行了详细描述,在不背离本公开范围的情况下,这些示例配置和安排可以显著地改变。而且,可以基于具体需要和实现方式组合、分离、除去、或添加某些部件。另外,虽然参照便于通信过程的具体元件和操作对通信系统100进行了展示,可以用任何实现通信系统100的期望功能的合适架构、协议、和/或进程来替代这些元件和操作。
许多其他的改变、替代、变更、改变、和修改对本领域技术人员来说是确定的,并且旨在本公开包含了落在所附权利要求书的范围内的所有的改变、替代、变更、改变、和修改。为了帮助美国专利和商标局(USPTO)以及另外在此申请上发布的任何专利的任何阅读者解释在此所附权利要求书,申请人希望注意的是,申请人:(a)不旨在所附权利要求书中的任何一项当出现于其提交日期时调用美国专利法第35章第112节第(6)段,除非具体权利要求中特别适用了单词“用于……的装置”或“用于……的步骤”;并且(b)不旨在借助说明书中的任何声明以任何所附权利要求书中未另外反应的方式限制本公开。
其他说明和示例
示例C1是至少一种机器可读存储介质,具有一条或多条指令,所述指令当被执行时:确定文件的一系列校验和;将所述一系列校验和与校验和树进行比较,其中,所述校验和树包括多个节点,所述多个节点各自包括已知恶意软件的模糊校验和;并向所述文件分配一个或多个分类,其中,所述一个或多个分类中的每个分类基于所述校验和树中与所述一系列校验和中的校验和相匹配的每一个节点。
在示例C2中,如示例C1所述的主题可以可选地包括:其中,为所述一个或多个分类中的每一个分类分配百分比。
在示例C3中,如示例C1至C2中任一项所述的主题可以可选地包括:其中,所述多个节点中的每一个节点还包括已知良性文件的模糊校验和。
在示例C4中,如示例C1至C3中任一项所述的主题可以可选地包括:其中,所述指令当被所述处理器执行时进一步使所述处理器:将所述一系列校验和与多个校验和树进行比较。
在示例C5中,如示例C1至C4中任一项所述的主题可以可选地包括:其中,所述指令当被所述处理器执行时进一步使所述处理器:确定所述文件的一个或多个特性;以及基于所述文件的所述一个或多个特性,确定至少一个校验和树以与所述文件进行比较。
在示例C6中,如示例C1至C5中任一项所述的主题可以可选地包括:其中,所述指令当被所述处理器执行时进一步使所述处理器:基于分配给所述文件的所述一个或多个分类来判定所述文件是否是恶意软件。
在示例C7中,如示例C1至C6中任一项所述的主题可以可选地包括:其中,所述指令当被所述处理器执行时进一步使所述处理器:为所述一个或多个分类中的每个分类分配百分比;以及如果每个分配的百分比低于阈值,则将所述文件发送至云服务以进行进一步分析。
在示例C8中,如示例C1至C7中任一项所述的主题可以可选地包括:其中,所述指令当被所述处理器执行时进一步使所述处理器:接收有待用于与所述文件校验和进行比较的新校验和树。
在示例A1中,一种装置可以包括:校验和模块,所述校验和模块被配置成用于确定文件的一系列校验和并将所述一系列校验和与校验和树进行比较,其中,所述校验和树包括多个节点,所述多个节点各自包括已知恶意软件的模糊校验和;以及分类模块,所述分类模块被配置成用于向所述文件分配一个或多个分类,其中,所述一个或多个分类中的每一个分类基于所述校验和树中与所述一系列校验和中的校验和匹配的每一个节点。
在示例A2中,如示例A1所述的主题可以可选地包括:其中,为所述一个或多个分类中的每一个分类分配百分比。
在示例A3中,如示例A1至A2中任一项所述的主题可以可选地包括:其中,所述多个节点中的每一个节点还包括已知良性文件的模糊校验和。
在示例A4中,如示例A1至A3中任一项所述的主题可以可选地包括:树模块,所述树模块包括多个校验和树,其中,所述校验和模块可以将所述一系列校验和与多个校验和树进行比较。
在示例A5中,如示例A1至A4中任一项所述的主题可以可选地包括:其中,所述校验和模块可以进一步被配置成用于:确定所述文件的一个或多个特性;以及基于所述文件的所述一个或多个特性,确定至少一个校验和树以与所述文件进行比较。
在示例A6中,如示例A1至A5中任一项所述的主题可以可选地包括:其中,所述分类模块进一步被配置成用于基于分配给所述文件的所述一个或多个分类来判定所述文件是否是恶意软件。
在示例A7中,如示例A1至A6中任一项所述的主题可以可选地包括:其中,所述分类模块进一步被配置成用于为所述一个或多个分类中的每一个分类分配百分比。
在示例A8中,如示例A1至A7中任一项所述的主题可以可选地包括:更新模块,所述更新模块用于接收有待用于与所述文件校验和进行比较的新校验和树。
示例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所述的主题可以可选地包括所述存储器,所述存储器包括机器可读指令。