Shadowsock流量的随机森林检测方法

摘要 随着匿名通信技术的发展,这使得网络监控变得越来越难。如果匿名的流量可以有效的识别、滥用这样的技术就可以得到防治。随着机器学习研究这些年来的蓬勃发展,本文应用随机森林算法—一种半监督学习方法:来进行shadowsocks流量检测。在实验中应用随机森林算法,我们可以得到超过85%的检测准确率,通过一系列的收集训练集,获取特征、训练模型和预测结果等流程。随着训练集和测试集的规模增加,检测准确率也逐渐增加,直到它变成稳定。我们将对训练集、测试集、特征集进行多次调整,来降低虚告警率和误报率。

关键词: 检测;shadowsocks;随机森林算法;机器学习

一、引言

随着海外新闻的需求数量的增长,近年来,越来越多的新闻,在政治、经济、民主、金融,技术等等领域都包含了敏感信息。为了绕过国家的防火墙来获取更多信息,越来越多的人们已经学会了如何使用代理软件获取相关材料。然而,高速开发的代理软件,成为以跨防火墙传播大量的不良信息非法工具。因此,这种事情的发生频率就像转换交易一样频繁。有效防止这些事情发生,应立即检测并阻止这些罪犯,我们不但要从代理软件来的流量进行检测和分类,而且要分别标记不同的可疑标签的流量进行加密。在此之后,可以提供详细的信息和数据给监管做下面的解密工作及内容分析。

在本文中,我们简要地描述了关于shadowsocks [ 1 ]的运行原理。下一步是从这个代理软件全面分析流量并获得该软件的特征信息。为了分析鲜明的特征数据和信息,我们使用Libpcap [ 2 ]进行协议分析,使用机器学习的训练特征数据的确定部分,并在建模后进行识别。

本文的结构如下:在第2节中,我们将介绍我们该论文的准备工作和贡献。我们将在第3部分中简单地描述这个软件的运行原理。第4节将全面说明每条来自代理软件的流量的检测原理。相关实验室结果将在第5节发布。最后,第6节将是本文综述。

二、相关的工作

为了更准确的理解从shadowsocks产生的流量的特点,我们查询了许多论文和材料,了解其运行机制来确定shadowsocks流量检测方法和提取必需特征信息的方法。我们知道, Shadowsocks运行起来是相当的稳定——几乎是我们国家最稳定和流畅的代理软件,还包括了效率和翻墙的速度。在检测方面shadowsocks流量方面,然而,并没有显着的成果。由于Shadowsocks显著的稳定性和效率,我们可以用shadowsocks连接匿名网络Tor [ 3 ]、[ 4 ]和其他VPN代理,这成为防火墙的严重威胁,带来更多的安全严重问题。在本文中,我们提出一个基于随机森林[ 5 ]的检测shadowsocks的方法。我们通过机器学习[ 6 ]的方法处理shadowsocks流量之后,可以检测到shadowsocks流量在85%以上的准确率,在通过利用半监督学习[ 7 ]方法后,它可以从源头上防御并处理潜在的危险。

目前,还没有什么这方面的研究,将机器学习算法应用在流量检测上。流量检测方法大多是根据人工识别像块的端口,IP等,如果我们能使用半监督或无监督的机器学习算法,流量检测工作就可以通过机器简单的完成,这可以减少人的工作量,提高检测效率。结合机器学习

算法和流量检测也是本文的一个贡献。

三、背景知识

A. 为什么很难检测shadowsocks

为什么Shadowsocks很难被检测到的主要原因是shadowsocks运行机制是相当简单的。和代理软件的大多数原则一样,shadowsocks首先建立一个基于SSH [ 8 ] 加密的防火墙外的服务器信道;第二步,利用建立的信道shadowsocks做代理,这意味着向真正的服务器的请求是通过SSH服务器发起的。最终,利用建立的信道,透过SSH服务器送回响应数据。由于SSH本身是一个基于RSA加密技术,防火墙[ 9 ]在数据传输过程中无法分析加密数据的关键字,从而防止了重新连接的问题。SSH存在目标推理方面的问题,所以,shadowsocks 将Socks5【10】协议分为两个部分: 服务器端和客户端。具体的过程如下:

首先,客户端发送请求和本地的基于sock5的shadowsocks进行通信,由于本地Shadowsocks通常是本地主机或路由器,或常见的任何其他的机器,他们不会穿透过防火墙,因此,他们将不会被防火墙干预。在shadowsocks客户端和服务器之间的通信,可以使用各种各样的加密方法,因此,通过防火墙的数据包会被显示成常见的TCP数据包。这些数据包,没有明显的特征并且防火墙不能解密这些数据,这导致防火墙不能检测和干预这些数据。最后一步,Shadowsocks服务器端解密收到的加密的数据并将真实的请求发送到真实的服务器,同时通过shadowsocks客户端返回应答数据。在详细的过程见下图1。我们可以看到,每一步shadowsocks是如何绕过防火墙的检测,并不被防火墙干预的。这是shadowsocks人工很难检测的原因。

clip_image001

图1 shadowsocks通信原理

B.随机森林算法

统计学中,随机森林算法是一个分类器算法。分类器算法是用来判别给定的研究的样本数据的归属。随机森林包含了很多棵决策树,它训练样本并进行预测。该预测的结果是随机森林中最多的决策树决定的结果。在我们的方法中,随机森林算法主要用来对Shadowsocks流量进行二分类,一类是“shadowsocks流量”,另一类是“非shadowsocks流量”。

C. 定义

1)数据包:包是一个是用在网络上进行发送和交换数据的单元。包中传输数据的长度

并不是一致的。包在传输过程中被封装为帧。以这种方式在帧中添加几个固定格式信息,

如数据包标头,有包类型,消息长度,包的版本,和操作系统等等。

2)数据流:IP网络中常见的数据流可以被定义为五元组:源IP地址,目的IP地址,源端口,目的端口号和协议号。因此,带相同五元组的网络包可以视作同一个网络流。

3)双流:二进制流,有相同的源IP地址,目的IP地址,源IP端口、目的地的IP端口号和协议号的数据包集合。

4)主机profile:所有包的集合,在一个周期的时间内被过滤后保存在主机上的文件(.pcap格式)。

四.我们的方法

A. 检测方法采用随机森林算法来检测shadowsocks流量:

随机森林包含了很多(包括很多分类回归树)[ 11 ]。从总的训练集中拿出的每个决策树使用的训练集将会被放回总的训练集。当训练每棵树的节点时,从总训练集中拿出的一些随机比例的训练集使用后,不会被放回总的训练集。总的训练集数量假设为C,这个比例可以是C,sqrt(C),1 / 2sqrt, log2(c)。在我们的实验中,我们使用默认值的平方根(C)。

基于随机森林有以下几个步骤来检测shadowsocks流量,如下:

1)确定训练过程所需的所有的数据集和参数,包括训练集P,测试集T,特征维F,CART树的数量t,每棵CART树的深度d, 每个节点使用的特征数量f,终止条件,包括在节点s上的最少样本数,在节点m上的最少信息增益。

2)从总训练集P拿出的训练集,会被放回到总训练集,这个拿出训练集的数量等于P(i),i代表训练集的数量的索引。将P(i)设为根,从根开始训练。

3)如果当前的节点没有达到终止条件,那么会随机从F维的特征向量里面取出f个特征。从这f个特征中选择最好的分类效果的特征k和它的阈值。并利用这K个特征进行判断。如果计算出的值小于阈值,会将样本归类到左边节点;反之,样本会归类到右边节点。

如果当前结点到达终止条件,将当前节点设为叶子节点。预测的叶子节点的输出是在样本集结点中当前结点所属分类c(j)最多的分类结果数,也就是概率最大的c(j)。

4)训练所有的节点直到所有的节点被标记为也节点或被训练过。

5)训练所有的CART树直到所有的CART被训练过。

6)预测训练集T,预测的过程和训练的过程很相似。从当前的CART根节点进行判定,如果当前节点小于阈值,节点将进入左节点,如果当前节点超过阈值,节点将进入右结点。这个判定过程将保持到叶节点输出预测结果。

7)对CART树输出的所有预测值经过判断和计算,所有树预测的概率的最大和是最终预测的结果,这表示C(j)的每个概率的总和。

B. Shadowsocks的biflow的特征

从随机森林算法的上述过程,我们可以知道,我们需要确定训练集和特征维度。根据网络

包hostprofile和biflow的特性,我们提出了几个特征。然后,我们捕捉了大量的shadowsocks流量,提取一定的特征值,并将它们保存为训练集。详细的特征如下表1所示。

clip_image002

除此之外,我们还拥有3000维的向量,在整个通信过程中来记忆上行流和下行流数据包的大小是否出现。

五、实验与结果

A.处理,计算和随机森林计算结果

实验步骤:

•捕捉纯shadowsocks流量,处理这些流量,提取并保存一定的特征。

•采用随机森林对这些数值进行建模。在随机森林算法,我们设置CART的总值为100,设置分级标准为“基尼”,设置sqrt(C)作为特征提取数为,C设为总特征维数。数的最大深度设为None直到所有节点被识别。分类结果为二分类,“是”和“不是”。其余参数按照Python中的RandomForestClassifer函数的默认参数来设置。

•捕获的检测流量,包括Shadowsocks流量和非shadowsocks流量。提取某些特征值并保存它们。最后,使用随机森林算法建立模型并进行预测。

B.数据收集

在本地主机捕获1G大小的 shadowsocks流量,使用C语言的Libpcap库解析这些流量。我

计算提取的特征得到的所有特征值,并将它们保存到数据库作为训练集。

在本地主机捕捉1G大小的非shadowsocks流量10次,也利用Libpcap处理这些数据。之后,在26台主机上捕获超过1G shadowsocks流量和非shadowsocks随机流量,以同样的方式处理这些数据并存储到数据库作为测试集。

C.如何计算

根据随机森林的判断结果,我们人工验证来评估训练效果和随机森林算法的准确率。接下来,

我们测试了不同训练集大小建立的模型的检测准确率。

从图2所示,特征集的选择在实验中效果良好。也从侧面证明随机森林算法在shadowsocks流量检测中的应用结果显著。我们从图2也可以得出这样的结论:使用较大的测试集能获得更准确的结果。

clip_image003

clip_image004

图3表明建立模型的训练集越大,会有更高的检测准确率。

六、结论

在我们的实验中,我们验证了将机器学习应用到流量检测是有显著效果。我们

还得出结论,随着训练集规模的增加,意味着模型越完整,检测的准确率会越高。此外,随着测试集规模的增加,检测的准确率也会增加。和人工方式比较,采用这种半监督机器学习算法来进行流量检测可以降低误报率,错误率和成本。

在我们的方法中,我们采用了许多特征,它可以提高检测准确率达到一定程度。然而,它也

增加了系统的负担,使得模型相对多余。在今后的工作中,我们将深入研究特征,找出最有效的特征属性,排除一些不必要的特征,优化并简化模型,提高系统整体效率。

致谢

作者要感谢Zhuo ZhongLiu博士和李瑞星,他们有见地的意见和关于这项工作的讨论。作者谨此致谢。该网络安全中心提供的环境做该实验。作者想感谢科学技术通信安全实验室,它提供了机会来进行更深层次的研究。

引用

[1] Xu, Weiai Wayne, and Miao Feng. "Networked creativity on the censored web 2.0: Chinese users’ Twitter-based activities on the issue of internet censorship." Journal of Contemporary Eastern Asia 14.1 (2015): 23-43.

[2] Jacobson, Van, and S. McCanne. "libpcap: Packet capture library." Lawrence Berkeley Laboratory, Berkeley, CA(2009).

[3] Fagoyinbo, Joseph Babatunde. The Armed Forces: Instrument of Peace, Strength, Development and Prosperity. AuthorHouse. 2013-05-24 [29 August 2014]. ISBN 9781477226476.

[4] Seid, Howard A., and Albert Lespagnol. "Virtual private network." U.S. Patent No. 5,768,271. 16 Jun. 1998.

[5] Liaw, Andy, and Matthew Wiener. "Classification and regression by randomForest."R news 2.3 (2002): 18-22.

[6] Goldberg, David E., and John H. Holland. "Genetic algorithms and machine learning." Machine learning 3.2 (1988): 95-99.

[7] Zhu, Xiaojin. "Semi-supervised learning." Encyclopedia of Machine Learning. Springer US, 2011. 892-897.

[8] Ylonen, Tatu, and Chris Lonvick. "The secure shell (SSH) protocol architecture." (2006).

[9] Kaliski, Burt. "PKCS# 1: RSA encryption version 1.5." (1998).

[10] Krawetz, Neal. "Anti-honeypot technology." IEEE Security & Privacy 2.1 (2004): 76-79.

[11] Fonarow, Gregg C., et al. "Risk stratification for in-hospital mortality in acutely decompensated heart failure: classification and regression tree analysis." Jama 293.5 (2005): 572-580.

猜你喜欢

转载自blog.csdn.net/yingwei13mei/article/details/78230773