«上一篇 下一篇»
  计算机工程  2021, Vol. 47 Issue (7): 101-108  DOI: 10.19678/j.issn.1000-3428.0058517
0

引用本文  

蒋彤彤, 尹魏昕, 蔡冰, 等. 基于层次时空特征与多头注意力的恶意加密流量识别[J]. 计算机工程, 2021, 47(7), 101-108. DOI: 10.19678/j.issn.1000-3428.0058517.
JIANG Tongtong, YIN Weixin, CAI Bing, et al. Encrypted Malicious Traffic Identification Based on Hierarchical Spatiotemporal Feature and Multi-Head Attention[J]. Computer Engineering, 2021, 47(7), 101-108. DOI: 10.19678/j.issn.1000-3428.0058517.

基金项目

江苏省研究生科研与实践创新计划(SJCX18_0149);南京理工大学自主科研专项(1181060420);南京理工大学横向课题(1191061083)

作者简介

蒋彤彤(1996-), 女, 硕士研究生, 主研方向为网络安全、深度学习;
尹魏昕, 高级工程师;
蔡冰, 高级工程师;
张琨, 教授、博士、博士生导师

文章历史

收稿日期:2020-06-02
修回日期:2020-07-03
基于层次时空特征与多头注意力的恶意加密流量识别
蒋彤彤1 , 尹魏昕2 , 蔡冰3 , 张琨1     
1. 南京理工大学 计算机科学与工程学院, 南京 210094;
2. 国家计算机网络与信息安全管理中心江苏分中心 网络安全处, 南京 210019;
3. 国家计算机网络与信息安全管理中心江苏分中心 技术保障处, 南京 210019
摘要:为实现互联网全面加密环境下的恶意加密流量精确检测,针对传统识别方法较依赖专家经验且对加密流量特征的区分能力不强等问题,提出一种基于层次时空特征与多头注意力(HST-MHSA)模型的端到端恶意加密流量识别方法。基于流量层次结构,结合长短时记忆网络和TextCNN有效整合加密流量的多尺度局部特征和双层全局特征,并引入多头注意力机制进一步增强关键特征的区分度。在公开数据集CICAndMal2017上的实验结果表明,HST-MHSA模型的流量识别F1值相较基准模型最高提升了16.77个百分点,漏报率比HAST-Ⅱ和HABBiLSTM模型分别降低了3.19和2.18个百分点,说明其对恶意加密流量具有更强的表征和识别能力。
关键词加密流量识别    多头注意力机制    恶意流量识别    卷积神经网络    长短时记忆网络    
Encrypted Malicious Traffic Identification Based on Hierarchical Spatiotemporal Feature and Multi-Head Attention
JIANG Tongtong1 , YIN Weixin2 , CAI Bing3 , ZHANG Kun1     
1. School of Computer Science and Engineering, Nanjing University of Science and Technology, Nanjing 210094, China;
2. Department of Network Security, Jiangsu Branch of National Computer Network and Information Security Management Center, Nanjing 210019, China;
3. Department of Technical Support, Jiangsu Branch of National Computer Network and Information Security Management Center, Nanjing 210019, China
Abstract: To implement the full encryption of Internet, the accurate detection of encrypted malicious traffic is required, but traditional detection methods rely heavily on expert experience and perform poorly in distiguishment of encrypted traffic feature is not strong the representation of encrypted traffic.To address the problem, an end-to-end malicious encrypted traffic identification method based on Hierarchical Spatiotemporal feature and Multi-Head Self-Attention(HST-MHSA) model is proposed.By utilizing the hierarchical structure of traffic, the advantages of LSTM and TextCNN to integrate the multi-scale local features and two-layer global features of encrypted traffic are combined.In addition, the multi-head attention mechanism is introduced to further enhance the discrimination of the key features.Experimental results on the public dataset CICAndMal2017 show that the F1 value of HST-MHSA model is at most 16.77 percentage points higher than that of the benchmark model, and its Missed Alarm Rate(MAR) is 3.19 and 2.18 percentage points lower than that of the hierarchical model HAST-Ⅱ and HABBiLSTM model respectively, displaying its stronger ability to represent and identify encrypted malicious traffic.
Key words: encrypted traffic identification    multi-head attention mechanism    malicious traffic identification    Convolutional Neural Network(CNN)    Long Short-Term Memory(LSTM) network    

开放科学(资源服务)标志码(OSID):

0 概述

近年来,信息安全问题日益成为国家、企业和个人所关注的热点,公众对个人隐私信息保护意识的提高促进了信息加密技术的发展,从2019年起互联网中HTTPS加密流量占比已超过HTTP流量。TLS、IPSec、SSH等流量加密和认证技术一方面加强了信息通信的保密性和可靠性,另一方面越来越多的攻击者通过加密信道和流量加密技术隐藏自己的恶意行为[1],规避防火墙的检测,给网络安全监测带来了巨大考验。例如,木马、广告软件、勒索软件等恶意软件通过与命令和控制服务器之间的通信,即C & C通信方式来接收与执行命令进行恶意活动。在传统情况下根据明文流量模式,C & C服务器的域名、URL等威胁情报信息可以被直接检测并及时制止[2],然而流量加密技术使得这些信息难以被正确解析提取,且解密将消耗大量计算资源。文献[3]指出,截至2020年,超过六成的企业将无法直接解密HTTPS来识别隐藏在流量中的恶意软件。为避开解密并精确识别恶意加密软件流量,本文以HTTPS加密协议流量为研究对象,利用网络流量的“网络流-数据包-字节”分层结构特征和动态时序性,提出一种基于层次时空特征与多头注意力(Hierarchical Spatiotemporal feature and Multi-Head Self-Attention,HST-MHSA)模型的恶意加密流量识别方法,并基于公开数据集CICAndMal2017验证HST-MHSA模型的有效性。

1 相关研究

目前,越来越多的恶意软件使用TLS协议通过C & C通道加密交换数据,传统基于端口或者DPI的方法不再适用于识别此类威胁,因为流量加密时所有上层信息为不可见,加密技术改变了原本明文流量规则和可解析模式与特征。然而,加密技术的滥用对网络管理和安全带来了新的挑战,学术界和工业界将研究重点转移到基于机器学习的恶意加密流量监测研究方式上并取得了一些研究成果[4]。ANDERSON等[5]经过深入分析提取流量元数据和TLS头部大量特征进行恶意软件分类。LIU等[6]提取了流行为、TLS明文信息、证书这3个维度的特征,结合在线随机森林模型实时区分恶意加密流量。YU等[7]提取TLS握手与验证阶段的特征,并引入层次聚类方法压缩数据运算,加快系统检测效率。BAZUHAIR等[8]采用平均不纯度减少算法筛选出24个流量特征,并加入柏林噪声增强特征图像,加强卷积神经网络(Convolutional Neural Network,CNN)模型的泛化能力。胡斌等[9]提出一种不依赖五元组信息的加密恶意流量检测方法,联合报文负载特征和流指纹特征来提高复杂环境下加密恶意流量的检测率。然而,这些方法多数依赖专家知识,将重点放在优化特征工程方面,需要花费大量的人力、时间等资源,且所提取的特征通常普适性较差。

深度学习技术作为一种端到端的学习框架,近年来在图像识别、自然语言处理等领域得到广泛应用,而流量识别领域的研究人员也开始基于深度学习模型自动提取流量特征。WANG等[10]将流量转换为灰度图,并使用二维CNN提取流量空间特征,但该方法仅利用了整条流量的前784个字节,未充分结合流量的其他信息且缺乏对IP地址的匿名化处理。王攀等[11]通过堆栈式自动编码器提取流量特征进行加密流量识别。程华等[12]将流量负载通过Word2vec模型转换为句子向量,并利用CNN实现恶意加密C & C流量识别。此外,ILIYASU等[13]和GUO等[14]利用半监督和无监督方法有效解决标签样本量不足时加密流量的识别问题。

为了避免繁琐的特征工程并且更好地表征加密流量的深层特性,本文在已有研究的基础上,结合CNN、循环神经网络(Recurrent Neural Network,RNN)和多头注意力机制[15]进一步挖掘流量分层的关键时空特征,从而更准确地识别恶意加密流量。

2 基于HST-MHSA的恶意加密流量识别方法

本文提出的恶意加密流量识别方法主要包括流量预处理、网络流量分层表征、流量分类检测这3个阶段,各阶段主要操作如下:

1) 预处理阶段。筛选存在噪音的原始流量,转化为网络流量字节,并以十进制形式表示。

2) 网络流量分层表征阶段。首先,在数据包层,利用词嵌入(Embedding)技术将字节转换为稠密向量表示并将其作为流量原始信息,同时利用双向长短时记忆(Bidirectional Long Short-Term Memory,BiLSTM)网络提取流量前后的依赖信息,并将两者相融合以增强流量表征。然后,使用多尺寸卷积核的并行CNN模型提取多视野的局部信息,整合得到数据包内部时空关联特征。接着,在流量会话层通过BiLSTM捕捉多数据包之间的时序关系,并基于多头注意力机制改进重要数据包特征的提取能力,减轻噪音特征的影响。

3) 流量分类检测。通过Softmax分类器实现恶意加密流量识别。

HST-MHSA模型总体框架如图 1所示。

Download:
图 1 HST-MHSA模型总体框架 Fig. 1 Overall framework of HST-MHSA model
2.1 流量表示与预处理

数据包是网络流的基本传输单元,每个数据包由具有固定格式的数据包头部字节和有效荷载字节组成,因此网络流具有“网络流-数据包-字节”的分层结构。相比单向流,由通信双方数据包组成的会话流含有更多交互信息[10],因此本文选择会话作为流量分类粒度,会话表示如式(1)所示:

$ \begin{array}{l}P=\mathrm{ }\{{p}_{1}=\mathrm{ }({b}_{1}, {l}_{1}, {t}_{1}), {p}_{2}=\mathrm{ }({b}_{2}, {l}_{2}, {t}_{2}), \cdots , {p}_{n}=\mathrm{ }({b}_{n}, {l}_{n}, {t}_{n}\left)\right\}\\ \mathrm{简}\mathrm{记}\mathrm{为}:\mathrm{S}\mathrm{e}\mathrm{s}\mathrm{s}\mathrm{i}\mathrm{o}\mathrm{n}\mathrm{ }=\mathrm{ }(b, l, t, d)\\ t\mathrm{ }=\mathrm{ }{t}_{1}<\mathrm{ }{t}_{2}<\cdots \mathrm{ }<\mathrm{ }{t}_{n}\\ b\mathrm{ }=\mathrm{ }{b}_{1}=\mathrm{ }{b}_{2}=\cdots \mathrm{ }=\mathrm{ }{b}_{n}=\mathrm{ }\\ (<\mathrm{I}{\mathrm{P}}_{\mathrm{S}}, \mathrm{I}{\mathrm{P}}_{\mathrm{D}}, \mathrm{P}\mathrm{O}\mathrm{R}{\mathrm{T}}_{\mathrm{S}}, \mathrm{P}\mathrm{O}\mathrm{R}{\mathrm{T}}_{\mathrm{D}}, \mathrm{ }\mathrm{P}\mathrm{r}\mathrm{o}\mathrm{t}\mathrm{o}\mathrm{c}\mathrm{o}\mathrm{l}\mathrm{ }>), \mathrm{S}\mathrm{ }\rightleftharpoons \mathrm{ }\mathrm{D}\end{array} $ (1)

其中:$ {p}_{i} $为按时间$ {t}_{i} $排序的数据包;b为源S和目的端D可互换的五元组信息;$ l=\sum\limits_{l}^{n}{l}_{i} $为会话中各数据包的长度和;t为首数据包的开始时间;$ d={t}_{n}-t $为会话持续时间。因此,原始流量可表示为$ F=\{\mathrm{S}\mathrm{e}\mathrm{s}\mathrm{s}\mathrm{i}\mathrm{o}{\mathrm{n}}_{1}, $ $ \mathrm{S}\mathrm{e}\mathrm{s}\mathrm{s}\mathrm{i}\mathrm{o}{\mathrm{n}}_{2}, \cdots , \mathrm{S}\mathrm{e}\mathrm{s}\mathrm{s}\mathrm{i}\mathrm{o}{\mathrm{n}}_{m}\} $$ m $为会话流总数。

预处理阶段完成从原始网络流量pcap文件向适合深度学习处理的字节序列csv文件的转换,主要流程如图 2所示。首先,根据式(1)进行原始网络流量切割,重组为多个会话流文件;接着,删除空流和重复文件,过滤非HTTPS的流量以及数据包数目小于3的无效会话;然后,去除MAC地址、IP地址等对分类结果产生干扰的特定信息;最后,根据网络流量传输的字节范围为[0, 255]的特点,提取每条会话中前N个数据包的前M个字节,若超出长度则截断,否则补充256并标记该会话。

Download:
图 2 流量预处理流程 Fig. 2 Procedure of traffic preprocessing
2.2 基于LSTM与CNN的数据包时空特征提取

经过预处理后,每条会话表示为N×M个字节的一维形式。文献[16]采用One-hot编码将每个数据包转换为二维图像,但生成的数据过于稀疏而导致模型训练速率低下。本文采用Embedding方式,将每个数据包由M×1的一维序列,转换为M×J的二维稠密向量,其中第i个字节表示为一维向量$ {\mathit{a}}_{i}\subseteq {\mathbb{R}}^{J} $,则M个字节表示为$ {a}_{1:M}={a}_{1}\oplus {a}_{2}\oplus \cdots \oplus {a}_{M} $,作为数据包原始信息编码。

数据包内部字节具有前后关联性,类似于句子中词语之间的关系,RNN擅长捕获句子上下文特征,双向RNN可以从前后两个方向捕捉前后顺序联系,避免后文信息的丢失。本文选用双向LSTM挖掘数据包内部前后依赖信息,LSTM基于RNN引入选择性机制,可以避免RNN梯度消失问题。在时间步t上基于3种门结构完成对前一步的输出$ {h}_{t-1} $和当前输入$ {x}_{t} $的计算,分别为输入门$ {i}_{t} $决定需要被保留的新输入信息,经过tanh层的计算得出一个新的候选值$ {\boldsymbol{\tilde{\mathit{C}}}}_{t} $,进一步得到细胞状态$ {\boldsymbol{\mathit{C}}}_{t} $,遗忘门$ {f}_{t} $决定是否保留数据,输出门$ {\boldsymbol{\mathit{o}}}_{t} $决定输出的信息$ {h}_{t} $。更新当前隐藏状态需要将当前细胞状态向量$ {\boldsymbol{\mathit{C}}}_{t} $中每个元素经过tanh函数并与输出门$ {\boldsymbol{\mathit{o}}}_{t} $的值进行元素层面的乘积,具体计算如式(2)~式(7)所示:

$ {i}_{t}=\sigma \left({w}_{i}\cdot \left[{h}_{t-1}, {x}_{t}\right]+{b}_{i}\right) $ (2)
$ {\boldsymbol{\tilde{\mathit{C}}}}_{t}=\mathrm{t}\mathrm{a}\mathrm{n}\mathrm{h}\left({w}_{c}\cdot \left[{h}_{t-1}, {x}_{t}\right]+{b}_{c}\right) $ (3)
$ {\boldsymbol{\mathit{C}}}_{t}={f}_{t}\times {\boldsymbol{\mathit{C}}}_{t-1}+{\boldsymbol{\tilde{\mathit{C}}}}_{t}\times {i}_{t} $ (4)
$ {f}_{t}=\sigma \left({w}_{f}\cdot \left[{h}_{t-1}, {x}_{t}\right]+{b}_{f}\right) $ (5)
$ {\boldsymbol{\mathit{o}}}_{t}=\sigma \left({w}_{o}\cdot \left[{h}_{t-1}, {x}_{t}\right]+{b}_{o}\right) $ (6)
$ {h}_{t}={\boldsymbol{\mathit{o}}}_{t}\times \mathrm{t}\mathrm{a}\mathrm{n}\mathrm{h}\left({\boldsymbol{\mathit{C}}}_{t}\right) $ (7)

通过将Embedding处理后的数据包字节向量输入双向LSTM层提取数据包内部全局依赖关系,作为数据包全局时序特征表示$ H={h}_{\mathrm{f}\mathrm{o}\mathrm{r}\mathrm{w}\mathrm{a}\mathrm{r}\mathrm{d}} $ $ \oplus {h}_{\mathrm{b}\mathrm{a}\mathrm{c}\mathrm{k}\mathrm{w}\mathrm{a}\mathrm{r}\mathrm{d}} $,与原始信息编码$ {a}_{1:M} $拼接得到数据包的时序拓展信息$ E= $[$ {e}_{ij} $],以增强数据包内部时序特征的表征能力。

利用TextCNN模块[17]进一步提取数据包内部的局部空间特征。该模块的核心是多通道卷积和池化操作,采用多种尺寸的一维卷积核提取多视野的空间特征,并且卷积操作可以并行进行,大幅加快了模型的训练速度。通过第r个尺寸为d的卷积核对拓展数据包编码E进行卷积操作,如式(8)所示:

$ {c}_{i}^{r}=F({W}^{r}\cdot {e}_{i:i+d-1}+{b}_{r}) $ (8)

其中:F为Relu函数;$ {W}^{r} $$ {b}_{r} $分别为第r个卷积核和偏置;$ {c}_{i}^{r} $为卷积后的特征。本文选用的3种卷积核尺寸分别为3、4、5,并对每个卷积操作后得到的特征图进行最大池化操作(如式(9)所示),以简化计算复杂度,抽取主要数据包的时空特征。

$ {M}^{r}=\mathrm{M}\mathrm{a}\mathrm{x}(0, {c}^{r}) $ (9)

在合并多粒度局部特征后,为了减少参数规模,加快模型训练速度,使用全局最大池化替代文献[17]中的全连接层,最终输出数据包的内部时空特征向量。数据包层混合时空特征提取模型结构如图 3所示。

Download:
图 3 数据包层混合时空特征提取模型结构 Fig. 3 Structure of hybrid spatiotemporal feature extraction model for packet layer
2.3 基于多头注意力的会话层关键时序特征提取

网络流量传播过程中数据包具有明显的先后顺序关系,且前几个TLS握手阶段的数据包对流量识别具有重要作用。因此,在经过底层模型处理得到多个独立数据包的时空特征向量后,使用BiLSTM层同时处理同一个会话中的N个数据包特征向量,捕获不同数据包之间的时间序列关系。然而,LSTM在长距离传播中损失较多信息且对特征重要度不敏感,因此采用多头注意力机制改进会话层对数据包重要特征的提取过程。多头注意力机制进行多次自注意力计算,自注意力是一般注意力的改进,利用查询(Q)=键(K)=值(V)的特征能充分捕捉序列内部数据的长距离依赖关系,并赋予不同属性不同权重。本文采用缩放点积注意力机制,多头注意力对QKV使用不同的权重矩阵$ {\mathit {\boldsymbol{{W}}}}_{i}^{Q} $$ {\mathit{\boldsymbol{{W}}}}_{i}^{K} $$ {\mathit{\boldsymbol{{W}}}}_{i}^{V} $并行进行h次线性变换,得到不同的数据包向量注意力$ {\mathit {\boldsymbol{{h}}}}_{i}^{\mathrm{h}\mathrm{e}\mathrm{a}\mathrm{d}} $,最终合并输出全局特征,可以高效学习到不同的表示子空间中的关键信息,具体计算如式(10)~式(12)所示:

$ \mathrm{A}\mathrm{t}\mathrm{t}\mathrm{e}\mathrm{n}\mathrm{t}\mathrm{i}\mathrm{o}\mathrm{n}(\mathit{\boldsymbol{{Q}}}, \mathit{\boldsymbol{{K}}}, \mathit{\boldsymbol{{V}}})=\mathrm{S}\mathrm{o}\mathrm{f}\mathrm{t}\mathrm{m}\mathrm{a}\mathrm{x}\left(\frac{\mathit{\boldsymbol{{Q}}}{\mathit{\boldsymbol{{K}}}}^{\mathrm{T}}}{\sqrt{{d}_{k}}}\right)\mathit{\boldsymbol{{V}}} $ (10)
$ \mathrm{M}\mathrm{u}\mathrm{l}\mathrm{t}\mathrm{i}\mathrm{H}\mathrm{e}\mathrm{a}\mathrm{d}(\mathit{\boldsymbol{{Q}}}, \mathit{\boldsymbol{{K}}}, \mathit{\boldsymbol{{V}}})=\mathrm{C}\mathrm{o}\mathrm{n}\mathrm{c}\mathrm{a}\mathrm{t}({\mathit{\boldsymbol{{h}}}}_{1}^{\mathrm{h}\mathrm{e}\mathrm{a}\mathrm{d}}, {\mathit{\boldsymbol{{h}}}}_{2}^{\mathrm{h}\mathrm{e}\mathrm{a}\mathrm{d}}, \cdots , {\mathit{\boldsymbol{{h}}}}_{h}^{\mathrm{h}\mathrm{e}\mathrm{a}\mathrm{d}}){\mathit{\boldsymbol{{W}}}}^{0} $ (11)
$ {\mathit {\boldsymbol{{h}}}}_{i}^{\mathrm{h}\mathrm{e}\mathrm{a}\mathrm{d}}=\mathrm{ }\mathrm{A}\mathrm{t}\mathrm{t}\mathrm{e}\mathrm{n}\mathrm{t}\mathrm{i}\mathrm{o}\mathrm{n}(\mathit{\boldsymbol{{Q}}}{\mathit{\boldsymbol{{W}}}}_{i}^{\boldsymbol{{Q}}}, \mathit{\boldsymbol{{K}}}{\mathit{\boldsymbol{{W}}}}_{i}^{\boldsymbol{{K}}}, \mathit{\boldsymbol{{V}}}{\mathit{\boldsymbol{{W}}}}_{i}^{\boldsymbol{{V}}}) $ (12)

其中:$ {d}_ {\boldsymbol{{k}}} $K矩阵的维度;Softmax函数将QK进行点积运算并归一化的结果转换为概率分布,与矩阵V相乘得到注意力权重求和结果。

图 4为基于多头注意力机制的会话层关键时序特征提取模型结构。将多头注意力层输出的会话层全局特征经过全局平均池化处理得到会话流时空特征向量,输入到Softmax分类器,进行恶意加密流量识别。

Download:
图 4 基于多头注意力机制的会话层关键特征提取模型结构 Fig. 4 Structure of key feature extraction model based on multi-head attention mechanism for session layer
2.4 算法流程

本文提出的基于HST-MHSA模型的恶意加密流量识别算法的具体步骤为:1)基于LSTM和TextCNN的数据包内的时空特征提取;2)基于多头注意力机制的会话层时序特征提取;3)Softmax分类;4)模型训练与验证;5)模型测试与评估。

算法1   基于HST-MHSA模型的恶意加密流量识别算法

输入   预处理后得到的网络会话流前N个数据包前M个字节的数据Session={p1p2,…,pN}

输出    会话流类别

1.embedded=Embedding(pi)//词嵌入处理得到每个数据//包字节的原始表示编码向量

2.p_temporal=BiLSTM(embedded)//双向LSTM层处理//得到数据包内字节时序编码向量

3.extended=Concat(embedded,p_temporal)//合并得到数//据包字节拓展向量

4.p_spatial=TextCNN(extended)//利用3种尺寸的一维//卷积核和最大池化提取多视野局部特征向量并合并输出

5.packetEncode=GlobalMaxPooling(p_spatial)//经过全//局最大池化层得到单个数据包时空编码特征向量

6.session=TimeDistributed(packetEncode)//将数据包维//度转化为会话维度

7.s_temporal=BiLSTM(packetEncode)//双向LSTM层同//时处理得到会话层多个数据包间的时序编码向量

8.s_att=Muti-head-self-Attention(s_temporal)//多头注意//力层得到加权求和的会话层时序特征

9.sessionEncoded=GlobalAveragePooling(s_att)//经过全//局平均池化层得到会话流总体时空特征向量

10.y_pred=Softmax(sessionEncoded)//进行Softmax分类//得到概率分布向量

11.Y=argmax(y_pred)//根据概率分布向量中最大值得//到对应预测类别

12.While不满足EarlyStoping条件,Do:

While训练集仍有剩余数据,Do:

选择batch_size=50的数据输入模型,进行前向计算;

计算交叉熵损失函数:$ \mathrm{l}\mathrm{o}\mathrm{s}\mathrm{s}=-\frac{1}{\mathrm{n}}[\mathrm{y}\mathrm{l}\mathrm{b}{\mathrm{\tilde{y}}}+(1-\mathrm{y}) $ $ \mathrm{l}\mathrm{b}(1-{\mathrm{\tilde{y}}}) $],其中,$ {\mathrm{\tilde{y}}} $表示模型预测样本是恶意的概率,y表示样本标签值

使用Adam优化算法反向更新模型权重和偏置值

End

使用验证集数据对模型继续验证

End

13.对测试集数据进行分类预测并使用真实标签评估模型

3 实验设置 3.1 实验环境

实验环境根据流量预处理节点及模型构建与训练阶段分别进行设置:1)在流量预处理阶段,实验运行在配置为Windows10操作系统、Python2.7环境的计算机上,利用开源Scapy库进行流量提取;2)在模型构建与训练过程中,实验运行在配置为Windows10操作系统、Python3.6环境、CPU为12核i7-8700k、内存为32 GB的计算机上,采用GTX1080Ti显卡加速,基于Tensorflow 2.1完成模型的构建以及训练调优。

HST-MHSA模型的参数设置如下:在Embedding层中,嵌入维度为128;在BiLSTM层中,隐藏神经元个数为128,返回整个序列的输出,激活函数为tanh;在CNN层中,卷积核尺寸分别为3、4、5,卷积核个数为128,步长为1,激活函数为Relu;在最大池化层中,池化的窗口大小为2;在多头注意力层中,并行头数量为2;在Softmax层中,隐藏神经元个数分别为2和4;在EarlyStopping层中,观察值设为验证集的loss值,监控的最小变化量为0.01,迭代次数为10。对比实验采用同层同参数值。实验使用早停机制动态控制训练次数,若连续迭代10次后验证集的loss值仍在上升则停止训练,避免过拟合的同时提高鲁棒性。通过十折交叉验证防止实验偶然性,采用交叉熵损失函数及Adam优化算法,平均训练迭代次数为15,批大小为50,训练集、验证集和测试集的比例分别设置为8∶1∶1。

3.2 实验数据集

CICAndMal2017数据集[18]是由加拿大网络安全研究所整理的数据集,收集了运行于智能手机上的恶意和良性应用程序的真实流量,格式为pcap。本文选取其中C & C通信的3种恶意应用流量以及com.asiandate、com.askfm、com.asos.app等多种正常应用流量(统称为Benign),具体数据情况如表 1所示。

下载CSV 表 1 数据集选取情况 Table 1 Dataset selection

经过数据分析发现,超过50%的会话流所含数据包数量(N)不超过21,数据包平均长度约为300 Byte,最小长度约为40 Byte,为缩减计算规模并保留流量头部关键信息,本文选取数据包数量为21,每个数据包长度(M)为100 Byte。

3.3 实验评价方法

为从多方面评价本文HST-MHSA模型对恶意加密流量的分类效果,选取F1值(F)、漏报率(Missed Alarm Rate,MAR)和误报率(False Alarm Rate,FAR)这3个评价指标,计算过程中涉及精确率(P)和召回率(R)指标,具体计算公式如式(13)~式(17)所示:

$ P=\frac{{T}_{\mathrm{T}\mathrm{P}}}{{T}_{\mathrm{T}\mathrm{P}}+{F}_{\mathrm{F}\mathrm{P}}} $ (13)
$ R=\frac{{T}_{\mathrm{T}\mathrm{P}}}{{T}_{\mathrm{T}\mathrm{P}}+{F}_{\mathrm{F}\mathrm{N}}} $ (14)
$ F=\frac{2\times P\times R}{P+R} $ (15)
$ {M}_{\mathrm{M}\mathrm{A}\mathrm{R}}=1-R=1-\frac{{T}_{\mathrm{T}\mathrm{P}}}{{T}_{\mathrm{T}\mathrm{P}}+{F}_{\mathrm{F}\mathrm{N}}} $ (16)
$ {F}_{\mathrm{F}\mathrm{A}\mathrm{R}}=\frac{{F}_{\mathrm{F}\mathrm{P}}}{{F}_{\mathrm{F}\mathrm{P}}+{T}_{\mathrm{T}\mathrm{N}}} $ (17)

其中,TTP表示正确预测为c类的c类加密流数量,TTN表示正确预测为非c的非c类加密流数量,FFP表示错误预测为c类的非c类加密流数量,FFN为错误预测为非c类的c类加密流数量。在二分类实验中,c类指恶意类别,F1值取加权平均值。

3.4 实验与结果分析 3.4.1 并行头数量确定实验与结果分析

在多头注意力层,超参数并行头数量会影响不同特征的关注度,合适的并行头数量能更准确地提取数据包关键时空特征,过多或过少并行头数量均有可能造成有效特征的缺失或被干扰,从而影响模型分类效果。本文设置并行头数量分别为1、2、4和8,实验结果如图 5所示。可以看出,当并行头数量为2时的分类结果F1值和漏报率均优于其他并行头数目,误报率也较低。当并行头数量为1,即单头自注意力时,HST-MHSA模型对多维特征信息的挖掘能力差于多头注意力,但并行头数量过多可能会造成噪声信息的增加,反而不利于关键特征的提取。

Download:
图 5 并行头数量对模型分类效果的影响 Fig. 5 The influence of the number of parallel heads on the effect of model classification
3.4.2 变体模型对比实验与结果分析

为评估HST-MHSA模型关键模块的有效性,设计以下3种变体模型,模型各层参数设置一致:

1) HST-MHSA_neLSTM:基于HST-MHSA模型,去除了嵌入层和TextCNN层之间的用于提取数据包内部前后依赖关系的BiLSTM层。

2) HST-MH:基于HST-MHSA模型,去除了多头注意力层。

3) HST-MHSA_GRU:基于HST-MHSA模型,将两层LSTM均替换为RNN门控循环单元(Gated Recurrent Unit,GRU)。GRU是LSTM的变体,将LSTM的遗忘门和输入门合并为更新门。

表 2给出了HST-MHSA模型与变体模型的对比实验结果。可以看出:HST-MHSA_neLSTM模型在数据包层缺少了对数据包内字节的全局时序特征的提取,底层特征表示向量误差较大,因此识别性能最差;HST-MHSA模型在HST-MH模型的基础上引入了多头注意力机制,可以捕捉到会话层更丰富且更关键的时序特征,因此识别性能更佳。

下载CSV 表 2 变体模型对比实验结果 Table 2 Experimental results of variant models

HST-MHSA_GRU模型与HST-MHSA模型的分类效果较佳,说明本文层次时空特征提取与分类模型的总体结构设计合理,尽管前者比后者简化了模型复杂度,但后者在漏报率、误报率和F1值上均达到了最优,可见GRU对加密流量的时序特征提取能力略逊于LSTM。当检测10 000条加密流量时,HST-MHSA_GRU模型比HST-MHSA模型少识别3 500条恶意加密流量,因此本文选择LSTM作为流量时序特征提取网络。

3.4.3 识别模型性能对比实验与结果分析

为了进一步验证HST-MHSA模型的有效性,本文基于3种已有基准模型(H-BiLSTM、HABBiLSTM和HAST-Ⅱ)和3种简化模型(1D-CNN、BiLSTM和TextCNN)进行对比实验,实验结果如表 3所示,其中:1D-CNN模型[19]将流量前(N×M)个字节的一维序列同时输入串联的两层卷积层,提取局部空间特征;BiLSTM模型将流量前(N×M)个字节整体经过嵌入层处理后,利用一层BiLSTM提取会话流全局时序特征;TextCNN使用3种尺寸的卷积核提取前(N×M)个字节的会话流多视角空间特征;H-BiLSTM模型在数据包层和会话层均采用BiLSTM提取时序特征;HABBiLSTM模型[20]在H-BiLSTM模型的基础上引入分层注意力机制,分别计算两层重要时序特征;HAST-Ⅱ模型[16]首先在数据包层将字节数据独热编码,利用卷积层提取空间特征,再在会话层采用双向LSTM提取时序特征完成分类。

下载CSV 表 3 7种模型的识别性能对比实验结果 Table 3 Experimental results of comparison among recognition performance of seven models%

表 3可以看出,HST-MHSA模型漏报率最低,相比HAST-Ⅱ和HABBiLSTM模型分别降低了3.19和2.18个百分点,F1值达到93.49%,在所有模型中总体分类性能最好,比1D-CNN模型和HAST-Ⅱ模型分别提高了16.77和1.20个百分点,而误报率仅次于HAST-Ⅱ模型,比后者高了0.85个百分点,说明HST-MHSA模型在数据包层的BiLSTM和会话层的多头注意力机制的作用下提高了对于恶意加密流量的关注度和识别能力。通过进一步分析得出以下结论:

1) 前3种模型将流量字节视为整体处理,分类效果不佳,而后4种模型将流量分层处理,F1值均高于90%,说明分层网络模型充分利用了流量所具有的“网络流-数据包-字节”的结构特征,更有利于流量分类。

2) HAST-Ⅱ和HST-MHSA模型混合使用CNN和LSTM共同挖掘流量的时空特征,相比其他单独使用LSTM或CNN的模型表现更好。

3) HABBiLSTM和HST-MHSA均引入了注意力机制,因此相比无注意力层的简化模型能获得更重要的流量特征信息,而多头注意力相比普通注意力能够捕获更多维的关键特征。

表 4给出了各模型的参数量及训练情况,可以看出HST-MHSA模型较复杂,训练时间较长,但是特征提取能力强,可以较快达到拟合状态,仅需训练15次即可停止训练。为更直观地看出模型训练情况,图 6给出了各模型前15次训练的验证集准确率变化情况,可以看出HAST-Ⅱ和HST-MHSA模型的初始验证集准确率高,拟合能力强,随着训练次数的增加,后者达到最高的准确率。

下载CSV 表 4 各模型参数量及训练情况 Table 4 The number of parameters and training situation of each model
Download:
图 6 7种模型前15次训练过程中验证集的准确率变化情况 Fig. 6 Changes of the accuracy of the verification set during the first fifteen training sessions of seven models

HABBiLSTM、HAST-Ⅱ、HST-MHSA这3种分层模型进行加密流量四分类实验时,对各类加密流量识别的F1值,如图 7所示。HST-MHSA模型总体识别效果最好,尤其是对数量最少的AndroidSpy.277流量识别的F1值比HAST-Ⅱ模型高出2.05个百分点,说明HST-MHSA模型提高了对少数恶意加密流量的特征提取与识别能力。

Download:
图 7 3种模型的四分类实验结果 Fig. 7 Results of four classification experiment of three models
4 结束语

本文提出一种基于层次时空特征与多头注意力模型的恶意加密流量识别方法。在数据包层引入双向LSTM通过层,通过融合多通道CNN加强对流量底层时空特征的表征能力,并利用多头注意力机制改进双向LSTM在会话层对多维度高判别性会话特征的提取能力。实验结果表明,该方法在F1值、漏报率和误报率方面相比其他方法均有明显的性能提升,并且在一定程度上提高了对少数恶意加密流量的识别率,有效加强了恶意加密流量的识别效果。但本文仅从算法层面对不平衡数据分类效果进行改进,因此后续将考虑从数据层面出发,使用GAN生成少数样本处理不平衡数据分类问题,并结合深度学习和集成学习技术实现大数据平台下的加密流量精细化分类。

参考文献
[1]
[2]
WANG J. Research on HTTP botnet C & C Traffic Detection Method[D]. Chengdu: University of Electronic Science and Technology, 2019. (in Chinese)
王健. 基于HTTP的僵尸网络C & C流量检测方法研究[D]. 成都: 电子科技大学, 2019.
[3]
Gartner. Encrypted Web traffic[EB/OL]. [2020-05-07]. https://www.gartner.com/en/documents/3869861.
[4]
REZAEI S, LIU X. Deep learning for encrypted traffic classification: an overview[J]. IEEE Communications Magazine, 2019, 57(5): 76-81. DOI:10.1109/MCOM.2019.1800819
[5]
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. DOI:10.1007/s11416-017-0306-6
[6]
LIU J, ZENG Y, SHI J, et al. MalDetect: a structure of encrypted malware traffic detection[J]. CMC-Computers, Materials & Continua, 2019, 60(2): 721-739.
[7]
YU T D, ZOU F T, LI L S, et al. An encrypted malicious traffic detection system based on neural network[C]//Proceedings of 2019 International Conference on Cyber-Enabled Distributed Computing and Knowledge Discovery. Washington D.C., USA: IEEE Press, 2019: 62-70.
[8]
BAZUHAIR W, LEE W. Detecting malign encrypted network traffic using Perlin noise and convolutional neural network[EB/OL]. [2020-05-07]. https://www.researchgate.net/publication/339903495_Detecting_Malign_Encrypted_Network_Traffic_Using_Perlin_Noise_and_Convolutional_Neural_Network.
[9]
HU B, ZHOU Z H, YAO L H, et al. TLS malicious traffic detection based on combined features of packet payload and stream fingerprints[J]. Computer Engineering, 2020, 46(11): 157-163. (in Chinese)
胡斌, 周志洪, 姚立红, 等. 基于报文负载和流指纹联合特征的TLS恶意流量检测[J]. 计算机工程, 2020, 46(11): 157-163.
[10]
WANG W, ZHU M, ZENG X W, et al. Malware traffic classification using convolutional neural network for representation learning[C]//Proceedings of International Conference on Information Networking. Washington D.C., USA: IEEE Press, 2017: 712-717.
[11]
WANG P, CHEN X J. SAE-based encrypted traffic identification method[J]. Computer Engineering, 2018, 44(11): 140-147, 153. (in Chinese)
王攀, 陈雪娇. 基于堆栈式自动编码器的加密流量识别方法[J]. 计算机工程, 2018, 44(11): 140-147, 153. DOI:10.3778/j.issn.1002-8331.1701-0316
[12]
CHENG H, XIE J X, CHEN L H. CNN-based encrypted C & C communication traffic identification method[J]. Computer Engineering, 2019, 45(8): 31-34, 41. (in Chinese)
程华, 谢金鑫, 陈立皇. 基于CNN的加密C & C通信流量识别方法[J]. 计算机工程, 2019, 45(8): 31-34, 41.
[13]
ILIYASU A S, DENG H. Semi-supervised encrypted traffic classification with deep convolutional generative adversarial networks[J]. IEEE Access, 2020, 8: 118-126. DOI:10.1109/ACCESS.2019.2962106
[14]
GUO L L, WU Q Q, LIU S L, et al. Deep learning-based real-time VPN encrypted traffic identification methods[J]. Journal of Real-Time Image Processing, 2020, 17(1): 103-114. DOI:10.1007/s11554-019-00930-6
[15]
VASWANI A, SHAZEER N, PARMAR N, et al. Attention is all you need[C]//Proceedings of the 31st International Conference on Neural Information Processing Systems. Berlin, Germany: Springer, 2017: 5998-6008.
[16]
WANG W, SHENG Y Q, WANG J J, et al. HAST-IDS: learning hierarchical spatial-temporal features using deep neural networks to improve intrusion detection[J]. IEEE Access, 2018, 6: 1792-1806. DOI:10.1109/ACCESS.2017.2780250
[17]
KIM Y. Convolutional neural networks for sentence classification[EB/OL]. [2020-05-07]. https://arxiv.org/abs/1408.5882.
[18]
LASHKARI A H, KADIR A F A, TAHERI L, et al. Toward developing a systematic approach to generate benchmark android malware datasets and classification[C]//Proceedings of 2018 International Carnahan Conference on Security Technology. Washington D.C., USA: IEEE Press, 2018: 1-8.
[19]
WANG W, ZHU M, WANG J, et al. End-to-end encrypted traffic classification with one-dimensional convolution neural networks[C]//Proceedings of 2017 IEEE International Conference on Intelligence and Security Informatics. Washington D.C., USA: IEEE Press, 2017: 22-27.
[20]
LIU C. Traffic classification system based on deep learning[D]. Beijing: Beijing University of Posts and Telecommunications, 2019. (in Chinese)
刘冲. 基于深度学习的流量分类系统[D]. 北京: 北京邮电大学, 2019.