天天看点

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

作者:开放隐私计算

隐私计算研习社

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

摘  要:随着互联网的发展及政务、商务领域电子化的普及,基于信息安全和隐私保护的需求,以及人们的信息安全意识日益提高。现阶段,数据的传输和通信大量采用加密技术,使加密流量呈爆发式增长。加密流量在保护个人数据安全的同时也让恶意流量的传播变得更加隐蔽,恶意加密流量检测已经成为信息安全领域的一个重要研究方向。基于此,提出一种基于 JA3 指纹识别技术的恶意加密流量识别方法,在传统 JA3 技术的基础上通过聚类法识别恶意流量,不经过解密即可对加密流量进行识别。

内容目录

内容目录:

1 相关研究

1.1 安全套接层/传输层安全协议

1.2 JA3指纹法

2 聚类法改进JA3

2.1 聚类分析法

2.2 聚类的基本模型

2.3 度量方法

2.4 实验结果

3 结  语

进入 21 世纪以来,随着互联网信息量的激增和流量加密手段的不断丰富,隐藏在海量加密流量中的恶意加密流量也正以指数级速度增长,给社会和个人财产带来巨大威胁。近年来,层出不穷的勒索软件将恶意代码加密后攻击并控制用户客户端,每年可造成数以亿计的经济损失。

大多数的恶意加密流量并不是从零开始编写的新型恶意加密流量,而是通过对已有的恶意加密流量进行代码复用和修改而生成的变体。同一恶意加密流量的不同变体在代码和行为上都较为相似,通常将这种功能、行为类似的恶意加密流量归为同一个恶意族簇。同一个恶意族簇的加密流量通常会调用相同或相似的函数,执行类似的行为,包括系统行为和网络行为 。因此,可以利用恶意加密流量的这一特征对其进行特征性检测。

恶意加密流量检测已经成为信息安全领域的一个重要研究方向,目前主流研究方向包括以下 3 种:

(1)深度数据包检测方法。深度数据包检测(Deep Packet Inspection,DPI)方法是指基于代理或防火墙来解密所有加密的流量,通过对所有数据包进行逐个解密和检测,将解密后的数据与已有病毒库等恶意流量代码资源库进行比对,是目前所有检测方法中最准确的,也是实施难度最大的,受个人隐私和商业秘密限制。并且,随着加密手段越发复杂,大规模大流量数据包的解密对服务器的算力也有着更高要求,算力成为该方法的发展瓶颈,使其在大型和公共网络中的使用受限。

(2)基于行为分析的检测方法。基于行为分析的检测方法是指使用通信模式对流量进行分类,可以部署用于任意流量捕获。通过测量流量特征对恶意加密流量进行识别,这些模式是根据流量特征计算出来的,可以根据这些模式的相似性对加密流量进行分类,且不需要了解底层协议。基于行为分析的检测方法需要大量流量特征作为学习库,正确的特征选择是成功使用该方法的关键,但在面对一些伪装成正常流量的恶意加密流量时便难以将其识别出来,因此,行为分析结果的准确度受特征选择影响较大,导致系统稳定性受限,并且由于很多研究机构的特征资源库并不是开源的,导致特征库资源获取也成为该方法受限的因素之一。

(3)指纹法。指纹法是指在加密连接的握手阶段利用观察到的未加密信息中的特定数据包进行恶意流量识别,通过检查来自每个流的几个没有被加密的分组,将捕获到的指纹信息与指纹库中的恶意流量指纹进行比对,根据比对结果对恶意流量进行识别。由于在握手阶段恶意流量尚未进行加密,所以该方法准确性和稳定性较高。

本文对传统指纹法进行改进,克服了该方法只能识别已在指纹库中的指纹的缺点,大幅提高了对未知恶意加密流量的识别准确性。

1

相关研究

1.1 安全套接层 / 传输层安全协议

安全套接层 / 传输层安全协议(Secure Sockets Layer/Transport Layer Security,SSL/TLS), 是目前被广泛使用的加密协议之一,用于加密互联网上的大部分流量。其前身是从 1995 年开始发展的 SSL 协议。SSL/TLS 是传输控制协议 /网 际 协 议(Transmission Control Protocol/Internet Protocol,TCP/IP)模型的第 5 层协议,为超文本传输协议、文件传输协议、简单邮件传输协议等应用协议提供加密数据传输。

SSL/TLS 可以在虚拟专用网络中使用,该协议提供通信方的认证、消息的保密性和完整性。目前,SSL 已逐渐被 TLS 取代,TLS 目前主要有 4 个版本,分别是 TLS1.0、TLS1.1、TLS1.2和 TLS1.3。如 今, 大 部 分 Web 服 务 器 都 支 持TLS1.2,而 TLS1.3 作为 TLS1.2 的升级版,在握手方面提高了安全性和速度,支持 TLS1.3 的服务器也在逐步增加。

TLS协议主要提供3个基本属性,如下文所述。

(1)身份验证。服务器的身份验证是强制性的,客户端的身份验证是可选的。服务器和客户端可以使用不对称或对称方法进行身份验证。

(2)保密性。TLS 连接建立后,通过网络发送的所有数据都将被加密,只有通过终端设备可以看到明文数据。实际的数据传输受握手期间建立的对称密钥的保护。

(3)数据完整性。数据无法以任何方式修改而不被检测到。握手完成后,对等方交换整个握手的消息认证码,这可以防止对握手的任何部分进行修改。消息摘要也保护所有后续发送的数据。

SSL/TLS 作为常用恶意加密程序的加密工具,可以使恶意流量隐藏在噪声中。TLS 握手过程如图 1 所示。

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

图 1 TLS 握手过程

当启动 TLS 会话时,客户端将在 TCP 的 3次握手后发送 TLS 客户端 Hello 数据包,数据包及其生成方式取决于构建客户端应用程序时使用的包和方法。服务器如果接受 TLS 连接,将使用基于服务器和配置以及 ClientHello 中的详细信息制定的 TLS ServerHello 数据包进行响应。

1.2 JA3 指纹法

JA3 指纹法是一种创建 SSL/TLS 客户端指纹的方法,即对传输层安全应用程序进行指纹识别的方法,可以用于威胁情报共享。JA3 于 2017年 6 月首次发布在 GitHub 上,是 Salesforce 研究人 员 John Althouse、Jeff Atkinson 和 Josh Atkins的作品。所创建的 JA3 SSL/TLS 指纹可以在应用程序间重叠,但仍然是一个较好的妥协指标。指纹识别是通过创建客户端问候信息的 5 个十进制字段的哈希来实现的,该消息在 SSL/TLS 会话的初始阶段(握手)发送。TLS 握手是通信双方之间连接的初始部分。在这个阶段,通信双方交换连接参数并建立对称密钥。握手是 TLS连接中唯一未加密的部分,服务器用 ServerHello消息、证书和密钥的服务器部分进行响应。第二轮完成密钥建立协议,并切换到加密通信。JA3 指纹创建过程如图 2 所示。

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

图 2 JA3 指纹创建过程

(1)证书接入层。包含获得新 TLS 证书以及为提取新 TLS 证书特征做准备,该层是整个JA3 指纹创建过程的准备阶段,为后续证书提取、数据处理和对比结论输出提供输入,实现了对未知 TLS 证书与指纹库进行验证对比的输入功能。

(2)证书提取层。包含提取 TLS 版本、提取可支持的密码、扩展提取、提取可支持的椭圆曲线和提取椭圆曲线格式,该层是 JA3 指纹创建过程的提取阶段,将后续数据处理和对比所需要素提取备用,包括十进制字段、椭圆曲线和密码等,实现了对未知 TLS 的分解功能。

(3)数据处理层。包含整理提取到的要素、将要素转换为字符串、连接字符串、创建客户端问候信息的十进制字段的哈希和创建 JA3 指纹,该层是 JA3 指纹创建过程的计算阶段,将前期提取到的字符、字段、椭圆曲线和密码等要素进行一系列数据处理,实现了生成新的 JA3指纹的功能。

2

聚类法改进JA3

传统 JA3 指纹法的缺点是比较依赖已有指纹库,面对全新和未造成威胁的恶意加密流量识别率较低,若该全新的恶意加密流量的指纹特征与指纹库中已有特征完全不符,则 JA3 指纹法就不能将其有效识别。为了改善这一缺点,本文使用 CD-HIT 聚类法对传统 JA3 指纹法进行改进,以达到高效识别全新未知恶意加密流量的目的。

2.1 聚类分析法

基于 JA3 指纹法的聚类分析法是通过将总结过的安全无害的流量特征作为基础模板,利用恶意加密流量潜伏在正常流量中时会导致整体流量特征发生变化这一特点,来对非法恶意流量进行检测,并对安全无害和含有恶意加密流量之间的区别进行分析整理,不断扩充指纹库来强化对全新陌生的恶意指纹进行识别的能力。

JA3 指纹在经过聚类分析后,便可以通过捕获流量中集群分布特征对恶意加密流量进行识别,且得出规律性的结论。如果整体流量特征与已知安全流量特征相符,则该流量可被认为是安全流量;如果整体流量特征与已知安全流量特征均有较大偏差,则该流量有较大可能被认为是恶意加密流量,进而可以对该流量进行隔离分析。

安全流量的聚类和包含恶意加密流量的聚类如图 3、图 4 所示。

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

图 3 安全流量的聚类

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

图 4 包含恶意加密流量的聚类

收集网络流量中安全流量和包含恶意加密流量的数据。蓝色圆圈代表 JA3 指纹的簇,属于安全流量的通信,可以用来分析捕获到的未知流量,捕获到的未知流量可能既包含安全流量又包含恶意加密流量,或者全为安全流量,或者全为恶意加密流量。图中的绿色圆圈代表安全流量的簇。红色圆圈代表恶意加密流量的集群。如果捕获的流量也是安全的,那么该流量应该与已知的安全流量相似,在图形上显示为所有安全流量的特征均在 JA3 指纹簇中,没有明显凸出。但是,如果捕获到的流量中存在恶意加密流量,那么该流量可能会明显偏离已知的安全流量,在图形上显示为不符合安全流量特征的部分与 JA3 指纹簇有较大偏差,会在图上出现明显突出,即使有些恶意加密流量会携带部分安全流量的特征,这部分特征在图上显示为该恶意加密流量的一部分在 JA3 指纹簇内,但另一部分会有明显不同。如图 4 所示,该检测将 JA3 指纹簇集的结构与已知流量进行比较,能够检测出全新未知的恶意加密流量 。

基于聚类法改进 JA3 指纹识别过程如图 5所示。

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

图 5 基于聚类法改进 JA3 指纹识别过程

利用聚类法对传统 JA3 指纹识别法进行优化,通过接入抓取到的疑似恶意加密流量信息,经过 CD-HIT 生成聚类群,经离散度量后生成量化的聚类模型,最终将该模型补充至 JA3 的指纹库中。

2.2 聚类的基本模型

聚类是将实验数据分成相似组的方法。以分类聚集的方式对实验数据进行划分,使聚集在一起的数据有着更多的相似特征。聚类可以分为硬聚类和软聚类 ,其中,硬聚类是指每个数据被确定地分到某一个适合该数据特征的组;软聚类是指某个数据可以属于多个组,但属于某个组有一定概率。例如,实验数据 m,在硬聚类分类法中,属于 C 组;而在软聚类分类法中,属于 A 组的概率为 20%,属于 B 组的概率为 30%,属于 C 组的概率为 50%。

对于不同的聚类算法。其主要区别在于点与点之间相似度的定义。因此,每种方法对不同类型的输入数据表现不同。常用模型有以下几种。

(1)分布模型。分布模型是根据聚类中的数据在某一特征下的概率来决定该数据的分组情况。典型应用为期望值最大化算法。

(2)质心模型。质心模型是利用一个点到一个聚类的分配取决于它到聚类中心的距离这一特点对数据进行分组。迭代计算聚类中心,直到找到局部最优。典型应用为 K- 均值(K-Median)算法。

(3)密度模型。密度模型是利用不同特征的数据拥有不同且特定的密度这一特性来进行搜索的方法。典型应用为基于密度扫描(Density-Based SCAN,D-B 扫描)和光学算法。

(4)连通性模型。连通性模型是将所有邻近的数据逐级分类并加以观察的方法,分为正向分类和反向分类两种方法。其中,正向分类法是从整个集群开始,根据细分特征将所有数据的完整集群逐渐分解成更小的集群;反向分类法是从每个数据自身出发,最开始都在自己的簇中,随着不同的特征分类,簇逐渐合并。连通性模型也称为分级聚类方法,其缺点是对大型数据集不是很有效。典型应用为 CD-HIT 法,本次设计就采用了此方法。

在生物信息学中,CD-HIT 法常被用于 DNA分类,其最大的优点是简单和快速。如果两个数据的共享部分存在相符的特征,则它们可以被分类在同一聚类中。这个最小共享部分被称为相似性阈值的百分比 。因此,比较两个数据的长度通常足以确定两个序列是否在同一簇中。这避免了许多不必要的耗时比较,在实践中,这种算法是非常高效的。整个算法分两步工作,在第一步中,输入数据集按大小排序,在第二步中,数据按降序处理。已处理的数据依次与已经形成的聚类中最长的样本进行比较。如果它超过相似性阈值,则被分配到最佳匹配的聚类;反之,将创建一个新的集群。所有样本都以这种方式处理。

以上所列各种模型均有相应的优缺点,可根据实际使用需求进行应用,选择最适合的模型来使其优势最大化。

2.3 度量方法

聚类算法各种模型的计算都依赖度量,只有通过度量,才能对获取到的多个实验数据之间的距离进行测量和量化,进而对其进行分类。

常用的度量方法主要分为真实度量和离散度量。本次设计使用的聚类 JA3 指纹识别中的度量方法属于离散度量,是专为 CD-HIT 开发的一种离散度量方法。

假设

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

为进行聚类的两组离散值,

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

的相似性为 y,将

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

进行对比,

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

中较大的集合,则相似性 y 的算法为:

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

CD-HIT 法通过对所有实验数据进行分别度量,生成一套完整的度量结果,再将该结果用于连通性模型,进行 CD-HIT 反向分类,得到所有数据的详细聚类。以此聚类结果作为数据库,当需要对新的陌生数据进行识别判断时,就可通过与具备足够数据特征聚类的数据库进行对比,进而得出结论。在完成所有数据的度量和聚类后,即可得出最大相似度、相似度和某个数据的最近族簇等聚类属性。

当该 CD-HIT 法用于 JA3 指纹识别的聚类时,对于 JA3 指纹数据中可能出现的同一数值可代表多重含义的情况,CD-HIT 法用于 JA3 指纹数据的每个部分。

以 CD-HIT 法对 JA3 指纹数据进行聚类后,就可生成 JA3 指纹专用聚类库,在对聚类库进行分析和分类后就可通过对比聚类属性将其用于加密流量识别。JA3 指纹的聚类属性主要有 3个,分别是组内聚类的平均距离、集合中两个聚类的最大距离和最大相异度。在对比聚类时必须综合考虑这 3 个聚类属性,否则将会导致比对结果出现某一个方向的倾向性。例如,将从某站点抓取的全新流量与该站点的安全流量进行比对,通过比较聚类之间的平均距离即可判断新的流量是否具有隐藏恶意加密流量的可能性,如果含有恶意加密流量,则平均距离这一属性将会有显著区别。当然,在比较平均距离的同时也需综合比较聚类的最大距离和最大相异度,最终根据综合比对情况得出相应结论。对不同类型的流量数据来说,其对应的 3 个聚类属性具有不同的权重分布,需要针对流量数据类型进行具体分析,在实际操作过程中,系统已根据常见流量数据类型进行预分类,可实现快速分配聚类属性的权重。

经过以上步骤,在面对未知加密流量时就可以结合指纹库和聚类库对其进行识别,克服了传统 JA3 指纹法对新型恶意加密流量识别率低的缺点。

2.4 实验结果

在实验室数据库中选取一定数量的安全流量和恶意加密流量作为实验样本,分别以传统JA3 指纹法和基于聚类法改进的 JA3 指纹法对恶意流量进行识别,实验结果如表 1 所示。

表 1 恶意流量识别实验结果

基于聚类法改进 JA3 指纹识别的恶意加密流量识别

通过实验可以得出,基于聚类法改进的 JA3指纹识别方法对在库恶意流量的识别率与传统JA3 指纹法识别率相当,但对未入库的全新恶意流量的识别率提升较大。

3

结语

随着加密手段的不断丰富和加密用户群体的快速扩张,可以预见,未来加密流量通信将会基本取代明文通信,在保护个人信息安全的同时也为恶意加密流量提供了更适宜的隐蔽空间,这些恶意加密流量对个人财产和社会安全有着极大的安全隐患,所以目前迫切需要增强网络空间的加密流量感知与识别的网络监管能力,构建基于“可感知、可识别、可防护、可处置”的一体化网络监管体系,从而提升网络空间信息安全防护能力。

本文提出的基于 JA3 指纹识别的恶意加密流量识别方法,通过使用 CD-HIT法对未知流量进行聚类,克服传统 JA3 无法识别全新恶意流量特征的缺点,使其在初次面对全新恶意流量时仍可通过聚类分析的方法进行快速且有效的识别。但是目前仍存在一些问题及不足,首先是 JA3 指纹库的获取,目前公开的主流 JA3 指纹库主要可以从 github 和 ja3er 上获取,其中有效指纹约有上百条,规模不足以应对大流量的加密流量筛选识别,但若想从用户的加密流量中获取指纹,就需要对其进行解密,这就涉及用户隐私及授权问题。通过招募足够数量的测试用户作为志愿者,可以有效解决指纹库的隐私和授权问题。其次是以何种形式、何种规模组织实验,如何通过实验模拟出更贴近真实网络环境中的复杂加密流量数据。以上问题将是我们未来需要对恶意加密流量识别技术继续研究和推进的关键技术点。

继续阅读