APP下载

基于Xgboost算法的Shadowsocks流量识别研究

2018-02-12何杭松

软件导刊 2018年12期

何杭松

摘要:匿名通信技术的滥用给网络安全带来了前所未有的挑战,Shadowsocks作为新兴的匿名通信软件,因为出色的通信效率以及稳定性逐渐流行。为了有效解决匿名通信的滥用问题,研究并分析了Shadowsocks的通信原理,总结出部分bitflow特征,并采用Xgboost算法学习bitflow特征以识别其流量。使用同样的特征通过随机森林算法与支持向量机算法分别对Shadowsocks流量进行识别。测试结果表明,Xgboost算法在識别Shadowsocks流量时的准确率和召回率均有一定提高。

关键词:匿名通信;流量识别;Shadowsocks;Xgboost

Research on Shadowsocks Traffic Identification Based on Xgboost Algorithm

HE Hang song

(People′s Public Security University of China Institute of Information technology and Network Security,Beijing 102600, China)

Abstract:The abuse of anonymous communication technology has brought unprecedented challenges to network security. As an emerging anonymous communication software, Shadowsocks is gradually popular in China because of its excellent communication efficiency and its stability. In order to effectively solve the abuse problem of anonymous communication, and put forward an effective supervision method, the communication principles of Shadowsocks, some bitflow features are summarized, and use Xgboost algorithm is used to learn its bitflow characteristics to identify its traffic. Then the same feature is used again to identify the traffic of Shadowsocks by random forest algorithm and support vector machine algorithm respectively. By comparing the test results it shows that the accuracy and recall rate of the Xgboost algorithm in identifying Shadowsocks traffic are improved.

Key Words:anonymous communication;traffic identification; shadowsocks; Xgboost

0 引言

随着信息化的飞速发展,个人隐私和信息安全问题越来越被人们重视。Shadowsocks是目前流行的一款匿名通信软件,凭借其稳定性及安全性被大量使用,逐渐成为网民突破访问限制加密通信的主流软件。虽然大部分人通过正常渠道获取合法信息,但也有不法分子利用其匿名特性逃避网络监管,以此获取、传播不良信息进行违法犯罪(如传播淫秽信息、倒卖个人隐私信息等)。因此,只有先识别出匿名通信流量才能根据情况决定是否对其进行追踪、内容分析、取证。流量识别技术可用于提升网络监管质量、改善网络使用效率[1]。文献[2 4]综述了目前流量识别技术发展情况,其中大部分是针对非加密流量的综述。目前网络流量识别技术主要有4种类型[5]:基于端口的识别方式、基于应用协议特征字识别方式、基于行为特征的识别方式、基于机器学习的识别方式。基于端口的流量识别方法采用简单的端口映射方式对网络流量进行识别 [6]。为防止端口伪装技术对流量识别的干扰,产生了深度包检测(DPI)[7]技术,Dreger等 [11]利用DPI技术对包负载里的特定特征串过滤进行异常流量监测。基于端口的流量识别方法和DPI技术均基于包负载的流量识别技术。当通信过程加密时,这两个方法就无效了。Nguyen等[12]综述了机器学习对于流量识别的研究进展。Haffner 等[13]通过特征统计和机器学习算法,测试并实现了部分应用流量的识别。文献[14]引入机器学习方法,研究不同加密流量应该选用何种bitflow特征,同时使用不同算法进行对比测试。文献[15]使用机器学习算法对 Skype 和 SSH 加密流量进行识别。文献[16]针对网络流量识别问题,提出一种基于支持向量机(SVM)的网络流量识别模型。目前匿名通信流量识别研究主要是针对TOR通信系统的识别,对于Shadowsocks流量识别的文献较少。文献[17]根据TOR匿名通信系统TLS 连接和转发链路的建立等通信机制,提出基于 TLS 指纹和基于报文长度分布的 Tor 匿名通信流量识别方法;文献[18]以时间间隔为水印载体,提出一种改进的双时隙质心匿名通信追踪技术;文献[19]针对低延时匿名系统在转发数据时无法完全消除流量中数据包时间特征的缺陷,提出了基于包抵达时间的流水印技术;文献[20]采用半监督学习算法——随机森林(RF)算法实现了对Shadowsocks流量的识别。

1 Shadowsocks通信特征

1.1 Shadowsocks通信原理

Shadowsocks是为实现翻墙功能而开发的一款代理软件,主要基于Socks5协议。用 Python、C#、C++等多种语言进行开发,其源代码目前挂载在网络社区,由志愿者维护。Shadowsocks 的运行原理和基于代理技术的匿名通信软件的运行原理大致相同,即使用特定的中转服务器实现数据传输。通過在远程服务器与本地客户端配置好连接密码、加密方式等代理参数,就可使用Shadowsocks进行翻墙:当通过浏览器访问某个地址时,数据会转发到本地代理,由本地代理加密后转发到服务器端,服务器端处理完请求后把数据加密返回给客户端的本地代理,本地代理再次返回给浏览器。在Shadowsocks架构中Socks5协议作为“获取用户请求”的手段,Shadowsocks将Socks5协议拆分为客户端和服务器端,如图1所示。

Shadowsocks使用一套自己的协议进行加密通信。Shadowsocks协议除去了繁琐的握手阶段,Shadowsocks利用加密控件预先获得加密密钥和加密方法,客户端与服务端间使用加密传输。从外层看只是单纯发送TCP数据包,具体加密方式包括 AES、IDEA、RC4 等。

1.2 Shadowsocks握手流程

客户端与服务端间交换数据格式如表1所示。

对每个TCP连接,首次发送的数据包会携带一个IV(初始向量),它会和预共享密钥一起应用在加密中,加密算法也是预先协定的,如表2所示。

在交换第一个数据包后,双方都有了IV、预共享密钥、加密算法,后续数据包就不再需要IV了。

Shadowsocks中客户端和服务器之间的通讯数据包都是加密传输的,因此传统的基于端口的流量识别方法、基于DPI的流量识别方法都无法起作用了,这时可通过“流量特征”识别流量。

1.3 Shadowsocks的biflow特征

由于Xgboost算法会自动确定特征的重要度,因此本文选用尽可能多的biflow特征进行识别,在结合传统数据流特征的前提下还加入部分信息熵特征,用到的biflow特征如表3所示。

2 Xgboost算法

2.1 Xgboost算法原理

Xgboost全称是eXtrenme Gradient Boosting(极端梯度提升树),是一种提升算法,它诞生之前的AdaBoost算法和GBDT算法等已经具有较好的效率, Xgboost 算法根据这两种算法改进而来。Boosting分类器属于集成学习模型,其核心是把大量的树型模型组合成一个准确率较高的模型。在成功构建一棵最完备的树之前,该模型会不断迭代。Gradient Boostomg Machine算法在生成每一棵树时采用梯度下降思想,以上一步生成的所有树为基础,向着最小化给定目标函数方向前进。在合理的参数设置下,需要生成一定数量的树才能达到预期准确率,但如果在数据量较大且复杂时,Gradient Boostomg Machine算法就会耗费过大的资源及时间。Xgboost可通过CPU多线程并行计算提高效率,通过对算法的改进提高精度。Xgboost的损失函数采用二阶泰勒展开,而传统的GBDT 只利用了泰勒展开式的一阶导数,因此Xgboost具有高准确度、不易过拟合、可扩展性等特点,能分布式处理高维稀疏特征。因此,在同等情况下,Xgboost算法的效率远远超过其它算法。下面是XGBoost 目标函数的理论推导:

其中, g i=a (t-1)l(y i,(t-1),h i=a 2 ((t-1)l(y i,(t-1)), Ω( f t )=γT+ 1/2 λ∑ T j=1 2w j。

去掉常数项,定义分裂候选集合 I j={i|q(x i=j) }为叶子j 的集合,化简公式(1)得:

定义G j=∑ i∈I jg i,H i=∑ i∈I jh i ,对W j求导得最优的权重系数w * j:

公式(4)是针对一个树结构进行打分的函数,称为structure score,分数越小树结构越好。算法利用公式(4)构造不同的树结构搜寻最优的树结构。

2.2 Xgboost模型参数

Xgboost模型包含通用参数、辅助参数和学习目标参数。通用参数用作对函数的宏观控制,有树模型和线性模型。辅助参数根据选取的迭代模型控制每一步骤,学习目标参数控制目标的表现。

Xgboost模型中部分常用参数说明如下:

(1)booster:用来决定需要使用的迭代模型,有gbtree(树模型)和gblinear(线性模型)两种选择。

(2)nthread:Xgboost参数用来进行多线程控制,可设置并发线程数,默认为当前系统可获得的最大可用线程数。

(3)eta:缩步长,即学习速率。在更新叶子节点时,权重乘以eta以避免在更新过程中的过拟合。

(4)max_depth:每棵树的最大深度,也是用来避免过拟合的,需要调优。

(5)subsample:用来控制每棵树随机采样的比例。值为0.5意味着Xgboost随机抽取一半的数据实例生成树模型,这样能防止过拟合。

(6)colsample_tree:在构建每棵树时用来控制每棵树随机采样的特征占比。

(7)objective:该参数定义需要被损失函数最小化。

(8)seed:随机数种子,通过设置可复现随机数据结果,也可用于调整参数。

3 实验与评估

3.1 环境搭建

目前对于Shadowsocks的研究较少,因此没有合适的数据集进行实验,本文通过环境搭建手动获取数据集,实验设置30台PC机产生流量,流量在本地通过Libpcap捕获并解析,随后用于提取特征值。

3.2 数据集

在可控环境下的PC只通过Shadowsocks代理产生流量,所有捕获到的流量只包含纯Shadowsocks流量,因此标记就变得简单。通过30台不同的PC机,部分产生纯Shadowsocks流量,部分不通过Shadowsocks代理产生正常流量,这样产生的测试集组成如表2所示。

3.3 评价标准

为评价Xgboost算法的优劣度,本文使用召回率(recall)及准确率(accuracy)两个指标评价识别结果,同时使用随机森林算法(Random Forest)和SVM(支持向量机)与Xgboost算法进行对比。公式如下:

其中,TP(True Positive) 为被分类器正确分类为正例的样本数,TN(False Negative)为被分类器正确分类为负例的样本数,FP(False Positive)为被分类器错误分类为正例的样本数,FN(True Negative)为被分类器错误分类为负例的样本数。

3.4 结果分析

实验结果如表3所示。

由上述3个表中的测试结果可知,在召回率和准确率上Xgboost算法均有一定优势。当数据集中Shadowsocks流量所占的比例较小时,3种方法的准确率均有一定程度的下降,导致分类效果较差。

4 结语

本文主要针对Shadowsocks的通信流量进行识别。介绍了Shadowsocks的通信原理与特征,根据其通信特征提出多个用于机器学习的流量特征,提出基于Xgboost算法的流量识别方法。实验结果表明,基于Xgboost算法的流量识别方法具有较高的准确率和召回率。

未来需要提取更多的用于精确识别Shadowsocks的流量特征,加入除biflow特征以外具有区分度的特征以提升最终识别效果。

参考文献:

[1] ROUGHAN M, SEN S, SPATSCHECK O, et al. Class of service mapping for QoS:a statistical signature based approach to IP traffic classification[C].The 4th ACM SIGCOMM Conference on Internet measurement, 2004:135 148.

[2] NGUYEN T T T, ARMITAGE G. A survey of techniques for internet traffic classification using machine learning[J]. Communications Surveys & Tutorials, IEEE, 2008, 10(4):56 76.

[3] NAMDEV N, AGRAWAL S, SILKARI S. Recent advancement in machine learning based Internet traffic classification[J]. Procedia Computer Science, 2015(60):784 791.

[4] DAINOTTI A, PESCAPE A, CLAFFY K C. Issues and future directions in traffic classification[J]. Network, IEEE, 2012,26(1):35 40.

[5] 彭立志.互聯网流量识别研究综述[J]. 济南大学学报:自然科学版,2016,30(2):95 104.

[6] MADHUKAR A,WILLIAMSON C. A longitudinal study of p2p traffic classification[C].14th IEEE International Symposium on Modeling,Analysis, and Simulation of Computer and Telecommunication Systems, 2006:179 188.

[7] HAFFNE R P,SEN S,SPATSCHECK O,et al.ACAS:automated construction of application signatures[C].2005 ACM SIGCOMM Workshop on Mining Network Data:ACM, 2005:197 202.

[8] MA J,LEVCHENKO K,KREIBICH C,et al. Unexpected means of protocol inference[C].6th ACM SIGCOMM Conference on Internet Measurement,2006:313 326.

[9] MOOREA W,PAPAGIANNAKI K.Toward the accurate identification of network applications[C].6th International Conference on Passive and Active Network Measurement, 2005:41 54.

[10] SEN S,SPATSCHECK O,WANG D.Accurate,scalable in network identification of p2p traffic using application signatures[C].13th International Conference on World Wide Web,2004:512 521.

[11] DREGER H, FELDMANN A. Dynamic application layer protocol analysis for network intrusion detection [C]. Proceedings of the 15th conference on USENIX Security Symposium. 2006, 18(15):257 272.

[12] GRIMAUDO L, MELLIA M, BARALIS E. Hierarchical learning for fine grained Internet traffic classification[C]. International Wireless Communications and Mobile Computing Conference. IEEE, 2012:463 468.

[13] HAFFNER P, SEN S. ACAS:automated construction of application signatures [C]. Proceedings of the 2005 ACM SIGCOMM Workshop on Mining Network Data (Mine Net 2005), 2005:197 202.

[14] MOORE A W,ZUEV D,CROGAN M. Discriminators for use in flow based classification[R]. London:Intel Research,2005.

[15] MOORE A W,ZUEV D.Internet traffic classification using Bayesian analysis techniques[C].2005 ACM SIGMETRICS International Conference on Measurement and Modeling of Computer Systems, 2005:50 60.

[16] 陳勇,徐钊,蔡阳波,等.基于支持向量机的网络流量识别模型[J].软件导刊,2017,16(7):162 164.

[17] 何高峰,杨明,罗军舟,等.Tor匿名通信流量在线识别方法[J].软件学报,2013(3):540 556.

[18] HOUMANSADR, AMIR, BORISOV N. SWIRL:a scalable watermark to detect correlated network flows[C]. Network and Distributed System Security Symposium, 2011:1 15.

[19] WANG X, CHEN S, JAJODIA S. Tracking anonymous peer to peer VoIP calls on the Internet[C]. ACM Conference on Computer and Communications Security, 2005:81 91.

[20] DENG Z Y , LIU Z H , CHEN Z G,et al. The random forest based detection of Shadowsock's traffic[C]. 2017 9th International Conference on Intelligent Human Machine Systems and Cybernetics (IHMSC),2017.