加密流量测量和分析

一、加密与非加密流量识别

1、利用 信息熵 的方法对加密流量进行识别。

对不同类型的文件,如文本、图片、压缩文件、加密文件等的前 1KB 数据的熵进行计算分析,可以发现文本文件的熵处于较低水平,压缩文件和加密文件的熵处于较高的水平,且两者较难区分。

多元组熵的定义:

(1)n元字符组集合指以大小为 n 的滑动窗口对报文序列 P 进行切割后得到的字符串 $s_i (1 \le i \le L-n+1)$ 的集合,L 表示分析报文序列以 字节 为单位的长度:
$$
S_n = \lbrace s_1, s_2, …, s_{L-n+1} \rbrace
$$
“data.dat” 对应的二元字符组集合为 $S_2 = \lbrace da, at, ta, a., .d, da, at \rbrace​$。

(2)从 n 元字符组集合中各元素出现的频率进行考虑,选择 n 元字符组集合中出现频数高于 k 的元素 $s\prime_{i, k}(1 \le i \le m)$ ,并统计其在集合中出现的频数 $f_{i, k}$ ,组成 k 频 n 元字符组集合为:
$$
S\prime_{n,k} = \lbrace s\prime_{1,k}:f_{1,k} ,\ \ s\prime_{2,k}:f_{2,k},\ \dots \ ,s\prime_{m,k}:f_{m,k}\rbrace
$$
其中,频数阈值 k 为 [1, L-n+1] 区间内的整数, $m(0 \le m \le n)​$ 表示频数不小于 k 的不重复元素的个数。在上文例子中,若取 $n=2, k=1​$ ,则有 $S\prime_{2,1} = \lbrace da:2,\ at:2,\ ta:1,\ a.:1,\ .d:1\rbrace​$ ; 若取 n=2, k=2, 则有 $S\prime_{2,2} = \lbrace da:2, \ at:2\rbrace​$。

根据以上定义, k 频 n 元字符组集合 $S\prime_{n,k}​$ 的信息熵可以表示为:
$$
H_{n,k} = -\sum_{i=1}^{m} P(s\prime_{i,k}) log_2P(s\prime_{i,k})
$$
其中,$P\prime_{i,k} = f_{i,k}/\sum_{t=1}^{m}f_{t,k}​$。

(3)若对长度 n, 频数阈值 k 各取不同的值时,则可以得到一系列关于报文序列 P 的熵值特征,就构成了多元组熵值特征集:
$$
H = \lbrace H_{n,k} \ \rvert \ n \in[N_a, N_b], k \in [K_a, K_b] \rbrace
$$
其中,H 中元素(熵值) 的个数为 $(N_b - N_a) \times (K_b - K_a)​$ 。一般地,对 n, k 的取值区间分别定义为 $[1, N] 和 [1, K]​$ 。在上例中,取 N=2, K=2,则序列 “data.dat” 的多元熵值特征集为 $H = \lbrace H_{1,1}\approx1.906, \ H_{1,2}\approx0.835, \ H_{2,1}\approx1.514, H_{2,2}\approx1\rbrace​$。

2、利用 累加和检测 的方法对加密流量进行识别。

多元组熵是以字节为单位的随机性检测,其需要一定数量的数据,计算相对复杂;而累加和检验是以比特位单位的随机性检测,通常只需要较少的数据即可有较好的检验效果,且具有较快的计算速度。

累加和检验有正向和反向两种模式,两个模式的区别仅在于遍历顺序,其中,正向模式下的累加和检测的步骤如下:

  • 将比特序列 $\varepsilon$ 调整为 $(-1, 1)$ 的形式的序列 X。 $X_i = 2\varepsilon_i - 1$

  • 计算序列 X 的前 k 项和 $S_k$

  • 计算正向模式下 $\lvert S_k \rvert$ 的最大值 z

  • 计算检验值 P

P 的取值一般在 $0\thicksim1$ 之间,其值越大,则待检测序列的随机性越高。通常情况下,设定一个 $\alpha$ 为阈值,当 $P > \alpha$ ,接受检验序列为随机,反之,则拒绝随机性假设。

二、加密流量应用服务识别

1、基于选择性集成的特征选择方法

该方法可以克服基于端口和深度包检测方法的不足,但特征属性中包含的冗余和不相关特征会增加模型复杂度、降低模型可信度,导致分类效果和效率同时下降。

算法流程:第一部分,将多个特征选择器选取的特征子集根据评价指标进行排序,再根据选择性集成策略选择部分特征选择器,从已有的特征选择器中将作用不大和性能不好的特征选择器剔除,将保留的特征选择器集成(特征的并集)。第二部分,采用朴素贝叶斯算法评估序列前向搜索(先选择一个最优的特征,再选择一个与其组合起来最优的特征,一直一个个特征往最优特征子集中加,直到判据值 $J$ 降低为结束准则)产生的特征子集,以分类准确率下降为结束准则,再比较多个数据集(同一目的的数据集,只是不同类别的分布状况不一样)的最优特征子集选出全局特征子集,提高特征子集的稳定性。流程如下图:

2、基于加权集成学习的自适应分类方法

针对 DPI 分类方法解析数据包负载内容侵犯隐私,且对加密业务无能为力,促使研究人员转向基于机器学习的流量分类方法。

如果能够准确地识别网络流的变化,就可以及时有效地更新分类器,从而避免仅根据经验设置固定的时间间隔频繁更新分类器。首先,多个集成的分类器根据他们的分类性能设置不同的权重(分类精度高的分类器权值大),然后,根据信息熵检测网络流的变化,一但网络流发生变化,再建立一个分类器,这个新的分类器是用最新的样本训练出来的,之后,用它替换掉原始多个分类器中权值最小的那个。

这样,一方面充分利用先前训练的分类器,另一方面在保留先前训练的分类器的基础上引入当前样本训练的分类器集成,并剔除性能下降的分类器,保证模型集成分类器的泛化能力。

Weka 3: Machine Learning Software in Java

3、non-VPNVPN 加密流量分类方法

TCP 流通常在会话结束时(通过 FIN 数据包) 终止,而 UDP 流由流超时终止。

通过提取 中与时间相关的特征来识别 加密和VPN 流量,进行分类。用到的特征如下图:

三、TLS 加密流量分类方法

1、基于Markov链的分类

识别SSL/TLS 加密应用,二阶Markov链和HMM 模型分别建立在 SSL/TLS 协议交互的握手过程和数据传输过程(使用握手过程中的报文类型和分组长度,数据传输过程中的数据包长度),然后建立加权集成分类器。每个每类器的权重与当前分类器的分类误差 成反比,具体的:
$$
MSE_i = \frac{1}{|S_n|} \sum_{(x,c) \in S_n }(1-f_c^i(x))^2
$$

$$
MSE_r = \sum_c p(c)(1-p(c))^2
$$

$$
第i个分类器的权重:w_i = MSE_r - MSE_i
$$

2、Tor 行为分析

默认情况下,Tor 服务器生成的证书的颁发者证书主体都使用随机公共名称,主题发布者 字段是独立生成的,因此彼此不同。主题和发行者字段都不包含证书中常见的(并有证书颁发机构强制要求)的其他信息,例如位置公司名称。这些特征允许通过解析数据集中的 X.509 证书,然后在其 主题颁发者 字段上匹配相应的正则表达式来识别 Tor 连接。

但以这种方式识别 Tor 连接的一个潜在缺陷在于 TLS 会话恢复,其跳过大多数TLS 握手,包括证书交换,用于连接到同一TLS 服务器的连接。但是,Tor 规范声名 Tor 客户端和服务器不能实现会话恢复。

四、HTTPS 加密流量分类方法

1、HTTPS 加密流量的识别方法

会话(流)用五元组 (协议、源IP、目的IP、源端口、目的端口) 表示,标签是元组 (OS、浏览器、应用) 。提取特征,训练分类器对其进行识别。

2、HTTPS 协议语义推断

在不解密 HTTPS 流量的情况下,训练分类器识别 HTTPS 流中的某些字段,如状态码、方法、是否含有 Cookie 字段、Content-Type 字段的类型 等等。

3、识别TLS 连接拦截

如网络中间件和防病毒安全产品会对 TLS 连接进行拦截,其在本地客户端和远程服务器中间充当一个中间人。为了识别出是否发生了 TLS 连接拦截,可以通过 Client Hello 消息中宣称的浏览器类型和其中的TLS扩展、密码、椭圆曲线和压缩方法 等生成的指纹是否匹配来识别,因为每个浏览器虽然有不同的客户端类型和版本,但也可以为它们生成特定的指纹库。

当发生了拦截时,可进一步识别出是谁(什么设备)拦截了此TLS 连接,通过为市面上的大量产品生成一个设备指纹库,然后匹配被拦截修改后的 Client Hello 中的版本、密码、扩展、压缩方法、椭圆曲线和签名算法 等生成的指纹和库中的那个设备的指纹相匹配。

通过对 TLS 连接的安全性进行量化后,发现网络中间件或拦截产品降低了原始连接的安全性。

五、加密视频流量参数识别

1、对视频 QoE 进行量化评估

1)视频是分块传输的,其中,视频源质量、初始缓冲时延和卡顿时长 是影响用户体验的最重要的外部因素。

视频源质量 sQuality 表示如下:
$$
sQuality = Qualitymax \times (1-\frac{1}{(1+VB \times VC \times \frac{CP}{VR})^2})
$$
其中,VC 代表 视频压缩算法,CP 代表 视频源编码等级, VR 代表 视频清晰度, VB 代表 码率, Qualitymax 代表当前清晰度视频源质量评分的最高值,对于清晰度为 4K, 2K, 1080P, 720P 和 360P 的视频,Qualitymax 值分别为 4.9, 4.8, 4.5, 4, 3.6 和 2.8

2)初始缓冲时延(IBL)是从点击播放 到视频播放的等待时间,初始缓冲时延 sLatency 表示如下:

3)卡顿是指播放过程中缓冲的数据量被消耗完所产生的视频播放停止(与 卡顿时长、次数等相关),卡顿时长占比 sStalling 表示如下:

综合考虑视频源质量、初始缓冲时延和卡顿占比 3 个 KPIs 提出的 vMOS 模型对视频 QoE 进行客观评估,vMoS 表示如下:
$$
\begin{equation}
vMoS =
(1-0.092 \times (1+2e^{-sLatency})) \times (5-sLatency) \times sQuality - \
0.018 \times (1+2e^{-sStalling}) \times (5-sStalling)
\end{equation}
$$
2、基于视频块特征的视频 QoE 参数识别

SSL/TLS 加密 YouTube 流量识别模块、传输模式识别模块、QoE 参数识别模块以及视频QoE 评估模块。首先,根据 SSL/TLS 协议握手过程中 Client Hello 数据包中的未加密内容识别加密 YouTube 流量;然后,根据视频流的前几个包的特征识别出不同传输模式,在根据视频块统计特征建立分类模式识别视频块的码率和清晰度;最后,根据该视频参数和传输参数计算视频 QoE

1)在 SSL/TLS 加密 YouTube 流量识别模块中,根据预先建立视频服务器 IP 白名单,过滤出混乱流量中的加密 YouTube 流量。

2)在传输模式识别模块中,当前加密 YouTube 自适应码流传输模式主要有 Apple HLSMPEG DASHHPD。在同一时间,HPD采用单流传输(视频和音频没有分离),而DASHHLS 采用多条流传输,采用相邻两条流之间的 SYN-ACK 包的到达时间间隔来区分出 HPD 传输模式。

DASHHLS 视频传输都是将视频进行分段后使用基于 TCPHTTPS 流传输的,由于 TCPMSS 所限制,视频片段被分割成大量 1.4KB 左右的数据包传输,而这些数据包响应的都是同一个请求,所以他们的 ACK Number 相同。但是在 DASH 传输模式下,服务器需要先向客户端发送 Initial SegmentInitial Segment 包含了视频解码器所需的初始化信息,然后再开始传输视频数据,在加密数据包中的表现就是经过 SSL/TLS 握手阶段后开始传输的前 PApplication data 数据包出现 SACK Number。可以利用此特征来区分 DASHHLS 视频传输模式,统计发现 DASH 个数据包的 ACK Number 种类数为 23 ,而 HLSHPD 的种类数都为 1

3、加密视频 QoE 评估

影响自适应和经典视频流 QoE 的 3 个关键因素:卡顿、清晰度质量和质量切换。

研究发现,视频片段的大小和到达间隔时间的变化是影响质量的两个重要指标。

六、加密恶意流量识别

1、处理数据类别不平衡问题

存在两种方法,一种是过采样:不断将少数类重新采样到训练数据集中的方法;另一种是欠采样:随机消除多数类数据的方法。

2、梯度稀释问题
$$
\frac{\partial Loss}{\partial \theta} = \sum_{M_i \in M}\sum_{A_{ik} \in M_i}\frac{\partial Loss_{A_{ik}}}{\partial \theta}
$$
M 代表训练数据集,$M_i$ 代表 M 的第 i 类,$A_{ik}$ 是 $M_i$ 的第 k 个数据, $Loss_{A_{ik}}$ 是数据 $A_{ik}$ 贡献的损失。可以看到参数 $\theta$ 相对于每个类的更新次数取决于每个类的大小。一旦数据的数量严重不同,模型将倾向于偏向多数类,因为总梯度将由多数类在频率方面贡献的梯度所支配。这种现象将导致模型对少数类的不敏感,因为模型很少更新关于少数类的参数。由少数群体贡献的梯度逐渐消失,好像被多数群体所贡献的那样稀释了,这种现象称为 梯度稀释

3、零样本学习

网络社会中存在各种恶意软件,每天都有许多新的变种,所以不可能手机每个家族的数据样本。为了评估所提出模型的泛化性能,检查***模型识别从未训练过的一些恶意软件的能力,这种场景被创造为机器学习术语中的“零样本学习”。

4、字节分布特征

字节分布是长度为 256 的数组,它保持流中每个数据包的有效负载中遇到的每个字节值的计数。通过将字节分布计数除以在分组的有效载荷中的总字节数,可以容易地计算字节值概率。

完整的字节分布提供了大量有关数据编码的信息。

5、正常企业流量和恶意软件流量中的TLS连接的区别

  • 密码套件。 一般企业流量中提供的密码套件安全性比较高,而恶意软件流量中提供的密码套件安全性低,两者存在比较大的区别。
  • TLS 扩展。 几乎一半的企业客户端会支持多达 9 个扩展,但恶意客户端只会一致地支持一个。
  • 客户端的公钥长度。 大多数企业流量使用 512(ECDHE_RSA) 公钥,恶意软件几乎只使用 2048(DHE_RSA) 公钥。

6、分类恶意 TLS 流量

DNS + HTTP + TLS 三者相关联,提取特征进行分类识别。

用到的特征:

  • 可观察元特征。 包长及时间间隔转移矩阵,字节分布等。
  • TLS 数据。 密码套件、支持的扩展及公钥长度; 服务器选定的密码套件、支持的扩展、证书数量、有效天数及是否有自签名等。 统计出现的所有种类,然后onehot编码生成一个特征向量。
  • DNS 数据。 TTL 值、DNS响应中域名的数字字符数、非字母数字字符数、返回的 IP地址的个数、域名是否出现在 Alexa 列表前 100、 前1000、 前10000、 前 100000里等。
  • HTTP 数据。 Content-TypeUser-AgentAccept-LanguageServerCode 等。
-------------本文结束感谢您的阅读-------------
您的鼓励就是我创作的动力,求打赏买面包~~
0%