利用神经网络进行网络流量识别——特征提取的方法是(1)直接原始报文提取前24字节,24个报。。。

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利⽤神经⽹络进⾏⽹络流量识别——特征提取的⽅法是(1)直接原始报⽂提取前24字节,24个报。

国外的⽂献汇总:
《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://.au/students/wiki/projects/index.php/Projects:2017s1-
101_Classifying_Network_Traffic_Flows_with_Deep-Learning 探索了使⽤CNN packet payload进⾏流量分类的做法,关键截图如下:
此外,还有恶意软件流量识别的分类实验:
恶意流量分类
以与应⽤结果类似的⽅式,然后训练分类器并对恶意数据集进⾏评估。

恶意分类器不仅检测恶意活动,还必须对恶意活动的类型进⾏分类。

运⾏时间超过22⼩时,恶意分类器的分类准确率达到94%。

混淆矩阵以及恶意分类器的精确度和召回率如下所⽰。

结果发现,分类器能够正确识别⼤多数恶意类,在⾮恶意类和被称为模糊器的恶意攻击之间发⽣最⼤的混淆。

《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.
同样,《基于卷积神经⽹络的未知和加密流量识别的研究与实现》也是使⽤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(PacketByteMatrix)作为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。

-------------------------------------------------------------------
该作者的其他⽂献:
⼀、引⾔
流量分类是将⽹络流量与⽣成应⽤程序关联起来的任务,它是⽹络管理特别是⽹络安全领域中⾄关重要的任务。

在⽹络安全领域,流量分类实际上代表了对⽹络资源恶意使⽤的异常检测等活动的第⼀步[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个实验结果的分析,找到了最佳的流量表⽰类型。

实验结果表明,在两种情况下,采⽤三种类型的分类器,实现了实际应⽤的精度要求,具有较⾼的可扩展性。

在今后的⼯作中,我们计划进⼀步研究本⽂提出的⽅法,以提⾼恶意软件的流量识别能⼒。

相关文档
最新文档