Classifying User Activities in the Encrypted WeChat Traffic
Authors:Chengshang Hou,Junzheng Shi,Cuicui Kang,Zigang Cao,Xiong Gang
Journal:2018 IEEE 37th International Performance Computing and Communications Conference (IPCCC) (2018)
摘要
加密移动应用程序的安全性和隐私性引起了研究人员的关注。 然而,现有的研究大多数集中在SSL/TLS流量的分析上,而很少有研究关注专有加密流量,这也是重要且具有挑战性的。
在本文中,我们对微信进行了深入研究,微信是世界上最受欢迎的社交应用程序之一,拥有超过 10 亿活跃用户。 该应用程序的大部分通信都使用称为 MMTLS 的专有加密协议。 它是基于传输层安全 (TLS) 1.3 设计的,兼顾性能和安全性。
我们探索了 MMTLS 加密通道内典型用户活动的细粒度分类,并将 MMTLS 与微信中联合使用的 HTTPS(例如流量持续时间和数据包大小)进行比较。 研究发现,MMTLS适用于低延迟、轻量级消息传递的场景。
根据不同用户从不同平台(Android、iOS)和设备(华为、三星、iPhone、iPad等)收集的进行了MMTLS协议加密的微信流量,我们对支付、广告点击、浏览等七种典型活动进行分类。 实验结果表明,平均准确率和召回率均达到92%以上。 我们的工作是第一个对这个专有加密协议进行分类并了解 MMTLS 和 TLS 之间的区别。 相信这项工作将有利于微信和其他专有加密应用程序的安全和隐私。
I.引言
-
微信采用MMTLS协议
微信6.6.x以上版本在TLS 1.3 [6]的基础上采用了一种新的专有安全协议MMTLS[5]作为其主要加密协议。 MMTLS握手保留了TLS机制,包括0-RTT模式和1-RTT模式。然而,微信针对不同的服务场景采用了MMTLS和SSL/TLS。
-
首先,我们研究MMTLS协议和MMTLS加密的微信流量。然后,比较HTTPS和MMTLS的网络特性,并通过流量分析进行细粒度的用户活动分类。结果表明,利用流量的基本统计属性可以准确地识别用户活动。
-
该论文的贡献有两个方面。
- 一方面,我们深入分析了MMTLS的安全性和使用场景,并与HTTPS进行了比较。我们发现 MMTLS 协议主要用于非 Web 访问的用户活动加密。
- 另一方面,我们使用五种分类模型来进行细粒度的用户活动分类并比较它们的性能。分类器有决策树、随机森林、朴素贝叶斯、逻辑回归和SVM。结果表明,随机森林分类器的性能最好,准确率和召回率均达到92%以上。
II. MMTLS 分析
A. MMTLS
-
MMTLS协议基于 TLS 1.3 设计,没有任何明文的二进制协议。而 TLS 协议在握手阶段携带明文。为了提高安全性,MMTLS使用ECDH(椭圆曲线Diffie-Hellman)算法进行密钥交换。为了减少握手延迟,使用预共享密钥(PSK)来实现0-RTT握手。
-
与 TLS 相比,MMTLS 使用微信分发的内置公钥建立加密连接,而不是为每个连接交换证书。由于应用程序内置有一个公钥,类似于HTTP公钥固定(HPKP),攻击者无法伪装真实的服务,因此无法通过中间人攻击来破坏加密通道,可用于拦截HTTPS通道[26]。
B. WeChat服务
-
在这项工作中,我们将微信流量分为七种服务。详细分类信息如下。
- 聊天:包括消息和语音聊天、语音留言、视频通话;
- 文件传输:包括发送图片和其他文件;
- 朋友圈:社交网络服务。 微信用户向好友分享文字、图片、超链接等内容;
- 支付:用户通过扫描微信生成的二维码向其他用户付款,此外,微信还允许用户直接向朋友或微信群付款;
- 订阅:支持用户阅读订阅作者发表的文章;
- 小程序:支持用户在微信中使用小程序,采用H5和JavaScript技术实现;
- 广告:当用户点击订阅文章底部出现的广告时,微信即可获得利润。
-
在研究中,我们观察到MMTLS协议运行在TCP和HTTP协议之上。 微信使用基于HTTP的MMTLS的通信流程如图1所示。基于TCP的MMTLS和基于HTTP的MMTLS在使用上的主要区别在于连接持续时间。 基于TCP的MMTLS通常用于维持连接。 应用不同类型的MMTLS来加密不同的服务。
- 表 I 显示了微信服务与其应用层协议(即基于 HTTP 的 MMTLS、基于 TCP 的 MMTLS、HTTPS)之间的关系。 从表中可以明显发现,有多个服务同时使用MMTLS和HTTPS。 大多数微信服务都使用基于 HTTP 的 MMTLS 进行加密,聊天和文件传输服务除外。 在下一节中,我们将重点关注基于 HTTP 的 MMTLS,因为它涵盖了大多数类型的服务。
4. 基于HTTP的MMTLS协议的HTTP标头如表II所示。 从表中可以清楚地看出,封装MMTLS协议的HTTP头与普通的HTTP头不同。 具体来说,HTTP 标头 Content-Type 始终设置为 application/octet-stream。 标头包含一个特殊的 HTTP 标头字段 Upgrade:mmtls。 标头的 User-Agent 始终设置为 MicroMessenger Client。 HTTP 负载是 MMTLS 协议。 需要说明的是,Post方法的URL字段中的xxxxxxxx代表的是随机的8位十六进制代码,在不同的请求中有所不同。
C. 用户活动
-
一项服务可能与多个用户的活动相关联。 例如,向朋友或团体付款。 用户模型被定义为使用服务以顺序方式产生活动的用户。 换句话说,两个服务不会同时使用,例如用户无法在向某人付款的同时浏览朋友圈。
图1展示了微信调用用户活动的流程。 如图所示,用户操作可能会触发单个或多个 HTTP 会话。 在多个 HTTP 会话的情况下,会话发起可以是顺序的或并发的。
-
我们发现微信在用户活动中同时使用了MMTLS加密协议和TLS加密协议。 典型的用户活动触发服务请求如下。 首先,应用程序通过MMTLS从微信服务器获取元信息。 然后,根据 MMTLS 响应,应用程序访问 HTTP 站点或 HTTPS 站点。
-
细粒度分类中选择的用户活动基于两个标准。 一种是与隐私相关的活动,另一种是常用的活动。 不同用户活动的集合非常大。 因此,我们的目标活动是那些独特且关键的活动。 考虑到用户切换服务的时间,一旦检测到关键活动,就会确定用户当前使用的服务。 根据我们在第III-B小节中给出的类别,我们选择了七种典型活动,即浏览时刻、浏览订阅、打开小程序(显示为小程序)、广告点击、付费服务、群组或好友 。 服务与活动的对应关系如表1所示。
IV. MMTLS 数据集
A. Data collection
-
我们使用便携式无线接入点创建了无线网络。 该网络的流量被Wireshark捕获。 为了避免受到干扰,采取了以下措施。 首先确保Wireshark的混杂模式关闭,避免捕获其他通道信号。 其次,每部智能手机都专门连接到无线网络。 第三,关闭后台运行的应用程序。
-
为了获得标记的 MMTLS 协议流量,我们捕获了不同用户活动产生的微信流量痕迹。 根据III-C小节中选定的活动,我们分别收集每个活动产生的流量痕迹。 为了模拟一般用户活动场景,我们收集了 27 个用户的实验微信帐号的流量痕迹。 每项活动至少进行160次征集。 为了概括实验数据,我们收集了不同微信版本、平台和设备供应商的微信流量。
微信版本从6.6.5到最新发布的6.6.6。 微信流量采集自Android(包括4.4、6、7、8版本)和iOS(包括8、10、11版本)。 设备包括苹果、华为、三星等。
流量分析中的流量痕迹指的是网络通信过程中产生的数据记录和信息。它包括了网络通信的源地址和目的地址、通信的协议类型、通信的开始时间和结束时间、传输的数据量等。通过分析这些流量痕迹,可以了解网络通信的模式、流量峰值、通信的频率和持续时间等。
-
端口 80 用于过滤 HTTP 流量,端口 443 用于过滤 SSL 流量。 为了识别微信的MMTLS流,我们检查特殊的HTTP头字段Upgrade: mmtls(更多信息参见表二)。 失败的 MMTLS 请求将被丢弃(即没有服务器响应)。
-
流量痕迹可能包括后台流量,为了评估其影响,我们进行了一项实验,捕获没有任何活动的流量。 发现10分钟内只出现了两次短MMTLS,两次唤醒屏幕。 由此可见,我们采集的微信后台流量影响较小。
B. MMTLS-8K Datasets
- 通过27个微信账号和用户、不同的设备和平台,我们在7种不同的活动中获得了1.2G标记的微信流量轨迹。 最后,我们在 1575 个活动中获得了 7937 个 MMTLS 流。 表三报告了我们捕获的这些活动的摘要。 表中未显示失败的请求。
C. The comparison with HTTPS
- 为了深入了解这种特殊的应用程序服务模型,我们分析了浏览订阅活动。 选择该活动是因为通过域名mp.weixin.qq.com很容易识别用户活动的HTTPS流,该域名主要用于浏览订阅活动。 从数据集中浏览订阅活动的流量跟踪中,我们提取了 630 个带有 SNI mp.weixin.qq.com 的 HTTPS 流和 1965 个 MMTLS 流。
- 持续时间比较:如图2a和2d所示,70%的MMTLS流持续时间小于0.25秒,几乎100%的MMTLS流持续时间小于2秒连接。 而HTTPS流的连接时长均匀分布在0到30秒之间。 这表明MMTLS协议用于低延迟场景。
- 字节比较:图2b、2e、2c和2f显示了入站和出站字节数的累积分布。 图 2e 和 2f 的 x 轴以对数刻度表示。 对于大约 70% 的 MMTLS 流,其入站字节量小于 1KB。 对于HTTPS,60%的流长度超过10KB。 从图 2c 和 2f 中我们可以看到,对于 80% 的 MMTLS 流量,出站字节小于 1 KB。 相比之下,对于 HTTPS,超过 50% 的流量长度超过 10KB。 因此,MMTLS协议用于加密轻量级消息。
V. CLASSIFICATION AND EVALUATION
A. Feature engineering
- 一般来说,不同的活动有不同的数据包分布。 图 3 显示了每个活动的入站和出站数据包的长度分布。 开放式小程序(如图中的第 1 类所示)的入站和出站数据包长度之和具有长尾分布。 浏览时刻活动显示非常短且稳定的出站数据包分布和非常长的入站数据包。 相比之下,广告点击活跃度则呈现出完全相反的比例。 活动 5、6、7 是向服务、朋友或群组付款的类似活动,显示出类似的入站数据包长度分布,但它们具有不同的出站数据包长度分布。 图 3c 和 3d 显示大多数活动的数据包数量分布相似,但浏览时刻活动除外。
- 基于这些统计分析,选择第一组特征作为双向数据包的数量和双向数据包的累积大小。 后 7 个特征是数据包长度序列的最小值、最大值、平均值、标准差、百分位数。 特别地,我们选择了数据包长度序列的 0.25、0.5 和 0.75 个百分点。 第三组特征是数据包长度分布。 我们使用 bin 来表示数据包长度分布。 例如,当bin步长为100且MTU为1500(数据包长度的最大值)时,将[0,100)范围内的数据包长度分配给第一个bin,将[100,200)范围内的数据包长度分配给第一个bin 到第二个bin,依此类推。 通过这种方法,我们将数据包长度划分为 15 个 bin。 我们评估了三种不同的尺度来离散化数据包长度序列,即 bin 步长为 10,100 和 500。 根据10倍交叉验证结果,我们最终选择100作为bin步长。
- 为了避免对分类器产生影响,重传数据包和零长度负载的 TCP 数据包(例如 SYN、FIN 和 RST)将被过滤掉。 我们将每个特征的均值和标准差分别缩放为 0 和 1。
B. Experimental setting
-
评估的分类器包括朴素贝叶斯、逻辑回归、SVM、决策树和随机森林算法。 我们使用 scikit-learn 机器学习库来实现这些分类器。 对于朴素贝叶斯分类器,我们采用高斯分类器。 对于Logistic回归分类器,使用 “liblinear”,惩罚设置为“L2”,正则化强度的倒数设置为100。我们使用RBF核作为SVM分类器,惩罚参数设置为217,核系数为 设置为28。决策树分类器由具有基尼杂质的CART算法实现。 我们使用 10 个估计(随机森林的树数),树的最大深度是总特征数的 2/3。 在寻找最佳分割时,特征数量设置为所有特征数量的平方根。 最后,在构建树时使用引导样本来提高性能。
-
至于评估指标,使用为所有分类器导入的精度和召回率指标。 每个标签的精度计算为
TP/(TP + FP)
,每个类别的召回率计算为TP/(TP+FN)
,其中 TP 表示真阳性,FP 表示假阳性,FN 表示假阴性。 平均精度和召回率按每个类别的样本数量进行加权。 F1 分数的计算公式为F1 = 2 * Precision * Recall/(Precision + Recall)
。
C. Results
- 精度和召回率如表四所示,F1得分如表五所示。需要注意的是,我们随机选择数据库中一半的样本作为训练集,剩下的样本作为测试集 。 训练集和测试集包含由不同用户生成并从不同便携式无线接入点捕获的流量轨迹。
- 随机森林分类器实现了最佳性能。 随机森林十倍交叉验证的结果实现了 92.5% 的平均加权 F1 分数,标准差为 0.8%。 浏览订阅活动的 F1 分数最高,高达 96%。 决策树分类器的性能比随机森林分类器稍低。 决策树分类器的总体F1-score比随机森林分类器的分类结果低1%。 与随机森林分类器相比,决策树分类器的精度和召回率波动了2%。 SVM 分类器是第三好的分类器。 在对好友付款活动的分类上,SVM 分类器的 F1 分数比随机森林分类器和决策树分类器稍高。 它是对浏览时刻活动的回忆影响其性能。 近 50% 的浏览时刻活动被错误分类为浏览订阅类别。我们怀疑这是由浏览时刻和订阅时刻之间的训练样本大小比例引起的。 逻辑回归分类器和朴素贝叶斯分类器在加密的用户活动上表现不佳。 这两个分类器很少能正确预测向朋友付款的活动,召回率分别为 8% 和 4%。
- 评估训练规模对分类器的影响。 随机抽样数据集的10%~90%作为训练集,其余数据集作为测试集。 不同尺度下分类器的性能如图4所示。从图中我们可以清楚地看到随机森林分类器和决策树分类器取得了最好的性能。 然而,Logistic回归分类器和朴素贝叶斯分类器效果不佳,与表IV和V的结果类似。
- 为了查看活动的详细混淆信息,我们在图 5 中绘制了不同活动的混淆矩阵。使用随机森林分类器的结果,因为它获得了最佳的整体性能。 从图中我们可以清楚地看到,95%以上的情况下,浏览订阅活动和广告点击活动都被正确分类。 这三种支付活动有点混淆。 然而,这些错误并不算太严重(付费服务和付费给朋友的错误率低于 7%)。 启动小程序活动是最难识别的活动,因为有 13% 的活动被错误地分类到其他 6 个活动中。 原因可能是小程序MMTLS流多种多样,因为数据集中小程序活动的流是从大约80个不同的小程序中收集的。
VI. CONCLUSION
- 本文通过流量分析对微信用户活动进行细粒度分类,这是非常有代表性的加密移动应用。 据我们所知,这是第一个将流量分析应用于专有加密 MMTLS 协议的工作。 对该协议进行了深入分析,并在网络会话中的使用方面与 HTTPS 进行了比较。 我们从加密流量中提取有效特征。 通过利用五种著名的机器学习分类算法,我们实现了细粒度用户行为分类的准确率和召回率高达 92% 的高性能。 我们相信我们的工作对于移动应用服务中的协议安全设计和用户隐私增强都是有意义的。
创新点与不足
- 创新点:本文首次将流量分析应用于专有加密 MMTLS 协议的工作,对该协议进行了深入分析,并在网络会话中的使用方面与 HTTPS 进行了比较。
- 不足:本文没有提出特别创新性的识别算法或模型。