长春大学 | Snowflake匿名网络流量识别

admin 2025年3月13日12:43:05评论14 views字数 3798阅读12分39秒阅读模式
长春大学 | Snowflake匿名网络流量识别

原文标题:Snowflake Anonymous Network Traffic Identification原文作者:Yuying Wang, Guilong Yang, Dawei Xu, Cheng Dai, Tianxin Chen, Yunfan Yang原文链接:https://doi.org/10.1007/978-981-99-9247-8_40发表会议:CENet 2023笔记作者:宋坤书@安全学术圈

1、研究背景

随着互联网的发展,用户的隐私保护意识不断增强,各种匿名通信系统也变得越来越流行。Tor作为最广泛使用的匿名通信系统,允许用户匿名访问网站而不被检测到。但匿名通信系统常被一些恶意用户滥用,部分用户甚至利用其匿名性进行毒品和枪支贩运等非法活动。因此审查者对匿名通信系统进行监控是非常必要的,目前研究人员已经采用采用流量识别技术来识别Tor流量并对其进行阻止。

为应对审查,Tor引入了可插拔传输(Pluggable Transport, PT)技术,通过利用具有特殊协议的客户端将流量隐藏在正常流量中,其中常用的有Obfs4、Meek和Snowflake等。Snowflake是通过将流量嵌入WebRTC数据通道来规避审查。而一种广泛采用的音视频技术,因此这对审查工作提出了重大挑战。由于WebRTC采用DTLS作为底层协议,因此本文主要研究WebRTC中DTLS握手过程的流量识别方法,在Docker环境中采集流量,采用基于流量统计特征的提取方法,最终利用多层感知器(MLP)模型判断流量是否为Snowflake流量。

2、Snowflake通信原理

作为一种新的PT技术,Snowflake主要由Client、Proxy和Broker三个部件组成。Client是位于被审查地区的用户,配置有Snowflake插件,负责初始化服务请求并与Proxy建立P2P连接;Proxy是志愿者运行的小型WebRTC代理,负责与Client建立WebRTC连接并将流量中继到Tor网络;而Broker则负责在线匹配Client和Proxy,通常使用域名前置(domain-fronting)技术来确保通信的顺利建立。

首先,客户端向broker发送代理请求,之后broker创建包含代理信息的会话描述协议(Session Description Protocol, SDP)信息并回应给Client。Client接收到SDP信息后,向Proxy发送连接请求。当Proxy收到来自Client的连接请求时,则会验证是否与之前发送给broker的信息匹配,如果信息匹配,Proxy接受与Client的连接。Client发送生成会话密钥所需的信息来启动与Proxy的DTLS握手。生成会话密钥后,Client和Proxy使用它通过WebRTC通道传输数据,Proxy则负责在Client和Bridge之间转发数据。Snowflake代理通信连接建立过程如下:

长春大学 | Snowflake匿名网络流量识别

3、本文研究方法

3.1 特征提取方法

本文主要基于Client和Proxy之间的握手流量特征识别目标流量,因此在特征提取过程中,重点分析WebRTC协议中的DTLS握手特征。每个会话流量被表示为UDP数据包的序列,采用统计方法提取多个特征,包括数据包长度的标准差(PLS)、平均长度(PLM)、前向传输的平均时间(FIM)等,这些特征反映了会话中的数据包大小变化和传输速度。此外,由于网络状况可能导致数据包重传,因此重传包数也被作为评估网络质量的指标。特征提取过程使用了CICFlowMeter软件,专注于UDP流量的特征提取。通过对DTLS会话流量进行特征提取,共得到48个流量统计特征,供后续模型训练和流量识别使用。

3.2 Snowflake流量识别模型架构

模型的输入为特征提取出的48个特征,并对这些特征进行了规范化处理。模型的架构包括四个层次:第一层为输入层,包含48个神经元;第二层为512个神经元,输入维度为48,输出维度为512;第三层包含64个神经元,输入维度为512,输出维度为64;第四层为单一神经元,并应用Sigmoid激活函数,将输出映射到[0,1],表示输入是目标流量的概率。如果输出概率大于0.5,则分类为Snowflake流量,否则分类为正常WebRTC流量。模型采用二元交叉熵损失函数(BCELoss)作为损失函数,该函数是二分类任务中常用的损失函数,衡量模型输出与真实标签的差异。优化算法选用Adam,它通过自适应调整学习率来提高训练效率,适应不同参数的梯度变化。模型架构如下:

长春大学 | Snowflake匿名网络流量识别

4、实验过程

4.1 数据集构建

本文使用Docker构建封闭的实验环境,以便于分发和管理实验过程,实验配置的Docker镜像发布在xinbigworld/ubuntu:1.2。实验的基础镜像为Ubuntu 20,首先拉取并实例化该镜像,并在容器内安装Python环境、Scapy、Selenium库、无头浏览器、Tor软件和Snowflake。由于Snowflake是用Go语言编写的,因此首先需要安装Go编译器来运行客户端。接着,编写脚本使用Scapy监听特定网络接口上的网络流量,并使用Selenium自动化脚本访问指定网站,同时指定流量通过Snowflake代理端口。Client在通过代理访问匿名通信网络后,访问随机网站生成流量。流量数据根据日期自动保存,并通过Cron调度每天执行。

在实验过程中,数据收集程序在两台服务器上运行,并将生成的Pcap文件汇总为一个文件。通过基于流量统计的特征提取方法,从收集到的流量中提取特征,并将其保存到文本文件中,方便后续的模型训练。结合先前研究的数据,最终构建了包含6477条数据的流量数据集,其中Snowflake流量作为目标流量,其他三个软件的流量作为正常流量。

4.2 模型训练

实验中对数据集进行7:3的划分,将数据集分为训练集和测试集。训练集用于训练模型,通过更新模型参数来建立分类模型;测试集用于评估模型性能和判别能力,采用准确率(Accuracy)作为评估指标。实验结果显示,随着训练迭代次数的增加,模型的损失值(Loss value)不断下降,并在40次迭代后趋于平稳。训练集的准确率在第25次迭代后达到了99.72%,并在随后的迭代中保持稳定。测试集的准确率与训练集相似,在第25次迭代后达到了99.83%。模型的训练与评估如下:

长春大学 | Snowflake匿名网络流量识别

5、模型训练结果

5.1 模型比较

本文使用相同的数据集训练了四个不同的模型,同时引入了三项额外的性能指标:精准率(Precision)、召回率(Recall)和F-score,以全面评估模型的表现。虽然所有模型在准确率上表现较好,但MLP模型在精确率上显著优于其他模型,表明其预测的目标流量大多数是真正的目标流量。SVM模型在召回率方面表现最好,能够召回所有正样本,但由于其较低的精确率,导致较高的假阳性率(False positive)。因此可以看出,MLP模型在Snowflake流量识别的各个方面表现出色,更适合用于Snowflake流量的识别。不同模型性能比较如下:

长春大学 | Snowflake匿名网络流量识别

5.2 流量统计特征重要性比较

本文使用随机森林(Random Forest, RF)算法对特征的重要性进行排序并获得其权重,其中,最重要的特征占权重的27%,代表了两个转发数据包之间的总时间;第二重要的特征占22%的权重,表示整个会话中数据包的平均长度;第三重要的特征表示会话的持续时间,即客户端和服务器在DTLS中的总时间。前三个特征的累积重要性达到了50%左右。本文通过收集DTLS握手过程中的会话数据包并提取统计特征进行识别。与现有研究中直接比较协议字段的方式相比,本文的方法表现出更强的鲁棒性,因为本文的方法不依赖于使用协议字段作为特征。流量特征重要性排序如下:

长春大学 | Snowflake匿名网络流量识别

5.3 数据分布对模型性能的影响

通过改变目标流量在数据集中的占比,本文模拟了真实场景中的数据分布。通过实验结果可以看出,当目标流量在数据集中占比较高时,模型初期并未达到较高的准确性,因为数据集较大,模型需要多次迭代才能学习到流量特征。而当目标流量的比例降低时,虽然模型初期准确率较高,但仍需要更多的训练迭代才能达到99.67%的准确率。不同比例目标流量识别如下:

长春大学 | Snowflake匿名网络流量识别

6、本文贡献

本文主要贡献包括:

  • 提出了一种基于流量统计特征的特征提取方法:通过分析DTLS握手过程中的流量统计特征,提取出48个与协议字段无关的特征。这种方法在流量协议字段发生变化时仍能有效工作,具有较高的鲁棒性。

  • 公开了数据集构建使用的Docker镜像:本文在实验中使用Docker环境构建了流量数据集,并公开了相关的Docker镜像xinbigworld/ubuntu:1.2

  • 提出了一个基于MLP的Snowflake流量识别模型:利用提取到的特征,能够准确识别Snowflake流量,其准确率达到了99.83%。即使在数据分布发生变化时,模型在经过更多训练迭代后仍能达到99.67%的准确率。

安全学术圈招募队友-ing 有兴趣加入学术圈的请联系 secdr#qq.com

专题最新征文

原文始发于微信公众号(安全学术圈):长春大学 | Snowflake匿名网络流量识别

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月13日12:43:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   长春大学 | Snowflake匿名网络流量识别https://cn-sec.com/archives/3826533.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息