精华内容
下载资源
问答
  • 对基于机器学习的IP流量分类方法进行了系统性研究。给出了这类流量分类方法的数学描述;通过深入研究有监督和无监督机器学习方法在流量分类中的应用,从数据预处理、模型构建和模型评估3个方面评述这类技术的研究...
  • 对基于机器学习的IP流量分类方法进行了系统性研究。给出了这类流量分类方法的数学描述;通过深入研究有监督和无监督机器学习方法在流量分类中的应用,从数据预处理、模型构建和模型评估3个方面评述这类技术的研究现状,...
  • 以抽取独立于端口、协议和有效载荷的P2P流的信息作为特征,用提出的基于ReliefF-CFS的方法选择流的特征子集,研究使用机器学习算法对P2P流量进行分类的方法,也研究了利用流的前向N个报文的统计信息作为特征分类...
  • 机器学习在网络流量分类中的应用

    千次阅读 2020-06-20 11:24:06
    流量分类 1. IP流定义 2. 有效载荷检测 3. 基于统计的技术 4. 行为技术 5. 机器学习技术 III. 方法 IV.数据收集 A. 网络环境 B. 数据测量 C. 标注任务 D. 讨论 V. 特征提取 A. 基于统计的特征 B. 基于图形...

    写在前面:
    本文翻译供个人研究学习之用,不保证严谨与准确
    github链接:https://github.com/WithHades/network_traffic_classification_paper
    本文原文:Pacheco, F., Exposito, E., Gineste, M., Baudoin, C., & Aguilar, J. (2019). Towards the Deployment of Machine Learning Solutions in Network Traffic Classification: A Systematic Survey. IEEE Communications Surveys and Tutorials, 21(2), 1988–2014. https://doi.org/10.1109/COMST.2018.2883147

    机器学习在网络流量分类中的应用

    摘要
      流量检测是一种发现网络流量中的关系、模式、异常和错误配置等的综合技术。尤其需要注意,流量分类是该领域中旨在识别应用程序名称或Internet流量类型的一个子领域。近年来,流量加密和封装等新技术的兴起降低了传统流量分类策略的性能,使得流量分类成为一项具有挑战性的任务。机器学习作为这一领域的一个新的研究方向,有成功的迹象,例如从加密流量中提取知识,以及更精确的服务质量管理。ML正迅速成为在真实的网络流量场景中构建流量分类解决方案的关键工具;从这个意义上说,本研究的目的是探索该技术在流量分类领域的要素。因此,本文在介绍利用ML技术实现流量分类的步骤的基础上,对其进行了系统的综述。主要目的是了解和确定现有工作为实现其目标所遵循的程序。因此,本文从对该领域进行的分析中发现了一些趋势;通过这种方式,作者希望概述基于ML的流量分类的未来方向。

      关键词: 互联网流量流量分类机器学习流量监控

    I. 介绍

      流量分析是一个从截取流量数据开始,到发现网络中的关系、模式、异常和错误配置等的完整过程。其中,流量分类是该领域中的一个子领域,其目的在于将互联网流量分类为预定义的类别,例如正常或异常流量、应用程序类型(流媒体、网络浏览、VoIP等)或应用程序名称(YouTube、Netflix、Facebook等)。流量检测之所以重要,主要有以下几方面的原因:

    • 故障排除任务:主要目标是定位故障网络设备、设备/软件配置错误、定位数据包丢失点、网络错误等。
    • 安全性:避免恶意软件或防止对私人信息的入侵。
    • 服务质量(QoS)管理,保证最终用户对应用程序或服务的总体可接受性。在这个领域,识别或分类网络中的应用程序的名称或类型有助于处理一些预先定义的情况。例如,从流量中识别不同的应用程序对于管理带宽资源和确保QoS要求至关重要。

      在过去,流量分类依赖于基于端口的方法,其中每个应用程序由其注册的已知端口进行标识,该端口由互联网分配号码管理局(IANA)[1]定义。由于未注册或随机生成端口的新应用程序激增等因素,这种方法变得不可靠和不准确。另一种在这一领域得到广泛应用的方法是深度包检测(Deep Packet Inspection,DPI)。DPI通过在包负载和一组存储的签名之间执行匹配对网络流量进行分类。然而,当隐私政策和法律阻止访问包内容以及协议混淆或封装的情况下,DPI会失败。为了克服上述问题,机器学习(ML)作为一种合适的解决方案应运而生,它不仅适用于流量分类任务,而且适用于预测和新知识发现等。在这种情况下,IP流的统计特征通常是从网络轨迹中提取出来的,并存储起来生成历史数据。这样,就可以用这些历史数据训练不同的ML模型,并用这些模型分析新的传入流。

    A. 相关工作

      在本节中,我们将研究一些综述性论文,以找出进行流量分析(尤其是流量分类)的趋势、挑战和一般步骤。虽然2005年已经开始使用ML进行流量分析,但是由于流量的更新和扩展等原因,一些问题仍然存在。文献[2]回顾了近年来利用ML进行流量分类的研究进展。尽管大多数呈现的工作都是以离线方式部署的,但是作者也提到了在线部署,为ML模型建立了一些关键的操作要求。在最近的一篇综述[3]中,指出了其中的几个问题,并提出了该领域的未来的一些方向。一方面,本文研究了一些主要的流量分类问题,可以总结如下:

    • 可用的数据及其真实性是有限的;
    • 流量分类解决方案的可扩展性是一个挑战;
    • 由于网络的动态性和进化性,需要自适应的解决方案;
    • 解决方案需要正确的验证。

      另一方面,未来的方向鼓励对ML方法进行更严格的评估和比较,鼓励开发用于定义流量真实值的工具,鼓励使用多分类系统等。此外,ML方法需要满足不同的挑战[4]、[5],例如提供的性能、对不断增加的业务量和传输速率的管理,以及重新配置能力。
      文献[6]介绍了这一领域的最新进展,重点介绍了用于流量分类的有监督无监督技术。作者研究了几种基于贝叶斯的分类器神经网络NNs决策树DT的方法。此外,还研究了DBSCAN算法基于期望最大化EMK-均值的聚类技术等。为了概述每种方法的必要改进,给出了一些优缺点。
      加密通信已成为防止网络中传输信息被入侵的一种新方法。ML非常适合分析这些类型的通信,因为它不会侵入数据包内容;例如,在某些情况下,连接的统计行为可能就足够了。在这一背景下,[7]报告了几项关于加密流量的研究的全面回顾。调查研究了一些加密协议、它们的包结构和在网络中的标准行为,以及可以提取用于流量分析的可观察特征。此外,[8]还调查了最常见的流量分类方法。
      目前,网络中的异常流量检测已成为流量分析的重要课题之一。其目的是发现或描述可能影响网络基础设施、业务或个人隐私、数字经济等的恶意或无意的异常情况。流量分析对于这个特定的域是必要的。参考文献[9]提出了一项综合研究,其中ML技术代表了本综述中发现的30%以上的解决方案。这一领域的更多工作见[10]-[12]。
      一般来说,流量分类可以通过多种ML技术,在不同的领域,以不同的目标来实现。然而,在所有的调查报告中,一个主要的问题是缺乏公共数据,这可以被视为应用ML方法的核心资源。此外,定义所收集数据的真实值的困难,以及ML解决方案的实现,是目前ML技术的挑战和限制。另外,另一个重要方面是网络的发展,它需要自适应或自配置的解决方案来保证可靠的通信量。相反,为了能够解决前面讨论过的缺点,研究界需要付出更多的努力。

    B. 本文贡献

      本文试图收集如何以及何时使用ML技术进行流量分类的不同方法、策略和过程。它将研究从监控阶段到实施ML解决方案的过程。主要目的是为打算使用ML技术进行流量分类的领域从业人员提供全面的指导。从这个意义上讲,本文主要研究基于科学界的经验实现流量分类的步骤。值得一提的是,本文的研究集中在IP层的流量分类上。例如,本研究将概述可用于改善运营商网络级别的QoS的方法。简而言之,主要贡献如下:

    • 提供了一个全面的工作流程,以了解如何通过IP流上的ML技术实现流量分类。
    • 研究与文献中相关的工作流程的每个步骤。
    • 提供了一组当前方法根据工作流遵循的路径。
    • 作为最终结果,提供了流量分类问题的一般概述,以及根据先前结果得出的未来方向。

      总结这一部分,值得指出的是,本综述与其他相关工作的主要区别在于提出论文的方法。参考的论文按照将ML技术应用于Internet流量分类领域的一般步骤进行组织。

    C. 本文结构

      本文的其余部分安排如下。第II节简要介绍了流量分类的问题。该节首先介绍ML技术和网络流量的一些基础,最后总结一些最常用的方法。第III节介绍了作者评审论文所采用的方法,该方法基于知识抽取的ML过程。按照前一节的指导方针,第IV节报告了网络中进行数据收集的常用方法。第V节报告了从观察到的流量中提取特征的策略。第VI节介绍了一些减少或选择提取特征的方法。第VII节研究了如何选择ML算法进行流量分类。第VIII节旨在了解文献中为实现ML解决方案所做的努力。第IX节分析了文献的结果,第X节概述了调查报告的结论。

    II. 背景

      在第II-A节中,介绍了ML基础、一般步骤和经典算法的综合。接下来,在第II-B节中,对流量分类方法进行了概述。

    A. 机器学习介绍

      机器学习(ML)技术是识别和分类不同类别的一种非常流行的方法。它的主要目标是赋予计算机自动学习能力,即机器能够在一定条件下从过程中提取知识。ML试图从一组特征或属性中提取知识,这些特征或属性表示过程或者观察到现象的可测量属性。这样,学习过程通过训练不同的模型来执行,即分类、预测或聚类模型;它们的使用取决于问题的特征。知识抽取由一个根据案例研究的历史经验建立的ML模型处理。
      在文献中可以找到不同的ML方法。例如,[13]提出了一组迭代步骤来发现大型数据库中的知识。这项工作报告了将数据转换为知识的传统方法,称为数据库中的知识发现(KDD)。KDD的主要步骤包括数据选择处理转换挖掘和解释/评价。数据挖掘组件指的是数据挖掘方法的应用,这些方法从数据中确定模式。大多数数据挖掘方法都是基于ML技术的。本文介绍了用ML技术实现知识发现的一般步骤。

    1. 数据收集

      此步骤旨在收集有关案例研究的信息。通过建立测量程序,从物理或数字传感器获取数据。这些数据描述了当前或历史状态,用于定义实验环境。一个测试环境由所有的软件、硬件和网络组件,以及其他感兴趣的过程所持有的组件组成。这个测试环境对于使用ML技术构建模型(学习和测试)是必要的。从测试环境中设置的多个场景中捕获和收集样本。

    2. 特征提取FE

      特征提取是最重要的步骤之一,因为它测量或计算可能提供进程状态信息的特征。简言之,FE过程计算反映所收集数据中特定属性不同的度量值。主要目的是获得更好地描述问题的描述符。FE过程的结果是由属性列构成的结构化表,其中每一行是一个样本,还有一个附加的可选列,列的当前状态为每个样本(通常称为标签或类)。如果状态未知,则样本未标记。
      特征提取可以执行数据处理过程以删除不需要的缺失值和清除数据等。最后一个与异常值检测相关,它可能会破坏ML解决方案的性能。此外,可以通过对属性值进行规范化聚合操作来转换数据。在聚合过程中,这些特征被组合成一个对问题更有意义的单一特征。
      在这个阶段,我们可以从一个初步的研究开始来理解数据。例如,使用带标签的数据,可以处理表来查找类不平衡,这是一个或多个类的样本量比另一个类的样本量要高的情况。类不平衡数据可能会使一些ML模型从一个类中学习更多的内容从而产生偏差。处理类不平衡数据的一种方法是尽可能减少类中不相关样本的数量[14]。
      最后,必须指出的是,FE过程可以嵌入到ML算法中;此外,历史数据集可能不可用,ML模型应该从头学习。这些特殊性将在第II-A4节中扩展。

    3.特征降维FR和特征选择FS

      这是一个可选步骤,允许选择或减少提取的特征数。FR是使用原始的属性创建新的属性,而FS是寻找一组较少的属性来更好地描述特征。这些步骤旨在减少诸如时间消耗和维度诅咒等问题。文献[15]和[16]对FR和FS过程的性能和理解进行了调查。FR和FS通常分为过滤器包装器嵌入式方法,这些方法又可以通过有监督无监督策略进行开发。在有监督策略中,目标是找出最有助于定义分类决策的特征。在无监督策略中,主要目的是确定数据分组的特征。
      在过滤器中,每个特征使用一个度量其相关性的度量来给出分数。对这些特征进行排名,最相关的是那些满足可接受的阈值的特性。相关分析是一种简单的滤波方法,通过计算相关系数找到特征对之间的关系。其他滤波器技术包括基尼指数[17]、信息增益[18]、拉普拉斯分数和稀疏度分数[19]、[20]等。滤波器算法可以使用无监督学习来寻找最佳的基本特征[21]–[24],或者通过结构化稀疏正则化模型来选择特征,从而保持了数据集中实例的聚类结构[25]–[27]。另一方面,有监督学习常用于包装器方法,其中定义了一个目标函数,以确定不同特征集对分类器精度的影响。需要选择提供最佳分类性能的特征。遗传算法序列搜索策略被广泛用作包装器[28]、[29]。
      此外,一些ML算法包括嵌入到模型设计中的FS过程,例如正则化回归模型基于决策树的模型[30]、[31]。最后,其他技术集中于在原始特征的基础上生成更具代表性的特征[32]、[33]。这些技术可以在特征生成中找到,明显地与FR和FS过程分离。

    4. 算法选择和模型结构

      前几个阶段的结果生成了一个包含案例研究的历史信息的数据集。历史数据集是构建ML模型的关键资源。不同的ML算法已经被开发出来并尝试用于解决分类、聚类和回归等的任务。ML算法的作者希望发现的问题或知识类型有关。
      在ML中,有两种典型的学习类型:有监督学习无监督学习。大多数有监督学习算法调整模型参数,使模型输出与输入的实际期望输出之间的误差最小。这意味着必须对历史数据进行标记。另一方面,无监督算法试图在事先不知道输出的情况下找到输入之间的关系。这些关系可以是相似性、近似性和统计关系等。作为学习过程的衍生结果,有监督的算法通常用于执行分类任务,而无监督的算法则更倾向于对输入进行聚类,以便发现它们之间的异常或相似行为。一般来说,ML模型和学习类型与要解决的问题类型相关。
      [34]-[36]可以找到ML算法的不同分类。例如,一般情况下经典的有监督算法有基于统计模型规则神经网络NNs等。此外,有几种方法不一定属于上述分组,可以分为参数方法非参数方法。例如,在参数模型中,目标是确定使成本函数最小化的参数,例如支持向量机(SVM)。一种非参数算法是K近邻(KNN),它通过测量样本的距离来收集相似的样本。在无监督方法中,一种分类方法将技术分为基于原型的聚类层次化方法基于密度的方法等。
      目前,ML算法除了基于有监督和无监督学习外种类繁多。例如,半监督算法利用未标记的数据训练分类器,或者用标记样本训练分类器,然后评估分类器中的未标记样本,或者对未标记样本使用无监督方法。由于数据集中存在标记样本和未标记样本,因此也可以通过有监督和无监督学习之间的组合找到混合方法[37]。此外,集成技术使用各种ML模型(通常是分类器)并通过组合策略组合它们的结果。BaggingBoosting等策略被广泛用于构建集成模型[38]。还有一些更先进的技术,例如,增量学习,旨在用新的输入在线更新ML模型[39]。最后,强化学习的重点是在线表现(通常是累积奖励),在任何时候采取行动时都是最大化的[40]。

    5. 分类模型验证

      本节概述了分类解决方案最常用的验证方法。监督学习需要样本标签的预先知识,样本标签是验证ML模型的关键信息。通常的方法是将数据集分为训练集测试集。用训练集建立ML模型,用测试集评价模型的预测能力。给定模型预测和测试集的真实标签,可以通过几个性能度量来量化ML解决方案的分类能力。例如,[41]提出了分类性能度量的研究,将分类性能度量分为要实现的分类类型:二进制多类多标记分层。当一个输入样本只能被分为两个不同的类中的一个时,就会发生二元分类。相反,多类分类意味着输入在一个类池中只能被分类为一个类。多标签分类允许将输入样本分类到类池中的多个类中。最后,层次分类类似于多类分类,但粒度更大,因为主类被划分为较低级别的子类。
      为了验证ML模型,最常用的方法之一是根据分类能力来衡量其性能。在模型预测和真实标签之间可以找到一些关系,例如正确和错误分配给类的样本数等。通过计算例如准确性精度召回率F-scoreROC等来衡量ML模型性能。例如,对于具有正类和负类的二进制分类,真阳性TP假阴性FN真阴性TN假阳性FP可以通过敏感度和特异度来衡量分类器的性能。这些度量的组合,如F-score和ROC,提供了关于分类器性能的更精确的信息。特别地,ROC曲线是通过计算改变分类器的判别阈值的灵敏度和特异性得出的[42]。在ROC曲线中,理想值代表了许多敏感性和特异性(一种非常好的诊断方法),其结果是一个可解释的图,说明了分类器在不同操作点的性能;此外,可以计算曲线下面积(AUC)以从ROC获得紧凑的度量。通过计算二进制分类性能的微观或宏观平均值的总体性能度量,上述分析可以映射到多类问题。这些度量中的每一个评估了模型性能的不同方面[43]、[44]。
      传统的模型评估方法是分别使用训练集和测试集来训练模型和计算性能度量。此外,交叉验证是将数据划分为k个子集的模型验证的另一种方法。其中一个子集用作测试集,其余用于训练模型。对k个子集执行相同的过程,并通过每个子集的评估分数的组合(平均)给出全局性能表现。交叉验证方法有不同的变体,如leave-p-outleave-one-out
      最后,有一些更先进的方法可以在不同的测试场景下测量分类器性能,例如Friedman测试Wilcoxon测试等。这些场景包括数据集的不同分区、分类器设置的不同初始条件,或者在训练过程中嵌入随机初始化等。这些方法主要用于比较一组分类器,并选择在不同条件下性能最高的分类器[45]。

    B. 流量分类

      在流量分类中,可以发现几个趋势来分类、理解、诊断或观察网络的状态。流量分类的完整分类见[46]。尽管如此,在图1中提出了对该分类法的修改,该修改又集中在感兴趣的分支机器学习上。图1主要分为五个部分:数据技术特征工程算法选择输出。每个部分的简要说明如下:

    • 数据:用于创建流量分类解决方案的输入数据类型。值得注意的是,流量数据可以加密或未加密。可以通过DPI工具实时捕获标记流量。第IV节将提供有关该部分的更多细节。
    • 技术:主要有四个主要分支,如机器学习基于统计基于行为的和有效载荷检查。在本节中,将简要介绍这四种方法,以便大致了解它们的工作原理。但是,ML分支将在整篇文章中扩展。
    • 特征工程:根据第II-A2节和第II-A3节中提出的策略,本部分仅涉及ML分支,并展示了在IP流上应用的特征分析技术的潜在和现有趋势。本节将在第V节中扩展,而IP流的正式定义在第II-B1节中给出。
    • 算法选择:该部分根据所使用的学习过程(有监督、无监督、混合等)和要完成的任务(分类、聚类等),描述构建ML解决方案的可用方法。
    • 输出:最后,输出主要取决于要实现的目标,例如将流分类为类别或应用程序名、系统状态等。

      本节将介绍如下内容。第II-B1节正式定义了IP流,它是Internet网络中最常见的通信会话表示。接着,介绍了经典的流量分类技术:第II-B2中的有效载荷检测、第II-B3中的基于统计的技术、第II-B4中的行为技术和第II-B5中的ML技术。

    图1 以ML分支为中心的流量分类方法概述

    1. IP流定义

      在业务分类中,通常使用术语“流”来描述从源发送到目的地的一组分组。根据[47],IP流是网络中的一组分组或帧,在一个时间间隔内可以在网络中的某个点截获。属于同一流的数据包共享若干公共属性,例如:a)一个或多个数据包,具有传输或应用报头字段(例如,源和目标IP地址、端口号和类型等);b)数据包的特征作为MPLS标签的数量;c)附加字段,例如下一跳IP地址,因此,可以概述单播流 F i F_{i} Fi的经典定义

    • 定义1:一个IP流 F i F_{i} Fi可以被定义为:
      F i = { H i , P i } (1) F_{i} = \{H_{i}, P_{i}\}\tag{1} Fi={Hi,Pi}(1)
        其中 H i H_{i} Hi是流i的头, P i = { p i , . . . , p i n } P_{i} = \{p_{i}, ..., p_{in}\} Pi={pi,...,pin}是属于流i的一组数据包。

    • 定义2:流量头 H i H_{i} Hi可以被如下一个元组定义:
      H i = ( I P s r c , I P d e s t , p o r t s r c , p o r t d e s t , p r o t o ) (2) H_{i} = (IP_{src}, IP_{dest}, port_{src}, port_{dest}, proto)\tag{2} Hi=(IPsrc,IPdest,portsrc,portdest,proto)(2)
        其中 I P s r c IP_{src} IPsrc I P d e s t IP_{dest} IPdest是IP源和目标地址; p o r t s r c port_{src} portsrc p o r t d e s t port_{dest} portdest分别是源和目标传输端口;proto是传输协议。
        此外,在表达式(3)中定义了 P i P_{i} Pi。P是通过监视点的完整数据包集。 h k h_{k} hk是包 p k p_{k} pk的头, H i H_{i} Hi是流的头。
      P i = { p k ∈ P ∣ h k = = H i } (3) P_{i} = \{p_{k} \in P \mid h_{k} == H_{i} \}\tag{3} Pi={pkPhk==Hi}(3)
        对于单播双向流(假设a是客户端,b是服务器),上述定义的扩展是指:

    • 定义3:一个双向流 F a b F_{ab} Fab的定义为:
      F a b = F a ∪ F b (4) F_{ab} = F_{a} \cup F_{b}\tag{4} Fab=FaFb(4)
        单向流的并集是通过元组中某些元素的匹配来实现的。
        在定义2中,一些端口号可以保留给由IANA建立的应用程序类型,但是,在大多数应用程序在应用中随机生成端口。此外,通信会话(表示为多播会话)可以打开多个端口,这反过来可能影响上述定义。在过去,Internet流量允许使用开放端口和注册端口(使用IANA)之间的匹配来获取应用程序的名称。然而,具有随机端口的新应用程序的激增,以及Internet网络的增长,使得基于端口的方法变得不准确。它们过时了,出现了新的流量分类方法。

    2. 有效载荷检测

      这种技术也称为深度包检测(Deep Packet Inspection,DPI),它分析网络数据包的内容,即IP报头和有效载荷。
      DPI将从包中提取的信息与一组(预先定义的已知的)签名进行比较来区分应用协议。一些DPI工具包括nDPILibprotoidentPACEL7 filterNBAR等。
      最近,由于新的应用程序和协议的不断增多,DPI工具遇到了一些缺点。特别是,当创建新协议时,DPI工具必须更新;否则,它们会获取未知或错误的签名从而导致预测失败。因此,必须不断更新工具签名列表。另一方面,当a)使用包加密来保护通信会话中的内容时;b)部署HTTP2来复用包内容时;c)因为NAT网络无法区分通信会话,采用NAT网络时;和d)部署虚拟专用网(vpn)以实现数据隐私和完整性等,DPI是不够的。
      尽管DPI工具有其特殊的缺陷,但它们仍然被广泛用于流量分类。一些研究报告了它们在流量分类中的准确性和受欢迎程度[48],[49]。一些工作试图解决当DPI工具检测到新协议时手工设置签名的问题[50],[51]。[52]提出了基于固定比特偏移机制的业务签名的自动生成。该工作提出从流中随机选择包,并在同一位偏移量下对包的每一位进行比较。签名从固定长度中提取、记录并计数,以生成最终签名。在[53]中,同样的作者提出了另一种使用聚类技术来收集相似的流行为的方法。从产生的簇中,取一组流以应用基于令牌的算法HamsaMSA,即t-coffee算法;这两种算法都已被用于提取生物学中的正则表达式,并被用于提取二进制序列中的签名。这些新策略有助于DPI的流量分类。

    3. 基于统计的技术

      基于统计的技术主要目的是找出流、通信终端系统和网络配置之间的统计差异。这种差异可能是两个或多个不同的应用程序或行为的结果,其特征是统计特性。在某些情况下,可以使用统计分布来建模网络流量模式。概率模型的构造已经被一些研究人员应用于了解网络的不同状态。[54]中的工作引入了一个具有公共和私有IP地址的监视场景,并测量每个配置文件的统计信息,例如TCP和UDP数据包的数量,以及失败流的数量。其目的是构造不同的统计分布,如负指数分布高斯分布,以检测P2P通信中的可达性。以类似的方式,[55]中的工作提出了使用统计分布对流进行分类。另一方面,[51]在包头上引入了文本分类,结果由一个统计二元模型进行评估,该模型将确定它是否是一个新的签名。这种方法的主要缺点是静态地构建不整合学习过程的统计模型。与之前的方法一样,在互联网流量模式动态增长和演变的情况下,这种缺点会影响其性能。此外,ML技术对一些基于统计的方法进行了调整和改进。

    4. 行为技术

      此方法通常尝试在网络中的端到端通信中查找模式。它还研究了社区模式,其中社区由不同点的宿主整合而成。
      网络中最常见的行为模式表示是通过图建模,其中图论用于查找高度连接的节点(主机)、连接数和打开的端口等[56]。例如,[57]分析流量行为以识别P2P流量。第一步是通过k-means模型将相似的流聚集在一起。接下来,集群由流量分散图TDG表示,其中节点由IP地址表示,节点之间的链路是注册流。最后,在图上应用一组规则来检测应用程序的名称。这些规则考虑了一些特性,比如节点的百分比和图的平均节点度。[58]中的工作提出了一种识别P2P社区的方法,其中网络中的交互用图形表示。节点由元组(IP、端口)构成,连接由节点之间交换的数据包的数量给出。利用已知远程节点的端口分布对P2P网络进行识别,建立多项式分类器来判断图是否代表已知网络之一。
      这些技术通常研究的另一个目标是识别流量活动模式,如[59]和[60]中的工程。例如,[59]展示了流量分析图(标记),以便直观地揭示不同类型应用程序的行为。在标记中,节点是IP地址,边缘是感兴趣的流;感兴趣的流是根据研究的目的定义的,以便构建标记来捕获主机之间的相关流量活动。参考文献[60]建立了二部图并计算其相似矩阵。该矩阵将作为聚集相似节点的聚类算法(k-means)的输入。
      这种方法也被报道用于检测异常。文献[61]对这一领域的研究现状进行了综述。

    5. 机器学习技术

      对于这个特定的领域,一个主要的目标是根据互联网网络的状态对流量进行分类。在这种情况下,因特网通信的最常见表示为IP流,可以提取代表性特征并用于流量分类。如图1所示,所使用的一些特征提取方法可分为统计流特征时间序列基于图等。FR或FS过程是可选的。它们通常与ML一起应用,并且已经在性能方面证明了添加到ML模型的好处[16]。
      ML算法可以是有监督的、无监督的、半监督的或混合的,它将依赖于ML任务的执行和可用的数据。ML任务与研究目标直接相关。其中一个最流行的目标是异常检测,以防止可能在服务提供商和最终用户之间造成严重损害的网络攻击。此外,异常检测还可用于识别网络中的故障或错误配置[9]。另一方面,应用程序协议检测也吸引了这一领域的兴趣,特别是那些希望改进为客户提供的服务的服务提供商。例如,提高服务质量是网络资源管理的主要目标之一。
      值得一提的是,由于添加了FE过程,ML方法能够处理加密通信。通常,从IP流中提取的特征不会侵入包内容,这允许为加密通信创建分类模型。然而,这种方法在使用HTTP2、VPNs和NAT网络时可能会遇到问题,因为通信会话的分离并不明确。
      总之,在图1中值得注意的是,大多数业务分类工作集中于并应用到不同的需求,例如检测应用协议、类别或异常。为了实现流量分类,可以使用前面讨论过的技术;但是,本文只扩展了ML分支。在这一分支中,我们将研究一些尝试实现不同流量分类目标的工作。

    III. 方法

      本调查报告与所参考的调查报告在介绍工作的方式上有所不同。主要按照第II-A节中定义的顺序组织,这些程序主要解决流量分类问题。在本节中,将按照图2中提出的工作流程,详细介绍调查论文的方法。在此图中,对可以离线(绿色箭头)和在线(黄色箭头)方式执行的块进行了区分。

    图2 机器学习流量分类工作流程综述

      一般来说,离线过程处理数据采集块存储在网络中的一个或多个监测点的历史数据集。数据收集步骤允许测试Internet中的不同场景。此部分主要在一个时间窗口内收集IP流。此外,该部分还包含若干步骤,例如包管理流重建存储。在第IV节中,将回顾与此步骤相关的工作。在离线运行中,必须收集历史数据集;相反,在在线运行中,数据包流被连续地处理。一旦记录了表征问题的数据,就按照第V节中的方法提取相关特征。同样,在在线和离线阶段,分别从历史数据集和分组流计算特征。此时,可以通过FS或FR方法来处理生成的特征,以获得缩减的空间或一组新特征。最常见的过程和工作在第VI节中进行了报告。FR或FS过程还与算法选择和模型部署块有关,因为有些方法根据ML模型给出的性能来选择最相关的特性。
      现在,从原始数据集中,基于所选特征获取新的数据集。在离线运行中,新的数据集用于构建模型,以便执行分类和回归任务等。算法选择部分是指选择最合适的ML算法的过程和方法。正如第VII节所指出的,一些研究采用了不同的比较方法来证明或验证它们的选择。最后,模型构建部分集中于参考文献中为实现这些模型所做的努力。最后两个部分也可以在线评估,主要是为了提供不断发展或升级的ML解决方案。还必须指出的是,此工作流表示一个指南,其中包含使用ML进行流量分类的一般步骤。但是,这些步骤的顺序可能会有所不同,也可以找到组合的步骤。
      更简明地说,从图2中的每个块中提取特定特征。这些特性在图3中详细说明,图3为参考的论文通常遵循的用于流量分类的一些路径。在该图中,可以注意到,对于数据收集块,将研究互联网流量是否为:真实或模拟、公开可用、加密和标记(基本真实)。这些方面对于描述这个问题将变得非常重要。特征工程模块包括参考论文使用的FE和FS方法。从这个意义上讲,四种特征提取方法被认为是最常见的方法,如基于统计的方法STA-TsB基于图的方法graph基于时间序列的方法混合方法。在FS块中,它将表示参考论文是否进行了该过程。接下来,对于算法选择块,定义了使用的ML方法和要实现的目标。研究的趋势有经典分类CClass多分类集成方法MClass&E分类与异常检测聚类Clust混合与先进技术H&A。研究的分类目标包括应用名称(AppN)应用类别AppC异常检测AD。此外,还考虑了其他目标,如用户行为检测社区搜索等。最后,在模型部署块中,区分了实现ML解决方案(YES)的论文和没有实现ML解决方案或没有指定ML解决方案(NNS)的论文。解决方案的重新配置将是研究的一个关键方面,从这个意义上说,如果参考论文提供了再训练(RTraining)、自学或进化(SLE)或其他/非指定(ONS)过程,则将得到验证。
      论文检索是在最重要的学术数据库上进行的。所选文档在标题、摘要或关键字上都有,例如“流量监视”、“流量分析”、“Internet分类”和“加密流量分类”等术语。这些论文发表于2010年至2017年之间,它们位于学术数据库中,如ScienceDirect、ACM、IEEE Xplore和Scopus。必须注意的是,同样考虑了会议记录和期刊的工作。

    图3 将在每个部分中论述的最重要的工作流

    IV.数据收集

      传统上,历史数据是构建ML解决方案的重要知识来源。一组对于问题丰富而完整的观察结果可以提高ML模型的性能和泛化能力。然而,在流量分类领域,这一方面是至关重要的,因为:互联网网络的复杂性和可扩展性,流量的不断演变,以及不允许数据收集的隐私策略等等。因此,真实的网络流量数据很难用于分析和知识提取。已经开发了一些工具和策略来解决这一差距,本节将对其中一些工具和策略进行研究。
      数据收集过程的总体结构如图4所示。在这个图中,按照以下顺序给出了三个层次的抽象:

    • 由触发流量的条件定义的网络环境,例如真实的、生成的或模拟的。
    • 因特网网络本身。
    • 数据测量过程,指如何收集网络包。

      本节讨论的主要问题有助于找到良好流量分类结果的组件。首先,在第IV-A节中,对用于监视通信量的网络环境进行了区分。随后,在第IV-B节中,将讨论数据测量程序。此过程与所采用的环境无关,并考虑了包提取流重建存储等步骤。最后,第IV-C节将概述用流量的真实值标记网络流的重要性。

    图4 流量分类的主要数据收集组件

    A. 网络环境

      需要注意的是,在综述的论文中发现了三个主要的趋势:真实流量采集流量生成和仿真。实际流量通常从网络收集,混淆通信实体(如客户机服务器)之间的私有信息。流量生成试图通过脚本复制或建模真实交互来模拟类似的真实流量条件。最后,流量仿真的目标是将场景设置为与真实场景尽可能接近,其中一个或多个参与者可以有意地模拟网络中的常见交互。
      最佳解决方案是从网络中捕获真实的流量,以便获得可靠的真实数据源;但是,此解决方案很难执行,主要是由于隐私问题。尽管一些工作设法获得了监测网络流的实际条件,但这些数据几乎从未向研究界公开。附录A列出了一些公开的数据。
      流量生成解决方案主要用于评估网络设备性能、通信安全性、资源管理等。在文献中可以找到几种流量生成方法,其策略主要分为:基于流量的生成基于模型的生成。基于流的生成是为了重现在真实场景中捕获的流的内容和到达时间,包的内容由虚拟的或随机的有效载荷给出,用于技术测试。一些基于流的生成工具包括BRUTE[62]、iPerf[63]和Ostinato[64]等。例如,BRUTE被设计为生成以太网通信量IPv4或IPv6。Ipref通过调整时间、协议和缓冲区等参数来测量IP网络上可达到的最大带宽。以同样的方式,Ostinato工具可以以不同的速率生成具有不同协议的通信量。相比之下,基于模型的流量生成方法试图再现真实流量的统计特性,并将其表示为一个模型,该模型随后将生成用于实验测试的流量。例如,[65]通过训练隐马尔可夫模型(HMM)生成客户机工作负载。该模型是在网络试验环境中用真实的人与人之间的交互建立起来的,其主要目的是通过操作系统向每个应用程序发送一系列事件,以创建合成数据。训练数据由事件ID、进程IP和事件之间的到达时间组成。最后,该模型可以注入真实的客户机-服务器交互来创建合成的流量数据。此外,基于模型的生成可以在包级别而不是应用级别执行;例如,[66]提出了一种用于包时间和包大小的合成序列生成的HMM。[67]中的工作回顾了一些最流行的流量生成工具,并提出了一个综合工作负载生成器,它可以用作放置流和基于模型的生成方法的平台。这些工具的一个限制是,它们通常不能生成加密的通信量。加密流量覆盖了当前互联网流量的很大一部分,因此对其进行分析时必须考虑其集合。
      另一种建模通信行为的方法是基于网络仿真系统。仿真网络环境涉及在两个或多个端点之间构建通信配置。一般的架构是在不同的虚拟机或物理机上设置多个客户机,为每个客户机配置监视点,并设置数据存储组件。为了记录向后和向上的IP流,可以引发产生通信量。[68]-[71]中的工作介绍了流量仿真框架,这些工具是公开的,需要根据感兴趣的流量分类进行调整。[68]提出了一种基于用户行为自动仿真的网络流量仿真框架。模拟了几个场景,这些场景代表了用户与应用程序交互的一系列操作;这是通过一个为Microsoft Windows程序创建自动化脚本或宏的工具实现的。类似地,[69]和[70]中的工作模拟记录图形用户界面的用户行为,以生成因特网流量。与流量生成方法相比,流量仿真可以覆盖使用加密或流量封装的应用程序;此功能对于使用ML的流量分类是可取的。

    B. 数据测量

      在本节中,将介绍在Internet网络上执行数据测量的常用方法。此外,如何在监测点进行流量观测。考虑这两个方面是为了更容易地理解如何执行标注任务,以及如何在实际网络环境中实现ML解决方案。通常,网络流量监控最常用的策略之一是在一个时间窗口内提取一组数据包;这种方法是参考文献中使用最多的,本节将对此进行研究。
      设置好网络流量环境之后,接下来要解决的问题是如何导出数据包、构造IP流和标记这些流的应用程序名称(如果需要),以便最终存储或使用这些数据。[72]提出了使用NetFlowIPFIX进行流量提取的综合程序。这项工作将数据测量的步骤定义为:i)数据包捕获,ii)流量测量和输出,以及iii)数据收集。包捕获步骤是指从监测点提取二进制数据的过程,在该步骤中,每个包被视为单个独立实体。在此阶段要考虑的关键方面是样本的大小采样时间[73]。接下来,流量统计过程旨在将分组聚合为第II-B1节中定义的流。当认为流达到顶点时,即通信完成时,就会发生导出过程。统计和导出过程相互关联,可以统一。最后,数据收集是存储导出的流。引用[72]中相同的工作,对于使用ML的流量分类,可能只需要一个额外的组件,这就是标注任务。此附加组件通常放在流量分类步骤中,其目的是定义每个流的应用程序名称,或丰富知识库所需的任何其他标识符,特别是对于受监督的ML技术。标注任务的重要性将在第IV-C节中讨论。
      关于数据测量步骤,有几项工作试图分别改进它们各自的不足之处。例如,[73]提出了一种分组抽样技术的分类方法,旨在根据要实现的目标给出选择最合适方法的指导原则。文献[74]中的工作介绍了运行在商用硬件上的包捕获引擎,这些引擎有助于减少流量分类中的时间响应。使用商用硬件,[75]和[76]实现了包捕获。
      监控点的流量观测从数据包捕获开始。在这个组件中,涉及采样过滤过程。这些包通过统计过程聚合成流,稍后导出以供使用。收集到的流可以存储以供进一步分析或直接由系统分析器使用。流量监控的一些实现见文献。[77]中的工作显示了在工业网络上的实现,而[78],[79]将其应用于家庭网络。[80]中的工作展示了包捕获(Tcpdumb、Wireshark等)流量测量(nProbe、YAF、QoF等)数据收集(nProbe、flowd、nfdumb等)的流行网络监视方法的最常见实现。
      流量观测的主要挑战之一是实时捕获数据包。涉及大量高速数据。为了处理流式数据,采用了经典的基于批处理的方法;但是,这些方法在关键环境(如多媒体监控[81]或网络威胁)中不能提供快速响应。传统上,基于批处理的方法是在流量统计和输出块之后部署的。它的主要目的是管理和存储导出的流,通常以时间间隔批处理到二进制文件(例如,pcap文件)中。基于批处理的方法必须满足一定的数据处理速度和容错性等要求。在基于流的方法中,前者的要求必须满足更为迫切的要求,特别是数据处理速度。例如,在[82]中的工作以流的方式分析流量观测过程,以减少用于流量分类的延迟。作者提出了一种使用消息传递系统分发导出流的工作流。IP流被转换为数据序列化格式。选定的数据序列化格式是二进制JavaScript对象表示法(BSON)。最终的目标是提供一个比基于批处理的方法更高效的分布式数据系统。[83]中的工作评估了一个最常用的用于流量监视的分布式流处理系统的性能。作者提出了一个体系结构基准,可公开用于诸如task之类的任务。同一作者将这项工作扩展到比较三个流处理系统,以找到每个系统对于实时网络流处理的适用性[83]。

    C. 标注任务

      标注任务过程是指为每个流设置一个标识符;该标识符与通信会话中的特定模式相关,例如应用程序的名称或类型。由于跟踪属于特定应用的流的复杂性,将真实信息与流量轨迹相关联可能是一项繁琐的任务;此外,此过程也是验证流量分类器的关键任务。就我们所知,很少有工作实现可靠的真实值标注,因为最常见的方法是使用DPI工具来完成此类任务。例如,[84]中的工作提出了一个工具,该工具能够通过使用套接过程为每个流建立标签。然而,这个解决方案也使用了DPI工具。
      在给定网络环境和数据测量过程的情况下,标注任务可以通过仿真或生成系统来建立。仿真和生成系统是受控制的环境;从这个意义上说,它知道触发的通信量的类型,并且可以将它与收集的流相匹配记录。因此,标注过程可以在监视过程运行时执行,也可以在流量分类系统中自行执行。对于真正的流量监视,DPI或基于端口的工具仍然用于此任务。然而,已经证明,这些技术在未来的分析中增加分析的不确定性和误差,特别是相对于ML技术来说。参考文献[85]量化了使用端口分析和DPI工具将协议标签与流关联时获得的误差。研究表明,端口分析仅对一组协议是准确的;而DPI工具提供了更好的结果。作者通过实验证明,对于P2P流量,DPI工具的失败率超过14%,对于TCP和流媒体应用上的Skype,DPI工具几乎失灵100%。尽管如此,在这个问题上可以找到不同的观点。例如,由[86]所做的研究显示了几个DPI工具之间的性能比较,在大多数情况下,真实标签和DPI标签结果之间的误差很低。重要的是要考虑到,在所有这些比较中,所使用的数据对结果有重大影响;以及DPI工具的版本和进行研究的年份同样有很大的影响。一般来说,流量跟踪显示出通信模式的飞速增加,促使流量分类器(如DPI)不断升级其引擎。此外,DPI工具在存在加密流量时是不准确的,这种情况使得它们非常不适合标注任务。
      一些工作试图提出正确定义真实标签的策略或架构。[87]中的工作评估了以恶意检测为重点的最常用的流量数据测量方法,并提出了一种半人工实践来定义真实标签。此外,出现了支持流量监控和标记的不同工具,如Tsat[88]基于志愿者的系统[89]等。此外,[90]提出了一种大规模网络监控和分析的框架,称为DBStream,它是网络监控数据的数据仓库,能够处理来自各种来源的数据流。最后,为了保留基于用户行为的语义关系,本文提出了一种新的事件流标记策略[91]。

    D. 讨论

      作为本节要完成的最重要的方面,我们可以提出一些建议,并强调未来的以下工作。

    • 由于第IV-A节之前讨论的原因,很难在网络上实现真实世界的测量和测试。因此,建议设置一个模拟网络,这可能有助于再现当前的应用程序和用户行为。此外,它还可以作为设置流量分类解决方案的测试平台。
    • 流量生成解决方案可能有助于创建合成数据,并减少数据收集的实验测试数量。因此,从模拟网络捕获的跟踪和来自流量生成器工具的跟踪之间的组合可能会提供大量的网络流量数据。
    • 模拟网络或流量生成解决方案也必须以与网络演进相同的速度移动。为了完成这项任务,需要制定升级战略。例如,半监督或增量学习技术可以向数据收集步骤提供关于新模式或异常的信息。
    • 为了制定流量监控策略,有必要研究网络所需的信息。为了从观测点获得快速可靠的数据测量,资源和时间消耗最小化是关键的因素。根据要实现的目标或所选择的FE过程,要测量的数据可以是一组数据包、只有数据包的报头,或者只有与它们相关的事件等等(参见第V节)。
    • 为收集的数据建立标记机制很重要。具体来说,不管对于有监督还是无监督,这都是一个非常重要的过程。考虑到其优缺点,必须依赖一项可靠的策略。

    V. 特征提取

      这一部分定义一些ML中的FE方法,研究了四组主要的FE程序。这项研究将使我们对每种方法进行概述性的讨论,并指导读者选择最方便的方法。在参考论文中发现了三个主要的组:基于统计的特征基于图形的特征基于时间序列的特征,这将在下一节中介绍;此外,第V-D节涵盖了一些杂项和混合方法。有关更详细的研究,请参阅[92]中的工作,其中从协议、包和流级别详细说明了数据构造、FE和FR的过程。此外,在[93]中的工作提出了特征提取的自动过程。尽管在[93]中提出的工作主要集中在检测隧道连接,但它提供了一个逻辑工作流程,用于提取和处理流程以获得特征,这可以被ML技术使用。

    A. 基于统计的特征

      从分组流中提取的特征主要是基于统计的特征,这些特征是在假设网络层的业务具有对于特定类型的应用来说是唯一的统计特性(例如流持续时间流空闲时间分组到达间隔时间分组长度的分布)的情况下定义的,可以使不同的源应用程序相互区别。在这种假设下,[94]提出了249个统计特征,这些特征可以从流量网络流量中提取出来。
      诸如到达间隔时间(IAT)分组长度等属性似乎是考虑的最重要的特征,它们的度量标准包括最大、最小、平均和标准偏差等。此外,从a到b(反之亦然)发送的包的数量、控制包以及作为传输协议的包头中的一些其他属性可用于对通信网络建模。
      如第IX节所述,大多数参考论文都倾向于基于统计的特征。在实践中,由于其简单性,很大程度上使用IP流的统计特征。基于统计特征的流量特性已经得到了大量的报道和论证。例如,对于异常检测,[92]列出了单向流和双向流的所有经典统计特征以及内容类型。[10]提出了一个类似的工作,从流和包级别来标记FE方法。
      文献[95]对统计特征进行了全面的研究。作者对10个分类器进行了测试,结果表明这些特征使分类器获得了良好的性能。另一方面,[96]表明,仅通过会话中的数据包计数和字节交换就足以识别某些应用程序,特别是P2P应用程序。
      文[97]研究了TCP连接中数据包重传引起的异常。包重传可以改变包序列,因此,无法基于统计的方法来执行准确的分类。作者提出了一种丢弃重传数据包、检测和使用原始数据包的系统。
      一般来说,基于统计的特征在这一领域通常是首选的,因为它们的计算简单,这在处理高速通信时非常重要。此外,这种方法不会侵入数据包内容,允许在尊重隐私的同时对非加密和加密的通信均可用。

    B. 基于图形的特征

      Internet网络的内在组成允许将其交互建模或表示为大型互连图。因此,该方法利用图论从网络中寻找有价值的信息。假设节点是主机,网络可以看作是一组相互连接的节点,网络的边缘表示主机之间的交互作用。这些交互可以看作是交换数据包的通信会话。通常的步骤是设置一个监视点,例如路由器。通过监视点的分组可以聚合为流。[98]给出了流量分散图(TDG)的构造方法,以及如何找到量化指标来提取信息。在TDG中,所使用的度量通常是图的基数,包括仅具有传入和传出边的节点图的对称性连通性以及节点的平均度等。这些度量用于训练分类器,该分类器将应用程序分组为协作或不协作。另一方面,为了比较两个或两个以上的TDG,作者提出计算图的相对包含度边相似度边波动率。这些度量用于检测应用程序,如游戏和DNS。
      从另一个角度来看,这些图可以用来表示网络中的流量活动。例如,[59]中的工作展示了流量活动图(标记)来揭示主机之间的行为。与前面的情况一样,节点可以被视为主机,而边缘是打开会话中的流。可以找到不同的变体来创建边之间的链接;例如,在[58]中的工作提出了将边作为一对IP和端口,这是由可以为P2P通信打开多个端口的应用程序行为驱动的。
      统计图分解技术被广泛应用于这些方法中以提取最主要的子图。例如,非负矩阵因式分解(NMF)正交非负矩阵三因式分解(tNMF)旨在提取支配子结构并表征其结构性质,以分析网络应用。利用这些结构特性,应用K-均值来发现不同的应用行为[60]。
      总之,这种方法的主要目的是通过图表示来建模应用程序行为,并试图发现Internet网络图之间的相似性。这些相似性将允许将图形分组到应用程序池中。这种相似性可以基于不同的特征;提取的最常见特征是图的结构属性图的连通性度量和基于社区的特征,例如连通良好的图之间的密度或相似性[99]、[100]。

    C. 基于时间序列的特征

      一般来说,时间序列数据可以看作是按时间顺序索引的事件序列。从这个意义上说,FE通常是在离散时间数据上执行的。
      网络流量问题具有适合作为事件驱动问题处理的特点。一对(例如,客户机-服务器)之间的交互强烈依赖于按时间顺序排列的事件,例如打开或关闭通信会话、启动或完成数据传输等。这样的场景促使我们使用时间序列特性或数据驱动的方法来发现网络中的模式。
      在这个领域中,大多数基于时间的方法都试图找出到达时间(IATs)和属于流的包大小之间的关系,以便通过时间序列表示来描述应用程序模式。例如,[101]中的工作提出了单向流的时间活动向量,该向量考虑了流的活动时间、流是否显示活动等特征。此外,可以发现其他不同的方法意图使用网络的时间行为,例如[102]。
      特别地,信号处理方法可用于将时域输入转换为频域输入。其主要目的是获得信号数据的等效幅度相位,以揭示可用于流量分类的新特征。例如,在[103]中的工作提出了一种用基于傅里叶的方法检测异常的方法,对于这种情况,在一段时间内发送和接收的包被分析为时间序列输入。类似地,[104]基于小波导频(WL)技术处理FE过程。在时间窗中将双向流转换成传输字节数的时间序列,然后利用WL获得多重分形特征。多重分形表示是指一种空间或时间域的统计尺度,其主要目的是描述特征的不规则或碎片形状,以及传统欧氏几何无法分析的其他复杂对象。
      通常,传统上这种FE并不是应用于流量分类;然而,这些特征被广泛用于识别异常,如[10]所述。

    D. 其他方法及混合方法

      下面的分类提到了发现的一些方法,但是,还有其他有趣的方法来进行特征提取。这些方法试图结合或提出更适合分类问题的新特征。例如,Bag-of-Flows(bof)源于基于统计的方法,它只在构建双向流的方式上有所不同。BoFs包括由同一应用程序注入的一组流量。BoF可以定义为一组共享同一目的地和源IP的流,这些流表示连接的已打开端口的变化。这种行为常见于通信会话中。BoFs计算了所有流量的统计特征。用所有的流训练ML模型,每个包都有一个通过一些标准定义的标签;例如,标签在包中的出现率很高。对于新的传入流,使用ML模型获取类标签;跟踪流可以与bof关联。一些工作已经测试了使用bof来提高使用ML分类和聚类方法的性能的优势[105]–[107]。
      另一方面,基于统计的特征可以与基于图形的特征相结合,以获得更好的分类性能,如[57]中在流量分类框架中提出的,以及[54]中在异常检测中提出的。
      研究包从源发送到目的地的顺序、序列和时间,可能有助于用基于时间和事件的方法描述具有相关行为的应用程序。例如,[108]中的工作仅使用序列包间时间和有效载荷大小来构建流的序列作为分类模型的输入特征。另一方面,[109]为他们的工作提供了时间序列和基于统计的特征。时间序列特征是通过应用程序的句法结构获得的。句法结构用有限状态机表示。其主要目的是根据机器状态来模拟流的分组序列,包括分组长度和分组方向(向前和向后)。

    E. 讨论

      本节实质上介绍了所参考的FE方法的综合,并对其进行了定性描述和比较,并简要讨论了未来的发展方向。

    1. 比较:表1总结了本节研究的FE趋势。此外,还对它们的优缺点进行了评述,并介绍了应用这些方法进行流量分类的一些工作。从表中可以看出,基于统计的特征是流量分类中使用最多的特征。此外,它们适合处理加密和未加密的通信量。
    2. 指导方针和未来趋势:总结一下,有可能为FE找到不同的分类,这主要取决于要实现的目标。在这个意义上,我们概述了一些关于FE过程的研究。
      • 必须根据要实现的目标和选择的ML方法来定义FE过程,还必须考虑计算和响应时间。
      • 可以考虑计算更好的特征,以防止错误分类和类不平衡行为。例如,在基于统计的方法中,可以考虑其他指标,例如均值和方差计算的变化(例如移动平均值[150])。
      • 可以提出混合FE方法,以更好地描述该过程。例如,统计特征包括基于时间的行为和IATs统计。此外,研究基于时间和事件的行为似乎是该领域开发的一种逻辑方法。
    表1 特征提取过程总结表及相关论文

    VI. 特征降维与选择

      当给出大量特征时,ML模型可能会有一些问题。由于增加计算负担、降低精度、增加过拟合等,这些模型会被修剪。这些问题通常与维度诅咒有关。在这一领域中,FS被广泛应用于选择最相关的特征,提高ML模型的精度。ML进程可能会也可能不会与FR或FS进程一起运算。一些研究表明,要完全获得区分应用程序与其他应用程序的模式,只需要少量的特征。文献[151]-[153]研究了流量分类中最相关的统计特征。在[152]中,使用了几种FS技术来获得最重要的特征,采用一种新的方法选择最小的特征集。将结果与三个数据集中每个特征的优化度、相似性和稳定性交叉验证;结果给出一个小的数据集,在6到14个统计特征之间,通过精度提供最佳的测量性能。
      文献[152]研究了FS和FR在利用ML进行流量分类中的重要性。使用了10个网络流量数据集来说明不同的FS技术的优缺点,如信息增益增益比主成分分析PCA基于相关的特征选择等。作者提出了三种新的度量方法来度量结果特征的性能。这些度量基于分类器的准确性、每次测试结果在不同条件下的稳定性以及FS和FR技术给出的特征集之间的相似性。结果表明,这些新的度量方法都不能提供良好的性能,因此,提出了一种将FS和FR解决方案相结合的新方法。在文献[153]中,前一项研究通过一个称为全局优化方法GOA的优化过程来估计最优和稳定的特征。GOA结合了多个著名的FS技术,在不同的流量数据集中产生一个可能的最优特征子集;然后最优熵阈值将选择稳定的特征。
      数据中的多类不平衡行为通常出现在流量分类中。从这个意义上说,[143]中的工作再使用ML进行流量分类时研究到了这个问题。作者提出用基于熵测度的度量为每一类选择一组特征。类最相关的特征是那些高于预定义阈值的特征的值,特征子集被发送到集成分类器。类似地,[154]提出了一种新的FS方法,其目的是获得最相关的特征,同时减少多类不平衡。文献[155]提出了一种能够区分最相关和不相关特征的模型。该模型是基于具有代表性的深结构深度信任网络DBNs的。DBN设计的一个主要特点是可以从第一层获得高层特征表示,而到最新的底层特征表示。这一特性使得它们适合于本研究所报道的特征生成。

    A. 讨论

      由于网络的动态性,流量数据会从一个数据集影响到另一个数据集,影响有多个方面,其中性能是最重要的一个方面。因此,我们可以得出以下研究:

    • 在ML中使用最重要的特性会影响运行时响应,提高分类器性能和训练和重新训练过程的复杂性,并丢弃数据中的冗余。从这个意义上讲,建议总是使用FS或FR方法对提取的特征进行先前的研究。这个过程还可以帮助处理类不平衡和丢弃不重要的特性。
    • 一种有趣的开发方法是动态选择功能。在这种情况下,FS流程应该适应当前流程的情况。因此,可以根据一组准则选择最合适的特征;例如,为类提供更高熵或信息增益的特征。
    • 此外,以无监督的方式确定为ML问题提供更多信息的特性是一项具有挑战性的任务。该方法将有助于找到一种更适合于根据当前状态动态选择特征的算法。

    VII. 算法选择

      在这个领域,使用各种ML算法实现不同的解决方案是很常见的。由于ML算法数量众多,在流量分类中寻找最合适的ML算法是非常重要的。特别是,大多数的工作都是基于建立和测试几个模型,直到找到性能最高的模型。在本节中,我们将详细介绍所选的工作,以概述在选择ML算法时所面临的挑战。
      在回顾的过程中,我们会注意到,这些研究的重点是要实现的特定目标:识别应用程序的类型、协议应用程序、异常或隧道连接。读者会注意到,大多数论文的目的是执行分类任务(见第VII-A节)。此外,第VII-B节介绍了使用多分类和集成方法的具体工作。此外,一些论文在第VII-C节中以无监督的方式处理分类问题。最后,第VII-D节将研究混合和高级方法。
      值得注意的是,处理未加密和加密跟踪通常单独描述。这种区别通常是由于未加密通信量的行为可能与加密通信量的行为不同,这是出于使用不同通信协议的动机。然而,在本节中,主要是从ML的角度研究流量分类问题。因此,本文重点介绍了所选择的ML算法,并在第VII-E节中对加密和未加密业务进行了明确的分离。

    A. 经典分类法

      有监督算法常常采用标记的数据进行训练以选择最佳的模型,进而得到衡量分类性能的模型。例如,对于未加密的流量,[95]和[117]中的工作给出了使用统计特征的几个分类器之间的比较。使用分类准确度和计算成本进行了比较。在给定各种数据集的情况下,不同的分类器给出了最佳性能;一般来说,考虑到数据集的某些特性,可以找到比其他分类器表现更好的分类器。ML算法的模型结构和学习过程更适合于某一类问题。
      [123]中的工作面向应用程序类别(视频流、VoIP等)以提高QoS。在不同的数据采集条件下(如丢包和高或低延迟)进行了一些实验。计算了几个性能指标,评估出了性能最好的分类器。这项工作中指出的一个主要原因是类不平衡的存在;此外,互联网通信的中断对分类器产生了噪音。与网络流量中常见的类失衡行为有关。[126]提出比较有偏和无偏数据训练的支持向量机分类器的结果。与其他类相比,有偏数据包含大量只属于一个类的样本;相反,在无偏数据中,所有类都具有相似数量的样本。结果表明,样本量较低的类别提供了10%以上的假阴性,而在有偏情况下,总体准确度没有显著差异。另一方面,[156]提出用代价敏感学习来解决多类不平衡问题。其思想是计算一个类中错误分类流的代价。这个结果产生一个类似混淆矩阵的结构,它包含了每个类的先验加权概率。根据流量的几何平均值,将权重定义为启发式函数。代价函数有助于在训练具有不平衡数据的树型分类器时获得更好的性能。
      文献[109]将统计特征与时间序列特征相结合,建立了流量分类的隐马尔可夫模型。它们说明了所选应用程序的语法结构,如BitTorrent、Skype和Emule等。结果表明,该方法比一些基于统计的方法具有更高的分类精度;然而,模型的构建需要标记数据,此外在网络中出现新应用时需要再训练。
      对于异常或恶意流量检测,广泛应用的有监督学习基于统计的特征,例如[116]识别Web中常见的公开的威胁,以及[157]比较多个ML模型进行入侵检测。Lalitha和Josna[158]实现了无线传感器网络场景,以捕获特定环境条件下的流量。然后,训练高斯混合模型来检测网络中的正常和异常行为。另一方面,一些工作试图在移动/蜂窝网络中部署分类解决方案。例如,[130]在固定时间窗口中收集从移动网络提取的IP流量。通过计算正常和异常流量的统计特征,训练贝叶斯分类器对海量网络用户的流量行为进行分析。在[136]中的工作收集了一个大型大学校园Wi-Fi控制器的网络轨迹。这些控制器将接入点连接到校园骨干网,允许无线设备访问Internet。跟踪来自恶意和良性域之间的网络流量,并在这些跟踪上计算基于统计的特征。训练一个二进制ML分类器进行检测恶意域名。
      网络上加密流量的激增显然呈指数级增长。公开加密的通信量会引起网络中不同参与者的注意,其方式与未加密的情况相同。此外,监督学习是加密流量最流行的方法。从这个意义上讲,[7]中的工作在理论上比较了创建用于加密流量分类的ML模型的几个工作。在比较中,我们注意到比较这些方法的困难,因为每种方法都使用不同的和私有的数据集,其中大多数数据集的标记过程不清楚。
      可以想象,为未加密的通信量部署的所有方法对于加密的情况都应该有效,特别是在FE过程中不侵入包内容的工作(例如基于统计的)。然而,有可能发现新的加密方法或协议在不同应用程序之间的行为也不同。例如,在[159]中的工作表明,两个加密的应用程序可以使用监督学习进行分类。由于加密通信的性质,在不考虑有效负载信息、IP地址和端口号的情况下,选择了SSH和Skype使用统计特性(如IAT和数据包大小)评估多个分类器。在相同的背景下,Alshamari和Zincir Heywood[111]测试了不同的ML方法来对VoIP加密流量进行分类。他们提出了一种只使用统计特征的特征提取方法。其他方法遵循相同的过程,保持统计特征为公共点,并改变分类器或数据集,例如在[115]中使用朴素贝叶斯,在[114]中使用决策树。
      在参考的论文中发现的一个特殊点是,它们通常集中在一定程度上检测一种加密类型。例如,在[129]中的工作提出了一种两阶段的方法:1)使用签名匹配方法识别安全套接字层协议(SSL)或传输层安全协议(TLS)下的数据流,2)计算统计特征来对这些流中的应用程序进行分类。其中一个不足是签名匹配方法是基于标准的协议规范和文档,或者基于人工观察和分析。
      VoIP通信越来越受欢迎,其识别是电信领域中的一个关键因素,无论是对其进行优先级排序还是对其进行失效处理。因此,提出了几种方法,如[114]、[118]、[128]、[160]和[161]中的工作。其中一些作品试图描述和识别Skype,由于其复杂的通信协议,Skype是网络中最复杂的VoIP应用之一。
      对HTTP2或IPsec连接中的应用程序进行分类非常复杂。例如,[162]-[164]中的工作是用加密的流量数据训练ML分类器。启动了几个应用程序,没有采用VPN,捕获基于统计的特性。随后,对多个ML模型进行训练和测试,得到了满意的结果。另一方面,对于隧道连接,回顾定义2中数据流的特征,并不能应用特征提取过程。当实际中嵌入了更多数据流时,隧道连接被识别为仅一个流。这种情况还没有得到大量的研究,然而,一些工作的目的是首先确定一个隧道连接,如在[93]和[110]。基于ML技术的一种有趣的方法旨在检测HTTP2连接中的拒绝服务(DoS)攻击[112]。作者准备了一个正常流量和攻击流量的网络环境。通过一个特征过程获得数据集,在该过程中计算统计特征,然后通过一个特征降维过程来减小特征空间。最后,对多个分类器进行了二值分类检测。

    B. 多分类和集成方法

      多个分类器的组合可以解决经典分类器在流量分类领域中遇到的泛化问题。这些类型的解决方案旨在创建更专业的分类器。例如,[149]提供了几个ML模型的组合,以获得更好的性能。使用相同的数据对多个分类器(两个基于树的、一个基于规则的、两个基于统计的和支持向量机)进行训练;此外,还包括一个DPI工具作为分类器。所有的分类器都对新输入进行评价,并采用最大似然法DempsterShafer法Enhanced DempsterShafer法perfect combination法等组合方法对结果进行整理分析。例如,在最大似然组合中,所有分类器对一个类进行投票,投票最多的类是输出。文献[165]中的工作比较了七种基于决策树的集成算法的性能。研究表明,大多数集成算法在性能上克服了经典的单分类器方法。实验中发现的主要缺陷是模型训练和在线分类的时间开销。[121]中的工作建议计算特征提取过程并将其划分为子集;该过程应用于三个不同的案例研究。这些情况与原始数据集不同,例如有或没有零负载数据包。对每种情况计算统计特征,并训练专用分类器。另一方面,在[143]中的工作通过FS过程定义了多个特征子集;每个特征子集是关于特定的应用协议类定义的。对每个子集训练一个分类器,并通过投票过程给出输出。在这项工作中,我们认为相关的特性可能会因类别而异,以及在类别不平衡资料的存在下,它会如何影响分类器的效能。

    C. 聚类分类与异常检测

      无监督方法通常与异常检测相关,因为它能够检测与正常或标准条件不相似的模式;而且还可以执行分类任务。从这个意义上说,聚类技术在网络流量分类中得到了广泛的应用。本节致力于将无监督学习应用于互联网流量分类的工作。
      利用无监督学习对网络流量进行分类的最常用方法之一是K均值法,它根据样本与聚类中心的相似性建立K个聚类。在[106]中的工作使用K均值和流的几个属性进行网络分类。在[140]中,改进了使用K均值时簇的经典随机初始化。初始簇由流属性之间的方差定义。在构建集群之后,使用概率分配来执行映射集群应用程序。最大似然估计标记样本对K个聚类的隶属度。这种方法的一个主要缺陷是必须预先定义集群K的数量,将解决方案绑定到固定数量的标签上。此外,不考虑噪声样本和新标签。
      对于加密流量,[145]中的工作使用K均值模型来识别HTTPS连接中的加密视频流,获得了良好的平均精度。在不同的比特率下提取数据集,以证明在不同的场景下(IATs的变化)分类器的性能。类似地,[166]中的工作使用K均值来识别P2P流量。在[167]和[168]中给出了无监督技术之间的一些比较,这反过来可以提供在面对未标记的加密流量时使用的方法的见解。最后,由于类的真实标签是未知的,必须为使用聚类技术部署足够的指导。例如,[169]提出了一个框架,该框架允许无监督方法考虑类的真实标签来进行流量分类。

    D. 混合和先进的技术

      在本节中,将介绍一些使用混合半监督新方法进行流量分类的工作。
      首先,有一些方法将有监督无监督学习相结合,采用两阶段过程对网络流量进行分类。第一阶段负责对同一类型的流量类(如视频流、P2P torrent等)进行聚类,第二阶段使用监督模型对应用(Youtube、Neflix等)进行分类。在[137]中的工作提出了一种两阶段的聚类,一个使用统计流特征,另一个使用包有效载荷特征。第三个阶段将两个聚类结果集成起来,创建一个分类器。构建了一个词包(BoWs)模型来表示具有流量统计特征的簇的内容,然后应用潜在语义分析(LSA)来根据其负载内容聚合相似的流量簇。[122]中的工作使用K均值对业务类进行分组,并且通过决策树对应用进行分类,以便为结果提供更大的粒度。类似地,文献[113]提出了一种结合K均值和KNN的混合算法,用于对加密流量进行在线分类。该组合是一个两阶段的过程,其中K-means在实时嵌入式环境中对流量进行集群。通过一种基于缓存的机制来评估性能,该机制结合了基于端口和基于统计的分类元素。
      此外,还使用了更专门的算法来获得更细粒度的性能。作为一个例子,[120]提出了一种**基于在线序列极值学习机(OS-ELM)**的入侵检测分类系统。使用FS技术的集合丢弃不相关的特征。文献[144]提出了一种Wavelet Kernel Extreme Machine Learnin(WK-EML)和遗传算法(GA)的流量分类方法,并结合统计特征对网络流进行分类。遗传算法允许最优地找到使用WK-EML所需的参数,从而训练模型,而不是使用经典的随机设置方法。
      文献[170]提出了一种识别加密应用的新方法,该方法提出了一种无需显式特征提取过程的流量分类问题。作者没有使用经典的统计特性,而是构建了一个可以从数据包内容中学习的深度学习架构。该方法不像DPI技术那样侵入数据包检查关键字,而是通过深度学习架构来学习每个应用程序的新特性。特征提取过程是嵌入的,这些新特征没有实际意义,而是由深层神经网络发现的二元关系数据。最后一个特征使得它适合于加密的流量,并提出了一种替代基于统计特征的方法。但是,尚未对它与经典FE分析和分类方法的界限进行量化。

    E. 讨论

      这一节的摘要是对论文结果的简要描述。此外,还对未来的发展方向作了简要的讨论。

    1. 比较:表2和表3分别总结了未加密和加密流量的分类方法趋势。对它们的优缺点进行了评述,并介绍了应用这些方法进行流量分类的一些工作。
    2. 指导方针和未来趋势:一些方法是基于以下两种选择算法的:i)以往工作的经验,ii)不同数据集的性能比较,或iii)算法之间的定性优缺点。一些具体结论是:
      • 选择最合适的算法与适合数据高度相关。因此,有必要对ML模型最佳工作的条件以及能够接收的数据类型进行初步研究。人们注意到,一个或多个分类器可能无法概括所有类,这可能是由于历史数据中存在类不平衡造成的。
      • 选择ML方法最常用的方法之一是比较它们的分类性能。选择ML方法最常见的方法之一是通过比较它们的分类性能。此比较通常基于精度度量。然而,更准确的方法是与测量分类器性能的统计显著性的参数和非参数检验进行多重或成对比较[45]。
      • 集成分类器给出的更灵活的解决方案可以在类不平衡数据下提供更精确的结果。此外,集成分类器特征的可变性可以加强解决方案。
      • 非监督方法主要用于异常检测。然而,一个明显的挑战是发现可能由新的簇结构表示的新类。
      • 最后,一个有趣的方法可能支持所有的不足(有关不平衡的类数据,新的应用程序发现和推广)是提出元学习过程进行选择和构建的ML解决方案。
    表2 未加密流量的算法选择趋势汇总表和相关论文
    表3 加密流量的算法选择趋势汇总表和相关论文

    VIII. 模型部署

      本节的主要目的是检查ML解决方案在实际网络场景中的实现和重构尝试。本研究仅以文献为参考。
      在论文中,研究了几种FE、FS和ML方法,这些方法依次构成了对流量进行分类的必要步骤。出现的主要问题是如何将ML解决方案部署到实际场景中。在本文回顾的大部分文章中,没有实现ML解决方案,它们通常展示了概念的证明。然而,上面的一些工作给出了一些关于如何部署ML方法的提示。此外,分析了ML解决方案重构的重要性,它在流量分类任务中起着重要的作用。

    A. 在线实现

      互联网最重要的特点之一,就是传输速率通常很高,网络规模很大。这些主要特性使得分类器的实现工作具有挑战性。最常见的方法是在流量监视工具上部署ML解决方案(参见第IV-B节);因此,每次观察到分组流时,都有可能执行分类。例如,[180]使用支持NetFlow的路由器来监视跟踪,跟踪以在线方式转发到ML分类器。NetFlow是一个Cisco协议,旨在从路由器和交换机导出IP流信息。类似地,dbstream[90]将流量分类解决方案集成到其监控平台中。另一种方法是在独立的分类模块中实现ML解决方案;例如,[133]中的工作将ML解决方案实现到基于现场可编程门阵列(FPGA)的嵌入式系统中。FPGA设备使用网络层的信息,如数据包大小和IATs。
      然而,监控模块可以直接包含分类模型,也可以不直接包含分类模型;捕获的信息可以发送到服务器或业务控制器,在服务器或业务控制器中执行对业务进行分类所需的操作[139]、[158]。[110]中的工作提出了一种使用简单代理服务器的实现。有几个主机连接到此服务器,VoIP和其他流量被注入其中。特别地,VoIP检测算法被放置在代理服务器上以便优先处理该流量。[113]中的工作将其ML解决方案实现到服务控制引擎(SCE)中,SCE是一个Cisco平台,用于基于会话的分类和控制所有网络流量。参考文献[127]提出了一种在网络控制器中实现的QoS感知流量分类框架。该控制器采用软件定义网络(SDN)技术,允许执行监控和流量分类。

    B. 重构

      到目前为止研究的大多数ML解决方案中发现的一个主要问题是,当网络中出现新的模式时,必须更新ML模型。由于网络的动态性,基于ML的分类快速过时。因此,必须考虑到自我学习进化再训练策略。一般来说,对于大多数ML技术,更新意味着使用新的历史数据集(通常被标记)重新训练模型。这意味着在网络上出现新的应用程序或行为时,必须不断地对模型进行重新训练。执行此步骤的成本可能很高;尽管如此,如果不考虑这一点,模型的性能将面临风险。
      在这个问题上,[181]提出了一种用于P2P识别的自学习流量分类器(SLTC)。作者提出了一种被动监测组件在特定链路上观察网络的体系结构。分布式监控组件嵌入了分类器(基于有效载荷检测)。如果这个组件能够正确地对流进行分类,那么它将被标记为已知,否则,流将被发送到逻辑服务器。逻辑服务器负责更精细的操作,以便在监视组件出现故障时识别通信量。此外,逻辑服务器转发策略规则,以向监视组件提供新的行为。需要指出的是,在逻辑服务器中执行的操作基于基于统计的方法、有效负载检查和应用程序分析;但是,可以修改此策略,将其解决方案替换为ML解决方案,为基于ML的联机分类器定义重新训练或更新策略。相比之下,文献[107]提出了一种自学习智能分类器(SLIC)用于流量分类。SLIC的学习过程只需要少量的有标签的流,系统就可以进化成一个新的有无标签数据的配置。SLIC使用BoFs结构,使用KNN将一组流分类到同一组中。首先,用标记样本训练KNN模型。训练完成后,系统可以将未标记的样本标记为新的训练样本,并批量保存。当批处理达到定义的阈值时,激活再训练过程,将新的训练样本引入KNN模型。是否引入新的训练样本取决于预测步骤,在预测步骤中,基于样本与其最近的两个类之间的距离的两个条件将允许做出最终决定。尽管该系统在两个数据集的流量分类方面表现出了良好的性能,但在基于距离的方法容易失败的情况下,可能会出现不平衡或高维数据的问题。此外,应该量化这种方法的计算成本。
      在ML领域,半监督学习可能有助于处理网络特征进化标记数据缺乏的问题。半监督工作流程可以在线方式处理ML模型的更新。例如,[141]提出了一种半监督的流量聚类方法。首先,采用基于集的等价约束高斯混合模型(GMM),并遵循基于期望最大化(EM)的聚类算法。半监督过程是利用边缘信息进行处理的,目的是利用高斯模型建立一组给定约束条件的流。边缘信息原则是基于BoFs定义的。最后,利用集合中的流的经典统计特征将应用协议与EM进行聚类。参考文献[135]也使用半监督方法解决了流量分类问题。支持向量机(SVM)采用协同训练方法,在不同的特征集上训练多个分类器。当历史数据集同时使用标记数据和未标记数据时,使用此方法;其中,考虑未标记数据也可以为模型提供更多的知识。[131]中的工作提出了类似的方法。文献[146]分析了基于时间和基于主机的网络入侵检测特征。该方案基于一种半监督方法,该方法通过带有标记的样本训练分类器。利用该分类器得到未标记数据的隶属度向量。利用隶属度向量得到模糊群,并将模糊群进一步合并到训练集中进行分类器的再训练。

    C. 蜂窝、WiFi和卫星网络中的流量分类

      在本节中,我们将概述流量分类在三个重要网络基础设施中的应用/实现。从这个意义上讲,我们对这些领域中使用ML的IP流量分类进行了简要的分析。
      在蜂窝网络中,可以使用端口分组有效载荷[182]、[183]流统计分布在不同级别执行移动IP业务分类。在这个问题上,当从蜂窝网络跟踪中获得统计属性时,应用ML学习。比如,在一个固定的时间窗口从移动网络中提取收集到IP流量。通过计算正常和异常流量的统计特征,训练贝叶斯分类器对海量网络用户的流量行为进行分析。[184]中的工作提出了一种正确收集和标记移动IP网络轨迹的方法,而[24]中提出了在同一领域中定义标签的分类法。[185]中的工作针对ML解决方案的实现提出了一个从移动网络中正确提取IP流的细粒度过程。在[186]和[187]中可以找到关于这一问题的更多信息。例如,在[186]中的工作公开了蜂窝网络的一般架构,以及可以部署被动监视的可能位置,例如在分组交换(PS)核心中。为此,被动监测点的基于IP的数据可以通过ML分类器按照本调查论文揭示的完整过程进行分析。
      以类似的方式,在WiFi网络中,可以提取IP数据,以便应用ML方法进行流量分类。例如,[136]中的工作从一个大型大学校园的Wi-Fi控制器收集了网络轨迹。这些控制器将接入点连接到校园骨干网,允许无线设备访问Internet。跟踪来自恶意和良性域之间的网络流量,并在这些轨迹上计算基于统计的特征。为检测恶意域,训练了一个二进制ML分类器。类似的方法可以在[158]、[187]和[188]中找到。与蜂窝/移动网络和WiFi网络的区别在于用于数据交换的技术可能会影响速度、成本和安全性。
      最后,在卫星网络中,流量管理是一项关键任务,因为它可以提高服务质量。通常,流量数据是从卫星互联网服务提供商(ISP)获取的。这方面的工作旨在对大型网络中的互联网流量进行分类和分析[189]–[192]。其原理与以往的情况相同,采用被动监测的方式进行流量分类。这些监视点可以位于大型ISP网络的路由器[189]、[190]或存在点(PoP)[191]。另一种新兴的方法是在卫星地面网络中使用软件定义网络(SDNs)。在SDNs中,由于在[193]和[194]中公开了流量分类,因此可以很容易地将其部署在SDN的主控制器中。
      总之,本节介绍了基于ML的流量分类在三个相关的Internet网络基础设施中的可以使用本文提出的方法步骤的可能应用。

    D. 讨论

      最后,就本节内容提出了一些重要的问题和意见。

    • 流量分类解决方案需要ML模型的快速响应和监控过程。在这一领域,衡量整个分类过程所需的有效时间至关重要。通常,Internet通信以毫秒为单位来打开和关闭会话以及传输数据。流量识别过程必须迅速,以便采取相应的行为和验证结果。
    • 通常,在执行模型训练时验证ML解决方案,并且基于第II-A5节中提到的验证技术。为了在联机环境中测量ML解决方案的性能,有必要建立一个提供基本真实应用程序的框架。从这个意义上说,可以计算诸如准确性和F-score之类的度量来确保流量分类的可靠性。
    • 在网络领域使用和实现ML时,一个重要的挑战是解决方案的可扩展性,这是由于Internet网络的规模。
    • 最后,必须部署允许考虑网络动态性的ML解决方案。允许上下文适应(行为或结构适应)的自主体系结构[195]-[197]的开发可以通过使用ML模型来应用。

    IX. 分析

      这项研究主要指出了用ML技术实现知识抽取的一些重要步骤和挑战。所提出的过程包括数据收集、特征工程(FE、FR和FS)、算法选择和模型部署。问题是:哪条路是最好的,或者如何开始寻找相关的参考资料?选择了49篇论文,因为它们在附录A中展示了使用各种流量分类策略的完整过程,展示了前面章节中提到的挑战。图2总结了本次参考的结果。绘制路径是为了了解通常采取的程序趋势。关于图5最重要的注释如下。

    图5 采用ML进行流量分类的论文的趋势

    A. 数据收集部分

      图5中的这一块与第IV节中观察到的特征相关。首先,论文分为两部分:使用真实场景和仿真场景进行流量观测的论文。不考虑流量生成,因为这不是用ML进行流量分类的常用方法。值得注意的是,这两种情况下的论文数量是相似的。接下来,研究数据是否公开。模式与前一个案例相同;但是,大多数有实际流量的论文都使用了公开的数据集,有些在附录A中列出。
      关于加密,我们发现大多数方法在提出到加密案例的映射之前都是从非加密研究开始的。本文的综述主要是对60%的论文进行了非加密数据的整理,其余为加密研究。接着,真实标签通常由DPI工具定义,在DPI工具中很少有论文定义了一个严格的流程来标记流。该模块的一般结论是,趋势是对已知的公共数据使用真实的流量测量,但也要设置网络架构来模拟流量。大多数流量是未加密的,并且通常没有流的真实标签。

    B. 特征工程部分

      本区块由第V和第VI部分构成。考虑的第一个方面是执行的FE的类型,而第二个方面报告是否执行了FS过程。从图5可以注意到,最常见的趋势是使用基于统计的(STATsB)特征的FE过程,之所以预期这种情况,是由于这些特性可以在加密和非加密流量分析之间互换,而且它们不会侵入数据包内容,而且它们的计算量很少。

    C. 算法选择

      在算法选择上,经典分类(CClass)占主导地位,这是意料之中的,因为本研究的重点是流量分类。然而,一些方法在多分类集成方法(MClass&E)方向做了一些努力。最后一个原因是类不平衡泛化问题。此外,还可以发现使用聚类(Clust)和混合改进(H&A)技术进行流量分类的一些努力。在目标实现方面,应用分类(ApPC)和协议(AppN)是常用的搜索方法,而异常检测(AD)也是一个研究热点。其他目标包括检测用户的行为、查找社区和创建用户配置文件等。

    D. 模型部署

      最后,在模型部署块中,关注的是实现该解决方案的论文数量。此外,了解所选论文提出的重构策略也很重要。最后一个很重要,因为网络的持续动态性会导致一些ML方法出现问题。
      从图5可以注意到,超过65%没有指定(NNS)解决方案的实现。以同样的方式,大多数解决方案都不提供重构方法(ONS);尽管有些工作提出了计划的重新训练过程来升级其解决方案。自学习或进化(SLE)在参考的论文中没有发现;然而,这对于一般的ML技术来说是一个具有挑战性的课题。

    E. 特征趋势

      最后,在总结分析的基础上,用红色标出了参考论文中较少采用的方法。从图5中可以注意到,所研究的大多数工作没有使用加密数据,并且标记流量的真实值的过程。在特征工程的过程中,很少有人应用FS来求解。就所使用的ML方法而言,研究得较少的是无监督技术、多分类和集成方法。最后,在模型部署阶段,很少有工作在实际场景中实现该解决方案。此外,重构过程不处理进化或自主重构。鉴于这些情况和前一节的讨论,总结出以下未来趋势。

    • 面向创建ML解决方案的模拟流量体系结构的提出,可以生成加密和未加密的流量,以及可靠的流标记过程
    • 考虑到基于统计的方法的效率,可以探索改进其计算以提供稳健的分类解决方案。在FS的情况下,有效的特征动态选择可以提供更高的分类性能。
    • 在算法选择模块中,未来的发展趋势是采用多分类集成的方法,考虑到Internet数据的特点,这些方法是非常有前途的。
    • 对于ML解决方案,需要更多的实验测试来衡量响应时间和复杂性方面的性能。在这种情况下,有必要提出分布式的、可扩展的ML解决方案,以处理Internet网络的规模。
    • 在模型重构方面,另一种解决方案是采用增量学习的概念,以应对互联网网络的动态性。

    X. 总结

      本文介绍了利用ML技术实现流量分类的一般过程。程序的每个步骤都有一些相关的工作,遵循不同的路径来实现结果。这样,参考的论文被组织起来,每个步骤都定义了每一篇论文所属的类别。这些类别以图形的形式显示,说明了该领域最常见的趋势。每一节都进行了讨论,以确定其最常见的趋势和挑战。
      这项研究试图揭示流量分类领域的几个挑战。例如,使用加密通信量是一项挑战,在没有数据包内容的情况下,特征类型应该导致正确的分类。当前公开标记的数据很少,这使得比较ML解决方案变得很困难。接着,对于ML中的知识提取,分类任务是最流行的。然而,多分类集成方法的优点使得它们在处理流量分类中的类不平衡泛化等问题时具有很强的吸引力。聚类方法有助于发现网络流量中新的或异常的行为,因此,该领域的研究值得推广。最后,这类解决方案的实现仍然是一项需要完成的重要任务,由于影响因素不同,大多与解决方案的性能和适应性有关。
      对于文献中的大多数调查,本综述的不同之处在于,它展示了网络流量分类所需步骤的全貌。此外,还分析了该进程各个阶段的挑战,并概述了未来的方向。总而言之,本书要强调的一些最重要的方向是:

    • 可靠的标签标记,此过程将对ML模型的构建和验证起关键作用。
    • 动态特征选择,这将尝试创建使用给定上下文和目标的最合适特征的自适应模型。
    • 整合元学习过程处理网络数据的不平衡与动态性。
    • ML解决方案的在线重构策略。

    附录A

    本节在表IV中列出了流量分析中最常见的公共可用数据集。

    表4 论文中最常见的公共数据集

    附录B

    表V描述了表征过程的趋势。表VI描述了特征工程过程的趋势。表VII描述了算法选择过程的趋势。表VIII描述了模型建造过程的趋势。

    表5 数据收集阶段选定论文的趋势
    表6 特征工程过程趋势
    表7 算法选择过程趋势
    表8 模型构建趋势

    写在最后,安利一下github地址,收集了一些流量分类领域的论文,欢迎一起交流
    https://github.com/WithHades/network_traffic_classification_paper

    展开全文
  • 机器学习分类下网络流量特征选取.pdf
  • SDN环境下不同机器学习算法的网络流量分类分析.pdf
  • 基于机器学习和深度学习的网络流量分类研究.pdf
  • 基于连接图的互联网流量分类方法能反映主机间的通信行为,具有较高的分类稳定性,但是经验式总结的启发式规则有限,难以获得高分类准确率。研究分析了主机间通信行为模式和BOF方法,从具有相同{目的IP 地址,目的...
  • 基于机器学习的多片FPGA的高速网络流量分类方法设计
  • 基于机器学习的Internet流量分类.pdf
  • 每一行数据由 4 个特征值及一个目标值组成。 4 个特征值分别为:萼片长度、萼片宽度、花瓣长度、花瓣宽度 目标值为三种不同类别的鸢尾花,分别为: Iris Setosa、Iris Versicolour、Iris Virginica 数据集中每朵鸢尾...
  • 基于机器学习的网络流量分类算法.pdf
  • 使用机器学习算法分类P2P流量的方法.pdf
  • 为了系统性分析互联网流量特征,根据统计对象或统计角度研究流量特征的归类法...从分类能力、稳定性、时效性和分类粒度等方面评述流量特征的优缺点,为流量特征应用提供指导性建议;最后总结了流量特征的未来研究方向。
  • 基于机器学习的网络流量分类算法分析研究.pdf
  • 基于DPI和机器学习的网络流量分类方法.pdf
  • 基于安全性分析的特征选择流量分类机器学习方法
  • 基于无监督机器学习的网络流量分类研究综述.pdf
  • SDN中基于机器学习的网络流量分类方法研究.pdf
  • 基于机器学习的P2P流量分类系统设计与实现.pdf
  • 最近被分配了几篇关于机器学习进行流量分类的文章进行阅读,感觉都比较麻瓜。这里简单分享一下。 给大家的建议是尽量读顶会的论文,以达到见贤思齐焉的目的 Comparison of machine-learning algorithms for ...
    最近被分配了几篇关于机器学习进行流量分类的文章进行阅读,感觉都比较麻瓜。这里简单分享一下。
    给大家的建议是尽量读顶会的论文,以达到见贤思齐焉的目的



    1. Comparison of machine-learning algorithms for classification of VPN network traffic flow using time-related features
    2. A SOM and PNN Model for Network Traffic Classification
    3. YouTube performance estimation based on the analysis of encrypted network traffic using machine learning
    第一篇没有具体文章下载位置,这里暂且不提。


    YouTube performance estimation based on the analysis of encrypted network traffic using machine learning

    切入背景
    1、加密流量多。2014年全球互联网流量的67%是视频,预计到2019年,这一份额将增长到80%
    2、通过CDN进行内容分发。通过Google的内容传送网络(CDN)传送。
    如果服务有问题,通常责怪ISP的QoE差。

    方法:根据传输层的网络流量特性来估计QoE
    前人的工作:开发了一种名为BLINC的方法,用于基于应用类别(web,p2p,流媒体,游戏等)对网络流进行分类

    自己的工作 YouQ:
    YouQ服务器包括:
    1)用于创建大量视频ID并存储其元数据的YouTube数据库应用程序(此数据通过YouTube数据API收集);
    2)用于存储测量结果的 FTP服务器;
    3)用于显示实验结果的YouQ Web应用程序;
    4)用于存储应用级KPI和视频元数据的数据库服务器;
    5)用于数据处理的脚本,以及
    6)用于提取网络特征的应用程序。
    :KPI(应用程序停滞事件数,平均停滞时间,某些质量级别上播放时间的百分比等)

    目的:希望监控服务性能并检测潜在客户感知体验质量(QoE)降级

    数据采集

    特征
    组合了一组54个特征,可以分为六类:数据包长度统计,大小以5秒为单位的传输数据,数据包统计,统一时间统计,吞吐量统计和TCP标志计数。特征之后缩减到33.

    分类标准:自己定义的


    实验:实验流程


    为了收集数据,进行了 3​​9次具有不同带宽限制的实验(每个实验涉及多个视频播放)



    结果:采集到的结果。


    把实验得到的结果按照之前的公式标注成 high medium low 。然后利用捕捉到的 流量层面的特征进行分类。



    说明:特征主要有
    吞吐量中位数、平均包大小、平均间隔时间、最小间隔时间、流量通过时间中位数,
    push、时间间隔中位数、初始吞吐量、重复,有效吞吐量



    读后感
    1、加密流量和QoE的关系是什么?这个加密与否对结果造成了影响?
    2、对现有工作的分析比较太弱。仅仅作为背景提及,流量分类有哪些方法?有哪些不足?
    3、实验方法有问题。使用不同的带宽和不同的视频量进行测试,i.e. 第27个实验,0,3的带宽+27个视频,有什么好测试的?
    4、分类方法也没有改进,基本就是算法库套用一下。
    5、结果没有产生新的认识。带宽大,视频少就更容易停滞难道不是共识?
    6、最后回到一个重要问题: 作者的故事是什么?
    用户使用的网络运营商看视频体验差可能导致该网络运营商流失客户。通过被动抓取视频流量预测QoE帮助运营商提高姿势。
    这里 可能值得研究的问题应该是带宽足够的情况下,用户观看视频的体验仍然差,然后分析出为什么会比较差。
    但是这篇文章基本上没有出现这种情况。
    所以最后的结论难道不应该是:建议用户多花钱买更大的带宽?。。。。




    流量分类A SOM and PNN Model for Network Traffic Classification

    背景:目前的网络流量分类方法,无论是基于端口还是基于有效负载的方法,由于许多P2P应用程序使用动态端口号,伪装技术和数据加密来避免检测,因此无效且不准确。

    本文:提出了一种结合SOM( 自组织神经网络:降维)和 PNN的神经网络分类方法,通过使用SOM计算PNN的输入空间维度来提高分类效率,并通过以下方式提高PNN(概率神经网络)的分类精度 保留培训样本的特点。

    目前的网络流量分类方法可以分为四类:( 这个分类确定正交?
    1)基于知名端口分析的方法 不足:动态端口
    2)基于有效载荷分析的方法, 不足:协议加密,数据安全,隐私问题等的挑战
    3)基于流行为特征的方法, 不足效率差(??)
    4)基于机器学习的方法。

    在上述所有这些方法中,基于机器学习的方法是唯一具有前景的方法,而其余方法在精度或效率方面都有缺点。

    PNN通常以两种方式进行训练:
    1)基于预定义网络拓扑的训练;
    2)训练基于数据集中的每个样本。
    前者难以实现,因为它需要丰富的实际操作经验,而后者在大量数据集的情况下在计算上是昂贵的。在本文中,组合SOM和PNN的模型提出了提高训练效率,并以相对低的计算成本实现更好的分类性能。

    数据来源:Moore等人最初描述的数据集 (2005)用于实验。



    The SOM and PNN Model



    模型参数:


    对比单纯用PNN和 SOM+PNN




    读后感
    1、故事背景就很奇怪。还在说动态端口和有效负载的问题,然而,加密流量分类都多少年了?
    2、对流量分类方法的研究很欠缺。分类不正交,前三个是数据特征,最后的机器学习方法。 即便是对比方法,也应该和其他机器学习方法比。
    3、数据集陈旧。
    4、实验方法陈旧。SOM+PNN很早就有相关论文了。
    5、 对照试验设置不合理,对比了SOM+PNN和单纯利用PNN的区别。但还是其他的常见算法如SVM呢? 时间效率呢?


    见不贤而内自省吧,故事一定要讲清楚,之后才是数据、方法、实验。


    展开全文
  • 机器学习已成为加密和实时流量分类的杰出解决方案。 利用网络流量的统计属性。 在本文中,对各种用于网络流量分类的机器/深度学习技术进行了严格评估。 主要目的是研究不同的流量分类方法(有监督,半监督,无监督...
  • 准确的流量分类是解决网络拥塞、网络安全监管、流量计费等研究的基础。为了解决在线混合流 量 (加密与非加密) 一次性快速分类问题,本文结合传统特征提取和载荷特征提取的优点,提出五 元组加载荷 ASCII 出现频次的...
  • 网络协议流不平衡环境下基于机器学习算法的在线流量分类方法.pdf
  • 使用机器学习算法对流量分类的尝试——基于样本分类 Hochikong • 16-07-06 • 115 人围观 导言 机器学习方法目前可以分为5个流派,分别是符号主义,联结主义,进化主义,贝叶斯和...
    使用机器学习算法对流量分类的尝试——基于样本分类

    导言

    机器学习方法目前可以分为5个流派,分别是符号主义,联结主义,进化主义,贝叶斯和Analogzier。具体到实例有联结主义的神经网络,进化主义的遗传算法,贝叶斯的朴素贝叶斯(Naive Bayes)等等。

    机器学习算法又可以分为多种类别,比如监督学习,无监督学习等。前者需要提供样本先进行训练。而无监督学习一般是针对没有标签的数据或者靠人力难以为数据打上标签的情况。例子:人脸识别。人与人之间会存在很多相似之处,比如各位明星的本体和模仿者,因为相似性是难以定义的,所以需要无监督学习进行聚类(clustering)。

    在IDS系统中,为了阻止入侵,常见的方法有流量识别,DPI(深度数据包检测)等。本文的目的在于探索机器学习技术在流量分类上的应用,文中我采取了一些比较简单的例子来做实验。

    在这个实验中,流量分类并不是单纯地针对每一个抓包结果进行分类,本文的目的是从关键的抓包结果来判断应用类别。因为这是离线分析,因此不探讨如何找到那些关键包。

    在GFW中,似乎对于某些VPN应用的流量特征进行了学习,实际上只要识别加密流量是何种应用,就有办法实现干预。IDS也一样,只要能识别流量的特征,就可以在一定程度上阻止攻击。

    很多机器学习算法都是基于概率论。在这个实验中,根据实验的目的,我采用的是基于概率论的朴素贝叶斯。

    Naive Bayes

    朴素贝叶斯是一种简单有效的分类算法(大多数机器学习算法无非是几个主要用途:分类,聚类,预测),适用于标称(离散)型数据,标称型数据即那些只能用自然数或整数单位计算的数据,比如人数、部门数,简单而言就是买菜不能买0.5棵,招人不能招2.4个人之类的。

    优点:在数据较少时仍然有效,可以用于包含多种特征的样本分类。

    缺点:对于数据的输入格式要求比较敏感。

    实例

    下面通过一个简单的例子(参考自阮一峰先生的日志)介绍朴素贝叶斯分类器:
    有一个这样的样本:

    如果此时有一个头痛的建筑工人,则他患脑震荡的概率是?

    由贝叶斯公式:P(A|B) = P(B|A)*P(A)/P(B)可得:

    P(脑震荡|头痛x建筑工人) = P(头痛x建筑工人|脑震荡) x P(脑震荡) / P(头痛x建筑工人)

    直接假定“头痛”和“建筑工人”特征互相独立,因此上式可以化为:

    P(脑震荡|头痛x建筑工人) = P(头痛|脑震荡) x P(建筑工人|脑震荡) x P(脑震荡) /
    P(头痛) x P(建筑工人)

    因此:
    P(脑震荡|头痛x建筑工人) = 1 x 0.5 x 0.33 / 0.5 x 0.33 = 1

    因此该头痛的工人患脑震荡的概率是100%。可以计算这个病人患上感冒或过敏的概率。比较这几个概率,就可以知道他最可能得什么病。

    多种模型

    实际上,朴素贝叶斯包含三种模型,分别是高斯分布、伯努利分布和多项式:

    高斯分布

    一般如果数据是连续的(比如身高,体重这些数据),则可以采用高斯分布模型的朴素贝叶斯。

    伯努利分布

    二项分布即重复n次独立的伯努利试验。在每次试验中只有两种可能的结果,而且两种结果发生与否互相对立,并且相互独立,与其它各次试验结果无关。这个模型的最简单例子就是抛硬币,要不正面或者反面。

    多项式分布

    多项式分布是伯努利分布的推广,但是实验结果不再服从二项分布,而是多个结果。就像掷色子,每个数字出现的次数则服从多项式分布。

    在本实验中,因为会用到流量的多个特征,并且这些特征都是互相独立,特征内容也不仅仅是两个,因而采用多项式分布模型的朴素贝叶斯是最合适的。

    思路

    在虚拟机中部署多个应用,通过Wireshark抓包保存为pcap格式,再利用第三方工具提取特征,最后使用机器学习算法进行分类。因为本文并不是探讨如何实时监测数据包并即时进行反馈,本文更多是研究使用样本来对捕抓到的流量进行分类,作为尝试建立流量特征库的前提。

    在实验中,会通过3个应用产生流量数据,分别是XMLRPC调用、REST API的调用和SOAP服务的访问。

    XMLRPC所发送的协议为HTML/XML,包含了RPC的字段,REST传输的数据可以检查其中的内容,应该为JSON数据,SOAP则是可以看到HTTP方法和承载的XML数据。在实验中,假设已经能区分出哪些包是关键的:除去建立TCP连接和断开的相关包,找到交互的关键数据包。

    一般来说流量分类可以基于下面的特征进行分类:源、目标MAC地址,源、目标IP地址,源、目标端口,IP协议版本、TCP源、目标端口,
    TCP报文长度,使用的应用层协议,协议中的关键字段(XMLRPC的RPC2,浏览器HTTP的GET)

    这个实验打算用MAC地址、IP地址、TCP目标端口、协议的关键字及部分Payload内容这几项特征进行分类。

    由于在前面已经介绍了朴素贝叶斯的原理,因此在实验中将会使用现成的python库完成分类,我要做的是控制应用进行交互并产生数据,最后提取出数据构建样本,再交给现成的分类器进行分类。

    准备工作

    实验使用的几个应用的代码请参考我的github,本实验的全部代码和样本数据都在这个repo上:https://github.com/Hochikong/ML-SDN/tree/master/TEST1

    实验的网络结构:

    使用的现成的分类器是scikit-learn的sklearn.naive_bayes.MultinomialNB函数,sklearn是一个包含了很多工具的数据分析库,在naive_bayes中有三个函数,分别是GaussianNB、MultinomialNB和BernoulliNB,关于这些函数的使用方法可以阅读sklearn的页面:http://scikit-learn.org/stable/modules/naive_bayes.html,因为前文说到只有多项式分布模型合适本实验的流量分类,因此采用MultinomialNB函数。

    下面利用这个现成的分类器做个简单的实验:

    在上面这个例子中,X是样本,y是标签,fit()让样本对应每一个标签,因此当我们使用predict()进行分类时,将会利用样本算出输入数据的对应的标签。可以看到我输入了些结构与样本a和b行相似的数据,通过分类器成功判断出输入数据应该属于哪一类。

    实际上,sklearn的朴素贝叶斯分类器并不能直接处理成员为字符串的输入数据,因此,流量中的字符串特征将会通过一个字典进行转换,转换为全部是数字的值,而标签是不限数据种类的,所以在实验中,标签将会使用字符串代表。

    实验

    制作样本

    先生成基本的样本数据,通过下面几个交互过程产生必要的流量数据:

    宿主访问VM1的REST API
    VM2访问VM1的SOAP Service
    VM1访问VM2的XMLRPC API

    用Wireshark抓包后保存为pcap文件再使用scapy提取特征并转换为数字列表(实验中的样本数据已经上传到github,与实验代码同一个repo),下面是target.pcap的部分截图:

    找到关键的数据包

    从wireshark中查阅,找到关键的包,本实验中的是第4,14和30行:

    如果你留意我的流量数据产生顺序,你就会怀疑为什么第14行中的协议只显示为TCP。
    在wireshark中,应用的端口也会影响抓包结果的显示,我写了一篇blog,有兴趣了解其细节的读者可以参考我的blog:http://my.oschina.net/hochikong/blog/700882

    找特征,建立翻译字典

    然后进入scapy,为不同的应用选出需要的特征值:

    挑选出特征值,然后根据这些值建立相应的翻译字典,用一个独立的数字对应一个特征值,建立样本的数字序列。在后面通过一个程序抽取指定pcap行的数据特征并翻译为数字序列,最后通过分类器进行分类,决定该数据属于何种应用。

    我建立的翻译字典是以样本中独一无二的那些特征为键,以从1到15的数字分别作为值,在python中打开dic.dat找DICT键下的数据就是该翻译字典:

    当我们建好翻译字典,就可以着手从pcap文件提取样本的特征,并翻译为数字。

    提取特征

    先使用extra.py,提取第4、14和30行的数据:

    这个程序要求先输入pcap文件位置,然后输入抽取的行数,以‘enough’结束,最后保存特征样本sample.tmp。

    先检查下sample.tmp的内容:

    可以看到,extra.py对上面指定的三行数据都进行了抽取,而排列顺序是根据srcMAC,srcIP,dstMAC,dstIP,dport,proto-key,payload-key这样来的。

    暂停一下,思路呢?

    关于最后两个特征,举个例子讲解下我是怎样选取特征的:

    SOAPAPI的交互过程中,先建立TCP连接,再建立HTTP连接,然后传输SOAP Envelope,最后结束交互。

    我这里只用建立HTTP连接的包作为关键包,因为SOAP是HTTP+XML(与XMLRPC一样),proto-key,其值是一个协议的关键字,我选的是能代表其传输协议HTTP的内容:'POST / HTTP',实际上这个特征只是scapy中该包的load一部分,可以看前第二幅图(scapy的截图)的load的内容。为何不选传输SOAP Envelope的那个包(在wireshark第16行)?
    实际上,那个包并没有明显的HTTP的标识,只有SOAP Envelope:

    因为我要选的是协议关键字,所以针对SOAP Service,应该选择第14行的那个包。

    对于payload-key,我也是在load这里找特征,对于SOAP应用,最好的莫过于'SOAPAction'。如果像RESTAPI一样用content-type,则会与XMLRPC冲突(两者都是text/xml),因为是SOAP Service,那么SOAP的关键字就是可以考虑的特征值了。

    Keep going

    然后我们可以着手翻译sample.tmp为数字序列并提供对应的label了,我需要执行samtran.py:

    执行时若没有任何错误,则自动生成一个tranres.dat的数据,同样查看一下该数据文件:

    这样一来就完成了分类的所有准备。

    分类前的准备

    接下来,修改应用,改变部署的位置,采用不同的client,制造新的流量数据,并用上面准备的样本,使用朴素贝叶斯进行分类。

    应用的部署和修改如下: 
    1.VM1换端口启动RESTAPI,VM2使用客户端与其交互 
    2.VM2启动SOAPAPI,使用一个未在网络规划中用到的VM3与其交互 
    3.VM3换端口启动XMLRPC,host调用XMLRPC接口

    应用交互产生的数据包保存为exp.pcap。通过分析wireshark的抓包结果,分别找出关键的内容的行数为:4(REST)、18(SOAP)和34(XMLRPC),外加与XMLRPC有关的建立TCP连接的包第31行。

    通过extra.py抽取特征,并把特征保存为exp.tmp:

    检查下抽取成果:

    可以看到,对于不包含我预先设定的三种proto-key和payload-key,会给该值为unknown。

    翻译为数字序列,这里用到的是gentran.py:

    在前面extra.py保存数据时对第31行的proto-key和payload-key的值都设置为unknown,gentran.py对于这些unknown值或者是没有在翻译字典中出现的值都会使用一个从16到25的随机数作为翻译结果。

    最后看看翻译后的数字序列:

    Last Station

    载入exp.dat和tranres.dat,分别作为被分类对象和样本:

    简化一下操作所需的准备:

    导入sklearn分类器,创建一个分类器对象并设置好样本和标签:

    分类操作:

    可以看到,我们通过把流量特征转化为数字序列,用sklearn的朴素贝叶斯分类器成功地对流量进行分类。(expobj其实是a['res'])

    就算不是我要找的关键的包(31),但由于与XMLRPC有关,特征比较相近,因此也被判断为XMLRPC应用所发出的包。

    结语

    在本实践中,由于被分类的数据量比较小,因此没办法检测分类器的准确度,如果有更多应用和被分类数据,就可以测试分类器在流量分类上的准确度。

    本实践通过人工找出每一个应用关键的数据包,然后通过工具提取这些包的关键特征用以区分应用类别。因为sklearn的朴素贝叶斯分类器不支持字符串样本,因此需要手工建立一个用于把特征翻译为数字序列的字典文件,最后通过提取工具,提取被分类数据的关键包,交给翻译程序翻译为数字序列。最后使用sklearn的分类器对流量进行分类,并验证分类结果。

    通过建立流量特征值库,就可以利用这个库对收集回来的流量进行分类或者分析,并应用到IDS的策略上以实现对指定应用的数据传输的限制。文中只采用了简单的基于HTTP明文传输的应用,对于加密的流量或者P2P应用,还需要更高级的手段对payload进行解包和分析以进行特征提取。

    本文通过实验把机器学习应用到了离线流量分类的用途上,提供了一个思路,希望能对读者有所帮助。

    本人水平有限,如果有任何错误或疏漏之处,还请多多包涵。

    参考资料:
    http://synchuman.baijia.baidu.com/article/247257

    http://www.360doc.com/content/16/0327/15/478627_545630965.shtml

    http://blog.csdn.net/lsldd/article/details/41542107

    http://blog.csdn.net/march_on/article/details/48767679

    http://scikit-learn.org/stable/modules/generated/sklearn.naivebayes.MultinomialNB.html#sklearn.naivebayes.MultinomialNB.predict

    http://www.ruanyifeng.com/blog/2013/12/naivebayesclassifier.html

    http://blog.csdn.net/iloveyin/article/details/21444613

    http://www.secdev.org/projects/scapy/doc/usage.html

    http://scikit-learn.org/stable/modules/generated/sklearn.naivebayes.MultinomialNB.html#sklearn.naivebayes.MultinomialNB

    作者简介: 
    何智刚,2015至今,准大学生一枚,主要研究云计算、SDN、机器学习,对各种领域都有所涉猎,目标是迈向full stack。 
    qq:1097225749
    github:https://github.com/Hochikong


    展开全文
  • 基于机器学习技术,无需对加密的恶意流量进行解密,通过分析加密流量中的未加密信息、上下文数据等特征,借助常见的机器学习算法实现对加密流量分类检测,发现加密恶意流量中潜藏的安全威胁。

    1 加密流量现状

    1.1 加密流量检测的必要性

    在当今的网络设置中,安全传输层协议是为网络流量提供加密的一个主要协议。网络中的流量实际上是以比特流的形式存在,经过各类协议封装成不同格式的数据包之后,再在网络中进行传输。常见的网络协议有以下几类:

    • 应用层协议:HTTP-超文本传输协议,定义了用户在客户端与Web服务器之间进行报文交换的形式,提供网页通信;DNS-域名系统,提供主机名转换到IP地址的域名解析服务;FTP-文件传输协议;
    • 安全加密协议:TLS-传输层安全性(其前身为SSL-安全套接字层),提供加密通信;IPsec-IP安全协议,提供网络层安全性保证;
    • 网络层和传输层协议:IP-网际协议,进行网络编址;ICMP-因特网控制报文协议,在主机和路由器之间传递控制消息,进行网络差错控制;UDP-用户数据报协议,提供不可靠、无连接的实时数据传输服务;TCP-传输控制协议,提供可靠、面向连接的数据传输服务。

    本文关注的是以TLS/SSL协议加密的网络恶意流量的检测问题。TLS(Transport Layer Security)称为传输层安全性,SSL(Secure Sockets Layer)称为安全套接层,SSL是TLS的前身,两者都属于安全传输层协议,作用在网络体系中的传输层和应用层之间,用来提供客户端与服务器之间的加密通信。

    图1

    上图显示的是使用Wireshark抓取的一条加密流的报文,我们从中选取一条TLS报文消息,从下图的解析结果中可以看到,TLS实际上就是通过在传输层之上新增了一个安全套接层来实现安全加密功能的。

    图2

    近年来,合法的流量大多都已经采用了TLS标准。比如通过google、百度检索返回的网页都已经大规模使用了HTTPS。

    • Google,《Chrome中的HTTPS加密情况》,2019年10月,Chrome加载网页中启用加密的比例已经达到了95%;
    • 百度,近年来一直强制网站更换HTTPS,使用HTTPS的网站占比预计超过60%;

    注:HTTPS顾名思义,就是在HTTP的基础上应用了TLS/SSL协议。当你打开浏览器访问一个网页,该网页的url以这样的形式开头,就说明你正在使用这类安全传输层协议提供的加密服务。

    与此同时,越来越多的恶意软件也开始采用TLS加密来伪装成看起来正常的流量,企图逃避安全检测。这一类恶意软件几乎覆盖了所有类型,包括特洛伊木马、勒索软件、感染式病毒、蠕虫病毒、下载器等。Gartner公司曾给出预测,直到2020年,仍然会有超过60%的企业无法有效解密HTTPS流量,但加密流量中将会隐藏超过70%的恶意软件。因此,实现加密恶意流量的有效检测是非常有必要的。

    1.2 加密恶意流量的检测方法

    现有的针对加密恶意流量的检测方法主要分为以下两类:

    检测方法主要思想优点局限性适用主体
    传统的流量检测方法深度包检测(DPI)检测准确度高面临着隐私保护、计算开销等限制未加密流量为主
    基于机器学习和背景数据的流量检测方法Data omnia高效地识别加密流量检测稳定性有待验证未加密、加密流量均可

    本文重点关注基于机器学习和背景流量数据的流量检测方法,在介绍该方法前需要了解以下几个概念:

    • 深度包检测(DPI, Deep Packet Inspection)技术:通过解密来检查数据包中的数据内容来判断流量的性质;

    • Data omnia:主张通过扩展流记录将与加密流相关的所有背景流量数据都包含在内;

    • 背景流量数据:广义上说,除了数据内容之外其余与加密流相关的数据都可以视为背景流量数据。具体可以分为三类数据:

      • 可观察的元数据:具体包括头部字段中的源目的IP和端口,以及数据流的总字节数和数据包数等。因为流量加密操作只会加密数据内容而不会改变流量的统计特征;
      • TLS流头部数据:对于TLS加密流而言,它的头部字段是未被加密的,这意味着可以通过获取TLS头部字段中的一些参数来推断流量的性质;
      • 上下文数据:与加密流的某些属性相关联的其它协议数据,比如HTTP和DNS报文流。

    因此,基于机器学习和背景流量数据的流量检测方法的工作流程可以简要概括如下:首先对前面提到的几类背景流量数据进行采集,然后基于这些数据对加密流量的特征进行分析,将分析得到的特征输入机器学习分类模型,基于分类模型来对加密流量进行正常或恶意的属性判定。这一方法所要完成的任务实际上就是一个二分类问题。

    2 加密流量特征分析

    这一部分主要基于第一部分中讨论的三类背景流量数据对加密流量的三大类特征展开分析。这三类特征分别为:

    • 可观察的数据元统计特征:包括传统流数据、字节分布以及分组长度和分组到达时间间隔的序列;
    • 未加密的TLS头部信息特征:包括基于客户端和服务器的特定TLS特征;
    • 上下文数据特征:包括DNS和HTTP上下文流。

    我们希望能够通过分析这些特征,最终得到这样一个1*n维的特征向量,便于输入到后续的机器学习分类器中。

    图3

    2.1 可观察的数据元统计特征

    2.1.1 传统流数据

    • 流入和流出的字节数和数据包数(宏观上表现为上行流量和下行流量)
    • 源端口和目的端口
    • 流量总持续时间(以秒为单位)

    像这类数值型特征,我们可以直接将原数值不加处理地添加到特征向量之中。

    2.1.2 字节分布

    字节分布是指数据包有效负载中遇到的每个字节值的计数,也就是计算一个字节可能取到的256个数值在数据流中出现的频次。选取这一特征是因为它能够提供大量的数据编码和数据填充的信息,很多恶意流量的非法行为往往就隐藏在这些信息中。将字节分布计数除以在分组的有效载荷中的总字节数,可以得到字节分布频率,进而近似得到字节分布概率,最终将这一特征表示为一个1*256维的字节分布概率序列。

    2.1.3 分组长度和分组到达间隔时间的序列

    在正常的网络环境中,大部分服务提供商会针对不同的业务类型对数据流中的数据包大小和发送频率进行处理,以此提高用户的体验。基于这一思想,我们考虑恶意软件在试图进行不同于正常业务类型的攻击行为时,是不是也会在这类时序特征上与正常流量表现出一定的差异呢?

    对于这类特征,我们使用了马尔可夫链进行建模。在介绍马尔可夫链之前,我们需要先了解一下马尔可夫性质是什么。马尔可夫性质也叫无记忆性,这一性质表达的含义是指,一个随机过程的下一个状态,永远只由它当前的状态决定,而与它过去的任何状态都无关。如果一个随机过程满足马尔可夫性质,那么它就构成了一个马尔可夫链中的一环。

    而在具体处理这类时序特征时,马尔可夫链起到的作用就是:首先它将序列中的每个值映射成一个状态(往往是一个多对一的映射,即多个值可能同时对应于一个状态),同时将这些值之间的时序关系映射成各个状态之间的转移行为,将这些转移行为存储在一个状态转移矩阵,再经过一系列归一化和扁平化处理,最终得到了一个状态转移概率序列。

    对于分组长度,忽略零长度有效载荷(如ACK)和重传,数据包长度被视为UDP、TCP或ICMP数据包有效负载的大小,如果数据包文不是这三种类型之一,则将长度设置为IP数据包的大小。最大传输单元MTU一般为1500字节,因此上述协议数据包的有效负载区间为:TCP - (0, 1460B], UDP/ICMP - (0, 1472B], IP - (0, 1480B]。对于分组到达间隔时间,其分辨率为毫秒级。
    在这类特征中,我们是将分组长度序列和分组到达间隔时间序列的值分别离散化为10个相同大小的“箱子”,表示10个不同的状态。

    • 长度数据:其马尔可夫链有10个箱子,每个箱子150字节
    • 时间数据:其马尔可夫链有10个箱子,每个箱子50ms

    然后构造转移矩阵A,其中每一项A[i,j]表示第i和第j个箱子之间的转换次数。最后,对矩阵A的行进行归一化得到转移概率矩阵,再进行扁平化处理得到两个1*100维的状态转移概率序列,即最终的马尔可夫链。所有序列项将被用作后续机器学习算法的特征。

    2.2 未加密的TLS头部信息特征

    2.2.1 TLS协议

    TLS及在此之前的SSL都是安全传输层协议,它位于传输层和应用层之间,
    用于在两个通信应用程序之间提供安全通信,保证数据的完整性和保密性。TLS协议自顶向下由握手协议和记录协议共两层子协议组成。其中,TLS握手协议用于通信客户端和服务器之间协商安全参数,以建立起一个有状态连接进行数据传输。通过握手协商过程,通信双方需要确认使用的协议版本、加密算法、证书和会话密钥等信息。

    对于未加密的TLS头部信息特征,我们主要关注TLS握手协议中的信息。因为TLS握手协议有两个特点:一是TLS虽然加密了明文,但并没有加密握手过程;二是在协议的版本更新过程中,基本的握手参数都不曾有过改变,这就意味着我们可以通过分析TLS握手协议中的一些参数来对流量属性进行合理的推测。

    图4

    上图显示的是TLS v1.2定义的一个握手过程。其中包含一些关键的消息流:

    1. 客户端发送Client Hello消息,可以从中获取到客户端提供的参数信息,包括:

      • 列出的密码套件列表(Cipher Suites)
        • 密钥交换算法、加密算法
        • 报文认证消息码(MAC)算法
      • 支持的扩展列表(Extensions):提供额外功能或设定
    2. 服务器发送Server Hello消息,可以从中获取到服务器给出的参数信息,包括选定的密码套件和TLS扩展。

      下图是一条加密流中的Server Hello消息报文,可以从中看到服务器选定的密码套件,并且每个密码套件都有一个与之对应的十六进制数值。图中Cipher Suite字段表达的含义是:基于TLS协议,密钥交换算法选用RSA,加密算法选用RC4(密钥长度为128位),哈希算法选用MD5,这个密码套件对应的值为0x0004。

      图5

    3. 服务器发送Certificate消息,其中含有服务器签发的证书信息。如下图所示,完整的证书信息会显示在消息流中的SignedCertificate字段中,包括证书签名算法、签发机构、证书有效期、证书主题等。

      图6

    4. 密钥交换消息,可以从Client Key Exchange消息中获取到密码套件中设定的密钥交换算法的一些参数。

    因此,在具体的特征提取过程中,我们可以从客户端和服务器两个角度来展开。

    2.2.2 基于客户端的特定TLS特征

    通过统计分析,我们可以发现基于客户端的以下特征在正常流量和恶意流量中存在着明显的差异。这些特征为:

    • 客户端在密钥交换算法中选用的公钥长度:从Client Key Exchange消息中收集的,表示为单个整数值
    • 客户端列出的密码套件列表:从Client Hello消息中收集,取其十六进制代码组成特定长度的二进制向量
    • 客户端支持的扩展列表:与密码套件列表类似

    下图为针对上述特征的统计分析图。

    图7

    注:图中蓝色表示正常流量,红色表示恶意流量,横坐标表示该特征的不同取值,纵坐标表示流所占的百分比。

    其中,公钥长度可以直接以数值形式表示,而密码套件和TLS扩展则分别以一个二进制向量的形式存储,向量中的1和0表示当前加密流中是否存在该位置所代表的密码套件或TLS扩展。

    2.2.3 基于服务器的特定TLS特征

    通过统计分析,我们可以发现基于服务器的以下特征在正常流量和恶意流量中存在着明显的差异。这些特征为:

    • 服务器选定的密码套件:从Server Hello消息中收集
    • 服务器选定的TLS扩展:与密码套件类似
    • 服务器签发的证书信息:从Certificate消息中收集,包含证书的数量、SAN名称数量、有效天数以及是否有自签名证书

    注:SAN是指主题备用名称,用来补充证书主题的缺失信息;恶意流量数据中使用自签名证书的TLS服务器的频率比良性数据大约高出一个数量级。

    下图为针对上述特征的统计分析图。

    图8

    其中,选定的TLS扩展列表同样可以采用二进制向量的特征表示形式来表示,而其余三个数值型特征可以直接添加到特征向量之中。

    2.3 上下文数据特征

    2.3.1 DNS上下文流

    DNS上下文流是指基于目标IP地址与TLS相关的DNS响应,它提供加密流使用的地址,以及与名称关联的TTL,同时能够补充加密流中可能缺失的一些信息。比如,DNS响应报文中提供了目的IP与域名的对应关系,而从签名的角度来看,DNS提供域名的动态性是低于它关联的IP地址的,因此这个信息能够提供一个强大的黑名单机制(记录那些已经标记为恶意的流量都倾向于访问哪些域名)。

    基于上述思想,我们首先对DNS上下文流特征进行统计分析,最后发现以下特征在正常流量和恶意流量中存在着明显的差异:

    • 域名长度
    • DNS响应返回的IP地址数
    • DNS TTL值:一条域名解析记录在DNS服务器上的缓存时间(32个最常见TTL值的列表和一个“其他”选项)
    • 域名在Alexa榜单的排名:用来评价网站访问热度的一个常用指标

    注:域名在Alexa榜单的排名实际上是一个第三方白名单的机制,选取这一特征的原因是考虑到恶意流量关联的域名其访问热度往往是比较低的。

    下图为针对上述特征的统计分析图。

    图9

    对于前三类数值类特征,无需处理可以直接添加到特征向量中,而域名在Alexa榜的排名情况则需通过一个1*6维的二进制向量来表示,这6个维度分别表示域名是否在Alexa榜的前100/1000/10000/100000/1000000以及不在榜单中的情况,然后这一特征会为每个域名选择相应的类别,属于哪一类就将该类所在的位置标记为1。

    2.3.2 HTTP上下文流

    HTTP上下文流是指在TLS流 5 min窗口内由相同源IP地址发出的所有HTTP流。恶意软件可能利用HTTP头部的某些字段(比如content-type, server等)来发起一些恶意活动,这说明HTTP字段能够很好地指示一些恶意活动。

    基于这样的思想,我们同样选取了以下能够反映正常流量和恶意流量之间差异性的HTTP上下文流特征:

    • 流入和流出HTTP字段的种类:有一个二进制变量的特征向量表示所有观察到的HTTP头,如果任何HTTP流具有特定的标头值,则无论其他HTTP流如何,该特征都将为1
    • HTTP特定字段(Content-Type、Server、Code)的取值

    下图为针对上述特征的统计分析图。

    图10

    对于这两类特征我们同样采取二进制向量的形式予以表示。

    至此,我们就已经完成了加密流量特征分析的整个过程,最终得到了这样一个1*n维的特征向量。需要说明的是,不管是正常流量还是恶意流量,我们都可以通过前面的特征分析过程得到这样的一个特征向量。而n的具体取值还要取决于实际使用的加密流量数据格式。

    3 实验与评估

    这一部分介绍一个基于真实数据集的加密流量分类实验。

    3.1 数据集

    这个实验采用的数据集分为黑白样本两个部分,所有实验数据都是在经过TLS握手完整性和上下文数据完整性两重过滤得到的无缺失数据。

    • 黑样本——恶意数据集
      • 13542个同时具有DNS和HTTP上下文的恶意TLS流;
      • 从2016年1月到4月,在商业沙箱环境中收集;
      • 在这一环境中,用户可以提交可疑的可执行文件,每个提交的样品可运行5 min,随后由环境收集并存储每个样本的完整数据包捕获。
    • 白样本——良性数据集
      • 42927个同时具有DNS和HTTP上下文的良性TLS流;
      • 2016年4月的5天内,在大型企业网络中收集。

    3.2 分类模型

    实验使用逻辑回归分类器,对所有分类结果都有L1正则化惩罚(L1-logistic)。

    L1-logistic回归模型实际上就是一种使用了sigmoid函数作为联系函数的广义线性模型。而L1正则化主要通过在损失函数中添加L1正则化项,从而产生稀疏模型来达到防止过拟合的目的。研究发现这种分类器非常有效,并且对网络数据特征分类表现非常好。

    对于输入特征 x x x,输出标记 y y y,假设线性回归模型预测值 z = h ( x ) = ω T x + b z=h(x)=\omega^Tx+b z=h(x)=ωTx+b,则logistic回归模型满足: y = 1 1 + e − z y = \frac{1}{1+e^{-z}} y=1+ez1

    在此基础上,带L1正则化的损失函数为: J ( ω ) = − [ 1 m ∑ i = 0 m y ( i ) log ⁡ h ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h ( x ( i ) ) ) ] + λ ∥ ω ∥ 1 J(\omega) = -[\frac{1}{m}\sum_{i=0}^{m}y^{(i)}\log{h(x^{(i)})}+(1-y^{(i)})\log{(1-h(x^{(i)}))}]+\lambda\Vert\omega\Vert_1 J(ω)=[m1i=0my(i)logh(x(i))+(1y(i))log(1h(x(i)))]+λω1

    3.3 实验过程

    在本次实验提供的数据集下,利用第二部分介绍的加密流量特征分析方法,得到一个800维左右的特征向量,并且所有数据特征都会被归一化为零均值和单位方差的形式。同时,所有分类结果都使用了十折交叉验证:通过划分10次9:1的训练集和验证集,获得10次不同的分类结果,最后取10次分类结果的平均指标进行评估。

    3.4 评估结果

    实验结果以不同的特征组合和总体准确度两个维度来展示,如下图所示。总体准确度是指所有正确分类的样本在总样本所占的比例。可以看到,从单独使用未加密的TLS头部信息特征,到加入可观察的数据元统计特征,再到最终加入上下文数据特征,流量分类的总体准确度是在不断提升的。

    图11

    实验结果表明,仅使用加密流中未加密的TLS头部信息,能够实现96.335%的总精度;使用来自加密流本身SPLT+BD+TLS的信息,能够实现99.933%的总精度;使用与加密流的所有背景数据,最终能够实现99.993%的总精度。

    4 总结与展望

    4.1 总结

    本文介绍的基于机器学习和背景流量数据的加密恶意流量检测方法,它的核心在于基于data omnia思想的特征提取:通过收集和关联与加密流相关的所有背景流量数据,发现并提取出在黑白样本存在明显差异的特征(包括三大类:可观察的数据元统计特征、未加密的TLS头部信息特征和上下文数据特征),并将其用于加密流量的分类任务。

    4.2 展望

    对于基于机器学习和背景流量数据的加密恶意流量检测方法的后续研究,我有以下几点展望:

    1. 在真实情况下加密流量中经常会出现字段信息缺失的现象,比如在TLS会话恢复的情况下,证书将不存在。因此需要通过实验去验证不同的特征处理方式或特征组合会达到什么样的分类效果;
    2. 实验中用到的黑样本数据都是在沙箱中采集的恶意软件通过加密通信产生的流量,这只是加密恶意流量中的一种表现形式,我们前面分析的特征在这一类恶意流量中的表现很可能是高度近似的,这也解释了实验结果中最终分类的总体准确度达到了99.99%以上的原因。这就迫使我们后续去关注加密恶意流量的其它表现形式(一是加密通道中的恶意攻击流量,如CC攻击;二是恶意或非法加密应用的通信流量,如非法VPN),通过实验去验证使用当前特征对其它形式的加密流量进行分类是否仍然能够达到较好的效果;
    3. 后续可以尝试进行多种机器学习分类模型(比如随机森林、XGBoost等)的对比与验证,去探索进一步提升检测效果的可能。

    参考文献

    [1] Anderson B, McGrew D. Identifying encrypted malware traffic with contextual flow data[C]//Proceedings of the 2016 ACM workshop on artificial intelligence and security. 2016: 35-46.
    [2] Korczyński M, Duda A. Markov chain fingerprinting to classify encrypted traffic[C]//IEEE INFOCOM 2014-IEEE Conference on Computer Communications. IEEE, 2014: 781-789.
    [3] Anderson B, Paul S, McGrew D. Deciphering malware’s use of TLS (without decryption)[J]. Journal of Computer Virology and Hacking Techniques, 2018, 14(3): 195-211.

    展开全文
  • 针对传统基于机器学习流量分类方法中特征选取环节的好坏会直接影响结果精度的问题,提出一种基于卷积神经网络的流量分类算法。首先,通过对数据进行归一化处理后映射成灰度图片作为卷积神经网络的输入数据,然后,...
  • 在 API的帮助下,基于机器学习方法的异常流量识别分类器。 这是我的本科毕业设计代码。 而且代码中会有很多错误。 无论如何,在训练模型和评估中可能有一些不合适的方法。 欢迎您发现它。 有任何疑问,请给我发...
  • 1 概述2 恶意软件加密流量介绍3 加密HTTPS流量解析4 特征工程5 模型效果6 具体实施7 总结 1 概述 近年来随着HTTPS的全面普及,为了确保通信安全和隐私,越来越多的网络流量开始采用HTTPS加密,截止今日,超过65%的...
  • mooc机器学习岭回归交通流量数据,2万多条数据,主要有ID,HR等交通流量相关属性,适合学习无监督机器学习,用于很多机器学习相关的分类算法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,349
精华内容 7,739
关键字:

机器学习流量分类特征