恶意软件和恶意应用的检测的制作方法

文档序号:13629224阅读:216来源:国知局
恶意软件和恶意应用的检测的制作方法

本公开一般涉及计算机网络安全领域中的改进的方法、计算机软件和计算机硬件。本公开更具体地涉及可以执行跨网络数据流的分类的改进的基于计算机的网络基础设施设备和计算机实现的技术。



背景技术:

本节所描述的方法可以被采用,但不一定是先前设想或采用的方法。因此,除非本文另外指出,否则本节所描述的方法不是本申请中的权利要求的现有技术,并且不因被包括在本节中而被认为是现有技术。

计算机网络的规模和复杂性不断增长。每天,在单独网络内以及在网络间,有难以估量的信息量被发送。从文本和图片到歌曲和电影,任何类型的信息都可以在计算机网络上被发送。在计算机网络上发送的信息可以采用许多不同的格式,既有加密的也有未加密的。在计算机网络上发送的一些信息可能从恶意程序和/或设备被发送、被发送到恶意程序和/或设备、或与恶意程序和/或设备相关联。如果开发出改进的检测跨计算机网络传播的潜在恶意信息的方法,则网络管理员和用户将受益匪浅。

附图说明

在附图中:

图1示出了根据本发明实施例的系统的框图。

图2示出了根据本发明实施例的方法的流程图。

图3示出了根据本发明实施例的方法的流程图。

图4示出了根据本发明实施例的示例。

图5示出了可以在其上实现本发明的实施例的计算机系统的框图。

具体实施方式

在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明的透彻理解。然而,显而易见的是,可以在没有这些具体细节的情况下实施本发明。在其他情况下,以框图形式示出公知的结构和设备,以避免不必要地模糊本发明。



技术实现要素:

提供了用于通过远程监控和分析数据报的长度和时间来进行应用分类和恶意软件检测的技术。具体地,数据报的长度和时间可以被报告,并且稍后被分析。

在一个实施例中,网络基础设施设备接收包括多个分组的流。网络基础设施设备确定多个分组的第一子集对应于第一数据报,并且多个分组的第二子集对应于第二数据报。网络基础设施设备确定第一数据报和第二数据报的长度以及第一数据报的到达时间与第二数据报的到达时间之间的持续时间值。随后,长度和持续时间值被发送到单独的收集器设备。收集器设备接收长度和持续时间值。可以确定与长度和持续时间值相关联的应用的应用标识符,并且可以做出关于应用是否是恶意应用的确定。

示例系统实现方式

图1图示了根据一些实施例的其中可以实施所描述的技术的示例计算机系统100。系统100是基于计算机的系统。系统100的各种组件至少部分由一个或多个计算设备(例如,执行存储在一个或多个存储器中的存储的程序指令以执行本文描述的功能的一个或多个硬件处理器)处的硬件实现。换言之,在各种实施例中,本文描述的所有功能旨在表示在专用计算机或通用计算机中使用程序执行的操作。系统100仅示出被配置为执行本文描述的程序的组件的许多可能布置中的一种。其他布置可以包括更少或不同的组件,并且组件之间的工作分配可以根据布置而变化。

系统100包括网络105、计算设备110、应用115、网络基础设施设备120、观察模块125、收集器设备130、分析模块135和数据储存库140。网络105可以是使用有线和/或无线通信的任意组合的任意种类的计算机网络,包括但不限于:局域网(lan)、广域网(wan)、互联网、公司网络等等。虽然图1中描绘了单个网络105,但是可以存在任意数量的网络105。通常,网络105允许计算设备110与连接到网络的其他计算设备进行通信。通信可以包括任意类型和/或数量的数据,并且可以使用任意格式或标准进行通信。在一个实施例中,通过网络105发送的信息被加密。或者,通过网络105发送的信息可以不被加密,或者可以是加密的和未加密的某些组合。

在一个实施例中,通过网络105发送的信息采取流的形式。流是从源发送到一个或多个目的地的一系列分组。流可以包括任意数量的分组,并且可以使用任意格式或标准,包括加密的和/或未加密的。流可以来源于例如应用。考虑web浏览器访问web页面。在这个示例中,web浏览器向网站发送第一流,以请求关于用户想查看的web页面的信息。作为响应,从网站向web浏览器发送包括所请求的信息的第二流。

在流内,分组形成可识别的组,称为数据报。具体地,数据报是传输协议携带的单个消息。传输协议的示例包括但不限于:传输控制协议(tcp)和用户数据报协议(udp)。数据报可以跨越任何数量的分组,这取决于正在传送的消息的大小。如下所讨论的,跟踪数据报的长度和时间使得能够得出关于与流相关联的应用或设备的结论。

在一个实施例中,计算设备110是任意计算设备,包括但不限于:工作站、个人计算机、通用计算机、膝上型计算机、互联网应用、手持设备、无线设备、有线设备、便携或移动设备、可穿戴计算机、蜂窝电话或移动电话、便携式数字助理(pda)、智能电话、平板电脑、多处理器系统、基于微处理器的或可编程的消费者电子产品、游戏控制台、机顶盒、网络pc、微型计算机、服务器、机架等等。计算设备110通信地连接到网络105,并且使用网络105以流的形式向接收者发送信息。虽然图1示出了单个计算设备110,但是可以将任何数量的计算设备连接到网络105。计算设备110可以包括应用、软件和/或其他可执行指令以辅助本文描述的实施例的各个方面。具体地,计算设备130包括应用115。

在一个实施例中,应用115是任何应用、软件或表示存储的程序的其他可执行指令。作为示例,应用115可以是web浏览器、视频游戏、生产力软件等。应用115可以使得流被发送到目的地。应用115发送的流内的数据报的细节可以是可识别的,使得给定流的一部分数据报的长度和时间,应用115可以被识别为流的源。应用115可以是恶意程序,例如,恶意软件、病毒等。或者,应用115可以是没有恶意特征的程序。

在一个实施例中,网络基础设施设备120是任意联网组件和/或计算设备,例如,分组数据路由器或分组交换机。其他实施例可以使用终端计算设备(例如,服务器计算机、个人计算机、工作站或其它计算设备)而不是基础设施设备,其在逻辑上代替图1中的网络基础设施设备120。网络基础设施设备120可以包括任何适当的硬件组件,例如,存储器、处理器等。在一个实施例中,网络基础设施设备120可通信地连接到网络105。可选地,网络基础设施设备120可以是网络105内的组件。网络基础设施设备120可以负责流的路由和/或转发。替代地,网络基础设施设备120可以是观察者,并且不负责流的任何路由和/或转发。

在一个实施例中,网络基础设施设备120包括用于执行软件应用和/或模块的程序。具体地,网络基础设施设备120执行观察模块125,其包括以下程序,用于确定流内的数据报、确定数据报的长度、确定数据报之间的持续时间、并且向收集器设备130发送数据报长度和时间数据。在一个实施例中,网络基础设施设备120临时地存储所收集的关于数据报的数据。

在一个实施例中,观察模块125包括用于确定和跟踪关于流中的数据报的数据的程序。流可以具有任意数量的数据报。观察模块125可以跟踪给定流的第一若干个数据报,例如,前5个数据报、前10个数据报或任意其它数量的数据报。或者,可以跟踪流内的所有数据报等。由观察模块125跟踪的数据至少是数据报的长度和数据报的到达之间的持续时间。然而,可以跟踪和/或确定关于数据报的附加数据。即使当分组本身被加密时,观察模块125也能够跟踪和确定流内的数据报。

在一个实施例中,观察模块125包括用于确定数据报的长度的程序。数据报的长度表示为数据报内的应用、或消息、数据的字节数量。或者,长度可以用位或任意其他适当的度量来表示。在一个实施例中,观察模块125通过假定流内的快速连续到达的所有分组对应于单个数据报,来计算数据报的长度。快速到达的分组的长度被求和以生成长度。可选地,从长度中减去传输报头(例如,tcp或udp)的长度,以提供应用数据长度的更准确表示。此外,通过减去传输报头的长度,syn和ack分组被有效地忽略,因为它们的长度将为零。

在一个实施例中,观察模块125通过访问安全套接字层(ssl)/传输层安全(tls)协议中的保护记录长度来确定长度。ssl/tls中的保护记录长度准确地标识了分组内的应用数据的长度,因此与估计报头的长度并且减去从而确定数据报的长度相比可以产生更准确的结果。或者,可以使用任何其他确定长度的方法。

在一个实施例中,观察模块125包括用于确定数据报之间的持续时间值的程序。具体地,每个分组的到达可以被定时。在阈值内到达的分组被认为是相同数据报的一部分。阈值可以被设置为任何适当的量,并且可以基于流的来源、网络拥塞水平或者任何其他因素而变化。例如,针对从互联网到达的流,可以选择5毫秒的阈值。因此,如果分组在先前分组的五毫秒之内从互联网到达,则这些分组被认为是相同数据报的一部分。相反,如果分组在先前分组之后超过五毫秒的时间从互联网到达,则这些分组将被认为是两个单独数据报的一部分。作为另一示例,如果流的来源位于与目的地相同的网络内,则可以选择两毫秒的阈值。在一个实施例中,为了确定数据报之间的持续时间值,观察模块125减去后续数据报的到达时间。

在一个实施例中,观察模块125包括用于使用tcp时间戳来确定数据报之间的持续时间值的程序。当流使用tcp时,可以使用tcp时间戳选项。tcp时间戳是被包括在分组的tcp报头中的编码的时间戳值。当tcp终端确认分组启用了tcp时间戳选项时,将包括时间戳回送应答。因此,当终端接收到先前发送的分组的确认时,终端还接收指示分组何时被发送的时间戳。往返时间是通过从当前时间减去时间戳回送应答值来计算的。观察模块125包括用于在流已经启用tcp时间戳选项时使用tcp时间戳值以确定数据报之间的持续时间值的程序。

在一个实施例中,观察模块125包括用于当tcp会话包括同步通信时,使用tcp确认号码来确定数据报长度的程序。具体地,tcp确认号码由tcp终端发送,以确认从另一终端接收到数据。在流包括tcp分组并且其确认号码等于流中先前分组的确认号码时,该应用数据是先前分组携带的相同tcp数据报的继续,其中该tcp分组包括应用数据。相反地,在流包括tcp分组并且其确认号码大于先前分组的确认号码时,该应用数据就是新的数据报的开始,其中该tcp分组包括应用数据。观察模块125包括用于使用tcp确认号码值来确定分组中的数据如何对应于tcp数据报的程序。

在一个实施例中,观察模块125包括用于向收集器设备130发送数据报长度和时间数据的程序。当向收集器设备130发送数据报长度和时间数据时,不是所有接收到的数据报都可以被报告。例如,如果流包括50个数据报,则观察模块125可以向数据收集器设备130发送关于前七个数据报的数据。或者,观察模块125可以向收集器设备130发送关于前三个非零长度数据报的数据。观察模块125可以连续地向收集器设备130发送数据,或者可以以预定间隔发送数据,或者可以使用任意其他适当的方法。在一个实施例中,观察模块125包括用来对被发送到收集器设备130的任何数据执行运行长度编码的程序。运行长度编码可以用来减小报告给收集器设备130的数据的大小,由此减少必须在网络上发送的数据量,并且减少存储在数据储存库140中的数据量。

在一个实施例中,观察模块125不确定分组和数据报之间的对应关系,观察模块125报告每个分组中携带的应用数据的长度,而不是报告流内的数据报的长度。分析模块135可以以多种方式中的任意一种来处理该信息。其中之一是基于每个分组中携带的应用数据的长度来估计数据报长度。分析模块135可以执行该估计,然后将这些估计用作进一步处理的输入。

长度和时间数据可以以各种电子数字数据格式发送到收集器设备130。在一个实施例中,观察模块125使用的第一格式是应用长度和时间的双向序列(bsalt),其可以被用来传送与双向流有关的数据。具体地,bsalt包括接收长度数组和发送长度数组,后跟随有接收时间数组和发送时间数组。每个数组可以是n个无符号16位整数。无符号16位整数能够表示从0到65,535的整数值。因此,当数据报的长度超过65,535时,数据报长度可能被不准确地报告。

在一个实施例中,由观察模块125使用的第二格式是应用长度和时间的序列(salt)。具体地,salt包括用于表示流中的数据报长度的第一数组和用于表示流的两个连续数据报的观察/到达时间之间的差的第二数组。每个数组可以是n个无符号16位整数。可选地,如果第一数组充满非零值,则可以在流完成之前向收集器设备130发送salt格式的数据。

在一个实施例中,观察模块125包括用于过滤流的程序。具体地,观察模块125可以跟踪某些指定流的数据报长度和时间,而忽略其他流。观察模块125可以使用任意适当的特性来过滤流,例如,互联网协议(ip)地址、端口、协议、流计数、首次看到的日期、最后看到的日期、加密等。此外,观察模块125包括用于在用户可配置的时间向收集器设备130发送数据的程序,例如:每n个流一次、每n次高流量一次、不同终端对一次、总是发送所有流的所有数据、从流中发送不超过x字节的数据、发送统计上低发生流的数据等。

在一个实施例中,收集器设备130是任意计算设备,包括但不限于:工作站、个人计算机、通用计算机、膝上型计算机、互联网应用、手持设备、无线设备、有线设备、便携或移动设备、可穿戴计算机、蜂窝电话或移动电话、便携式数字助理(pda)、智能电话、平板电脑、多处理器系统、基于微处理器的或可编程的消费者电子产品、游戏控制台、机顶盒、网络pc、微型计算机、服务器、机架等等。可以存在任意数量的收集器设备130,从任意数量的源接收关于数据报的信息。收集器装置130使用有线和/或无线连接的任意组合可通信地连接到网络105。在一个实施例中,收集器设备130执行分析模块135,该分析模块135包括用于分析数据报长度和时间信息的程序。或者,单独的一个或多个设备可以执行分析模块135。

在一个实施例中,分析模块135包括用于收集训练数据的程序。具体地,可以通过在沙盒内执行一个或多个应用并且观察由一个或多个应用发起的流,来收集训练数据。在观察应用时,除了数据报的长度和时间之外,还存储应用的名称和与应用相关联的可执行文件的散列。此外,由于应用是已知的,因此可以存储与应用恶意相关的信息。例如,应用可以是“已知的好的”或“已知的不好的”,这意味着应用已经被分别确定为好应用或恶意应用。在一个实施例中,分析模块135包括用于访问文件信誉服务器以确定应用的信誉的程序。信誉可以被包括在针对训练数据收集的数据中,从而使得分类器能够被训练。

在一个实施例中,分析模块135包括用于训练分类器的程序。分类器使用分析模块135收集的训练数据来进行训练。分析模块135可以以任意适当的方式训练分类器。

在一个实施例中,分析模块135包括用于标识与数据报长度和时间信息相关联的应用的程序。分析模块135可以标识应用id,其可以用来确定与流相关联的应用。分析模块135可以标识应用的类型,例如,web浏览器。可选地或另外地,分析模块135可以标识具体应用的名称(例如,internetexplorer),和/或可以标识命名应用的具体版本(例如,internetexplorer5.0)。internetexplorer是华盛顿州雷蒙德市微软公司(themicrosoftcorporation,ofredmond,washington)的商标。分析模块135可以以任意适当的方式确定与数据报长度和时间信息相关联的应用。例如,分析模块135可以使用机器学习技术来标识接收到的数据报长度和时间的集合的最近邻(nearestneighbors),并且使用与最近邻相关联的(一个或多个)标签来做出决定。或者,可以使用任何其他方法。此外,分析模块135可以标识关于除了与流相关联的应用之外的流的其他信息。在一个实施例中,由流使用的协议、与流相关联的设备、或任何其他组件、模块或应用可以由分析模块135标识。

在一个实施例中,分析模块135可以在任何时间点标识与数据报长度和时间信息相关联的应用。例如,一旦接收到数据报信息,就可以存储该信息以供稍后访问。在访问信息之前,受训分类器可以用对恶意软件和其他应用的新知识进行更新。然后,可以获取存储的信息,从而实现在接收到信息时检测未知的恶意软件。

在一个实施例中,分析模块135包括用于发送和/或显示警报信号的程序。分析模块135可以将警报信号发送到任意适当的设备或位置,例如,管理员或用户设备。或者,警报信号可以在与收集器设备130相关联的一个或多个设备上被显示。警报信号可以指示被确定为与接收到的数据报长度和时间信息相关联的应用是恶意的,并且应当采取补救行动。或者,警报信号可以包括如其系统的管理员或用户可配置的任何其他信息。

在一个实施例中,数据储存库140是任意适当的存储设备,例如,一个或多个硬盘驱动器、存储器或被配置为存储数据的任意其他电子数字数据记录设备。虽然数据储存库140在图1中被描绘为单个设备,但是数据储存库140可以跨越位于一个或多个物理位置的多个设备。此外,在一个实施例中,数据储存库140可以位于与收集器设备130相同的(一个或多个)设备上。或者,数据储存库140可位于与收集器设备130分离的(一个或多个)设备上。数据储存库140可以存储由收集器设备130接收的任何信息,例如,数据报长度和时间信息。

示例功能实现方式1

图2示出了用于通过数据报的长度和时间的远程监视和分析来进行应用分类和恶意软件检测的方法的示例流程图。虽然图2中的步骤按顺序被示出,但是图2的步骤可以以任何顺序执行,并且不限于图2所示出的顺序。此外,一些步骤可以是可选的,可以被多次执行,和/或可以由不同的组件执行。本文描述的流程图的所有步骤、操作和功能旨在指示在各种实施例中使用专用计算机或通用计算机中的程序来执行的操作。换言之,本公开中的每个流程图是用于对计算机进行编程以执行所描述的功能的算法的指导、计划或说明。

在步骤205中,接收分组的流。分组的流可以使用任何协议来格式化,并且可以是加密的或未加密的。流可以是任何长度。可选地,可以过滤一些流,从而进一步检查所选择的感兴趣的流。

在步骤210中,确定流的数据报。具体地,步骤210、215和220作为组来执行,并且可以以任何顺序连续执行,从而确定分组的流的数据报长度和时间。在一个实施例中,在接收到分组的流时,实时执行步骤210、215和220。或者,如果例如接收到的分组数据被临时存储在网络基础设施设备或其它合适的设备上,则可以在事实之后执行步骤210、215和220。针对给定的分组的流,可以确定任意数量的数据报。可选地,将标识一定数量的数据报,例如流的前8个非零长度数据报,并忽略其后的数据报。并非流的所有数据报都需要被确定,因为即使仅具有流的开头,也可以对所创建流的应用做出准确的确定。

在步骤215中,确定数据报的长度。长度旨在测量数据报内的应用数据的大小(以字节为单位)。数据报的长度可以以任何适当的方式被确定。在一个实施例中,彼此紧密相邻到达的分组(例如,在五毫秒内)被确定为是相同数据报的一部分。紧密到达的分组的长度(以字节为单位)可以被确定并且求和。为了提高准确度,可以从长度中减去与流所使用的协议相关联的报头和其他格式。在一个实施例中,分组可以具有保护记录长度字段,其可以被访问并且被用来确定数据报内的应用数据的长度。

在步骤220中,确定连续数据报之间的时间。在一个实施例中,观察与数据报相关联的分组的到达时间,并且可以通过从先前数据报减去连续数据报的到达时间来确定连续数据报之间的时间。因此,例如,如果第一数据报在时间“5”处到达,且第二数据报在时间“12”处到达,则第一数据报和第二数据报之间的时间是“7”。

在步骤225中,数据报之间的数据报长度和相应持续时间被发送到收集器设备。可以以任何格式向收集器设备发送数据报长度和时间。例如,可以使用如上所描述的bsalt或salt格式。在一个实施例中,可以向收集器设备连续地发送数据报长度和时间。或者,可以向收集器设备周期性地发送数据报长度和时间,例如,每一分钟一次,每100个流一次等。可以在相关联的流完成之前向收集器设备发送数据报长度和时间。换言之,当网络基础设施设备向收集器设备发送数据报长度和时间信息时,流可能仍然正在到达网络基础设施设备。此外,不需要向收集器设备发送流中的所有数据报。相反,可以向收集器设备发送有限子集,例如具有非零应用数据长度的前6个数据报。可选地,运行长度编码可以被用来减小向收集器设备发送的数据的大小。

示例功能实现2

图3示出了用于通过数据报的长度和时间的远程监视和分析来进行应用分类和恶意软件检测的方法的示例流程图。虽然图3中的步骤按顺序被示出,但是图3的步骤可以以任何顺序被执行,并且不限于图3中所示出的顺序。此外,一些步骤可以是可选的,可以被多次执行,和/或可以由不同的组件执行。

在步骤305中,将流的数据报长度和时间的训练数据,以及与流相关联的应用名称和散列进行收集。训练数据可以以任意适当的方式被收集。在一个实施例中,允许在沙盒中执行应用(包括恶意应用和非恶意应用),并且观察由应用创建的任何流。除了数据报长度和时间信息外,还跟踪应用的名称和创建流的可执行文件的散列。此外,可以收集和/或分配应用类型(例如,web浏览器、电子邮件客户端、消息应用、操作系统进程等)。

在步骤310中,使用训练数据来训练分类器。分类器可以以任何方式进行训练。在一个实施例中,分类器可以存储接收到的所有训练数据,并且使用该存储的数据作为基础以比较任何新近接收到的数据报长度和时间信息。

在步骤315中,接收数据报长度和时间的序列。数据报长度和时间的序列可以以任何方式并且从任何适当的源接收。数据报长度和时间的序列可以以任何格式被接收,例如,bsalt、salt或任何其他格式。

在步骤320中,确定与序列相关联的应用。应用可以以任何方式被确定。在一个实施例中,通过将接收到的数据报长度和时间的序列和与已知应用相关联的数据报长度和时间的数据库进行比较来确定应用。接收到的序列的最近邻可以被确定为与接收到的序列相关联的应用。在一个实施例中,可以确定应用的类型,而不是确定与序列相关联的应用的名称。或者,可以确定更具体的信息,例如应用的名称和应用的版本。可选地,步骤320可以在稍后执行。例如,当接收到数据报长度和时间的序列时,可以存储该序列,并在稍后的日期(例如一周后)进行访问。在存储和访问之间的中间时间内,受训分类器可以用新的信息进行更新,允许检测先前未知的恶意软件。

在步骤325中,做出应用是否为恶意的确定。确定可以以任何适当的方式被做出。在一个实施例中,可以针对文件信誉服务来检查文件类型,以确定创建流的文件是已知恶意的、可能恶意的、中立的、可能好的、或已知好的。如果应用不是恶意的,则方法结束。如果应用是恶意的,则该方法进行到步骤330。

在步骤330中,发送警报信号。警报信号可以被发送到任何适当的设备,例如,管理员或用户计算机、移动设备等。可替换地或另外地,警报信号可以在执行分析的设备或任何其他设备上显示。警报信号可以指示已经检测到可疑恶意软件或其他威胁。警报信号可以指定关于可疑恶意应用的名称、类型、版本、或任何其他已知信息,以及关于流的任何已知信息,例如,源和/或目的地ip地址、日期、时间、位置等。

示例用例

图4示出了用于通过远程监视和分析数据报的长度和时间来进行应用分类和恶意软件检测的示例用例。为了便于理解,图4中所示出的示例被极大地简化了,并且因此,该示例不应当被解释为将本公开限制到以下讨论的细节。此外,为了该示例的目的,如果分组在先前分组的5毫秒内到达,则假定分组是与先前分组是相同数据报的一部分,并且分类器先前已经被训练以标识应用是否为恶意软件。

转到该示例,图4示出了分组到达数据400。分组到达数据400表示关于来自未知应用的流内的分组的到达的信息。分组到达数据400已经由路由器收集。在分组到达数据400中示出了六个分组:分组1具有20字节的长度和距先前分组0毫秒的时间(因为分组1是流的第一分组,所以不存在距先前分组的时间);分组2具有1500字节的长度和距先前分组77毫秒的时间;分组3具有1500字节的长度和距先前分组0毫秒的时间;分组4具有1500字节的长度和距先前分组0毫秒的时间;分组5具有432字节的长度和距先前分组0毫秒的时间;并且分组6具有33字节的长度和距先前分组140毫秒的时间。

这六个分组形成三个不同的数据报:数据报a405对应于分组1、数据报b410对应于分组2-5、和数据报c415对应于分组6。三个数据报由系统根据分组的到达时间来标识,因为分组1与分组2以及分组5与分组6的到达之间有很大延迟,所以路由器可以标识各个数据报。

一旦单独数据报被标识,路由器就准备相关联的数据报长度和时间以供发送给收集器。数据报a405的长度是20字节,因为这是分组1的长度。数据报b410的长度是4932字节,因为这是分组2-5的组合长度。类似地,数据报c415的长度是33字节,因为这是分组6的长度。与数据报a405相关的时间是77毫秒,因为时间指的是数据报a405与数据报b410的到达之间的持续时间。因此,与数据报b410相关联的时间是140毫秒,并且没有与数据报c415相关联的时间,因为在该示例中,数据报c415是最后一个数据报。该数据被编码为salt格式。

salt420示出了发送给收集器的数据报长度和时间。具体地,示出了两个数组,长度数组和时间数组。长度数组包括{20,4932,33},而时间数组包括{77,140,0}。该信息将使收集器能够确定与流相关联的应用。由于分类器先前已经被训练,所以在比较数据425中示出了来自分类器的两个最接近的结果。具体地,比较数据425示出来自web浏览器的典型的salt{20,3000,3000}和{15,15,0},以及来自恶意软件的典型的salt{20,4932,27}和{70,150,0}。因为恶意软件更接近匹配,所以系统确定在该示例中创建流的应用是恶意软件,并且发送示出“恶意软件已经被检测到!”的警报信号430。

硬件概述

根据一个实施例,本文描述的技术由一个或多个专用计算设备来实现。专用计算设备可以是硬连线的以执行该技术,或者可以包括数字电子设备(例如,永久地被编程以执行该技术的一个或多个专用集成电路(asic)或现场可编程门数组(fpga)),或者可以包括被编程为按照固件、存储器、其他存储装置或其组合中的程序指令来执行技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制硬连线逻辑、asic、或fpga与定制程序进行组合以完成该技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持设备、联网设备、或包括硬连线和/或程序逻辑以实现技术的任何其他设备。

例如,图5是示出可以在其上实现本发明的实施例的计算机系统500的框图。计算机系统500包括总线502或用于传送信息的其他通信机制,以及与总线502耦合用于处理信息的硬件处理器504。硬件处理器504可以是例如通用微处理器。

计算机系统500还包括耦合到总线502用于存储将要由处理器504执行的信息和指令的主存储器506,例如,随机存取存储器(ram)或其他动态存储设备。主存储器506还可以用于在执行将要由处理器504执行的指令期间存储临时变量或其他中间信息。这样的指令在存储在处理器504可访问的非临时性存储介质中时,将计算机系统500渲染为被定制为执行指令中指定的操作的专用机器。

计算机系统500还包括耦合到总线502用于存储处理器504的静态信息和指令的只读存储器(rom)508或其他静态存储设备。存储设备510(例如,磁盘或光盘)被提供并且被耦合到总线502以存储信息和指令。

计算机系统500可以通过总线502耦合到显示器512(例如,阴极射线管(crt))以向计算机用户显示信息。输入设备514(包括字母数字和其它按键)被耦合到总线502以向处理器504传送信息和命令选择。另一类型的用户输入设备是用于向处理器504传送方向信息和命令选择并且用于控制显示器512上的光标移动的光标控件516,例如,鼠标、轨迹球或光标方向键。该输入装置通常在两个轴(第一轴(例如,x)和第二轴(例如,y))上具有两个自由度,其允许设备指定平面中的位置。

计算机系统500可以使用定制的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑来实现本文所描述的技术,该定制的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑与计算机系统结合使得或编程计算机系统500成为专用机器。根据一个实施例,响应于处理器504执行被包括在主存储器506中的一个或多个指令的一个或多个序列,计算机系统500执行本文的技术。这样的指令可以从另一存储介质(例如,存储设备510)读入到主存储器506中。被包括在主存储器506中的指令序列的执行使得处理器504执行本文所描述的处理步骤。在替代实施例中,可以使用硬连线电路来代替软件指令或与软件指令组合。

本文使用的术语“存储介质”是指存储使得机器以特定方式操作的数据和/或指令的任何非暂态介质。这样的存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,例如存储设备510。易失性介质包括动态存储器,例如主存储器506。存储介质的常见形式包括例如软盘、伸缩盘、硬盘、固态驱动器、磁带、或任何其他磁性数据存储介质、cd-rom、任何其他光学数据存储介质、任何物理具有孔图案的介质、ram、prom、和eprom、flash-eprom、nvram、任何其他存储芯片或盒式存储器。

存储介质与传输介质不同,但可以与传输介质结合使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括同轴电缆、铜线和光纤,包括电线,该电线包含总线502。传输介质还可以采取声波或光波的形式,例如在无线电波和红外数据通信期间生成的声波或光波。

各种形式的介质可以被涉及在将一个或多个指令的一个或多个序列携带到处理器504以供执行中。例如,指令最初可以被携带在远程计算机的磁盘或固态驱动器上。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送该指令。计算机系统500本地的调制解调器可以在电话线上接收数据并使用红外发射器将数据转换成红外信号。红外检测器可以接收红外信号中携带的数据,并且适合的电路可以将数据放置在总线502上。总线502将数据携带到主存储器506,处理器504从主存储器506获取并执行该指令。由主存储器506接收到的指令可以可选地在处理器504执行之前或之后被存储在存储设备510上。

计算机系统500还包括耦合到总线502的通信接口518。通信接口518提供耦合到连接到本地网络522的网络链路520的双向数据通信。例如,通信接口518可以是综合业务数字网(isdn)卡、电缆调制解调器、卫星调制解调器、或调制解调器,以提供到相应类型的电话线的数据通信连接。作为另一示例,通信接口518可以是局域网(lan)卡,以提供到兼容lan的数据通信连接。无线链路也可以被实现。在任何这样的实现方式中,通信接口518发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。

网络链路520通常通过一个或多个网络提供到其他数据设备的数据通信。例如,网络链路520可以通过本地网络522提供到主机524或由互联网服务提供商(isp)526运行的数据设备的连接。isp526又通过现在通常被称为“互联网”528的全球分组数据通信网络来提供数据通信服务。本地网络522和互联网528都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号、和网络链路520上并通过通信接口518的信号(该信号携带去往和来自计算机系统500的数字数据)是传输介质的示例形式。

计算机系统500可以通过(一个或多个)网络、网络链路520和通信接口518发送消息并且接收数据(包括程序代码)。在互联网示例中,服务器530可以通过互联网528、isp526、本地网络522和通信接口518发送应用程序的请求代码。

接收到的代码可以由处理器504在其被接收时执行,和/或存储在存储设备510或其他非易失性存储器中以供稍后执行。

扩展和替代

本文描述的使用网络基础设施设备确定流长度特性的过程以及使用收集器设备分析流长度特性并采取响应动作的过程可以独立地或组合地实现。例如,在使用独立方法时,可以将收集器设备编程为执行以下操作:在收集器设备处接收第一数据报的第一长度、第二数据报的第二长度、以及第一数据报的第一到达与第二数据报的第二到达之间的持续时间;使用第一长度、第二长度和持续时间来确定与第一数据报和第二数据报相关联的应用;响应于确定应用是已知恶意应用,发送警报;其中该方法由一个或多个计算设备执行。在一种方法中,确定应用还包括使用受训分类器,其中受训分类器在来自软件应用(其报告与流相关联的软件应用的名称和散列)的训练数据上进行训练。收集器设备可以被编程用于访问文件信誉服务来确定应用的信誉。在一些实施例中,应用是客户端应用。在一种方法中,确定应用是为了当接收到第一长度,第二长度和持续时间时检测未知的恶意应用。

在前面的说明书中,已经参考可以随实现方式而变化的许多具体细节描述了本发明的实施例。因此,说明书和附图被认为是说明性的而不是限制性的。本发明范围的唯一和排他的指示以及申请人意在作为本发明的范围的内容是根据本申请发布的一组权利要求的字面和等同范围、该权利要求发布的具体形式,包括任何后续的更正。

附录a

这定义了可以在netflowv9(rfc3954)或ip流信息导出信息模型(ipfix,rfc7012)中携带的新数据类型。这些数据类型携带有助于检测威胁以及用于其他安全分析和电子取证目标的信息。

这讨论了围绕使用实验性新信息元素的考虑。这些新信息元素是使用由ipfix(rfc7012,章节3.1)定义的抽象数据类型来定义的。

packetdatalength和packettime元素旨在在ipfixbasiclist元素中使用,由此使用该标准的信息模型提供分组长度和时间的可变长度的列表。netflowv9元素packetdatalengthlist和packettimelist提供相同信息,但是被定义为数组,因为netflowv9不提供列表结构。

由于后者格式的复杂性,使用了basiclist而不是subtemplatelist;此外,在某些情况下,仅导出长度信息或仅导出时间信息可能是有价值的。为了简化说明,长度的运行长度编码和时间值的紧凑编码被省略。

ipfix

packetdatalength

描述:流中出现的分组的应用数据部分中的字节数量(八位字节)。零值不应当被报告。

数据类型:无符号16位

单位:字节(八位字节)

范围:0到65,535

elementid:企业号码为9的tbd1(cisco系统)

分组的应用数据部分应当通过从ip分组中的字节数量中减去传输报头中的字节数量来确定。对于tcp,报头长度包括固定的20字节tcp报头的长度和存在的任何tcp选项或填充的长度;可以通过从tcp报头中提取tcp数据偏移字段、将该值作为无符号整数、并将其乘以4来计算该值。应用数据部分对于tcpsyn和ack分组是零长度,因此这些分组不应当被报告为packetdatalength值。

对于icmp,packetdatalength值是icmp分组的长度,不包括icmp报头;它可以通过从ip分组的长度中减去8来计算。

对于udp,packetdatalength值是udp分组的长度,不包括udp报头;它可以通过从ip分组的长度中减去8来计算。

对于除tcp、udp或icmp以外的协议,packetdatalength值等于ip分组的数据部分的长度。

这个元素应当在basiclist中使用,其中语义=有序(0x04),如下所示。列表中的第一packetdatalength元素表示应用数据长度为非零的第一分组的应用数据长度,第二元素表示长度为非零的第二分组的应用数据长度,依此类推。列表中的packetdatalength元素的数量是可变的,并且由basiclist元素的长度确定。列表的长度应设置如下:列表包括应用数据长度为非零的每个分组的元素,或者包含50个元素。

packetdatalength的零值不应当被包括在列表中,因为这些元素不提供有用的信息。

对于tcp,出现在列表中的packetdatalength元素应当以与它们被发送的顺序相同的顺序出现,并且不应包括对应于重新发送的数据的元素。观察点可以通过观察每个分组中的tcp序列号并且临时存储与最近观察到的分组相对应的序列号值,来检测重新发送并且确定元素的正确排序。

因为观察点看到的tcp序列中的任何间隙都不能在列表中表示,所以本说明不适用于分组丢失。可以通过将说明改变为以下描述来修改说明以便能够表示间隙:如果观察点看到分组丢失(即,发送数据序列中的间隙),则代表间隙的packetdatalength元素应当被包括在列表中,在序列中的适合位置,其值等于间隙中字节数量的负值。(packetdatalength为负的事实表示它对应于一个间隙,而不是观察到的分组。)

对于udp、icmp和其他传输协议,packetdatalength元素应当以与观察到的顺序相同的顺序出现(可能与它们被发送的顺序不同)。

packettime

描述:在流中出现的应用数据长度为非零的分组的到达之间的微秒数。分组的数据长度的确定如针对packetdatalenth元素的被做出。

数据类型:无符号32位

单位:微秒

范围:0到4,294,967,295

elementid:企业号码为9的tbd2(cisco系统)

这个元素应该在basiclist中使用,语义=有序(0x04),如下所示。第一元素表示第一分组的到达时间,依此类推。列表中packettime元素的数量是可变的,并且由basiclist元素的长度决定。在发送packettime元素的basiclist时,它应当与packetdatalength元素的basiclist配对,并且packettime列表中的每个元素应当对应于packetdatalength列表中的元素;即,元素对应于流内的相同分组。

subtemplatemultilist

可以发送包括packetdatalength和packettime元素的列表的subtemplatemultilist,而不是packetdatalength元素的basiclist和packettime元素的basiclist。

netflowv9

packetdatalengthlist

描述:50个无符号16位元素的列表,每个元素包括出现在流中的分组的数据部分中的字节(八位字节)数量。第一元素表示第一分组的数据长度,依此类推。分组的应用数据部分应当通过从总分组长度中减去传输报头(包括任何tcp选项)的长度来确定;对于tcpsyn和ack分组,该值将为零。分组数据长度值为零不应被报告。

值:tbd3

长度:100字节(八位字节)

packettimelist

描述:50个无符号32位元素的列表,每个元素包括流开始时间与出现在流中的分组的到达之间的微秒数。第一元素表示第一分组的到达时间,依此类推。分组数据长度值为零不应被报告。

值:tbd4

长度:200字节(八位字节)

应用长度和时间的双向序列(bsalt)

字段类型:bsalt

值:16,389(注意:该数值还没有被iana分配)

长度:8*n字节(默认:n=50)

描述:bsalt信息元素针对流内的前几个应用数据报传送每个应用数据报的长度(字节数量),以及观察到的每个数据报之间的毫秒数。

应用数据报是传输协议(例如,tcp(rfc793)或udp(rfc768))携带的单个消息。应用数据报通常跨越多个分组,并且netflow观察点应该通过假设快速连续到达的流内所有分组对应于单个数据报,然后对流内的tcp或udp分组的数据部分的所有长度进行求和,来估计数据报的大小。分组的应用数据部分应当通过从总分组长度中减去传输报头的长度(包括任何tcp选项)来确定;对于syn和ack分组,这个值将是零。

bsalt信息元素包括n个无符号16位整数的两个数组recv_length和sent_length,其后跟随着n个无符号16位整数的两个数组recvd_time和sent_time。回想一下,“无符号16位”类型表示范围在0到65,535之间的整数值。recvd_length和sent_length数组表示流内的应用数据报的长度,按照观察到这些数据报的顺序。如果recvd_length[i]不等于零或65,535,则表示第i个应用数据报包括recvd_length[i]个字节;针对sent_length[i]是类似的。如果b[i]等于零,则表示发送的应用数据报少于i个;即b数组填充了零元素。如果b[i]等于65,535,则表示观察到了等于或大于65,535字节的数据报。

数组recvd_time和sent_time表示网络上两个连续数据报的观察时间之间的差。如果recvd_time[i]非零,则其指示在接收方向上观察到第i个应用数据报与第(i-1)个应用数据报之间的毫秒数。如果recvd_size[i]等于零,则recvd_time[i]也应当设置为零。数组sent_time类似地针对发送方向上的分组被定义。

用于确定bsalt元素中的四个数组的逻辑在下面的伪代码中被列出,其使用了以下这些变量和结构:

pkt:要处理的分组,包括发送或接收的tcp分组。可以包括以太网、ip和tcp报头。

sent_length[n]:大小为n的数组,表示被发送的tcp数据的累积块的大小。该数组特定于具体流,即特定于5元组。

sent_time[n]:大小为n的数组,表示sent_length数组中的每个项目的发送时间。sent_length和sent_time因此将具有相同的索引。对于数组中的每个索引,发送时间都是相对于先前项目的发送时间,第一个索引除外。该数组中的第一个项目的值将在伪代码的注释中被讨论。该数组特定于具体流,即特定于5元组。

sent_index:sent_length和sent_time数组中的当前索引。

last_sent_time:分组被发送的最后时间(例如,自系统正常运行时间以来)。

recvd_length[n]:大小为n的数组,表示接收到的tcp数据的累积块大小。该数组特定于具体流,即特定于5元组。

recvd_time[n]:大小为n的数组,表示recvd_length数组中每个项目接收时间。recvd_length和recvd_time因此将具有相同的索引。对于数组中的每个索引,接收时间都是相对于先前项目的接收时间,第一个索引除外。该数组中的第一个项目的值将在伪代码的注释中讨论。该数组特定于具体流程,即特定于5元组。

received_index:recvd_length和recvd_time数组中的当前索引。

last_recvd_time:分组被接收的最后时间(例如,自系统正常运行时间以来)。

is_sent:布尔值,表示当前分组是否是被发送的。如果假,则其是被接收的。

last_was_sent:布尔值,表示先前pkt是被发送的(真)还是被接收的(假)。

current_time:当前时间(例如,自系统正常运行时间以来)

rtt:当前流的往返时间。这被计算为发送的第一分组与接收到的第一分组之间的时间,或者是当数据分组在数据分组被发送之前到达时的最后握手分组与第一分组之间的时间。rtt的计算方法与应用流rtt相似。对于rtt,我们增加10%的rtt或5ms,以较大者为准。这是为了确保分组接收和发送时间的小波动不会影响是否将分组进行累积的决策。

len(pkt):这是分组长度减去任何以太网、ip和tcp报头,即其仅是由应用发送或接收的数据量。

is_data_packet(pkt):确定分组是否是数据分组,即包括一个或多个字节的应用数据的分组。

当观察到流内的新分组时,将按照以下算法中所描述的进行处理(如上所述,该代码不会将大小限制为65,535,而且可以轻松添加):

应用长度和时间的序列(salt)

字段类型:salt

值:16,388(注意:该数值还没有被iana分配)

长度:4*n字节(默认:n=50)

描述:salt信息元素针对流内的前几个应用数据报传送每个应用数据报的长度(字节数量),以及观察到的每个数据报之间的毫秒数。

应用数据报是传输协议(例如,tcp(rfc793)或udp(rfc768))携带的单个消息。应用数据报通常跨越多个分组,并且netflow观察点应当通过假设快速连续到达的流内所有分组对应于单个数据报,然后对流内的tcp或udp分组的数据部分的所有长度进行求和,来估计数据报的大小。分组的应用数据部分应当通过从总分组长度中减去传输报头的长度(包括任何tcp选项)来确定;对于syn和ack分组,这个值将是零。观察点应当假设在五毫秒内到达的分组属于相同应用数据报,尽管也可以使用其他时间。

salt信息元素包括n个无符号16位整数的数组b,其后跟随有n个无符号16位整数的另一数组t。回想一下,“无符号16位”类型表示范围在0到65,535之间的整数值。b数组按照观察到这些数据报的顺序表示流内的应用数据报的长度。如果b[i]不等于零或65,535,则表示第i个应用数据报包括b[i]个字节。如果b[i]等于零,则表示发送的应用数据报少于i个;即b数组填充了零元素。如果b[i]等于65,535,则表示观察到等于或大于65,535字节的数据报。

数组t表示网络上两个连续数据报的观察时间之间的差。t[0]是自从接收到流方向的syn分组以毫秒为单位的时间。如果t[i]非零(并且i>0),则其指示观察到第i个应用数据报与第(i-1)个应用数据报之间的毫秒数。如果b[i]等于零,则t[i]也必须设置为零。如果第i个应用数据报长于65,535字节,则b[i]必须设置为65,535。

观察点如下构建数组b和t。在新流开始时,索引i被初始化为零。当具有l字节的应用数据的新分组在相同流中的最近分组之后(或者从syn分组起的第一个数据分组)的t毫秒到达时,使用以下过程:

示例.设置(l,t)对指示应用数据报的长度为l(以字节为单位)和分组间到达时间为t(以毫秒为单位)。如果以下列顺序观察到具有长度和时间{(20,17),(1500,77),(1500,0),(432,0),(33,140)}的分组的序列,则b数组将按照该顺序包括元素{20,4932,33,0,...,0},并且t数组将包括元素{17,77,140,0,...,0}。

当且仅当整个b数组充满非填充值(即,值0不应当出现在b数组中的任何地方)时,可以在流已经完成之前发送salt数据类型。这个属性确保流中的应用数据报长度的实际序列以及在收集多个salt元素之后估计的序列不会有歧义。

salt数据类型不应与流聚合一起使用。

salt元素表示应用数据报而不是分组,因为数据报更接近于应用行为,并且因为数据报长度和时间与分组长度可以比时间更加紧凑地表示。应当选择salt阈值,以便它不会将两个不同的应用数据报误认为单个更长的数据报。观察点最好把一个数据报误认为两个不同的数据报。这是因为,在分析salt元素时,分析系统有可能认识到两个连续的b值实际上对应于单个应用数据报。然而,取反并不容易,分析系统无法轻易推断出单个b值对应于多个数据报。

使t数组包括时间值的二进制科学记数法(bsn)表示可能是期望的,这将使salt元素所需的状态减少25%。动态估计往返时间可能是期望的。

初始数据分组(idp)

字段类型:idp

值:16,386(注意:该数值还没有被iana分配)

长度:1400字节

描述:idp信息元素传送包括数据的流的第一分组(即,具有长度超过报头长度的分组)的前1400个字节(八位字节)。

这个数据类型是八位字节数组(octetarray)。其第一八位字节是ipv4、ipv6或icmp报头的第一八位字节。如果ipv4、ipv6或icmp分组的总长度小于1400字节,则octetarray填充空(0x00)值。

注意,当导出器被配置为针对每个方向导出idp时,如果其观察到典型的双向tcp流(在每个方向上传送数据),则其将导出两个idp记录。此外,如果导出器被配置为发送其他数据元素,则必须发送第三记录。

idp数据类型不应与流聚合一起使用。

应当尽快导出idp记录,以便导出器可以避免将数据存储超过需要的时间。该数据元素不应包括大多数其他流记录。

分组长度和时间的序列(splt)

字段类型:splt

值:16,387(注意:该数值还没有被iana分配)

长度:3*n字节(默认:n=50)

描述:splt信息元素针对流中的前几个分组传送每个分组的长度(字节数量),以及那些分组的到达时间。其与salt元素的不同之处在于splt表示分组的序列,而salt表示应用数据报的序列。

这个信息元素包括n个有符号16位整数的数组b(如在分组长度(spl)元素中定义的),其后跟随有n个无符号16位整数的数组t。数组b使用运行长度编码按照观察到这些分组的顺序来表示分组中的应用数据的长度。数组t表示网络上两个连续运行分组的观察时间之间的差。如果t[i]非零,则其表示观察到第(i+1)运行和第i运行之间的微秒数。

设置b[i]指示数组中的第i个有符号16位元素。如果b[i]≥0,则b[i]表示分组中应用数据的长度。如果-32768<b[i]<0,则-b[i]表示观察到的具有应用数据长度等于最后表示的应用数据长度的分组数量(不包括最后分组)。(最后表示的长度是值b[j],其中j是小于i的使得b[j]>0的最小值)。如果b[i]=-32768,则值b[i]表示流中没有分组;值-32768用于在其中不使用数组的每个元素就可以表示整个流的情况下填充数组的末尾。

分组中应用数据的长度是分组中的字节数量,减去ipv4或ipv6报头和tcp或udp报头(包括标头选项,如果有的话)中的字节数量。观察点应该检查tcp数据偏移字段、ipv4ihl字段、和ipv6下一报头字段,以确定可能存在的tcp或ipv4选项的长度以及可能存在的ipv6报头扩展的长度。

示例.如果以下列顺序观察到具有应用数据长度{20,1500,1500,1500,432}的分组的序列,则spl数组将按照该顺序包括元素{20,1500,-2,432,-32768,-32768,...,-32768}。

回想一下,ipv4分组的最小长度是20字节。

数组t定义如下。如果b[i]≥0,那么t[i]表示对应于b数组中的元素b[i]的分组的到达时间。如果-32768<b[i]<0,则t[i]表示对应于b数组中元素b[i]的分组的序列中的最后分组的到达时间。如果b[i]=-32768,则t[i]的值没有意义;其必须被接收者忽略,并且应该被发送者设置为0。

当且仅当整个数组充满非填充值(即,值-32768一定没有出现在该数组中的任何地方)时,可以在流已经完成之前发送splt数据类型。这个属性确保流中的分组长度的实际序列以及在收集多个spl数据元素之后被估计的分组的序列不会有歧义。

splt数据类型不应与流聚合一起使用。

实现方式可以使用以下实际方法来计算splt数据。流中观察到的最后分组的长度被存储在变量q中,并且当前运行的长度被存储在变量r中,以及最后索引i进入有符号16位数组中。在处理流之前,将r和i初始化为0,并且将q初始化为l永远不会假设的值(任何负值都可以)。当长度为l的新分组到达时,其被处理如下:

未来可能期望的是,使t数组包括时间值的二进制科学记数法(bsn)表示,这将使salt元素所需的状态减少25%。

动态估计rtt可能是期望的。

过滤流

因为spl、spt、splt和idp数据类型需要比典型的netflow记录更多的存储、计算和带宽,所以重要的是实现这些数据类型的导出器是可配置的,使得仅针对感兴趣的流导出这些数据类型。在本节中,概述流应当如何被配置。

在导出器内维护两个查找表(发起者和响应者),其具有以下最小元素。ip、协议和端口应当是该查找表的索引。发起者ip和端口应当是叶节点的索引。

·ip地址(ipv6)

·端口(如果tcp,udp)

·协议(tcp、udp等)

·流计数(int)

·首次看到(ts)

·最后看到(ts)

·最后发送的数据(ts)

应当可以根据频率、存在时间和随机选择从列表中随机选择流以供数据捕获。

提供可配置的限制和选择标准

考虑负载和带宽,应当可以定义限制,一些建议是:

·每n个流仅发送一次数据

·n次高流量仅发送一次数据

·不同终端对仅发送一次数据

·总是发送所有流的数据

·从流中发送不超过x字节的数据

·发送统计上低发生流的数据

·等等

针对给定流实现正则表达式定义的扩展数据捕获和导出

应当可以定义一组有限的正则表达式,应用于目标流的可选定义的列表,并且触发针对该流的可配置数量的附加数据的导出。例如,如果10.230.0.0/16内的流在前2048字节内匹配/^.*zynga.com/,则导出流的数据的下一4096字节。

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