CN110023938B - 利用函数长度统计确定文件相似度的***和方法 - Google Patents
利用函数长度统计确定文件相似度的***和方法 Download PDFInfo
- Publication number
- CN110023938B CN110023938B CN201780072239.1A CN201780072239A CN110023938B CN 110023938 B CN110023938 B CN 110023938B CN 201780072239 A CN201780072239 A CN 201780072239A CN 110023938 B CN110023938 B CN 110023938B
- Authority
- CN
- China
- Prior art keywords
- function
- file
- determining
- processor
- length
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2115—Third party
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/145—Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
可以使用可执行文件或数据对象中的函数的函数长度来确定可执行文件或可执行对象的文件相似性向量。可以扫描可执行文件或数据对象,并且可以确定函数的长度。可以使用诸如函数数量、最大函数长度、最小函数长度、以及平均函数长度的各种统计来创建文件相似性向量。文件相似性向量可用于比较文件。
Description
本申请要求2016年9月30日提交的题为“Function Length Statistics toDetermine File Similarity”的美国临时专利申请序列号62/402,658的优先权,其全部公开内容通过引用结合于此。
技术领域
本发明一般涉及反恶意软件(anti-malware)技术,更具体地,本发明涉及通过利用函数长度统计确定文件相似性来检测恶意软件。
背景技术
恶意软件(为“恶意的软件”的缩写)是用于在用户不知情或未经用户同意的情况下破坏计算机操作、损害数据、收集敏感信息、或获得访问私人计算机***权限的软件。此类恶意软件的示例包括软件病毒、特洛伊木马、rootkit、勒索软件等。恶意软件开发者使用的一种常见机制是将恶意软件嵌入到被做成用户看似可取的文件中,或者用户访问网站时下载并执行的文件中。例如,恶意软件可以嵌入到看似合法且有用的软件应用程序中。用户下载文件,当文件被打开时,文件中的恶意软件被执行。包含恶意软件的文件可称为恶意文件。
面对增长的恶意软件的威胁,开发了许多反恶意软件软件包以检测用户文件中的恶意软件。在检测时,反恶意软件软件可以通知用户恶意软件的存在,并且可以自动移除或隔离恶意软件。然而,用于检测恶意软件的传统***需要大量的时间消耗来分析目标文件或数据。在使用反汇编数据库时,可以减少程序分析负载,因为可以将文件函数与其他文件函数进行比较,但是其在检测混淆的(obfuscated)恶意软件时可能无效。处于这些原因,存在对用于检测恶意软件的改进方法的需求,特别是在不降低***性能的情况下。
发明内容
本发明一般涉及用于使用文件相似性向量检测恶意软件的***和方法。为了检测恶意软件,可以使用可执行文件或数据对象中的函数的函数长度来确定可执行文件或可执行对象。
本发明的一个实施例涉及一种方法,其中程序在计算机***上执行,该计算机***可以包括单个计算设备或通过网络连接的多个计算设备。该方法可以包括接收用于运行操作***(OS)的可执行文件的步骤,其中可执行文件格式是可变的,不限于,计算设备的OS。例如,可执行文件可以是在Microsoft Windows***中使用的PE文件、在Linux***中使用的ELF文件、在UNIX***中使用的ELF文件,或者在MAC OS X中使用的Mach-O文件。可执行文件可以包括标头(header)、代码和数据段。***可以扫描或搜索可执行文件,并且代码段中的值可以被引用。在PE文件***的情况下,如果扫描的值是操作码,则***解析目标地址。然而,如果扫描的值不是操作码,则***可以使用来自***的存储器单元的虚拟地址。可以使用各种统计,诸如函数数量、最大函数长度、最小函数长度、以及平均函数长度来创建文件相似性向量。可以将文件的文件相似性向量与已知包含恶意软件的其他文件的文件相似性向量进行比较。***可以确定目标地址是否用于有效函数。例如,如果用预定阈值将***设置为“six:6”,则***可以通过第六指令继续反汇编指令,直到达到函数结束为止。因此,可以确定检测到的函数的长度或文件的各种统计学数据。
本发明的另一个实施例涉及一种非暂时性存储介质,其上存储有程序,该程序被配置用于分析计算设备上的可执行程序是否包含恶意软件。计算机可读存储介质上的程序适用于搜索可执行文件的代码段以获取函数引用。随后,计算程序可以确定与一个或多个函数的集合相关联的一个或多个统计,以及函数的长度。统计可以合并到文件相似性向量中。例如,如果文件相似性向量可以包括平均函数值,则可以确定统计平均函数长度值。基于文件比较,可以提供文件相似性向量,以用于有效的恶意软件检测。
其他目的和特征将部分是显而易见的,并部分地在下文中指出。
附图说明
为了更好地理解本公开,可以参考附图,其中:
图1是示出根据本发明的一个实施例的、用于确定文件相似性向量的方法的流程图。
图2是示出根据本发明的一个实施例的、用于确定文件相似性指纹的方法的流程图。
图3A是示出按其在可执行文件中的出现顺序的函数的函数长度的示例计数的图。
图3B是示出图3A的可执行文件中的相同函数的函数长度的示例计数的图,其中函数按函数长度排序。
图4是示出根据本发明的一个实施例的、利用文件相似性向量的示例***的框图。
图5是根据本发明的一个实施例的、可以在其上执行***和方法的实施例的计算机***的框图。
具体实施方式
在本发明的示例实施例的以下详细描述中,参考形成本文一部分的附图,并且其中通过图示的方式示出了可以实践本发明的特定示例实施例。充分详细地描述了这些实施例以使本领域技术人员能够实践本发明的主题,并且应理解,可以利用其他实施例,并且在不脱离本发明的主题的范围的情况下,可以做出逻辑、机械、电气以及其他的改变。
以下详细描述的一些部分是按照对计算机存储器内的数据位的操作的算法和符号表示来呈现的。这些算法描述和表示是数据处理领域的技术人员用来将他们工作的实质最有效地传达给本领域其他技术人员的方式。这里的算法通常被认为是导致期望结果的自洽的步骤序列。所述步骤是需要对物理量进行物理操纵的步骤。通常(尽管不是必须的),这些量采用能够被存储、传输、组合、比较以及以其他方式操纵的电信号或磁信号的形式。有时,主要出于常用的原因,已经证明将这些信号称为比特、值、元素、符号、字符、术语、数字等是方便的。然而,应记住,所有这些和类似术语都与适当的物理量相关联,并且仅仅作为应用于这些量的方便标签。除非特别说明,否则诸如“处理”或“计算”或“数算”或“确定”或“显示”等术语是指计算机***或类似的计算设备的动作和处理从以下讨论中是显而易见的,所述计算机***或类似的计算设备将表示为计算机***的寄存器和存储器内的物理(例如,电子)量的数据操纵并变换为类似地表示为计算机***存储器或寄存器或其他此类信息储存、传输或显示设备内的物理量的其他数据。
在附图中,始终使用相同的附图标记来表示出现在多个附图中的相同部件。信号和连接可以用相同的参考数字或标号表示,并且实际含义从其在说明书的上下文中的使用中将是清楚的。通常,本发明的给定项目或部分的附图标记的(多个)第一个数字应对应于首先识别项目或部分的图号。
各种实施例的描述仅被解释为示例,并且未描述本发明主题的每个可能的实例。使用当前或未来技术的组合可以实现许多替代方案,这仍然属于权利要求的范围。因此,以下详细描述不应被视为具有限制意义,并且本发明主题的范围仅由所附权利要求限定。
在本公开的各个方面,为可执行文件或对象生成文件相似性向量。在一些方面,文件相似性向量包括与可执行文件或对象中的函数的方面有关的值。例如,文件相似性向量生成器可以确定可执行文件或对象中的各种函数的长度,并且可以形成包含包括关于函数长度的统计的值的文件相似性向量。
图1是示出根据本发明的、用于创建或确定文件相似性向量的方法的流程图100。在框102处,该方法接收可执行文件作为输入。可执行文件可以是包含可执行指令的任何类型的文件。例如,可执行文件可以是应用程序、目标代码库,或目标代码文件。
在框104处,扫描可执行文件并确定可执行文件中的函数的位置。
在框106处,确定可执行文件中的每个函数的长度。在一些方面,可以将长度确定为函数中的指令数量。在替代方面,可以将长度确定为指令在存储器中占用的字节数。在一些实施例中,可以通过反汇编函数的代码直到遇到返回指令为止来确定函数的长度,如将在下文进一步描述的。在替代实施例中,可移植可执行(PE)文件可以包含关于函数开始和结束点的信息,作为异常处理机制的一部分。在这种情况下,该信息可用于确定函数长度。
在框108处,可以从可执行文件中的函数长度的集合来确定各种统计。在一些方面,统计可以包括以下一个或多个的任意组合:
·可执行文件中的函数数量。
·可执行文件中的函数的最大长度。
·可执行文件中的函数的最小长度。
·文件中的函数的平均长度
·长度的集合的熵值(例如,香农熵值)。
受益于本公开的本领域技术人员将理解,可以包括用于函数的集合的其他统计值。
在框110处,在框108处确定的统计值用于创建可执行文件的文件相似性向量。向量中的值可以是在框108处确定的统计值的有序组合。
图2是示出根据实施例的、用于确定可执行文件250的文件相似性向量的方法的操作的进一步细节的流程图200。在一些方面,可执行文件250可以是在各种版本的MicrosoftWindows家族的操作***上常用的PE文件。然而,本发明主题不限于PE文件,并且在替代方面,可执行文件250可以是在基于Linux或UNIX的***中常用的可执行和可链接格式(ELF)文件,或者在MAC OS X操作***中常用的Mach-O文件。在一些方面,可执行文件250具有标头段、至少一个代码段(有时称为文本段)以及至少一个数据段。
在框202处,定位可执行文件250的代码段。在一些方面,可以使用标头段中的信息来定位代码段的开始。
在框204处,扫描代码段以寻找潜在的函数引用。代码段典型地包括定界的函数块(即,指令序列)。框206至210为判断框,所述判断框尝试确定代码段中的值是否为函数引用。
在框206处,进行检查以确定代码段中当前扫描的值是否为用于调用指令的操作码。例如,对于PE文件,可以进行检查以确定字节值是否为E8h。
如果当前扫描的值是用于调用指令的操作码,则在框208处,解析调用指令的目标地址(即,所调用的函数的开始的地址)。该方法然后进行到框218。
如果当前扫描的值不是用于调用指令的操作码,则在框210处,进行检查以确定代码段中当前扫描的值是否为用于跳转的操作码。例如,对于PE文件,可以进行检查以确定字节值是否为E9h。在某些情况下,恶意软件作者会尝试通过使用跳转指令而非调用指令来混淆恶意软件代码。如果跳转指令是先前已被解析为函数的代码块,则可以忽略跳转。否则,可以将跳转的目标地址视为函数的开头并如下所述进行处理。
如果当前扫描的值是跳转指令的操作码,则在框212处,解析跳转指令的目标地址。该方法然后进行到框218。
如果当前扫描的值不是跳转指令的操作码,则在框214处,进行检查以确定当前扫描的值是否为虚拟地址。例如,对于PE文件,当前扫描的值可以是虚拟地址阵列的一部分。如果当前扫描的值是虚拟地址,则可以进行检查以确定该值是否为代码段的存储器边界中的地址。如果是,则进行进一步检查以确定地址是否解析为已知的函数。如果是,则可以忽略该地址。
如果当前扫描的值不是虚拟地址,则该方法在框216处结束,没有相关数据要处理(即,在扫描的代码段中没有检测到函数)。
如果在框208、210或214处检测到潜在的函数,则执行框218。在框218处,尝试反汇编预定或可配置数量的、始于目标地址的指令,以便确定目标地址是否用于有效函数。在一些方面,尝试反汇编六个指令。
在框220处,进行检查以确定是否可以反汇编预定或可配置数量的指令。如果无法成功反汇编预定或可配置数量的、始于目标地址的指令,则该方法进行到框216,没有相关数据要处理。
如果反汇编成功,则该方法进行到框222以继续反汇编指令,直到指示已到达函数的结尾(即,遇到返回指令)为止。在一些方面,执行该方法的***可能在函数的实际结束前遇到返回指令。例如,返回指令可以是有条件执行的代码分支的一部分。因此,在一些方面,***将检查这种情况并继续反汇编代码,直到到达实际结束函数的返回指令为止。在到达函数的结尾之前成功反汇编的指令数被计数。
在框222处,计数结果(即,检测到的函数的长度)可以被标准化并存储以供稍后分析。在一些方面,标准化可以包括处理重叠的函数块来去除重复,从而获得唯一的函数块的集合。
如上所述,在已确定了可执行文件250中检测到的函数的长度之后,可以从函数长度确定各种统计。统计可以合并到被称为文件相似性向量的数字向量中。如上所述,这些统计可以包括可执行文件中的函数的数量、最大函数长度、最小函数长度、可执行文件250中的函数的平均函数长度,以及函数长度的集合的熵值。在一些方面,文件相似性向量可以包括其他值。例如,文件相似性向量可以包括函数内部的算术、逻辑、代码流等指令的比率、函数中的操作数类型的计数等中的一个或多个。
文件的文件相似性向量可用于将文件与具有文件相似性向量的其他文件进行比较。例如,可以计算两个文件相似性向量之间的欧几里得距离。欧几里得距离可用于确定两个文件是否相似。欧几里得距离可以单独使用,也可以作为对其他方法的扩展来确定文件相似性。
在一些方面,文件相似性向量可以提高计算***上的文件比较的效率。文件相似性向量可以提供有效的机制来比较两个文件,其能够比对文件进行逐字节比较更有效率。此外,在一些实施例中,可以相对于构建用于永久使用的函数库的先前技术改进执行和存储效率。例如,本公开的***和方法存储整体统计。一旦发生这种情况,扫描的所有特定函数均是无关的并且可被丢弃。此外,在一些实施例中可以获得更多信息,因为先前的技术集中于一个或相对较少的函数,这些函数对于比较的文件可能是共同的。相反,上述文件相似性向量将来自可执行文件中所有检测到的函数的信息合并到统计中。
图3A和3B提供了示出应用于示例可执行文件的图1和图2中所示的方法的示例结果的图。图302示出了按其在可执行文件中的出现顺序的函数的函数长度的示例计数。图304示出了在可执行文件中与图302中相同的函数的函数长度的示例计数,然而在这种情况下,所述函数按函数长度排序。在图3A和3B所示的示例中,根据图1和图2的方法执行的分析提供以下结果,所述结果可用于形成文件相似性向量:
·函数数量:42
·最小函数长度:7
·最大函数长度:282
·平均函数长度:73
·熵:3.63
图4是示出根据实施例的、利用文件相似性指纹的示例***400的框图。在一些实施例中,***400包括客户端计算设备402、提交服务器408、内部文件数据库410、主应用服务器416、内部分析服务器424,以及分析员用户界面(U/I)418。
客户端计算设备402可以是台式计算机、膝上型计算机、平板计算机、智能电话、个人数字助理、媒体播放器、机顶盒,或者具有一个或多个用于执行计算机程序的处理器和存储器的任何其他设备。实施例不限于任何特定类型的计算设备。客户端计算设备402可以包括反恶意软件单元406。反恶意软件单元406可以包括软件、固件或可以检测恶意文件的其他可编程逻辑中的一个或多个。另外,反恶意软件单元406可以提交新文件404以进行分析。新文件可以是反恶意软件单元406之前未见过的文件,或者可能仅在少数***上见过的(例如,该文件可能是第一天的恶意软件源)。反恶意软件单元406可以包括脚本标准化器或文件相似性向量生成器420,其生成文件相似性向量,如上面在图1和2中所述。反恶意软件单元406可以生成文件404的文件相似性向量。可以将得到的文件相似性向量与关联于已知恶意软件的文件相似性向量进行比较,以确定文件404是否包含恶意软件,或者怀疑是否包含恶意软件。响应于确定文件包含恶意软件,反恶意软件单元406可以警告用户、隔离文件404,和/或从文件404中移除恶意软件。
响应于确定文件404被怀疑包含恶意软件,客户端计算设备402可以将文件404提交给提交服务器408。提交服务器408可以对新文件404执行预处理并将新文件添加到文件收集412。
主应用服务器416可以基于负载平衡和可用性考虑来选择特定分类服务器(未示出)。主应用服务器416还可以将文件分发到一个或多个内部分析服务器424以进行分析。分析员U/I 418可以为分析员提供用户界面,以访问可用于确定文件是否包含恶意软件的工具。分析员U/I 418可以包括脚本标准化器或文件相似性向量生成器420,其可以用于生成如上所述的文件相似性向量,所述文件相似性向量可以与正在分析的文件相关联。可以将生成的相似性指纹与关联于已知恶意软件的指纹或已知的干净文件进行比较,以帮助确定文件是否包含恶意软件。此外,在一些方面,分析员U/I 418可以接收未知文件(例如,尚未分析的PE文件)。如上所述,分析员U/I 418可以确定未知文件的文件相似性向量。然后,分析员U/I 418可以计算该向量与关联于内部文件数据库410中的文件412的向量的距离,并返回最近的邻文件的文件标识符。例如,可以返回内部文件数据库410中的10个最相似的文件。
内部分析服务器424可以执行对内部数据库410的文件的静态或动态分析。在一些方面,内部分析应用程序可以执行对文件的静态分析。内部分析服务器424可以包括脚本标准化器或文件相似性向量生成器420,其可以用于生成如上所述的文件相似性向量,所述文件相似性向量可以与正在分析的文件相关联。可以将生成的文件相似性向量与关联于已知恶意软件的文件相似性向量或已知的干净文件进行比较,以帮助确定文件是否包含恶意软件。此外,为文件生成的文件相似性向量可以与文件一起存储在内部文件数据库410中。
分析员U/I 418和/或内部分析服务器424可以产生结果集422。例如,结果集422可以包括给定查询的N个最相似的文件以及N。查询可以由分析员经由分析员U/I 418提供,或者可以由内部处理自动机发出。
尽管在恶意软件检测的上下文中已经呈现了以上讨论,但是受益于本公开的本领域技术人员将理解,文件相似性向量可以在其他可执行文件比较或聚类环境中是有用的。在这些环境中使用文件相似性向量在本发明主题的范围内。
图5是计算机***500的示例实施例的框图,在其上可以执行本发明主题的实施例。图5的描述旨在提供合适的计算机硬件以及可以协同实现本发明的合适的计算环境的简要、一般描述。在一些实施例中,在由计算机执行的计算机可执行指令(诸如程序模块)的一般上下文中描述了本发明的主题。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。
如上所述,本文公开的***可以散布在许多物理主机上。因此,图5的许多***和子***可以涉及实现本文公开的发明主题。
此外,本领域技术人员将理解,本发明可以用其他计算机***配置来实践,包括手持设备、多处理器***、基于微处理器或可编程的消费电子产品、智能电话、网络PC、小型计算机、大型计算机等。还可以在分布式计算机环境中实践本发明的实施例,其中任务由通过通信网络链接的I/O远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程存储器储存设备中。
参考图5,示例实施例扩展到示例形式的计算机***500的机器,在该计算机***内可以执行用于使机器执行本文所讨论的任何一种或多种方法的指令。在替代的示例实施例中,机器作为独立设备操作或者可以连接(例如,联网)到其他机器。在联网部署中,机器可以在服务器-客户端网络环境中以服务器或客户端机器的能力操作,或者作为对等(或分布式)网络环境中的对等机器操作。此外,虽然仅示出了单个机器,但术语“机器”还应被视为包括单独或联合执行一组(或多组)指令来执行本文所讨论的任何一种或多种方法的机器任何集合。
示例计算机***500可以包括处理器502(例如,中央处理单元(CPU)、图形处理单元(GPU)或其两者)、主存储器504,以及静态存储器506,其经由总线508彼此通信。计算机***500还可以包括视频显示单元510(例如,液晶显示器(LCD)或阴极射线管(CRT))。在示例实施例中,计算机***500还包括字母数字输入设备512(例如,键盘)、用户界面(U/I)导航设备或光标控制设备514(例如,鼠标)、磁盘驱动单元516、信号生成设备518(例如,扬声器),以及网络接口设备520中的一个或多个。
磁盘驱动器单元516包括机器可读介质522,在其上存储有一个或多个指令524的集合以及由本文所述的任何一个或多个方法或函数实现或使用的数据结构(例如,软件指令)。指令524还可以在由计算机***500执行期间完全或至少部分地驻留在主存储器504内或处理器502内,主存储器504和处理器502也构成机器可读介质。
虽然机器可读介质522在示例实施例中被示为单个介质,但是术语“机器可读介质”可以包括存储一个或多个指令的单个介质或多个媒介(例如,集中式或分布式数据库,或相关联的高速缓存和服务器)。术语“机器可读介质”还应被视为包括任何有形介质,所述有形介质能够存储、编码或承载由机器执行的指令并且使机器执行本发明实施例的任何一个或多个方法,或者能够存储、编码或承载由这些指令使用或与之相关联的数据结构。术语“机器可读存储介质”应相应被视为包括但不限于可以以非暂时方式存储信息(即,能够存储信息的介质)的固态存储器以及光学和磁性介质。机器可读介质的具体示例包括非易失性存储器,所述非易失性存储器包括例如半导体存储器设备(例如,可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM),以及闪存设备);磁盘,诸如内部硬盘和可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM磁盘。
还可以经由网络接口设备520使用信号传输介质以及利用许多已知的传输协议(例如,FTP、HTTP)中的任何一个,在通信网络526上发送或接收指令524。通信网络的示例包括局域网(LAN)、广域网(WAN)、互联网、移动电话网络、普通老式电话(POTS)网络,以及无线数据网络(例如,WiFi和WiMax网络)。术语“机器可读信号介质”应被视为包括能够存储、编码或承载由机器执行的指令的任何暂时无形介质,并且包括数字或模拟通信信号或其他无形介质,以便于这种软件的通信。
尽管已经参考具体示例实施例描述了本发明主题的概述,但是在不脱离本发明实施例的更广泛的精神和范围的情况下,可以对这些实施例进行各种修改和改变。本发明主题的这些实施例可以单独地或共同地被引用至此,术语“发明”仅仅出于方便,而不意图将本申请的范围主动限制于任何单个的发明或发明构思(若事实上多于一个发明被公开)。
从前面的描述中显而易见的是,本发明主题的某些方面不受本文所示的示例的特定细节所限制,因此预期其他修改和应用或其等同物将被本领域技术人员想到。因此,权利要求旨在覆盖不脱离本发明主题的精神和范围的所有这些修改和应用。因此,显而易见的是,本发明的主题仅由所附权利要求及其等同物限制。
提供摘要以符合37 C.F.R.§1.72(b),以允许读者快速探明技术公开的性质和要点。提交摘要一并理解的是,其不会用于限制权利要求的范围。
Claims (19)
1.一种计算机实现的方法,用于通过确定可执行文件的文件相似性向量来检测恶意软件,所述计算机实现的方法包括以下步骤:
由计算机***的处理器确定所述可执行文件中的一个或多个函数的集合;
对于所述一个或多个函数的集合中的每个函数,由所述处理器确定所述函数是否为有效函数,其中,确定所述函数是否为有效函数的步骤包括:
由所述处理器确定是否能够成功反汇编在所述函数的开头处的预定或可配置数量的指令;
响应于确定能够成功反汇编所述预定或可配置数量的指令,由所述处理器确定所述函数是有效的;
对于所述一个或多个函数的集合中的每个有效函数,由所述处理器确定函数的长度;
由所述处理器确定与所述一个或多个函数的集合中的每个有效函数相关联的一个或多个统计,所述一个或多个统计包括至少部分地基于所述函数的长度的统计;以及
由所述处理器至少部分地基于所述一个或多个统计来确定所述文件相似性向量。
2.如权利要求1所述的方法,其中,所述一个或多个统计包括由所述可执行文件中的函数数量、最小函数长度、最大函数长度、平均函数长度、以及熵值组成的组中的至少一个成员。
3.如权利要求1所述的方法,还包括以下步骤:
由所述处理器至少部分地基于指令类型定位所述可执行文件中的所述函数的开头。
4.如权利要求1所述的方法,其中,所述确定所述函数是否为有效函数的步骤还包括:
响应于确定不能成功反汇编所述预定或可配置数量的指令,由所述处理器确定所述函数是无效的。
5.如权利要求1所述的方法,还包括以下步骤:
由所述处理器搜索代码段以获取函数引用。
6.如权利要求5所述的方法,其中,所述代码段包括定界的函数块。
7.如权利要求5所述的方法,其中,所述代码段中的值是用于调用指令的操作码,并且还包括以下步骤:
由所述处理器确定所述调用指令的目标地址是否用于有效函数。
8.如权利要求5所述的方法,其中,所述代码段中的值不是用于调用指令的操作码,并且还包括以下步骤:
由所述处理器确定所述代码段中的值是否为虚拟地址。
9.如权利要求1所述的方法,其中,所述可执行文件包括在MicrosoftWindows***中使用的PE文件、在Linux***中使用的ELF文件、在UNIX***中使用的ELF文件,或者在MAC OSX中使用的Mach-O文件。
10.如权利要求1所述的方法,还包括以下步骤:
由所述处理器将所述可执行文件的文件相似性向量与关联于已知恶意软件的文件相似性向量进行比较,以确定所述可执行文件是否包含恶意软件。
11.如权利要求10所述的方法,还包括以下步骤:
由所述处理器计算所述可执行文件的文件相似性向量与所述恶意软件的文件相似性向量之间的欧几里得距离。
12.一种非暂时性计算机可读存储介质,其上存储有程序,所述程序使计算机执行以下步骤:
确定可执行文件中的一个或多个函数的集合;
对于所述一个或多个函数的集合中的每个函数,确定所述函数是否为有效函数,其中,确定所述函数是否为有效函数的步骤包括:
确定是否能够成功反汇编在所述函数的开头处的预定或可配置数量的指令;
响应于确定能够成功反汇编所述预定或可配置数量的指令,确定所述函数是有效的;
对于所述一个或多个函数的集合中的每个有效函数,确定函数的长度;
确定与所述一个或多个函数的集合中的每个有效函数相关联的一个或多个统计,所述一个或多个统计包括至少部分地基于所述函数的长度的统计;以及
至少部分地基于所述一个或多个统计来确定所述文件相似性向量。
13.如权利要求12所述的非暂时性计算机可读存储介质,其中,所述一个或多个统计包括由所述可执行文件中的函数数量、最小函数长度、最大函数长度、平均函数长度、以及熵值组成的组中的至少一个成员。
14.如权利要求12所述的非暂时性计算机可读存储介质,还包括以下步骤:
至少部分地基于指令类型定位所述可执行文件中的所述函数的开头。
15.如权利要求12所述的非暂时性计算机可读存储介质,其中所述确定所述函数是否为有效函数的步骤还包括:
响应于确定不能成功反汇编所述预定或可配置数量的指令,确定所述函数是无效的。
16.如权利要求12所述的非暂时性计算机可读存储介质,还包括以下步骤:
将所述可执行文件的文件相似性向量与关联于已知恶意软件的文件相似性向量进行比较,以确定所述可执行文件是否包含恶意软件。
17.如权利要求16所述的非暂时性计算机可读存储介质,还包括以下步骤:
计算所述可执行文件的文件相似性向量与所述恶意软件的文件相似性向量之间的欧几里得距离。
18.如权利要求12所述的非暂时性计算机可读存储介质,还包括以下步骤:
搜索代码段以获取函数引用。
19.如权利要求18所述的非暂时性计算机可读存储介质,其中,所述代码段中的值是用于调用指令的操作码,并且还包括以下步骤:
确定所述调用指令的目标地址是否用于有效函数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662402658P | 2016-09-30 | 2016-09-30 | |
US62/402,658 | 2016-09-30 | ||
PCT/EP2017/074858 WO2018060470A1 (en) | 2016-09-30 | 2017-09-29 | System and method utilizing function length statistics to determine file similarity |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110023938A CN110023938A (zh) | 2019-07-16 |
CN110023938B true CN110023938B (zh) | 2023-05-05 |
Family
ID=59997367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780072239.1A Active CN110023938B (zh) | 2016-09-30 | 2017-09-29 | 利用函数长度统计确定文件相似度的***和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10607010B2 (zh) |
CN (1) | CN110023938B (zh) |
WO (1) | WO2018060470A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10909239B2 (en) * | 2017-06-29 | 2021-02-02 | Webroot, Inc. | Advanced file modification heuristics |
CN109117635B (zh) * | 2018-09-06 | 2023-07-04 | 腾讯科技(深圳)有限公司 | 应用程序的病毒检测方法、装置、计算机设备及存储介质 |
US11113397B2 (en) * | 2019-05-16 | 2021-09-07 | Cisco Technology, Inc. | Detection of malicious executable files using hierarchical models |
CN110210224B (zh) * | 2019-05-21 | 2023-01-31 | 暨南大学 | 一种基于描述熵的大数据移动软件相似性智能检测方法 |
CN113901125B (zh) * | 2021-09-17 | 2024-07-16 | 盐城天眼察微科技有限公司 | 数据展示方法和装置、及存储介质和电子设备 |
US20230315454A1 (en) * | 2022-03-30 | 2023-10-05 | Advanced Micro Devices, Inc. | Fusing no-op (nop) instructions |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101137963A (zh) * | 2005-04-07 | 2008-03-05 | 微软公司 | 用于验证可执行文件可信度的***和方法 |
US8826439B1 (en) * | 2011-01-26 | 2014-09-02 | Symantec Corporation | Encoding machine code instructions for static feature based malware clustering |
CN105528365A (zh) * | 2014-09-30 | 2016-04-27 | 国际商业机器公司 | 用于管理可执行文件的方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7802299B2 (en) | 2007-04-09 | 2010-09-21 | Microsoft Corporation | Binary function database system |
US8635694B2 (en) * | 2009-01-10 | 2014-01-21 | Kaspersky Lab Zao | Systems and methods for malware classification |
US8713681B2 (en) | 2009-10-27 | 2014-04-29 | Mandiant, Llc | System and method for detecting executable machine instructions in a data stream |
KR101337874B1 (ko) * | 2010-12-31 | 2014-01-28 | 주식회사 안랩 | 파일 유전자 지도를 이용하여 파일의 악성코드 포함 여부를 판단하는 방법 및 시스템 |
US8745760B2 (en) * | 2012-01-30 | 2014-06-03 | Cisco Technology, Inc. | Malware classification for unknown executable files |
CN103761476B (zh) * | 2013-12-30 | 2016-11-09 | 北京奇虎科技有限公司 | 特征提取的方法及装置 |
-
2017
- 2017-09-29 CN CN201780072239.1A patent/CN110023938B/zh active Active
- 2017-09-29 US US15/720,321 patent/US10607010B2/en active Active
- 2017-09-29 WO PCT/EP2017/074858 patent/WO2018060470A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101137963A (zh) * | 2005-04-07 | 2008-03-05 | 微软公司 | 用于验证可执行文件可信度的***和方法 |
US8826439B1 (en) * | 2011-01-26 | 2014-09-02 | Symantec Corporation | Encoding machine code instructions for static feature based malware clustering |
CN105528365A (zh) * | 2014-09-30 | 2016-04-27 | 国际商业机器公司 | 用于管理可执行文件的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US10607010B2 (en) | 2020-03-31 |
CN110023938A (zh) | 2019-07-16 |
WO2018060470A1 (en) | 2018-04-05 |
US20180096145A1 (en) | 2018-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110023938B (zh) | 利用函数长度统计确定文件相似度的***和方法 | |
US10200391B2 (en) | Detection of malware in derived pattern space | |
US9715589B2 (en) | Operating system consistency and malware protection | |
US10678921B2 (en) | Detecting malware with hash-based fingerprints | |
JP6188704B2 (ja) | ファジーホワイトリスト化アンチマルウェアシステムおよび方法 | |
US7349931B2 (en) | System and method for scanning obfuscated files for pestware | |
US9135443B2 (en) | Identifying malicious threads | |
US11256804B2 (en) | Malware classification of executable files by convolutional networks | |
US10445501B2 (en) | Detecting malicious scripts | |
US10049210B2 (en) | System and method for detection of omnientrant code segments to identify potential malicious code | |
US10255436B2 (en) | Creating rules describing malicious files based on file properties | |
US20180285565A1 (en) | Malware detection in applications based on presence of computer generated strings | |
US10198576B2 (en) | Identification of mislabeled samples via phantom nodes in label propagation | |
US20160196427A1 (en) | System and Method for Detecting Branch Oriented Programming Anomalies | |
US8448243B1 (en) | Systems and methods for detecting unknown malware in an executable file | |
US10505739B2 (en) | Prefix fingerprint | |
US10909243B2 (en) | Normalizing entry point instructions in executable program files | |
US11550910B2 (en) | Creating generic rules in a high dimensional sparse feature space using negative feedback | |
US10686813B2 (en) | Methods of determining a file similarity fingerprint | |
US20240248990A1 (en) | Machine learning-based malware detection for code reflection | |
US20200201864A1 (en) | Updating a toplist for a continuous data stream |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |