中国工商银行金融科技研究院安全攻防实验室 - 基于机器学习的隐蔽隧道恶意加密流量检测识别研究

本文从网络协议层面总结分析各类隐蔽隧道恶意加密流量的特征,提出了基于机器学习的隐蔽隧道恶意加密流量检测识别方法,设计并建立DNS流量识别模型和TLS流量识别模型。

随着网络攻防博弈的不断升级,越来越多的恶意攻击利用隐蔽隧道加密技术隐藏攻击特征,绕过WAF、IPS、IDS等网络监控防护设备入侵企业内网,对企业形成新威胁、新挑战。隐蔽隧道是绕过防火墙端口屏蔽的一种通信方式。
据Gartner统计,2020年有超过70%的恶意网络攻击使用加密流量技术,加密攻击流量已逐渐成为黑客攻击的重要手段与环节。
目前,基于传统的规则匹配及算法的防护拦截措施无法及时发现并阻断隐蔽隧道恶意加密流量的攻击行为,可能对企业财产、声誉、数据造成严重损失,识别隐蔽隧道恶意加密流量已成为业界的重点难点课题,企业需要探索新的防护技术来提升安全防护能力。
恶意加密流量是一种使用加密技术如https加密等,对攻击命令、恶意攻击软件、恶意程序等加密后进行传输的数据流。识别隐蔽隧道恶意加密流量涉及大量数据处理和分析的复杂任务,给网络安全运营带来了巨大的挑战,其主要原因有三:

  1. 加密后的流量特征与明文的流量特征相比变化较大,无法通过传统攻击载荷匹配的方式进行检测识别;
  2. 恶意软件利用流量伪装技术(如流量变形、链路填充),将恶意流量特征转换为普通的正常流量特征,增加识别难度;
  3. 不同加密协议的加密方式和封装格式之间有着很大的差异,需要针对性考虑检测判别策略。

因此,研究并且构建一种有效的隐蔽隧道恶意加密流量检测识别方案已成为一项亟待完成的工作。
针对上述情况,本文聚焦分析黑客主流攻击工具产生的隐蔽隧道恶意加密流量,运用网络流量分析与机器学习等前沿技术,从网络协议层面总结分析各类隐蔽隧道恶意加密流量的特征,提出了基于机器学习的隐蔽隧道恶意加密流量检测识别方法,设计并建立DNS流量识别模型和TLS流量识别模型。
经过训练后的DNS流量识别模型准确率可达99.67%,TLS流量识别模型准确率可达93.33%,实现了隐蔽隧道加密流量的智能检测。

一、网络流量分析技术说明

网络流量分析(Network Traffic Analysis)作为安全技术的新兴类别,是通过检测网络通信过程中的流量行为数据来分析网络中的安全威胁,帮助识别、管控风险流量,从而更快地发现漏洞,已成为各类威胁检测方案的重要组成部分。
网络流量分析通过深度流检测(Deep Flow Inspection)深度包检测(Deep Packet Inspection)来分析网络流量,将检测探针(用于捕获、过滤、分析网络数据包的组件工具)和检测模型部署在关键网络区域进行流量分析。

深度流检测

以流量为基本研究对象,通过从网络流量数据中提取流量行为特征,从而判断流量是否正常的一种技术,如DNS隧道攻击流量平均包长在350字节以上且连接时间长、频率高,而正常DNS协议数据包较小,多采用中低频连接。深度流检测先进行流量特征选取、流量特征提取,再通过分类器分析,实现对流量应用类型的鉴别。

深度包检测

在分析常规的IP数据包OSI模型2~4层之间的元素之外加入对应用层数据的应用协议识别,强化对数据包内容的检测与深度解码。
深度包检测技术有三种检测方法:

  • 通过数据的特征值检测
  • 应用层协议检测识别
  • 行为模式的数据检测

根据不同的检测方法可对网络流量中的异常攻击数据和正常业务数据进行分析,深度挖掘出数据流中存在的异常数据。

二、隐蔽隧道恶意加密流量检测

传统的安全检测方法是通过安全专家人工制定安全防御规则来对海量的流量数据进行监控过滤,当前,传统方法已经不能完全满足大数据时代对于安全攻防的要求。
以IPS为例,IPS即入侵防御系统,是电脑网络安全设施,是对防病毒软件和防火墙的补充,能够及时中断、调整或隔离一些不正常或是具有伤害性的网络资料传输行为。IPS日均告警量可以达到上万条,人工逐一分析判别的难度较大,能够挖掘到的危险告警有限。随着攻击者利用隐蔽隧道加密技术不断变换攻击手段,传统的规则匹配方式很难识别捕捉到这些攻击威胁。
为了解决上述问题,本文基于网络流量分析的机器学习方法构建了隐蔽隧道恶意加密流量检测识别模型,该模型可以部署在企业的网络流量入口,用于检测进入企业的流量是否被恶意攻击。
图1为隧道恶意加密流量模型数据处理、特征工程及建模流程,先是对流量元数据中的协议内容、载荷内容、域名内容等进行适当的数据处理,然后将数据实施特征工程,提取数据中的特征作为识别模型的数据集,最后再使用机器学习的GBDT、XGB算法或者深度学习中的CNN等算法来完成模型的构建训练等任务:
image.png
图1 隧道恶意加密流量模型数据处理、特征工程及建模流程

1. DNS隐蔽隧道恶意加密流量识别模型

DNS隐蔽隧道恶意加密流量识别建模共使用正常加密DNS流量、隐蔽隧道恶意加密DNS流量请求与响应报文12万对,其中正常DNS流量数据和恶意DNS流量各6万对,包含自行采集的DNS流量数据和互联网公开DNS流量数据,同时,为保证恶意流量数据样本的多样性,恶意流量数据涵盖网络攻击时常用的iodine DNS、DNS Shell、DNS2TCP、DNSCAT等多个DNS隧道工具的流量数据。
在建模过程中,首先对采集到的正常及恶意流量数据进行数据清洗和规范化处理,分析正常DNS流量与恶意DNS流量差异,从协议、载荷方向入手,共提取出DNS请求类型、请求数据分布等54维特征。以DNS请求的源IP为主键识别DNS流量数据是否为恶意流量,其中80%的数据用来训练模型,20%的数据作为验证集评估模型效果。使用XGBoost与GBDT算法训练DNS隧道流量识别模型,验证集识别效果较好,最终验证集模型识别准确率达到99.67%。通过评价指标
(见表1)可以发现,在多维特征下,恶意DNS流量与正常DNS流量差异较大,考虑到部署和效率等因素,可以提取高信息值(Information Value,IV)特征进行规则实施:
image.png
表1 DNS恶意流量识别模型评价指标
该模型训练的ROC曲线如图2所示,其中X轴为将错误类别预测为正确类别的比例(False Positive RateTrue,FP),Y轴为将正确类别预测为正确类别的比例(True Positive Rate,TP),ROC曲线越靠近左上角,说明预测效果越好:
image.png
图2 DNS恶意流量识别模型ROC曲线

2. TLS隐蔽隧道恶意加密流量识别模型

TLS隐蔽隧道恶意加密流量识别建模所采用的数据来源有两处:

  • 各类日常TLS业务应用中的加密流量数据,如互联网TLS交互数据、自行采集的银行内部应用TLS交互数据;
  • 互联网公开的隐蔽隧道恶意TLS加密流量数据集,包括木马、病毒、后门等各类TLS加密流量。

模型使用的原始数据集为pcap文件,其中正常业务应用的TLS流量数据50000个,恶意TLS流量数据50000个,数据集中每个pcap文件包含多个TLS握手协议流量和加密数据交互流量。
对pcap网络数据包进行提取解析后,共得到1300余万条流量数据,考虑到正常和恶意TLS加密流量数据特征区分度较低、可解释性较弱的特点,分别构建机器学习模型和深度学习模型对比效果。
机器学习模型由数据和利用数据进行机器学习算法预测输出的数据过程组成,深度学习模型由数据和利用数据进行深度学习算法预测输出的数据过程组成。

(1)机器学习模型训练与效果

从采集的TLS网络流量中提取TLS握手阶段关键信息,分析证书特征与握手阶段信息特征,在对原始数据提取相应字段后,根据数据类型进行数据提取、离散化、归一化与独热表示,建立特征工程。主要提取TLS流量的握手特征与证书特征,包括加密套件类型、证书长度等特征。
基于上述特征,为保证模型识别的精确度,使用监督、无监督学习模型进行训练,集成模型以识别TLS恶意流量。使用LR、SVM、XGBoost、GBDT算法训练多个二分类模型,分别预测pcap文件是否包含恶意流量。然后将各个模型集成起来,针对每个数据样本的不同模型算法预测输出结果,再使用投票的方法选出最后的预测结果。使用80%的数据作为训练集来训练模型,使用20%的数据评估模型效果。机器学习模型最终验证集模型识别准确率达93.33%、召回率达93.90%,评价指标见表2。通过评价指标可以看出,在多模型集成的情况下,TLS恶意流量识别能力表现尚佳。该模型训练的ROC曲线如图3所示,其中X轴为FP,Y轴为TP:
image.png
表2 TLS恶意流量识别模型评价指标
image.png
图3 TLS恶意流量识别模型ROC曲线

(2)深度学习识别模型训练与效果

深度学习建模与机器学习建模的不同之处在于,在特征工程处理时,深度学习无需人工建立特征工程,而是由算法对数据特征进行学习。
本文建模采用将流量数据转化成图像的思路,将原始TLS流量数据通过流量切分、流量清洗、图片生成和IDX文件生成后,输入到卷积神经网络(CNN)中进行训练(如图4所示):
image.png
图4 TLS流量数据处理流程
虽然原始的TLS流量pcap数据包大小不同,但CNN训练时的输入数据大小必须是一致的,因此在数据处理过程中,首先是将原始pcap包整理切分为大小相同的数据包,本次建模以pcap包中会话的前784字节为标准进行分割,然后对分割后pcap包中数据为空、数据内容重复的流量数据进行清洗
清除后的流量经过进一步处理转换成28像素×28像素的灰色像素图,最后将像素图转换成IDX文件
IDX文件本质是经过特殊编码的二进制文件,可以将图片信息表示成多维向量矩阵的数据,使CNN网络可以进行训练评估。
本实验所使用的CNN网络由2层卷积层、2层池化层、2层全连接层进行构建。

  • 卷积层是通过卷积操作对输入图像进行特征抽取的神经网络层。
  • 池化层是通过卷积操作对数据进行降维处理,减少数据参数的神经网络层。
  • 全连接层是将之前提取的所有特征进行全部整合并分类的神经网络层。

输入层数据经过一层卷积核大小为5像素×5像素、卷积通道数为32的卷积层,然后经过一层卷积核大小为2像素×2像素的池化层,之后进入一层卷积核大小为5像素×5像素、卷积通道数为64的卷积层,随后将卷积结果输入卷积核大小为2像素×2像素的池化层,最后经过softmax分类器输出分类识别结果。
从图5可以看出,同一种类流量之间的相似性较高,而不同种类的流量之间存在较大差异。可将生成的流量图数据输入到CNN进行训练后,整合特征学习结果,从而实现对恶意流量和正常流量的识别。
image.png
图5 pcap数据生成的图像
本深度学习检测识别模型最终预测分类的准确率可达98.13%以上,召回率达98.35%,损失率低于5%,预测指标见表3:
image.png
表3 深度学习模型预测指标
该模型准确率acc训练曲线如图6所示,其中X轴为训练迭代次数,Y轴为预测准确率:
image.png
图6 深度学习模型准确率acc训练曲线
该模型的损失函数loss训练曲线如图7所示,其中X轴为训练迭代次数,Y轴为loss函数大小:
image.png
图7 深度学习模型损失函数loss训练曲线
从上述机器学习和深度学习的建模评价指标来看,两种解决方案均具有较高的检测识别准确性,两种模型都显示出了很好的性能。

三、总结与展望

综上所述,针对目前基于传统的规则匹配及以简单算法防护拦截隐蔽隧道恶意加密流量存在较大困难的现状,本文提出的DNS流量识别模型和TLS流量识别模型对于DNS、TLS恶意加密流量具有强大的检测识别能力,性能表现优秀。通过机器学习算法构建检测模型实现隐蔽隧道恶意加密流量识别,支持多种加密协议的检测分析,与传统方法相比降低了检测成本。
当前,以机器学习为代表的人工智能技术与网络安全相融合的实践日益增多。
在网络流量方面,人工智能为解决隐蔽隧道恶意加密流量检测识别提供了新的思路,头部安全厂商也在以机器学习为代表的新型流量检测技术领域开展探索与实践。
未来,随着人工智能技术日渐成熟,基于人工智能的加密流量检测将成为企业优化自身网络安全管理策略中的重要一环,从而保证入站加密流量不再是企业安全管理中的盲点。
本文刊于《中国金融电脑》2021年第10期