网络加密流量实验–基于原始流量

  • A+
所属分类:大数据分析
摘要这一篇文章介绍关于网络加密流量实验中直接使用原始流量进行实验的内容. 这些方式都是不对原始流量进行特征的提取, 而是直接使用原始数据进行模型的构建和进行分类. 这一篇文章会依次对这些文章进行介绍.

简介

这一部分介绍关于网络加密流量的一些实验的论文. 这一部分主要是针对直接使用原始流量来进行实验的文章. 大部分文章使用了CNN的方法来实现分类, 也会包含其他的一些方法.

下面就是对每一篇文章依次进行介绍, 说明分类任务(是区别使用了何种traffic, 还是对应用进行区分), 数据处理方式, 使用的模型最后的结果.

对于网络加密流量实验的一个概括性介绍(可以先读一下这一篇文章对这个方向, 和相关数据集有所了解): 网络加密流量的相关研究

 

Malware Traffic Classification Using CNN for Representation Learning

  1. Wang, Wei, Ming Zhu, Xuewen Zeng, Xiaozhou Ye, and Yiqiang Sheng. "Malware traffic classification using convolutional neural network for representation learning." In 2017 International Conference on Information Networking (ICOIN), pp. 712-717. IEEE, 2017.

这一篇文章主要是来描述对数据集的处理方式的, 和加密流量检测的关系不是很大. 这一篇文章是对下面一篇文章使用方法的详细说明, 所以在这里提前说明一下.

关于raw traffic, flow和session

  • raw traffic: 每一个packet包含(5元组, packet的大小, 开始时间), 其中5元组包含(source host, destination host, source port, destination port, transport protocol)
  • flow: 这个是单向的流量, 这个是将原始的packet中有相同的5元组的数据合并在一起.
  • session: 这个是双向的流量, 将原始packet中有相同的目的和源IP的流量放在一起.

不同的flow(session)有不同的大小, 这里使用了前784bytes的信息.

Packet Layeer

这里作者提取数据时候分为两种方式进行提取:

  • 第一种是只提取应用层的信息(L7)
  • 第二种是提取所有的信息(All)

同时作者对IP和MAC进行了处理, 去掉了这两个的信息.

数据预处理

作者在这里给出了一个整体的数据处理的流程:

  • Traffic Split: 将原始的pcap处理为Session+All(或是Flow+L7等)的数据.
  • Traffic Clear:
    • 去除IP和MAC地址
    • 同时去除没有应用层数据为0的流量
    • 去除重复的文件
  • Image Generation: 这一个步骤是可选的, 我们可以直接转换为IDX格式的, 做这一步是为了可视化.
    • 将所有的文件裁剪为一样的长度, 都裁剪为784bytes, 不够的填补0x00
    • 最后0x00为黑色, 0xff为白色.
  • IDX conversion: 最后将images转换为IDX文件.

下面是一个整体的流程图.

网络加密流量实验--基于原始流量

 

End-to-end Encrypted Traffic Classification with One-dimensional CNN

  1. Draper-Gil, Gerard, Arash Habibi Lashkari, Mohammad Saiful Islam Mamun, and Ali A. Ghorbani. "Characterization of encrypted and vpn traffic using time-related." In Proceedings of the 2nd international conference on information systems security and privacy (ICISSP), pp. 407-414. 2016.

这一篇文章网上介绍的还是比较多的, 在这里放一下我搜到的一些介绍性的文章.

这篇文章的一些优势将特征提取, 特征选择, 和分类融合到了一个end-to-end的框架中.

下图是一个整体的框架. a表示传统的方法, 需要进行特征的提取. b为新的这篇文章提出的end-to-end的方式, 可以直接从原始流量到最终的分类结果.

网络加密流量实验--基于原始流量

使用的数据集和分类任务

  • 使用了ISCX VPN-non VPN traffic dataset.
  • 这篇文章重点在于研究encrypted traffic characterization(将加密流量与特点的应用场景相关联, 比如哪些是聊天的流量, 哪些是视频的流量)

原始数据集中共有14种classes, 但是由于一些文件中无法具体区分出是browser还是streaming(例如, facebook_video, 里面既有browser, 也有streaming), 所以不使用这些数据, 所以最终只有12类(没了browser这个分类), 具体的traffic types如下表所示.

网络加密流量实验--基于原始流量

数据处理方式和使用的模型

对于原始数据的处理, 作者考虑到了不同对原始流量不同的展示形式, 分别有flow(单向)和session(双向). 同时, 对于其中内容的提取, 作者也考虑到了两种形式, 分别是只提取应用层的内容和提取所有的内容.

于是, 最终有以下四种形式的数据来进行实验.

网络加密流量实验--基于原始流量

另外还有一点, 因为每条流流的长度不一致, 而CNN模型的输入要求必须大小一致, 因此需要对数据长度做统一化, 文章使用了每条数据流的前784个byte. (对于数据的截断比较)

文章使用了CNN模型来进行分类, 比较了1D-CNN和2D-CNN模型对分类效果的差异. 下图是1D-CNN模型的主要结构(最后2/6/12就是看最后想要分为几类).

网络加密流量实验--基于原始流量

实验内容和最终结果

作者做了以下的四种类型的实验, 分别是

  • 是否使用VPN
  • 在不使用VPN的情况下, 对6类traffic进行分类
  • 在使用VPN的情况下, 对6类traffic进行分类
  • 直接对12类(VPN+VPN-non)进行分类
网络加密流量实验--基于原始流量

于是作者将这个四个任务分别使用四个数据集(上面提到的session+All, session+L7等)来进行测试. 得到了下面的结果.

网络加密流量实验--基于原始流量
  • 可以看到将流量使用session来表示, 结果会更好.
  • 使用All layers的结果要比使用L7的结果要好.

接着作者比较了1D-CNN和2D-CNN两者在准确率上的表现. 可以看到1D-CNN有着更好的表现.

网络加密流量实验--基于原始流量

最后, 作者将他的实验结果和提出数据集的原始论文进行比较, 结果也是有所提升.

网络加密流量实验--基于原始流量

 

基于卷积神经网络的加密流量识别方法

  1. 陈雪娇, 王攀, and 俞家辉. "基于卷积神经网络的加密流量识别方法." 南京邮电大学学报 (自然科学版) 38, no. 06 (2018): 40-45.

使用CNN来进行加密流量的识别的一些好处, 识别准确率高, 不需要人工选择特征.

使用的数据集和分类任务

本文使用UNB ISCX VPN-non VPN traffic dataset数据集. 对加密流量中的应用进行分类. 下图是数据集中15种常规加密应用类别. 这里作者选用了三种应用, AIM_Chat, Email, Facebook_Chat进行实验.

网络加密流量实验--基于原始流量

数据处理方式与使用的模型

这里数据预处理也是使用将数据转换为固定长度+归一化的操作. 将每一个数据包都转换为1500长度, 然后转换为39*39(=1521)的形状(最后多余的位置填0即可), 最后输入模型中.

因为这里使用的模型比较简答(CNN), 就把这里作者使用的整个模型框架放在这里进行叙述.

网络加密流量实验--基于原始流量

实验内容和最终结果

作者最后和Deep Packet这篇文章进行了对比(两者使用的测试集不一样, 结果只可以作为一个参考, 这一篇文章是随机选择了20%作为测试集)

网络加密流量实验--基于原始流量

 

基于深度卷积神经网络的网络流量分类方法

  1. 王勇, 周慧怡, 俸皓, 叶苗, and 柯文龙. "基于深度卷积神经网络的网络流量分类方法." 通信学报 39, no. 1 (2018): 14-23.

感觉这一篇内容写的比较一般, 数据集也不是很新. 就是用了CNN来处理

使用的数据集和分类任务

这里采用了Moore数据集(这是2005年的数据集, 来自下面的这篇文章)和自己收集的数据集. 其中Moore数据集是有249维的特征.

  1. Moore, Andrew, Denis Zuev, and Michael Crogan. Discriminators for use in flow-based classification. 2013.

这篇文章的分类任务是, 对网络服务进行分类(例如, 网页浏览类, 通信类, 下载类, 视频类)

数据处理方式与使用的模型

截取流量的784个字节, 由于每一个字节由8bit组成, 可以将1byte转为0-255之间的数值. 接着对数据进行归一化的操作.

使用CNN进行实验. 就是最简单的CNN, 没有变化.

实验内容和最终结果

对于上面两个数据集, 使用:

  • 不同的CNN的结构来进行测试
  • 使用不同的池化方式, 最大池化, 平均池化

可以学习下面的画图方式.

网络加密流量实验--基于原始流量

 

基于堆栈式自动编码器的加密流量识别方法

这一篇文章的作者和上面有一篇是同样的人, 所以论文的分类任务也是比较相似.

  1. 王攀, and 陈雪娇. "基于堆栈式自动编码器的加密流量识别方法." 计算机工程 11 (2018): 24.

使用数据集和分类任务

本文使用ISCX VPN-non VPN traffic dataset数据集, 选择常规加密流量(也就是没有使用VPN的加密流量)中的15种应用(这里是对15种应用来作为最终的分类任务)作为训练集和测试集. 每一种应用和每一类样本的占比如所示.

由于样本的不平衡, 作者在这里使用了下面两种处理方式.

  • 样本数量过少的类别使用了SMOTE过抽样
  • 样本数量过多的类别这里使用了欠抽样的方式.

对于SMOTE过抽样方式的简单介绍: SMOTE算法是一种随机过抽样方法, 其主要思想是应用K-最近邻方法, 在少数类样本之间利用线性插值生成新的样本, 从而增加少数类样本的数量, 使数据集的类别数量相对平衡.

网络加密流量实验--基于原始流量

数据处理方式

由于网络数据包分组中的每一个字节都是8bit组成的, 其转为十进制构成的值的范围是0-255, 非常类似于黑白图片中的一个灰度像素. 但是在数据分组中, 每一个数据包中包含的字数长短不一, 因为需要对数据进行预处理.

下面是一个数据处理的整体的流程.

  • 读取数据包, 对数据包进行过滤(去除ARP, DHCP等局域网信息)
  • 循环读取数据包, 对数据包完成数据预处理(截断或是补零, 归一化), 得到PBV(分组字节向量)
    • 因为分组大小最大为1500, 这里就是不够补零
  • 将PBV拼起来, 组成PBM(分组字节矩阵)

对于分组大小的一些说明

每一种物理网络都会规定链路层数据帧的最大长度,称为链路层MTU(Maximum Transmission Unit).IP协议在传输数据包时,若IP数据报加上数据帧头部后长度大于MTU,则将数据报文分为若干分片进行传输,并在目标系统中进行重组。比如说,在以太网环境中可传输最大IP报文大小(MTU)为1500字节。如果要传输的数据帧大小超过1500字节,即IP数据报长度大于1472(1500-20-8=1472,普通数据报)字节,则需要分片之后进行传输。

网络加密流量实验--基于原始流量

使用的模型

使用了stacked autoencoder(SAE)+MLP的方式来进行训练和实现最终的分类结果. 模型框架如下图所示.

网络加密流量实验--基于原始流量

整个模型的训练分为两个阶段, 第一阶段是训练SAE, 第二阶段是分类器的训练过程.

  • 第一阶段中, 训练SAE, 相当于训练了三个AE, 分别是: 1500-740-1500, 740-92-740, 92-32-92.
  • 第二阶段, 训练分类器, 输入为1500维度, 中间三个隐藏层分别是740, 92, 32, 分别使用上面三个训练好的AE的中间层作为初始化系数, 输出是15(应用个数).

实验内容和最终的结果

为了比较SAE+MLP的效果, 作者训练了一个MLP与之进行比较. 同时将原始数据60%作为训练集, 40%作为测试集.

作者首先做了基于平衡数据与不平衡数据之间的实验, 发现平衡数据之后的准确率更好, 所以后面都基于平衡数据进行实验.

接着作者比较了简单MLP和SAE+MLP的分类性能, 发现后者的效果更加好. (可以通过混淆矩阵来进行举例说明)

作者将最后的结果以柱状图和表格的形式进行给出.

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: