当前位置:   article > 正文

基于机器学习和背景流量数据的加密恶意流量检测_基于机器学习的恶意流量识别检测 1 背景

基于机器学习的恶意流量识别检测 1 背景

1 加密流量现状

1.1 加密流量检测的必要性

在当今的网络设置中,安全传输层协议是为网络流量提供加密的一个主要协议。网络中的流量实际上是以比特流的形式存在,经过各类协议封装成不同格式的数据包之后,再在网络中进行传输。常见的网络协议有以下几类:

  • 应用层协议:HTTP-超文本传输协议,定义了用户在客户端与Web服务器之间进行报文交换的形式,提供网页通信;DNS-域名系统,提供主机名转换到IP地址的域名解析服务;FTP-文件传输协议;
  • 安全加密协议:TLS-传输层安全性(其前身为SSL-安全套接字层),提供加密通信;IPsec-IP安全协议,提供网络层安全性保证;
  • 网络层和传输层协议:IP-网际协议,进行网络编址;ICMP-因特网控制报文协议,在主机和路由器之间传递控制消息,进行网络差错控制;UDP-用户数据报协议,提供不可靠、无连接的实时数据传输服务;TCP-传输控制协议,提供可靠、面向连接的数据传输服务。

本文关注的是以TLS/SSL协议加密的网络恶意流量的检测问题。TLS(Transport Layer Security)称为传输层安全性,SSL(Secure Sockets Layer)称为安全套接层,SSL是TLS的前身,两者都属于安全传输层协议,作用在网络体系中的传输层和应用层之间,用来提供客户端与服务器之间的加密通信。

图1

上图显示的是使用Wireshark抓取的一条加密流的报文,我们从中选取一条TLS报文消息,从下图的解析结果中可以看到,TLS实际上就是通过在传输层之上新增了一个安全套接层来实现安全加密功能的。

图2

近年来,合法的流量大多都已经采用了TLS标准。比如通过google、百度检索返回的网页都已经大规模使用了HTTPS。

  • Google,《Chrome中的HTTPS加密情况》,2019年10月,Chrome加载网页中启用加密的比例已经达到了95%;
  • 百度,近年来一直强制网站更换HTTPS,使用HTTPS的网站占比预计超过60%;

注:HTTPS顾名思义,就是在HTTP的基础上应用了TLS/SSL协议。当你打开浏览器访问一个网页,该网页的url以这样的形式开头,就说明你正在使用这类安全传输层协议提供的加密服务。

与此同时,越来越多的恶意软件也开始采用TLS加密来伪装成看起来正常的流量,企图逃避安全检测。这一类恶意软件几乎覆盖了所有类型,包括特洛伊木马、勒索软件、感染式病毒、蠕虫病毒、下载器等。Gartner公司曾给出预测,直到2020年,仍然会有超过60%的企业无法有效解密HTTPS流量,但加密流量中将会隐藏超过70%的恶意软件。因此,实现加密恶意流量的有效检测是非常有必要的。

1.2 加密恶意流量的检测方法

现有的针对加密恶意流量的检测方法主要分为以下两类:

检测方法 主要思想 优点 局限性 适用主体
传统的流量检测方法 深度包检测(DPI) 检测准确度高 面临着隐私保护、计算开销等限制 未加密流量为主
基于机器学习和背景数据的流量检测方法 Data omnia 高效地识别加密流量 检测稳定性有待验证 未加密、加密流量均可

本文重点关注基于机器学习和背景流量数据的流量检测方法,在介绍该方法前需要了解以下几个概念:

  • 深度包检测(DPI, Deep Packet Inspection)技术:通过解密来检查数据包中的数据内容来判断流量的性质;

  • Data omnia:主张通过扩展流记录将与加密流相关的所有背景流量数据都包含在内;

  • 背景流量数据:广义上说,除了数据内容之外其余与加密流相关的数据都可以视为背景流量数据。具体可以分为三类数据:

    • 可观察的元数据:具体包括头部字段中的源目的IP和端口,以及数据流的总字节数和数据包数等。因为流量加密操作只会加密数据内容而不会改变流量的统计特征;
    • TLS流头部数据:对于TLS加密流而言,它的头部字段是未被加密的,这意味着可以通过获取TLS头部字段中的一些参数来推断流量的性质;
    • 上下文数据:与加密流的某些属性相关联的其它协议数据,比如HTTP和DNS报文流。

因此,基于机器学习和背景流量数据的流量检测方法的工作流程可以简要概括如下:首先对前面提到的几类背景流量数据进行采集,然后基于这些数据对加密流量的特征进行分析,将分析得到的特征输入机器学习分类模型,基于分类模型来对加密流量进行正常或恶意的属性判定。这一方法所要完成的任务实际上就是一个二分类问题。

2 加密流量特征分析

这一部分主要基于第一部分中讨论的三类背景流量数据对加密流量的三大类特征展开分析。这三类特征分别为:

  • 可观察的数据元统计特征:包括传统流数据、字节分布以及分组长度和分组到达时间间隔的序列;
  • 未加密的TLS头部信息特征:包括基于客户端和服务器的特定TLS特征;
  • 上下文数据特征:包括DNS和HTTP上下文流。

我们希望能够通过分析这些特征,最终得到这样一个1*n维的特征向量,便于输入到后续的机器学习分类器中。

图3

2.1 可观察的数据元统计特征

2.1.1 传统流数据
  • 流入和流出的字节数和数据包数(宏观上表现为上行流量和下行流量)
  • 源端口和目的端口
  • 流量总持续时间(以秒为单位)

像这类数值型特征,我们可以直接将原数值不加处理地添加到特征向量之中。

2.1.2 字节分布

字节分布是指数据包有效负载中遇到的每个字节值的计数,也就是计算一个字节可能取到的256个数值在数据流中出现的频次。选取这一特征是因为它能够提供大量的数据编码和数据填充的信息,很多恶意流量的非法行为往往就隐藏在这些信息中。将字节分布计数除以在分组的有效载荷中的总字节数,可以得到字节分布频率,进而近似得到字节分布概率,最终将这一特征表示为一个1*256维的字节分布概率序列。

2.1.3 分组长度和分组到达间隔时间的序列

在正常的网络环境中,大部分服务提供商会针对不同的业务类型对数据流中的数据包大小和发送频率进行处理,以此提高用户的体验。基于这一思想,我们考虑恶意软件在试图进行不同于正常业务类型的攻击行为时,是不是也会在这类时序特征上与正常流量表现出一定的差异呢?

对于这类特征,我们使用了马尔可夫链进行建模。在介绍马尔可夫链之前,我们需要先了解一下马尔可夫性质是什么。马尔可夫性质也叫无记忆性,这一性质表达的含义是指,一个随机过程的下一个状态,永远只由它当前的状态决定,而与它过去的任何状态都无关。如果一个随机过程满足马尔可夫性质,那么它就构成了一个马尔可夫链中的一环。

而在具体处理这类时序特征时,马尔可夫链起到的作用就是:首先它将序列中的每个值映射成一个状态(往往是一个多对一的映射,即多个值可能同时对应于一个状态),同时将这些值之间的时序关系映射成各个状态之间的转移行为,将这些转移行为存储在一个状态转移矩阵,再经过一系列归一化和扁平化处理,最终得到了一个状态转移概率序列。

对于分组长度,忽略零长度有效载荷(如ACK)和重传,数据包长度被视为UDP、TCP或ICMP数据包有效负载的大小,如果数据包文不是这三种类型之一,则将长度设置为IP数据包的大小。最大传输单元MTU一般为1500字节,因此上述协议数据包的有效负载区间为:TCP - (0, 1460B], UDP/ICMP - (0, 1472B], IP - (0, 1480B]。对于分组到达间隔时间,其分辨率为毫秒级。
在这类特征中,我们是将分组长度序列和分组到达间隔时间序列的值分别离散化为10个相同大小的“箱子”,表示10个不同的状态。

  • 长度数据:其马尔可夫链有10个箱子,每个箱子150字节
  • 时间数据:其马尔可夫链有10个箱子,每个箱子50ms

然后构造转移矩阵A,其中每一项A[i,j]表示第i和第j个箱子之间的转换次数。最后,对矩阵A的行进行归一化得到转移概率矩阵,再进行扁平化处理得到两个1*100维的状态转移概率序列,即最终的马尔可夫链。所有序列项将被用作后续机器学习算法的特征。

2.2 未加密的TLS头部信息特征

2.2.1 TLS协议

TLS及在此之前的SSL都是安全传输层协议,它位于传输层和应用层之间,
用于在两个通信应用程序之间提供安全通信,保证数据的完整性和保密性。TLS协议自顶向下由握手协议和记录协议共两层子协议组成。其中,TLS握手协议用于通信客户端和服务器之间协商安全参数,以建立起一个有状态连接进行数据传输。通过握手协商过程,通信双方需要确认使用的协议版本、加密算法、证书和会话密钥等信息。

对于未加密的TLS头部信息特征,我们主要关注TLS握手协议中的信息。因为TLS握手协议有两个特点:一是TLS虽然加密了明文,但并没有加密握手过程;二是在协议的版本更新过程中,基本的握手参数都不曾有过改变,这就意味着我们可以通过分析TLS握手协议中的一些参数来对流量属性进行合理的推测。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/689301
推荐阅读
相关标签
  

闽ICP备14008679号