利用神经网络进行网络流量识别——特征提取的方法是(1)直接原始报文提取前24字节,24个报文组成596像素图像CNN识别;或者直接去掉header后payload的前1024字节(2)传输报文的大小分布特征;也有加入时序结合LSTM后的CNN综合模型

国外的文献汇总:

《Network Traffic Classification via Neural Networks》使用的是全连接网络,传统机器学习特征工程的技术。top10特征如下:

List of Attributes

Port number server Minimum segment size client→server First quartile of number of control bytes in each packet client→server Maximum number of bytes in IP packets server→client Maximum number of bytes in Ethernet package server→client Maximum segment size server→client Mean segment size server→client Median number of control bytes in each packet bidirectional Number of bytes sent in initial window client→server Minimum segment size server→client

Table 7: Top 10 attributes as determined by connection weights

《Deep Learning for Encrypted Traffic Classification: An Overview》2018年文章,里面提到流量分类技术的发展历程:

案例:流量识别 流量识别任务(Skype, WeChat, BT等类别) 1. 最简单的方法是使用端口号。但是,它的准确性一直在下降,因为较新的应用程序要么使用众所周知的端口号来掩盖其流量,要么不使用标准的注册端口号。 2. 有效载荷或数据包检测(DPI),专注于在数据包中查找模式或关键字。这些方法仅适用于未加密的流量并且具有高计算开销。 3. ML方法:这些方法依赖于统计或时间序列功能,这使它们能够处理加密和未加密的流量。这些方法通常采用经典机器学习(ML)算法,例如随机森林(RF)和k近邻(KNN)。然而,它们的性能在很大程度上取决于人工设计的特征,这限制了它们的普遍性。 4. DL方法:深度学习不需要域专家选择功能,因为它通过特征自动选择功能。这种特性使深度学习成为一种非常理想的流量分类方法,特别是当新类不断出现并且旧类的模式发展时。深度学习的另一个重要特征是,与传统的ML方法相比,它具有相当高的学习能力,因此可以学习高度复杂的模式。结合这两个特征,作为端到端的方法,深度学习能够学习原始输入和相应输出之间的非线性关系。

 

文中指出:在许多研究中,这些特征具有代表性,即使对于加密流量,最多前20个数据包已经证明足够合理的准确性(the first few packets up to first 20 packets have been shown to be enough for reasonable accuracy even for encrypted traffic)。就是说报文提取特征仅仅需要前20个报文。非常重要!!!!

使用深度学习进行检测的一些文献汇总:

 Paper Category

DL method Online Features Year

Wang-2018[8] Intrusion detection CNN+LSTM ✓ Header+payload 2018

Aceto[5] APP classification CNN/LSTM/SAE/MLP ✓ Header+payload -

Vu [9] Traffic identification AC-GAN ✕ Statistical 2017

Wang-2017[6] Traffic identification CNN ✓ Header+payload 2017

Seq2Img[7] APP/protocol identification RKHS+CNN ✓ Time series 2017

Lotfollahi[10] APP/traffic identification CNN/SAE ✕ Header+payload 2017

Lopez-Martin[11] Mixed-type classification CNN+LSTM ✓ Header+time Series 2017

Hochst[12] Traffic identification Autoencoder ✕ Statistical+header 2017

TABLE I OVERVIEW OF DEEP LEARNING METHODS USED FOR TRAFFIC CLASSIFICATION.

 

《Byte Segment Neural Network for Network Traffic Classification》——本质上是LSTM+attention来做的分类。
里面也提到了网络流前面几个报文的特征是最关键的。
Features  are  collected
from  different  levels  of  traffic  and  calculated  on  full  flow.
Bernaille et. al observed that the size and the direction of the
first few packets of the TCP connection are very considerable.
According to this, they proposed a model based on simple K-
Means [12].

<<A novel QUIC traffic Classifier based on Convolutional Neural Networks>> 注意quick协议也是加密的!!!
也是使用CNN【【【使用一维CNN】】】进行quic上层应用类型识别,提取的是quick udp协议的有效payload(50-1392B)。原文:
There are four main steps in the pre-
processing phase including data link header removal, byte
conversation, normalization and zero padding.
The data-link header contains some information related to
the physic layer which plays an important role in forwarding
the frames in the network. However, this information is
useless for traffic classification, so the data-link header will be
filtered in the data link header removal step. Besides, we only
use the payload of QUIC packet because we found that other
information in QUIC packet is useless for the classification.
Then the packet in the dataset will be converted from bit to
byte in order to reduce the input size. For better performance,
all packet bytes are normalized using dividing by 255, the
maximum value for a byte. The CNN requires the same input
length while the packet length in the dataset varies from over
50 to 1392 bytes. Therefore, the dataset will be added some
zero values in the zero padding step to have the similar length
of each packet. The packet with packet length less than 1400,
are padded zero at the end. Finally, each packet comprises
1400 values corresponding to 1400 features.

文中有两个模型:

In this paper, we propose a new traffic classification method
based on the convolutional neural network which comprises
two multiclass classification stages. The first stage using
NetFlow-based features to define the Chat and Voice call
of Google Hangout. Then the remainder continues to go
through the second multiclass classification stages to classify
the network flows into the file transfer, video streaming or
Google play music.也就是先粗分(chat/voice/third group/Micro-averaging/Macro-averaging类别),再细分(file transfer, video streaming or Googleplay music三类别)。
 
 
https://www.eleceng.adelaide.edu.au/students/wiki/projects/index.php/Projects:2017s1-101_Classifying_Network_Traffic_Flows_with_Deep-Learning 探索了使用CNN packet payload进行流量分类的做法,关键截图如下:
 
 
Confusion matrix for Phase 1 application classification.
Precision and recall results for Phase 1 application classification.
Testing accuracy for each confidence boundary of Phase 1 application classification.
此外,还有恶意软件流量识别的分类实验:
恶意流量分类

以与应用结果类似的方式,然后训练分类器并对恶意数据集进行评估。恶意分类器不仅检测恶意活动,还必须对恶意活动的类型进行分类。运行时间超过22小时,恶意分类器的分类准确率达到94%。混淆矩阵以及恶意分类器的精确度和召回率如下所示。结果发现,分类器能够正确识别大多数恶意类,在非恶意类和被称为模糊器的恶意攻击之间发生最大的混淆。
Confusion matrix for Phase 1 malicious classification.
Precision and recall results for Phase 1 malicious classification.
Testing accuracy for each confidence boundary of Phase 1 malicious classification.
 

《Network traffic classifier with convolutional and recurrent neural networks for Internet of Things》探索了CNN和RNN的结合,以及流量特征选择,貌似他是人为加入端口时序等特征可以让分类结果更好。看下面的图:

 

《Mobile Encrypted Traffic Classification Using Deep Learning》探索了不同的算法(CNN、LSTM、SAE等)以及添加port等信息对于实验结果的影响,看图,感觉结合LSTM后未必更好啊:

 《Deep Packet: A Novel Approach For Encrypted TrafficClassification Using Deep Learning》 使用CNN和SAE进行流量分类,里面提到了TCP的报文标识SYN、ACK是对于分类无意义的!!!原话:the dataset includes some TCP segments with either
SYN, ACK, or FIN flags set to one and containing no
payload. These segments are needed for three-way hand-
shaking procedure while establishing a connection or
finishing one, but they carry no information regarding
the application generated them, thus can be discarded
safely.

其中,提取的也是流量payload,不过还包含了去掉IP后的header。To find the fixed length for trun-
cation, we inspected the packets length’s statistics. Our
investigation revealed that approximately 96% of pack-
ets have a payload length of less than 1480 bytes. This
observation is not far from our expectation, as most of
the computer networks are constrained by Maximum
Transmission Unit (MTU) size of 1500 bytes. Hence,
we keep the IP header and the first 1480 bytes of each
IP packet which results in a 1500 bytes vector as the
input for our proposed NNs. Packets with IP payload
less  than  1480  bytes  are  zero-padded  at  the  end.  To
obtain a better performance, all the packet bytes are
divided by 255, the maximum value for a byte, so that
all the input values are in the range [0,1].
Furthermore, since there is the possibility that the
NN attempts to learn classifying the packets using their
IP addresses, as the dataset is captured using a limited
number  of  hosts  and  servers,  we  decided  to  prevent
this over-fitting by masking the IP addresses in the IP
header.

 

(0)https://wenku.baidu.com/view/90c20c54a1c7aa00b42acb5c.html 360 15年的报告,使用图像思路来识别应用类型。也是使用tcp payload直接做CNN。

 同样,《基于卷积神经网络的未知和加密流量识别的研究与实现》也是使用tcp payload前1024字节进行流量协议识别(SSH,SSL,HTTP等)。使用类似此方式,识别加密应用如QQ文件,微信,网易云音乐等。

《基于卷积神经网络的复杂网络加密流量识别》、《基于卷积神经网络的未知协议识别方法》也是这样的思路。

《基于深度学习的网络流量分析研究》里面的流量分类也是使用payload CNN来处理。

(1)直接使用报文内容进行识别的,提取每条流的前24个字节,然后提取了24个报文,组成的图像大小为24*24。识别应用协议和应用程序的准确率是76%~100%不等。

《基于卷积神经网络的网络流量识别技术研究 - 四川大学学报(自然科学版)》

 
 (2)《基于卷积神经网络的加密流量识别方法》 2018年文章,较1晚出版。——本质上是获取传输报文的大小分布,比如传输>1K大小报文的比例,<100B的报文比例等。文章仅仅涉及三种类型数据,数据集较少,方案有些让人质疑。但是协议类型本质上是可以从传输的报文大小分布来判定的。
 
通过对数据集进行预处理形成分组字节矩阵,作为神经网络的输入。
(1)读入 pcap格式数据包文件。 首先对 pcap文件进行简单处理,解析 pcap文 件头部信息,获取文件中所包含的分组的概要信息。 (2)对分组数据进行截断或补零。 该步骤目的是形成分组字节矩阵 PBM(Packet ByteMatrix)作为 CNN神经网络的输入。由于每个 分组的大小都不一致,考虑到 CNN神经网络的输入 维度需统一,因此需要对分组进行截断或补零。 图 5给出了数据集中分组大小的分布,可以看 出分组大小主要分布在头部(前 300个字节)和尾 部(后 1200~1500字节)。因此,本文从保障准确 性的角度出发,选择截取长度为 1500。 图 5 分组长度分布(Gmail为例) (3)对分组数据进行归一化(Normalization)。 为了提升训练的性能,将每个分组归一化为 [0-1],每个分组值为 0~255,因此每个分组均除 以 256。 38 南京邮电大学学报(自然科学版) 2018年 (4)对 PBM分组字节矩阵进行标记。 通过在矩阵中增加一列用于标记每一行,或者 可单独建立 labelvector用于标记。
 (3)《BotCatcher:基于深度学习的僵尸网络检测系统》看到方校长也作者在里面。。。这个文章CNN也是直接提取pcap报文前1024个字节,另外还用到了LSTM,取交互报文的前100个字节构成时间序列,两个模型结合使用softmax建模。
不同应用种类的pcap图像之间具有较为明显的差别,而每一类中的数据流则具有极高的相似度。因此可以推测僵尸网络数据流转化生成的图像与正常数据流的图像具有显著差异,即使用CNN对图片分类的方法进行流量识别是有效的。

 在学习前需要将每个数据流转化为一张二维灰度图像。为了提取出相同维度的特征,CNN要求输入的图片大小相同,而经过数据预处理得到的训练集中,各个数据流大小不一,且方差可能很大。因此为了便于接下来的特征学习,BotCatcher 对所有的数据流进行截取,取每个数据流前 1 024 B (32×32)的数据(截取长度在第4节中进行评估),如果某条数据流长度不够1 024 B,则在末尾用0x00进行填充。通常,一条数据流前面的数据主要包括连接信息(例如TCP连接中的三次握手、TLS连接中的密钥交换)与少部分的内容交换,可以较好地反映整条数据流的主要特征。

LSTM模型:

为了更准确地提取特征,BotCatcher 采用双向LSTM,即对每个数据流进行正向、反向 2 个方向的序列扫描。同时采用双层LSTM架构,先以数据分组中的字节序列作为LSTM的输入,将每个数据分组转化为一个向量,再将得到的数据分组向量序列作为LSTM的输入,生成最终的时间维度特征。

3.3.1 输入规范化

与3.2节相同,为了进行模型训练,需要对所有输入的数据流进行结构规范化,统一格式。BotCatcher对每个数据流截取前8个数据分组,每个数据分组取前100个字节(截取长度在第4节进行评估),若长度不够,则在末尾用0x00填充。

(4)来源:《Malware Traffic Classification Using Convolutional Neural Network for Representation Learning》,ICOIN 2017  使用的也是加密流量的payload 前784字节做CNN。

from:https://www.jianshu.com/p/42a166d22874

-------------------------------------------------------------------

数据源:https://github.com/echowei/DeepTraffic

该作者的其他文献:

Wei Wang, Xuewen Zeng, Xiaozhou Ye, Yiqiang Sheng and Ming Zhu,"Malware Traffic Classification Using Convolutional Neural Networks for Representation Learning," in the 31st International Conference on Information Networking (ICOIN 2017), pp. 712-717, 2017.
Wei Wang, Jinlin Wang, Xuewen Zeng, Zhongzhen Yang and Ming Zhu, "End-to-end Encrypted Traffic Classification with One-dimensional Convolution Neural Networks," in the 15th IEEE International Conference on Intelligence and Security Informatics (IEEE ISI 2017), pp. 43-48, 2017.
Wei Wang, Yiqiang Sheng, Jinlin Wang, Xuewen Zeng, Xiaozhou Ye, Yongzhong Huang and Ming Zhu, "HAST-IDS: Learning Hierarchical Spatial-Temporal Features using Deep Neural Networks to Improve Intrusion Detection," in IEEE Access, vol. 6, pp. 1792-1806, 2018.

 

一、引言

流量分类是将网络流量与生成应用程序关联起来的任务,它是网络管理特别是网络安全领域中至关重要的任务。在网络安全领域,流量分类实际上代表了对网络资源恶意使用的异常检测等活动的第一步[1]。

有四种主要的流量分类方法[1]:基于端口的、深度数据包检查(DPI)、基于统计的、基于行为的。从人工智能的角度来看[2],基于端口和基于dpi的方法是基于规则的方法,它通过匹配预定义的硬编码规则来执行流量分类。基于统计和行为的方法是典型的机器学习方法,它通过使用一组选择性特征从经验数据中提取模式来对流量进行分类。虽然经典的机器学习方法解决了许多基于规则的方法无法解决的问题,例如加密的流量分类和高计算成本,但是它面临着设计适当特性的新挑战[3]。

表征学习是近年来快速发展的一种快速发展的机器学习方法,它从原始数据中自动学习特征,在一定程度上解决了手工设计特征的问题[4]。特别是在图像分类和语音识别等多个领域,深度学习方法是表征学习的一种典型方法,取得了很好的效果[5] [6]。本文的主要目标是尝试将表征学习应用于恶意软件流量分类领域,并证明其有效性。图1展示了人工智能视角下的流量分类分类。图2显示了这些方法的不同工作流程,阴影框表示能够从数据中学习的组件[2]。

 

 
 

本文所使用的技术是卷积神经网络(CNN),它是目前最流行的表征学习方法之一。我们没有从流量中提取特征,而是将原始的流量数据作为图像,然后使用CNN进行图像分类,这是CNN最常见的任务[7],最终实现了恶意软件流量分类的目标。据我们所知,这一有趣的尝试是第一个使用原始流量数据的表征学习方法在恶意软件流量分类领域的应用。由于交通数据的连续性和图像数据的离散性的不同,研究了多种流量表示类型,并通过实验找到了最佳类型。为了证明我们所提出的方法的可扩展性,我们使用三种类型的分类器进行两种场景的实验,最终的平均精度为99.41%,符合实际应用标准。此外,还创建了一个流量数据集USTC-TFC2016,并开发了一个数据预处理工具包USTC-TK2016。他们和我们的训练和测试源代码都将在GitHub上发布给感兴趣的研究人员。

二、相关工作

基于规则的流量分类方法在行业中比较成熟,相关工作主要集中在如何准确提取映射规则和提高性能。Finsterbusch等[8]总结了当前基于dpi的流量分类方法。传统的流量分类机器学习方法吸引了学术界的大量研究,相关工作主要集中在如何选择一个更好的特征集上。Dhote等[3]提供了一项关于网络流量分类特征选择技术的综述。

现在有一些关于表征学习的研究。Gao等[9]提出了一种使用深度信念网络的恶意软件流量分类方法。Javaid等[10]提出了一种使用稀疏自动编码器的恶意软件流量识别方法。这些研究都采用了深度学习技术,并应用于基于网络的入侵检测系统的设计。但是在他们的研究中也存在一个同样的问题,他们都使用手工设计的流特征数据集作为输入数据[11]。表征学习最大的优点是能够直接从原始数据中学习特征,并且在图像分类领域和语音识别领域的成功应用已经充分证明了这一点。不幸的是,上述两项研究刚刚放弃了这一优势。Wang[12]提出了一种基于原始数据的多层自动编码器(SAE)网络协议识别方法,实现了较高的精度。流量分类和协议识别是非常相似的任务。因此,认为表征学习方法能够在恶意软件流量分类任务中取得良好的效果是合理的。

在本文中,我们使用原始的交通数据进行恶意软件流量分类任务的研究,我们使用的表征学习方法是CNN,在图像分类任务中优于SAE。

三、方法

3.1数据集

正如Dainotti et al.[13]所指出的那样,缺乏各种可共享的跟踪数据集作为测试数据是在流量分类上取得进展的最明显的障碍。许多关于恶意软件流量分类的研究使用了自收集的流量或安全公司的私人流量,从而破坏了其结果的可信度。由于经典的机器学习方法侧重于特征选择技术,许多当前的公开流量数据集都是流特征数据集,而不是原始的流量数据集[11]。[14]。这些数据集不能满足我们对原始流量的要求。在提供原始流量的数据集中,几乎没有包含足够的正常和恶意软件流量数据,比如[15]。

为了解决这些问题,创建了一个数据集USTC-TFC2016。数据集由两部分组成,如表1和表2所示。第一部分,从2011年到2015年CTU研究人员从真实的网络环境中收集到的10种恶意软件流量[16]。对于一些太大的流量,只使用了一部分。对于一些规模过小的流量,我们将它们合并在同一个应用程序中。第二部分包含了使用IXIA BPS[17]采集的10种正常流量,这是一种专业的网络交通仿真设备。关于模拟方法的信息可以在他们的产品网站上找到。为了尽可能地反映更多的流量,十种流量包含八个类的通用应用程序。USTC-TFC2016数据集的大小为3.71GB,格式为pcap。它将会在GitHub上发表给感兴趣的研究人员。

 

3.2网络流量表示

综上所述,有四种类型的流量表示:Flow+ All、Flow + L7、Session + All、Session + L7。他们的性能测试使用了1)部分介绍的两种类型的流量数据集,最后确定了最佳的表示类型。本研究共进行了8次实验,结果与分析见第四节。

3.3数据预处理

数据预处理是将原始流量数据(pcap格式)转换为CNN输入数据(idx格式)的过程。它包括四个步骤:流量分割、流量清除、图像生成和IDX转换,并相应地开发了一个toolkit USTC-TL2016。图3显示了数据预处理的全过程。

 

 

步骤1(流量分割)。这一步分割了连续的原始流量,以增加离散的流量单元。输入数据格式为pcap。如果表示类型是Flow + All或Session + All,则输出数据格式为pcap。如果表示类型为Flow + L7或会话+ L7,则输出数据格式为bin。

步骤2(交通清洁)。该步骤首先执行流量匿名化/清洗,在数据链路层和IP层分别随机化MAC地址和IP地址。这是可选的,例如,当所有流量来自同一网络时,MAC和IP可能不再是区分信息,在这种情况下,我们不需要执行它。流量清洗的第二个作用是清除文件。有些包没有应用程序层,所以结果bin文件是空的。有些包在具有相同内容时生成相同的文件,而重复的数据在训练CNN时可能导致偏差。那些空的和重复的文件需要删除。此步骤中的数据格式没有变化。

步骤3(图像生成)。这一步首先将所有文件整理成均匀长度。如果文件大小大于784字节,则将其裁剪为784个字节。如果文件大小小于784字节,则在末尾添加0x00以补充到784字节。使用相同大小的结果文件被转换为灰色图像。原始文件的每个字节表示一个像素,例如,0x00是黑色的,0xff是白色的。实际上,这种转换是可选的,我们可以直接将文件转换为IDX文件。这种转换只是为了向研究人员展示视觉图像,所以他们可以以视觉的方式进行分析。

步骤4(IDX转换)。此步骤将图像转换为IDX格式文件。IDX文件包含一组图像的所有像素和统计信息。IDX格式是机器学习领域常见的文件格式[21]。

USTC-TFC2016流量数据集使用USTC-TK2016工具包进行处理,共生成752,040条记录。表三显示了结果。因为会话包括双向流,会话的数量通常少于流。

 

 

3.4可视化分析

在此部分分析了数据预处理过程步骤3后生成的图像。每个灰色图像的大小为784(28*28)字节。Session +all的可视化结果如图4和5所示。其他三种表示形式的结果通常与它们相似。

 

 

图4显示了所有类的可视化结果。很明显,他们很容易区分。只有很少的图像是非常相似的,例如FTP和SMB。图5显示了同一流量类中的一致性。在一个类中随机选取9个图像,随机选取4个类。同样明显的是,微博、魔兽和Neris的图像纹理非常相似。只有Geodo图像可以被划分为两个子类,但即使在各自的子类中图像的纹理仍然非常相似。其他16个类的一致性大体相似。通过可视化分析,我们得出结论:不同的流量类别具有明显的歧视程度,每一类流量都具有高度的一致性,因此我们有理由认为我们的方法可以取得良好的效果。

3.5CNN架构

预处理数据集的大小和每个图像的大小都非常类似于经典的MNIST数据集[21],因此使用了类似于LeNet-5[22]的CNN体系结构,但是在每个卷积层中使用了更多的通道。

CNN首先从IDX文件中读取28*28*1的流量图像。这些图像的像素从[0,1]被归一化到[0,1]。第一个卷积层C1执行一个卷积运算,有32个大小为5*5的内核。C1层的结果为32个特征图,大小为28*28。在 C1层之后,在P1层中有一个2*2的max池操作,结果是32个特征图,大小为14*14。第二个卷积层C2的内核大小也是5*5,但有64个通道。结果是64个尺寸14*14的特征图。在第二个2*2的max池层P2之后,生成了64个大小为7*7的feature map。最后两个层是完全连接的,结果大小分别为1024和10。一个softmax函数用来输出每个类的概率。此外,辍学是用来缓解过度拟合的。在F部分中引入的三种类型的分类器中都使用了CNN架构。

3.6可扩展性的研究

两种应用场景,包括三种类型的CNN分类器,用于验证所提议方法的可伸缩性:二进制分类器,10级分类器,20级分类器。图6显示了两个场景的实验设置。我们使用了b部分确定的最佳流量表示类型(二进制和10级分类器)。在实际应用的流量分类中,最常见的要求是恶意软件的流量识别,这也是NIDS的主要目标。如果必要的话,可以进行更精细的流量分类来识别每一类恶意软件和正常的流量。在这种情况下,首先执行一个二进制分类来识别恶意软件或正常,然后分别执行两个10级分类来识别每一类流量。场景B(10级和20级分类器)。在某些应用中,我们需要对所有类型的流量进行一次分类,这就要求对分类器进行比较高的性能。执行了一个20级的分类,使用所有类型的流量。

 

 

4评估

4.3表示实验结果和分析。

进行了八项实验以确定最佳的流量表征类型。图7显示了恶意软件和正常流量数据集的四种表示类型的准确性。从4个比较中可以发现,所有层的流量类的准确性总是高于L7层。除了在正常流量中L7的会话和流的准确性是相等的,其他三个比较都表明,使用会话的流量类的准确性总是高于使用流。图8显示了nsi -ay的精度、召回率和f1值,它是20种流量类型之一。我们可以看到图7所示的模式。在所有的12个比较中,除了使用所有层的会话召回率比使用所有层的流量稍微低(0.24%),其他11个比较显示了如下模式:所有层的流量类的精度、召回率、f1值都比只有L7层的高,而且使用会话的精度、召回率、f1值都比使用流要高。不仅如此,同样的模式也可以在其他19类流量结果中找到。总之,所有的都比L7好,而且会话比流更好。

 

 

对于这种模式,可以给出一个直观的解释。因为会话包含双向流,因此包含更多的交互信息,而不是单向流。因为所有层表示都包含了比L7层更多的层,特别是包含端口和标记信息,所以它可以代表更多的关键信息,这证明了我们在第三节的B部分的假设。需要注意的是,许多类流量的L7层预处理结果记录要比所有层的预处理结果记录少得多,例如CTU 107-1的L7层记录只有8,但所有层记录都是16386。当生成相同数量的训练数据时,需要使用L7比所有层表示更多的流量数据。因此,我们可以看到,所有层表示都比L7层表示更灵活。

综上所述,可以发现最佳类型的流量表示是会话+ All,只有这种类型的流量表示被用来进行可伸缩性实验。

4.4可扩展性实验结果与分析

表4显示了使用会话+所有流量表示的两种场景中三种类型的分类器的总体准确性。表V和VI显示了每一类流量的精度、召回率和f1值。由于二进制分类器的精度为100%,所以不需要显示二进制分类器的精度、召回率和f1值。

 

 

 

表4显示四种分类器的准确度很高,即使是最低准确度也达到了98.52%。表V显示Neris和病毒流量的精度、召回率和f1值稍低(90% ~ 96%),但其他18类流量均达到非常高的精度、召回率和f1值(高于99%)。表VI显示了相似的模式,Neris和病毒流量的指标值稍低一些(89% ~97%),但是其他18个级别的流量都达到了很高的指标(高于99%)。为什么Neris和病毒会出现一些较低的指标,这可能是它们的特殊特征,需要进一步研究。综上所述,这三种分类器的平均准确度已经达到了99.41%,满足了实际使用的准确度要求。

4.5比较

由于交通数据集、软件设置和实验环境的不同,在各种恶意软件流量分类方法中进行公平的比较是不容易的。另一方面,三种类型的分类器都实现了相当高的精度。因此,我们不是在我们的方法和其他现有方法之间进行性能比较,而是将它们与一些重要的特性进行比较。表7显示了我们的方法和基于规则的Snort之间的一般比较,这是一个著名的NIDS,基于传统机器学习的Celik[18],前面提到的Gao[9]和Javaid[10]都使用了手工设计的流特性。

 

 

我们的方法具有早期恶意软件流量检测的能力,因为仅使用前几百个字节的每个会话。Snort需要匹配其位置不确定的流量指纹。Gao和Javaid需要从整个交通流中提取特征。所以它们都没有早期的检测特性。实验结果表明,该方法具有较低的误报率,且由于某些问题如难以精确地提取恶意软件的流量,使Snort的误报率较高。我们的方法是协议独立的,因为使用图像分类方法,而Snort需要为每个协议设计匹配规则。我们的方法可以自动提取特征,而Celik则没有这样的能力,这是基于典型的机器学习方法,如SVM。最后,我们的方法直接使用原始的流量数据集,相比之下,Gao和Javaid都使用手动设计的流特性数据集。

5局限性和未来的工作

关于我们的工作有三个限制和相关的未来工作。首先,本文的主要目的是利用表示学习方法来证明恶意软件流量分类的有效性,因此我们没有研究CNN参数的调优。在实际应用中,流量大小和类数肯定不是固定的,所以在机器学习术语中,我们的方法的泛化能力需要进一步验证。其次,传统的流量分类方法采用经典的机器学习方法,使用了许多时间序列特征,证明了它们的高效率[24]。我们的方法实际上只使用了流量的空间特性,并且完全忽略了时间特性。我们将研究如何在未来的工作中加入这些时间特征,例如使用递归神经网络(RNN)。最后,本文的工作只对已知的恶意软件流量进行分类。识别未知恶意软件流量的能力对于NIDS[25]来说也是非常重要的,如何在未来的工作中进一步研究如何增加未知的恶意软件流量的能力。

6结论

在对传统恶意软件流量分类方法进行系统总结的基础上,提出了一种新的恶意软件流量分类方法。我们的方法不需要预先设计流量特性。原始流量数据是流量分类器的输入数据,分类器可以自动学习特征。在实验中,CNN被用作我们的表征技术。创建了USTC-TRC2016流量数据集,并开发了一个名为USTCTK2016的数据预处理工具包。在数据集和工具箱的基础上,通过对8个实验结果的分析,找到了最佳的流量表示类型。实验结果表明,在两种情况下,采用三种类型的分类器,实现了实际应用的精度要求,具有较高的可扩展性。在今后的工作中,我们计划进一步研究本文提出的方法,以提高恶意软件的流量识别能力。

posted @ 2019-01-22 12:13  bonelee  阅读(14586)  评论(5编辑  收藏  举报