一种基于卷积神经网络的shadowsocks流量检测方法与流程

文档序号:16128824发布日期:2018-12-01 00:04阅读:981来源:国知局

本发明涉及计算机网络安全领域,尤其涉及一种基于卷积神经网络的shadowsocks流量检测方法。

背景技术

shadowsocks是一种基于socks5的加密代理工具。该工具在sock5协议基础上进行了加密和重构,用以隐匿客户端与代理服务器之间的传递内容,实现了高安全性和隐蔽性。目前该工具使用python、c、c++、c#、go语言等编程语言开发,分为客户端和服务端两个部分。该工具的运行流程如下:1、本地浏览器将请求通过socks5协议交给本地的服务器的1080端口去代理。2、本地服务器运行local.py并监听1080端口,接受来自浏览器的请求。3、local.py接收到请求后将流量加密,通过tcp连接传输到shadowsocks远程服务器端。4、远程服务器解密请求后,访问浏览器将要请求的目的ip。5、远程服务器将目的ip返回的内容加密后返回本地服务器。

本地与远程服务器的加密基于服务器设置的用户名和密码进行对称加密,所以在传输过程中不需要进行密钥的交换。双方之间的通信是普通的tcp传输,与普通https流量在内容上没有任何差异,因此具备极高的隐蔽性。此外,由于此代理工具的隐蔽性,国内的上网用户常常通过购买国外服务器后搭建shadowsocks服务端,用于逃过国内的网络监管,从而非法访问境外网站。

由于该工具产生的网络流量与普通加密流量没有本质上的区别,因此很难通过人工设计算法去进行特征识别。目前已有的识别shadowsocks的方式主要基于机器学习中的监督式或半监督式学习。例如利用随机森林算法对网络流的特征进行学习,从而试图找出shadowsocks流量与普通流量的特征差别。然而这些方式得到的识别准确率不高,容易将普通流量误认为shadowsocks流量。因此,这种方法很难应用到实际的网络监管中。

机器学习中,卷积神经网络(convolutionalneuralnetwork,cnn)是一种基于前馈神经网络的算法,在近年由于其高效性引起了广泛关注。其在大型图像处理中往往有比较优秀的表现。本发明将网络流中的有效载荷(payload)转换为类似图像的输入,然后利用cnn算法训练模型。

因此,本领域的技术人员致力于开发一种基于卷积神经网络的shadowsocks流量检测方法,从而解决常用的机器学习方法无法找到shadowsocks流量决定性特征的问题。



技术实现要素:

有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是克服无法找到shadowsocks流量决定性特征的缺陷,目的在于提出一种基于卷积神经网络(cnn)的shadowsocks流量检测方法。采用shadowsocks与非shadowsocks的网络流,利用cnn算法训练模型,随后将该模型应用到实时的流量监测中。

为实现上述目的,本发明提供了一种基于卷积神经网络的shadowsocks流量检测方法,包括以下步骤:

步骤1、通过抓包工具获取shadowsocks与普通流量;

步骤2、以tcp流为单位将流量拆分;

步骤3、提取tcp流的有效载荷,并拼接在一起,提取为十进制数,作为训练数据参数;

步骤4、对每个tcp流判断是否为shadowsocks流量,并进行数据标注,作为训练数据的结果;

步骤5、将标注好的训练数据作为卷积神经网络模型的训练输入,对模型进行训练,得出最终的计算模型。

进一步地,所述步骤1中的shadowsocks流量和普通流量均大于1gb。

进一步地,所述步骤1还包括以下步骤:

步骤1-1、shadowsocks将网络请求传输到本地服务器;

步骤1-2、经由加密后通过tcp连接与服务端进行通信,捕获到的shadowsocks流量是各个加密后的tcp流的集合。

进一步地,所述步骤2中的流量拆分是指从双方tcp链接的发起到结束作为一个流,把2gb的流量拆分开来,便于进行数据的提取和标注。

进一步地,所述步骤3还包括以下步骤:

步骤3-1、将获得每个流的实际传输内容,即有效载荷,取前1024位十六进制位;

步骤3-2、以两位16进制数为单位将流数据转化为512个0到255的十进制数,作为卷积神经网络的参数输入。

进一步地,所述数据标注是用0代表非shadowsocks流量,用1代表shadowsocks流量。

进一步地,所述shadowsocks的客户端与远程服务器之间利用tcp流进行传输。

进一步地,所述shadowsocks流量采取不同的加密-解密方式。

进一步地,所述最终的计算模型能够对实时网络流进行判定,预测是否为shadowsocks流量。

本发明的基于cnn的shadowsocks流量检测方法,将网络流的有效载荷转化为类似像素点的数据,将网络流量转化为图像,输入到cnn算法中。该方法省去了对流量进行特征提取的步骤,解决了无法找到shadowsocks流量决定性特征的问题。

以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。

附图说明

图1是本发明的一个较佳实施例的捕获的shadowsocks流量的传输过程示意图;

图2是本发明的一个较佳实施例的流数据处理过程示意图。

具体实施方式

以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。

在附图中,结构相同的部件以相同数字标号表示,各处结构或功能相似的组件以相似数字标号表示。附图所示的每一组件的尺寸和厚度是任意示出的,本发明并没有限定每个组件的尺寸和厚度。为了使图示更清晰,附图中有些地方适当夸大了部件的厚度。

本发明提供了一种基于cnn的shadowsocks流量检测方法。该方法由训练和预测两部分组成,具体包括以下步骤:

1)抓取海量的shadowsocks与普通流量:由于shadowsocks的客户端与远程服务器之间利用tcp流进行传输,因此也需要抓取普通的tcp流量进行训练集的制作。另外,由于shadowsocks流量会采取不同的加密-解密方式,同样需要抓取各种类型的大量shadowsocks流量来确保shadowsocks流量的一般性。在此分别抓取大于1g的shadowsocks流量与普通tcp流量。

如图1所示,是捕获的shadowsocks流量的传输过程,shadowsocks将网络请求传输到本地服务器,经由加密后通过tcp连接与服务端进行通信,捕获到的shadowsocks流量将是各个加密后的tcp流的集合。

2)将流量拆分为流:从双方tcp链接的发起到结束作为一个流,把2g的流量拆分开来,便于进行数据的提取和标注。

3)提取出每个流的有效载荷并拼接在一起。

如图2所示,是对流数据进行处理的过程。首先将获得每个流的实际传输内容,即有效载荷(payload),取前1024位十六进制位,然后以两位16进制数为单位将流数据转化为512个0到255的十进制数,作为卷积神经网络的参数输入。

4)对每个流进行数据标注,0代表非shadowsocks流量,1代表shadowsocks流量。

5)将结果输入到cnn算法中进行训练,得出最终的计算模型。该模型将用于shadowsocks流量的检测。

训练完成后,将利用训练好的模型对实时网络流进行判定,预测是否为shadowsocks流量。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1