- A+
简介
这一部分介绍关于网络加密流量的一些实验的论文. 这一部分主要是针对直接使用原始流量来进行实验的文章. 大部分文章使用了CNN的方法来实现分类, 也会包含其他的一些方法.
下面就是对每一篇文章依次进行介绍, 说明分类任务(是区别使用了何种traffic, 还是对应用进行区分), 数据处理方式, 使用的模型和最后的结果.
对于网络加密流量实验的一个概括性介绍(可以先读一下这一篇文章对这个方向, 和相关数据集有所了解): 网络加密流量的相关研究
Malware Traffic Classification Using CNN for Representation Learning
- 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
- 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有着更好的表现.

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

基于卷积神经网络的加密流量识别方法
- 陈雪娇, 王攀, 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%作为测试集)

基于深度卷积神经网络的网络流量分类方法
- 王勇, 周慧怡, 俸皓, 叶苗, and 柯文龙. "基于深度卷积神经网络的网络流量分类方法." 通信学报 39, no. 1 (2018): 14-23.
感觉这一篇内容写的比较一般, 数据集也不是很新. 就是用了CNN来处理
使用的数据集和分类任务
这里采用了Moore数据集(这是2005年的数据集, 来自下面的这篇文章)和自己收集的数据集. 其中Moore数据集是有249维的特征.
- Moore, Andrew, Denis Zuev, and Michael Crogan. Discriminators for use in flow-based classification. 2013.
这篇文章的分类任务是, 对网络服务进行分类(例如, 网页浏览类, 通信类, 下载类, 视频类)
数据处理方式与使用的模型
截取流量的784个字节, 由于每一个字节由8bit组成, 可以将1byte转为0-255之间的数值. 接着对数据进行归一化的操作.
使用CNN进行实验. 就是最简单的CNN, 没有变化.
实验内容和最终结果
对于上面两个数据集, 使用:
- 不同的CNN的结构来进行测试
- 使用不同的池化方式, 最大池化, 平均池化
可以学习下面的画图方式.

基于堆栈式自动编码器的加密流量识别方法
这一篇文章的作者和上面有一篇是同样的人, 所以论文的分类任务也是比较相似.
- 王攀, 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的分类性能, 发现后者的效果更加好. (可以通过混淆矩阵来进行举例说明)
作者将最后的结果以柱状图和表格的形式进行给出.
- 微信公众号
- 关注微信公众号
-
- QQ群
- 我们的QQ群号
-
感谢你能看到最后,谢谢对本站的支持!!!
谢谢支持!
记得推荐给大家!
点