赵 荻 尹志超 崔苏苏 曹中华 卢志刚
1(中国科学院信息工程研究所 北京 100085)
2(中国科学院大学网络空间安全学院 北京 100049)
3(北京华境安技术有限公司 北京 100085)
出于隐私保护和安全防护的需要,加密流量在网络流量中的占比不断攀升,谷歌报告显示排名前100位的非Google网站有97位默认使用超文本传输安全协议(hypertext transfer protocol secure, HTTPS)加密[1].然而,网络管理员难以辨认加密后的流量内容,无法及时发现恶意流量.因此,如何对加密流量进行精准识别和快速分类已成为网络安全领域亟待解决的问题.
现有研究大多提取流量统计特征,或将原始流量直接作为机器学习模型的输入进行分类[2-3].近来,也有研究者注意到网络流量的时空特性,尝试建立流序列进行识别[4].然而,目前的研究依旧存在不足:其一,网络流间存在关联,但多数方法在特征提取时都未保留流量的结构特性;其二,大部分研究集中于加密流量的统计特征分析,对加密协议特性挖掘不足.因此,本文提出一种结合协议分析的流量图表示方法,并进一步提出了基于GCN的模型GCN-RF.本文贡献如下:
1) 提出一种网络流量的图表示方法.本文综合考虑网络流时空特性、统计特性和结构特性,建立流的图模型.
2) 提出针对SSL/TLS协议的特征提取方案.本文以协议身份认证工具——证书——为主要分析对象,从机密性、时效性等多个角度深入研究协议特性,总结了有利于加密恶意流量识别的特征.
3) 提出基于图卷积神经网络的恶意TLS流量识别模型.结合图神经网络和SSL/TLS协议特征,提出以GCN为核心的恶意TLS流量识别模型GCN-RF,实现高准确率的流量分类.
4) 在真实公开数据集上的实验,结果表明,对比目前的经典方法,本文模型在准确率、查准率、查全率、F1分数上均提升5%以上.
加密流量识别往往以源IP、源端口、目的IP、目的端口和协议五元组定义的流为识别单位.目前,加密恶意流量分类方法可以划分为3类:基于载荷和端口的识别技术、基于机器学习的技术和基于深度学习的技术.其中第1类已经难以应对越发复杂的网络,往往作为其他技术的补充手段存在.因此,本文对基于机器学习的主流方法以及基于深度学习的主流方法进行了总结.
基于机器学习的方法往往通过先验知识分析恶意流量的行为模式,人工确定流量的有效特征,提取后输入到机器学习算法中进行分类.对于确定流量恶意与否的二分类问题,Anderson等人[5]统计了TLS流量的部分特征数据,分析了正常和恶意软件产生的流量的区别,并总结了部分可以提高分类器性能的特征.
而针对恶意流量的多分类问题,研究者更关注恶意流量的来源和恶意攻击的类型.文献[6]提取流量头部特征,借助聚类分析恶意应用间的差异,成功识别出90%以上的恶意软件家族.
总体而言,基于机器学习的技术取得了一定成果,但模型性能很大程度上取决于人工设计的特征,对不同情景适应性较差.在面对复杂多变的现实网络环境时,这些方法难以达到预期水准.
随着深度学习的兴起,也有研究者将现有神经网络模型与流量分类结合,让模型自主分析流量特征.文献[7]使用卷积神经网络(convolutional neural networks, CNN),将流量的前784B转换为图像后进行识别.文献[8]则提取流的前4个数据包的前40×40B,处理后输入CNN进行训练.
也有研究者提取关键特征表征流量信息,再利用神经网络进行进一步分析.如文献[9]从原始流量中提取上下文信息,使用Perlin噪声将信息编码到图像中,再输入CNN进行识别.文献[10]则结合集成学习方法,深入挖掘网络行为的同时提升了模型的鲁棒性.
以上方法都有其优越之处,但大多没有考虑网络流量的关联性,在特征提取过程中忽视了流量本身的结构特征.此外,对于协议特征的挖掘也不够深入.
因此,本文以TLS流量为研究对象,综合分析流量结构、内容特性,提取部分关键特征完善流量表征方法,并实现加密流量的图表示,借助GCN进行深入的分析与分类.
本文通过将网络流量的图表示、数据处理和GCN神经网络模型分析等模块进行组合,实现了恶意TLS流量检测的流程化,建立了具有可行性的检测模型.如图1所示:
图1 基于图卷积神经网络的加密恶意流量检测模型框架
本文从网关处采集流量并离线保存为pcap格式.随后,对原始流量进行清洗,舍去异常值,填补缺失值,保证数据的完整性.由于本文以SSL/TLS协议为主要研究对象,去除非加密流.处理后流量按照单向流,即具有相同源IP、源端口、目的IP、目的端口和协议的流进行划分.
本文将流作为节点,依据流间关系建立边,在尽可能保留流信息的基础上提出适应GCN模型输入的网络流图表征方案.
本文用G=(V,A)表示无向图.经预处理和特征提取后,1条流可视为1个特征集合,对应图中的1个节点.假设每个节点有m维特征,节点可表示为vi={t1,t2,…,tm}.V={v1,v2,…,vn}表示节点的集合,综合得到图的特征矩阵H∈n×m.
对相关数据进行分析可以发现,同源的恶意攻击往往会呈现出相似甚至一致的行为特性.例如,同一手段的攻击可能会针对固定的几个端口进行.因此,如图2所示,本文设计具有相同源IP、目的端口或数据包数的流存在关联,在图中为对应流设置连边.对于流量图而言,A∈n×n是表示节点关系的矩阵.假设vi与vj间存在1条连边,则对应矩阵A中的元素aij则为1.
图2 流量的属性关系与图连边
本文应用特征工程提取原始数据特征以表征网络流,并将网络流转换为图节点.基本的特征提取借助开源的网络流量分析工具Zeek[11]进行.
2.4.1 统计特征
一些统计特征已被实验验证在加密流量分类中是有效的.这些特征大多通过各层的明文特征计算而来,不受加密的影响,能较好且稳定地反映流量特性.本文提取流统计特征如表1所示:
表1 本文提取的流级统计特征
2.4.2 协议特征
本文对SSL/TLS流量进行了深入分析.SSL/TLS协议使用X.509数字证书作为身份认证工具,为通信双方提供加密和安全保证,这意味着证书能在很大程度上反映服务器、客户端乃至传输本身的状态.同时,X.509证书存在于TLS协议的握手阶段,出现时间较早,便于收集与分析.
TLS协议版本分析:TLS协议不断更新迭代,TLS1.2和1.3版本是目前的主流,早期版本功能不完整、安全性偏低、使用率较低、可疑度较高.
证书版本分析:早期证书缺少版本号字段,不支持使用扩展功能,相比后续版本,功能受限,安全性不足.目前正常网络主体使用的证书大多数为版本3.由此可知,如果检测到更早版本的证书,该流量非正常的可能性相对更高.
证书签名分析:颁发机构的可信性和逐层认证是保证X.509数字证书可靠性的重要一环,然而网络中也存在部分缺少可信机构认证、颁发者和使用者一致的自签名证书.文献[12]对SSL Blacklist的数据进行分析后发现,与活跃恶意软件相关的服务器大多使用了自签名证书.由此不难看出,自签名证书相对可信度偏低.
证书有效期分析:在苹果、谷歌等公司的共同倡议下,2020年9月1日之后发行的SSL/TLS证书的最长有效期将限定在13个月.显然,有效期过长的证书对应的流量存在异常的可能性较高.
密码套件分析:Anderson等人[5]通过分析实验数据发现,检测到的所有恶意TLS会话几乎都使用了TLS_RSA_WITH_3DES_EDE_CBC_SHA等3个弱密码套件,这些套件在技术不断发展的今天存在被破解的可能.可以认为,恶意服务器的证书更可能使用过时的密码套件.
综上所述,本文在对SSL/TLS流量特性进行分析后的协议特征如表2所示:
表2 本文提取的TLS流量协议特征
经上述处理后,数据将输入2层GCN进行分析,最后通过随机森林(random forest, RF)分类器进行分类.GCN接受处理后的流量图为输入,即特征矩阵H和邻接矩阵A,前者记录了处理后的所有流和其特征,代表图中的所有节点;后者记录了流间的属性关系,代表图中的连边.
分类模型由2层GCN进行特征提取,使用ReLU作为激活函数.GCN的层特征传播公式为
(1)
Z=f(X,A)=
(2)
损失函数为
(3)
本文使用随机森林分类器代替常规的softmax函数进行结果分类.分类器以GCN提取的特征矩阵作为输入,输出为各个节点(各条流)的预测结果.
3.1.1 数据集
本文使用的数据集由10000个exe类型软件产生的流量组成,其中黑白样本比例为1∶1,为奇安信技术研究院天穹沙箱运行并采集其产生的流量筛选生成,流量内容为443端口产生的SSL/TLS数据包[14].经数据预处理得到流表示的数据集后,数据类别分布将出现变化.由于样本分布不平衡会限制模型对少数类别的识别能力,对黑白样本数量进行调整以保持相对一致.
经处理后的数据集样本分布如表3所示:
表3 实验用数据集的样本分布
3.1.2 实验环境
实验使用具有2个单核CPU的Inter Xeon处理器,内存为12GB,使用Tesla T4 GPU进行相关计算.操作系统为Ubuntu18.04,CUDA版本为11.2,使用Python3.7语言,基于深度学习框架Pytorch建立模型.
3.1.3 评价指标
本文研究分类问题的基本目标是准确、完整,即正确识别更全面的加密流量踪迹,避免误分类.因此,实验采用准确率(Accuracy)、查准率(Precision)、查全率(Recall)以及F1分数(F1-Score)4项评价指标,计算公式如下:
3.1.4 超参数
本文通过网格搜索确定最优参数,具体地,将学习率设置为0.001,随机失活dropout为0.03,权重衰减系数为0.0005.
3.1.5 对比基准模型
为了验证本文模型的有效性,在封闭世界数据集中进行测试并选取以下模型进行对比实验:
1) 逻辑回归算法.经典机器学习分类算法.该算法旨在寻找输出与输入向量的直接关系,通过比较概率值来判断类别.
2) 决策树算法.经典机器学习分类算法.决策树的叶节点对应分类,非叶节点对应属性划分,在每一步选择合适属性归类样本,确定最终结果.
3) 朴素贝叶斯算法.经典机器学习分类算法.基于特征条件独立假设学习输入输出的联合概率分布,并利用贝叶斯定理求出给定输入后验概率最大的输出.
4) CNN[15].对于每条流,提取原始流量的前784B,转换为28×28的灰度图像后输入CNN进行分类.
本文在包含真实世界流量的公开数据集上对模型性能进行测试,以7∶3的比例划分训练集与测试集.实验目的为对网络流进行二分类,识别加密流量中的恶意流量.结果通过准确率、查准率、查全率、F1分数4项指标进行评估量化,以比较不同方法的分类性能.同时本文使用5折交叉验证获得可信结果.
表4示出恶意加密流量分类实验的结果.从中可以看出,基于机器学习的方法准确率普遍偏低.机器学习方法高度依赖人工选取的特征,分类准确率受特征选择影响波动极大,且适应能力较弱,在不同数据集上可能得到差距极大的结果.
表4 加密恶意流量检测评估结果
基于深度学习的方法中,CNN模型性能相比GCN模型稍显逊色,误分类情况较多.主要原因是CNN模型未考虑流量结构关联,流量转为图片的过程中部分特征被破坏,导致准确率下降.
本文模型在处理流量时尽可能保留了其结构特性,使得相似行为产生的流量更具关联性,有助于未知节点的分类.此外,本文针对SSL/TLS流量进行了分析,总结了有助于分类的协议特征.结果显示,本文提出的GCN-RF方法在所有评估指标下都取得了最优结果,比最优基线方法提升5%以上.可见,本文提出的方案是切实有效的.
本文进行了对比实验以确认协议特征在加密恶意流量分类中的效果.在GCN-RF框架的基础上,使用统计特征、统计特征+协议特征进行特征提取分别进行实验.此外设置均相同.
实验的结果如图3所示.协议特征的加入对模型分类性能起到一定的提升作用.仅使用统计特征表征节点时,分类准确率为94%,而综合提取统计特征和协议特征后,准确率提升约5%.可见,密码套件等协议特征在反映流量特性上具备一定的作用,加入这类特征有助于识破恶意攻击者的伪装,区分其与正常流量.总体而言,深入分析加密协议特性有助于研究者更好地识别流量,本文提出的特征提取方案具备可行性.
图3 节点特征分析实验结果
本文针对加密流量识别下的恶意流量识别领域展开研究.针对传统流量特征提取易丢失流量结构信息的问题,本文提出了将网络流转换为图的方法.同时,深入挖掘SSL/TLS协议内容特性,提出有助于分类的协议特征,并建立图神经网络模型对恶意TLS流量进行识别,经实验验证了模型的有效性.
为了进一步提升模型的性能,本文未来工作拟聚焦于收集更全面、真实、平衡的加密恶意流量数据集,并使用更具效果的深度学习算法填补分类环节.