您好, 访客   登录/注册

一种基于机器学习的TLS恶意流量检测方案

来源:用户上传      作者:

  摘   要:随着互联网应用加密业务流的快速增长,流量加密在保护隐私的同时也给网络安全防御带来了巨大的挑战,恶意加密流量检测是互联网安全领域的一个重点问题。文章首先介绍了TLS协议特点、流量识别方法;然后,从TLS特征、数据元特征、上下文数据三个方面分析了恶意加密流量的特征,给出了基于机器学习的TLS恶意流量检测相关方法;最后,通过构建基于机器学习的分布式自动化的恶意流量检测体系,实现对恶意流量的动态检测,并具备增量式学习能力。
  关键词:机器学习;流量识别;安全传输层
  中图分类号:TN918          文献标识码:A
  Abstract: As the flow of encrypted network traffic growing rapidly, the encryption of data protects privacy while poses a great threat to cyberthreat defense. Identifying threats contained within encrypted network traffic is a key issue in the network security domain. In this paper, we begin by introduce the characteristics of TLS protocol and the methodology of identifying network traffic. Then, we analyze the characteristics of encrypted malware traffic from TLS data, observable metadata and contextual flow data. This study is used to design the methodology of detecting malicious traffic's use of TLS based on machine learning. Finally, we manage to detect malicious traffic dynamically with incremental learning ability by building a distributed automation malicious traffic detecting system based on machine learning.
  Key words: machine learning; encrypted traffic; Transport Layer Security
  1 引言
  随着安全传输层(Transport Layer Security,TLS)协议的广泛使用,网络中的加密流量越来越多,识别这些加密的流量是否安全可靠,给网络安全防御带来了巨大挑战。传统的流量识别方法,例如基于深度包检测或者模式匹配等方法都对加密流量束手无策,因此识别网络加密流量中包含的威胁是一項具有挑战性的工作[1]。
  由于网络基础设施安全的重要性,其对检测的准确率和误报率有较高的要求。同时,僵尸网络、网络入侵、恶意加密流量等网络攻击,具有攻击量大、形式多样化的特点,对于该类的攻击检测需要能够做出快速实时的响应。基于机器学习的恶意加密流量检测,一直是近年来网络安全领域的研究热点[2]。
  目前,恶意加密流量检测研究,主要侧重于加密流量特征分析[3]以及机器学习算法的选择问题[4]。通过合理的检测体系,构建具备增量式学习能力的样本数据库,实时动态检测分析恶意加密流量攻击,将能够快速实施响应并采取防御措施。本文所讨论的加密流量限于采用TLS协议进行加密的网络流量,故文中提到的“恶意加密流量”和“TLS恶意流量”均代指采用TLS协议加密的恶意流量。
  2  TLS协议
  2.1  TLS握手协议
  TLS协议位于传输层和应用层之间,是一种在两个通信应用程序之间提供安全通信的协议,保证了网络通信数据的完整性和保密性[5]。TLS协议是由握手协议、记录协议、更改密文协议和警报协议组成。
  握手协议是TLS协议中十分重要的协议,客户端和服务端一旦都同意使用TLS协议,需要通过握手协议协商出一个有状态的连接以传输数据。通过握手过程,通信双方需要确认使用的密钥和算法。除此之外,还包括数据压缩算法、信息摘要算法等一些数据传输的过程中需要使用的其他信息。当握手协议完成以后,通信双方开始加密数据传输。
  2.2  TLS流量识别
  鉴于TLS握手协议通过明文传输的特点,可以捕获PCAP文件并解析数据包的头部信息,通过比较不同的头部信息及对比不同消息的报文结构,可以判定当前的数据包是否为TLS握手协议的某一特定消息类型。一个完整的TLS会话过程一定包含五种类型的消息:ClientHello、Server Hello、Server Hello Done、Client KeyExchange、Change Cipher Spec。如果在某个数据流中没有检测到以上的消息,那么可以判定其为非TLS流。如果只检测到其中的一部分消息,则有两种可能:一是由于TLS握手过程不完整而导致了连接建立失败;二是抓包不完整,此数据流是TLS流,但由于抓包过程中存在网络延迟等原因,有可能丢包导致。在判定过程中,如果数据流中没有全部包含以上的五种消息,则将该数据流判定为非TLS流,否则将其判定为一个TLS流。
  3  TLS恶意流量特征分析   在学术界,恶意流量特征一般分为三类:内容特征、数据流统计特征、网络连接行为特征[6]。
  内容特征主要指恶意流量的协议段中特有的值和协议负载中含有的某些特殊的字符序列。数据流统计特征和网络连接行为特征,需要采集数据并进行统计分析,从而得到某种规律,可以统称为统计特征。从网络层、传输层、应用层提取并计算流量统计值,可以得到数据流统计特征,再从这些统计特征中提取恶意流量特征。而一些恶意软件同时也会产生特定的网络连接特征,比如受蠕虫病毒感染的主机由于随机扫描互联网IP地址,从而会产生大量的失败网络连接。针对采用TLS协议加密的恶意流量,本文从TLS特征、数据元统计特征、上下文数据三个方面来分析其特征要素。
  3.1  TLS特征
  恶意流量和良性流量具有非常明显的TLS特征差异,如表1所示,主要包括提供的密码组、客户端公钥长度、TLS扩展和服务器证书收集所采用的密码套件。在流量的采集过程中,可以从客户端发送的请求中获取TLS版本、密码套件列表和支持的TLS扩展列表。若分别用向量表示客户端提供的密码套件列表和TLS扩展列表,可以从服务器发送的确认包中的信息确定两组向量的值。同时,从密钥交换的数据包中,可以得到密钥的长度。
  3.2  数据元统计特征
  恶性流量与良性流量的统计特征差别主要表现在数据包的大小、到达时间序列和字节分布。数据包的长度受UDP、TCP或者ICMP协议中数据包的有效载荷大小影响,如果数据包不属于以上协议,则被设置为IP数据包的大小。因到达时间以毫秒分隔,故数据包长度和到达时间序列,可以模拟为马尔科夫链,从而构成马尔科夫状态转移矩阵。
  3.3  上下文数据
  上下文数据包括HTTP数据和DNS数据。过滤掉TLS流中的加密部分,可以得到HTTP流,具体包括出入站的HTTP字段、Content-type、User-agent、Accept-language、Server、HTTP响应码。DNS数据包括DNS响应中域名的长度、数字以及非数字字符的长度、TTL值、DNS响应返回的IP地址数、域名在Alexa中的排名。
  4  TLS恶意流量识别
  加密网络流量给网络安全防御带来了巨大的挑战,在不加解密的基础上识别加密流量中包含的威胁具有十分重要的意义。通过对加密恶意流量的特征进行深入的研究,进而探索加密恶意流量与正常流量的特征。然后通过机器学习的方法来学习这些特征,最终能够实时动态的区分网络中的恶意与良性流量,检测到恶意威胁。
  恶意流量识别分为四步:第一步数据采集;第二步数据预处理;第三步模型训练;第四步评价验证。
  4.1 数据集
  数据集可以通过Wireshark从公共网络进行采集,过滤掉黑名单上的恶意IP流量,默认采集到的均为良性流量,而恶意流量可以通过沙箱环境模拟并采集。很多研究采用手工采集或者公司私有的数据集,在一定程度上会影响检测结果的可信度,所以也可以采用公开的数据集,例如DARPA1998[7]、ISCX2012[8]、ISCX VPN-non VPN[9]等。
  DARPA1998:1998年林肯实验室在DARPA资助下建立的一个模拟各类入侵行为的流量数据集,包含7周训练流量和2周测试流量,分为正常流量和四类攻击流量(Dos、Probe、U2R、R2L)。
  ISCX2012:2012年加拿大新布倫瑞克大学信息安全中心发布了一个入侵检测数据集,这个数据集包含7天的流量数据集,分为正常流量和四种攻击流量(Brute Force SSH、DDoS、Http DoS、Infiltrating)。
  ISCX VPN-non VPN:Draper-gil等(2016)提供了一个加密流量数据集,包含7种常规的加密流量和7种协议封装流量,格式包括时间流特征数据和原始流量数据。
  4.2 数据预处理
  在数据预处理阶段,因流量数据维度较大,本文采用Relief算法对数据进行预处理,即将收集到的数据包按照网络流的定义进行特征提取,降低数据维度,可减小后续分类器的错误率。Relief算法是一种特征权重算法(Feature Weighting Algorithms),可根据各个特征和类别的相关性赋予不予权重,权重小于某个阈值的特征将被移除。网络流是指在一定的时间内,所有的具有相同五元组(源IP地址、源端口号、目的IP、目的端口号、协议字段)的网络数据包所携带的数据特征总和。源IP地址、源端口号和目的IP地址、目的端口号可以互换,从而标记一个双向的网络流。
  4.3 模型训练
  采集完样本,首先将一个网络流视为一个样本并提取相关流量特征,将TLS特征、数据元统计特征和上下文数据特征建模为行向量作为特征取值,列向量不同的TLS流的矩阵。
  拟采用随机森林算法进行训练,基于Bagging方法利用多个决策树对样本进行训练并预测,随机森林是一种有监督的学习算法,Bagging方法是指随机有放回的选择训练数据,然后构造分类器,进而通过组合学习到的模型来提高整体效果。随机森林算法具有可高度并行化,能够处理高维度的数据,训练后的模型方差小及泛化能力强等优点,如图1所示。
  为了避免测试的偶然性,采用十折交叉验证法,将数据分为10份,轮流将其中的9份作为训练数据,1份作为验证数据进行试验,最后将每次试验得到的正确率取平均值作为最终精度。
  4.4 评价标准
  对于训练产生的分类模型,需按照一定的指标进行评估测试,来评价分类器的的精准度。分类模型性能的一些主要指标,如表2所示。
  5 分布式自动化恶意流量检测体系
  传统的安全产品已无法满足现有的安全态势需求,如何利用机器学习快速检测未知威胁,并尽快做出响应,是网络安全态势感知中的关键问题。利用上文提出的恶意流量检测方法,进一步训练并标记分类恶意流量家族样本,建立增量式学习数据库,进而可以构建自动化恶意流量检测体系,有助于更好的降低未知恶意流量带来的危害。   5.1  恶意流量家族
  恶意软件虽然层出不穷,但大部分恶意软件都是某个恶意家族的变种。在恶意流量检测的二分类问题中,将恶意流量提取出来并对所属的家族进行标记,然后重新进行训练,将恶意流量检测转换为通过流量特征判断其所属家族的多分类问题。获得训练的数据后,需对分类的结果进行分析讨论,并尽量减少误报率。
  如表3所示,选取了在TLS特征中,7种恶意软件家族的不同表现。除了表中展示的3种特征外,其他的特征还包括TLS客户端、证书主题特征,借助这些不同的特征通过机器学习算法训练,可以有效帮助区分恶意软件的家族种类。
  5.2  增量式学习数据库
  在当今网络环境下,恶意软件更新迭代层出不穷,为了保持恶意流量检测系统的准确性,系统应具有增量式学习的能力。
  增量式学习是指系统在不断从新的样本学习新的知识的同时,并能保存大部分以前已学习的知识。增量式学习类似于人类自身的学习模式,这种学习的特性,非常适合用于网络安全中的的恶意软件检测。故建立增量式学习能力,需具有增量式学习能力的机器学习算法,其次建立恶意软件数据库,如图2所示。
  建立恶意软件数据库,需从客户端和服务端两个角度进行数据库的建立研究。服务端:实时收集新生的恶意软件所产生的流量,并进行定期的训练后将特征添加到系统中,实现增量式学习。客户端:当检测到可疑流量时,分类器判定为其他类别后,需将其上传至服务器端,同时在本地进行更新。
  5.3  分布式自动化恶意流量检测体系
  利用上文给出的恶意流量检测方法,搭建了分布式自动化恶意流量检测体系,如图3所示。
  (1)IDS Agent负责采集或收集客户端和服务端的需鉴定文件,计算文件的MD5hash值与FileHash缓存对比,如果存在则直接判定为恶意软件流量,并附上家族标签,否则缓存文件并进入下一步。
  (2)对象存储(公有云IAAS组件,OSS)负责文件缓存,便于处理海量的鉴定文件,当存储完成后,发送Kafka Topic消息。
  (3)主程序采用多线程方式启用多个处理单元,收到Kafka消息后,从消息中获得OSS文件路径,下载文件到本地并发送给各个类型的检测引擎,例如恶意流量检测、动态/静态文件检测、Web Shell检测等。
  (4)恶意流量检测引擎接收文件后,从文件中提取网络流量相关数据,并根据TLS特征、数据元统计特征、上下文数据对数据进行预处理,然后经过分类器进行分类,将分类结果发往决策中心。
  (5)决策中心收到各类检测结果后,根据多类决策樹判断,并将最终结果发往恶意软件家族分类器。
  (6)最后形成恶意软件家族分类和未知的恶意分类,存储到Elastic Search以提供给前端用户展示。
  对于系统中的机器学习部分,所提交需要保存的样本均通过流量的形式发送到Kafka并存储到HIVE中,然后导入到Spark Mlib进行模型计算,其他通过公网添加的黑白样本也通过同样的方式加入系统进行循环。在系统资源有限的情况下,大约一周更新一次分类模型。
  通过构建分布式自动化恶意流量检测体系,可以快速、高效地获取加密网络数据流量,对数据进行科学分析与存储,缩短检测时间的同时获得更准确的检测结果,并预测未知威胁,实现网络安全态势感知。
  6  结束语
  本文基于TLS握手协议的特点,分析了恶意流量的识别特征,通过对三类特征的具体分析,给出了一种基于机器学习的TLS恶意流量检测方法,并结合恶意软件家族样本分类,构建增量式学习能力,最终构建了一个分布式自动化恶意流量检测体系体系,该方案具有多重优点,可有效抵御层出不穷恶意流量网络威胁。
  参考文献
  [1] 张蕾,崔勇,刘静,等.机器学习在网络空间安全研究中的应用[J].计算机学报,2018(9):1943-1975.
  [2] 王伟.基于深度学习的网络流量分类及异常检测方法研究[D]. 2018.
  [3] Anderson B, McGrew, David. Identifying Encrypted Malware Traffic with Contextual Flow Data[C]// Acm Workshop on Artificial Intelligence & Security. 2016.
  [4] Anderson B, Mcgrew D. Machine Learning for Encrypted Malware Traffic Classification: Accounting for Noisy Labels and Non-Stationarity[C]// the 23rd ACM SIGKDD International Conference. 2017.
  [5] 王琳,封化民,刘飚,等.基于混合方法的SSL VPN加密流量识别研究[J].计算机应用与软件,2019,36(02):321-328.
  [6] 鲁刚,郭荣华,周颖,等.恶意流量特征提取综述[J].信息网络安全,2018,213(09):7-15.
  [7] Tavallaee M , Bagheri E , Lu W , etal. A detailed analysis of the KDD CUP 99 data set[C]// IEEE International Conference on Computational Intelligence for Security & Defense Applications. IEEE, 2009.
  [8] Shiravi A, Shiravi H, Tavallaee M, etal. Toward developing a systematic approach to generate benchmark datasets for intrusion detection[J]. Computers & Security, 2012, 31(3):357–374.
  [9] Lashkari A H, Draper-Gil G, Mamun M S I, etal. Characterization of Encrypted and VPN Traffic Using Time-Related Features[C]// International Conference on Information Systems Security & Privacy. 2016.
转载注明来源:https://www.xzbu.com/1/view-15129306.htm