一种FASP协议阻断方法、装置及分析系统与流程

文档序号:14504497阅读:804来源:国知局

本发明涉及fasp协议数据传输领域,具体涉及一种fasp协议阻断方法、装置及分析系统。



背景技术:

fasp(fastandsecureprotocol)协议作为一种高效的大数据传输技术在各种wan传输速度测试中表现出色,已经应用在生命科学、云计算、媒体等众多不同的领域。综合国内外对fasp协议的研究现状来看,大多数的研究还处于对fasp协议的利用和开发,同时也有一些研究是从理论上对fasp协议的性能进行分析,目前还没有关于fasp协议传输机制的详细分析,以及关于fasp协议数据报文传输格式的明确信息,对fasp协议流量的阻断技术还没有相关研究。



技术实现要素:

本发明的目的是为了解决现有的关于fasp协议的研究中未出现fasp协议阻断技术的缺点,而提出一种fasp协议阻断方法、装置及分析系统。

本发明提供一种fasp协议阻断方法,包括udp数据传输通道阻断步骤以及tcp数据传输通道阻断步骤,其中,

udp数据传输通道阻断步骤包括:

步骤a1,判断数据包中的传输标识是否在预设的标识存储结构中;若是,则将所述数据包丢弃,若否,则执行步骤a2;所述传输标识为udp数据包中的第一个字节;

步骤a2,获取所述数据包中的命令字,若所述命令字为0x19且检测到数据包中存在敏感数据,则将该数据包的传输标识加入到所述标识存储结构中;

步骤a3,将数据包中的源ip和目的ip加入目标ip存储结构中;目标ip存储结构的初值为空队列;

步骤a4,丢弃所述数据包;

tcp数据传输通道阻断步骤包括:

步骤b1,当所述标识存储结构非空时,判断获取到的数据包中的源ip和目的ip值是否在目标ip存储结构中且数据包为ssh协议数据包,若是,则向源ip和目的ip地址发送用于强制关闭tcp连接的rst包;

步骤b2,在目标ip存储结构中删除掉源ip和目的ip。

本发明还提供一种fasp协议阻断系统,包括udp数据传输通道阻断模块以及tcp数据传输通道阻断模块,

udp数据传输通道阻断模块包括:

传输标识判断单元,用于判断数据包中的传输标识是否在预设的标识存储结构中;若是,则将所述数据包丢弃,若否,则向传输标识存储单元发出检测信号;

传输标识存储单元,用于当接收到检测信号后,获取所述数据包中的命令字,若所述命令字为0x19且检测到数据包中存在敏感数据,则将该数据包的传输标识加入到所述标识存储结构中,然后向源/目的ip存储单元发出存储信号;

源/目的ip存储单元,用于当接收到所述存储信号后,将数据包中的源ip和目的ip加入目标ip存储结构中,然后向数据包丢弃单元发出丢弃信号;目标ip存储结构的初值为空队列;

数据包丢弃单元,用于在接收到所述丢弃信号后,丢弃所述数据包;

tcp数据传输通道阻断模块包括:

rst包发送单元,用于当检测到所述标识存储结构非空时,判断获取到的数据包中的源ip和目的ip值是否在目标ip存储结构中且数据包为ssh协议数据包,若是,则向源ip和目的ip地址发送用于强制关闭tcp连接的rst包;然后发出删除信号;

源/目的ip删除单元,用于当接收到所述删除信号后,在目标ip存储结构中删除掉源ip和目的ip。

本发明还包括一种fasp协议分析系统,包括功能选择模块,所述功能选择模块用于根据用户的输入在fasp协议阻断系统以及fasp协议数据还原系统中选择一个执行,其中所述fasp协议阻断系统包括如权利要求6至9中任意一项所述的fasp协议阻断装置,所述fasp协议数据还原系统包括:

传输请求判断模块,用于对于捕获到的基于fasp协议的数据包,判断其是否为fasp协议传输请求包,若是,则记录该数据包的传输标识,若否则向命令字判断模块发出第一信号;其中传输标识为数据包中的第一字节的数据;

命令字判断模块,用于当接收到第一信号后,判断数据包中的命令字是否为0x19并且传输标识已被记录,若是,则向初始传输标识模块发出第二信号;

初始传输标识判断模块,用于当接收到第二信号后,判断数据包中的初始传输标识包含的4个字节的内容是否均为0且数据包中第5字节至第8字节的数据是否已经被接收,若否,则将数据包中的数据内容写入文件;若是,则删除传输标识,得到写入了完整数据的文件。

本发明的有益效果为:1、能够精准阻断含有敏感信息的传输数据,而不包含敏感数据的不会阻断;2、对处理过程进行了必要的简化,例如标识存储结构中如果没有已存储的传输标识,则不会进行关于tcp数据包的判断,节省了系统资源;3、只针对fasp协议需要到的tcp、udp协议进行阻断,不会影响其他协议的传输。

附图说明

图1为本发明具体实施方式一的流程图;

图2为具体实施方式一的阻断原理示意图;

图3为目标ip存储结构所存储内容的示意图;

图4为实施例2中部署环境的示意图;

图5为实施例2中内网用户pc-a的asperaconnect客户端界面图;从图中上面的进度条是包含敏感信息的文件传输的进度,下面的进度条是不包含敏感信息的文件传输的进度;

图6为实施例2中内网用户pc-c的asperaconnect客户端界面图;

图7为网关gate-b输出日志的界面图;其中方框内的部分是存在敏感信息的传输过程的tcp命令控制通道信息;

图8为具体实施方式七的系统工作原理图;

图9为fasp协议传输格式示意图;其中图9(a)为fasp协议传输请求数据格式;图9(b)为fasp协议传输响应数据格式;图9(c)为fasp协议初始传输数据格式;图9(d)为fasp协议重传请求数据格式;图9(e)为fasp协议重新传输数据格式的第一种形式;图9(f)为fasp协议重新传输数据格式的第二种形式;

图10为实施例3中通过过命令行启动asperaconnect客户端向ncbi服务器明文传输文件的界面图;方框标出的部分为明文传输文件;

图11为实施例3中fasp协议数据提取系统输出结果的界面图;

图12为实施例3中fasp协议数据提取结果对比图,可以看出左侧的原文件和右侧还原后的内容是相同的。

具体实施方式

具体实施方式一:本实施方式的fasp协议阻断方法,如图1所示,包括udp数据传输通道阻断步骤以及tcp数据传输通道阻断步骤,其中,

udp数据传输通道阻断步骤包括:

步骤a1,判断数据包中的传输标识是否在预设的标识存储结构中;若是,则将所述数据包丢弃,若否,则执行步骤a2。传输标识为fasp数据包中的第一个字节,用来标识数据包是否属于同一数据传输过程;同一数据传输过程的数据包具有相同的传输标识。

步骤a2,获取所述数据包中的命令字,若所述命令字为0x19且检测到数据包中存在敏感数据,则将该数据包的传输标识加入到所述标识存储结构中。

步骤a3,将数据包中的源ip和目的ip加入目标ip存储结构中;目标ip存储结构的初值为空队列。

步骤a4,丢弃所述数据包。

tcp数据传输通道阻断步骤包括:

步骤b1,当所述标识存储结构非空时,判断获取到的数据包中的源ip和目的ip值是否在目标ip存储结构中且数据包为ssh协议数据包,若是,则向源ip和目的ip地址发送用于强制关闭tcp连接的rst包。

步骤b2,在目标ip存储结构中删除掉源ip和目的ip。

图1中,fasp_tra_flags指的是标识存储结构,用来存储传输标识。target_ip_tree为目标ip存储结构,用来存储数据包中提取出的源ip和目标ip。图1中除了本实施方式中除了本实施方式中已经写出的步骤,还包括了端口号判断的步骤,因为fasp协议选用的tcp默认端口号为22,udp默认端口号为33001,可以通过端口号来确认数据包是否是基于fasp协议的。

具体而言,fasp协议在传输时会分别建立tcp命令控制通道和udp数据传输通道。因此进行阻断时,考虑分别对这两个通道进行阻断。

传输开始时,tcp命令控制通道首先被建立,传输系统将文件信息等关键信息通过此通道进行传递。tcp命令控制通道被建立之后,udp数据传输通道开始建立,发送端向接收端发送开始传输请求;接收端根据接收到的传输请求构造传输响应并发送。当发送端收到响应时,表明udp数据传输通道被正常建立,然后发送端开始发送文件数据和其他信息。

对一个传输过程进行阻断首先要在传输的数据内容中发现敏感数据。对于每个传输数据利用wm多模式匹配算法进行敏感数据检测,图2中在n+1个传输数据中发现敏感信息,则开始对此次文件传输进行阻断。阻断分为:udp数据传输通道的阻断和tcp命令控制通道的阻断。

(1)udp数据传输通道的阻断

首先对udp数据传输通道进行阻断,从带有敏感信息的数据报文中获得本次传输标识,根据本次传输标识可以识别后续的待阻断fasp协议的udp数据报文,通过丢弃后续的udp数据报文可以实现对udp数据传输通道的阻断。只对udp数据传输通道进行阻断并不能完成对该传输过程的阻断,但是可以迫使tcp命令控制通道被暴露出来,从而完成对该传输过程的阻断。

(2)tcp命令控制通道的阻断

对udp数据传输通道进行阻断后,由于udp协议的无链接性,接收端和发送端的此次传输并没有被中断。发送端继续发送剩下的数据块,接收端无法收到初始传输数据,接收端会认为网络环境发生变化,向发送端发送速率调整报文,但由于此时udp数据传输通道被阻断,接收端并不会得到响应,一段时间后(触发超时条件)接收端会通过tcp命令控制通道向发送端发送ssh请求。

由于tcp命令控制通道未被阻断,发送端会对ssh请求进行确认,接收端收到此消息后确认发送端正常,继续等待来自发送端的初始传输数据。但由于udp数据传输通道已经被阻断,接收端仍不能接收到后续的传输数据,所以一段时间后上述情况会再次发生。

当发现传输中存在敏感数据时,通过udp数据包可以获得发送端ip和接收端ip。对传输敏感数据的发送端ip和接收端ip之间的tcp通信进行监控,当发现ssh请求报文和sshack报文出现时,可以获得此次fasp传输的tcp命令控制通道的详细信息:源ip、目的ip、源端口号和目的端口号。根据以上信息,通过构造tcp协议中的rst数据包可以阻断tcp命令控制通道。rst(resettheconnection)数据包在tcp协议中常用于复位错误连接,也可以用来拒绝非法请求或数据。接收端在收到rst数据包后会关闭tcp命令控制通道。至此,fasp协议的tcp命令控制通道和udp数据传输通道都被阻断。

由此可以看出,udp阻断和tcp阻断理论上是可以同时进行的,udp阻断实际上是阻断数据,tcp阻断实际上是阻断命令控制通道,对于同一个数据包的阻断过程一般是先将该敏感数据所在的udp数据传输进行阻断,然后阻断它的tcp命令控制通道。两种阻断从代码上是可以分别设置、并行执行的。

<实施例1>

本实施方式的一个实施例的流程图如图1所示。本实施方式在netfilter框架中的forward挂载点设置钩子函数,只有当内网用户访问互联网的数据流量才会被钩子函数进行处理,内网用户之间的通信不会被影响。执行钩子函数时首先对数据包的协议类型进行检查,只处理tcp协议和udp协议的数据包。通过fasp协议的udp端口(33001)识别fasp协议udp流量。

建立fasp_tra_flags队列用于存储存在敏感数据的传输标识,如果待检测的数据报文的传输标识在fasp_tra_flags中,则直接丢弃该数据报文以阻断该传输的udp数据传输通道。如果在新的传输过程中检测到敏感数据,则将新的传输标识加入fasp_tra_flags队列中,并记录在日志中。设置合理的超时时间,将达到超时时间的传输标识从fasp_tra_flags队列删去,保证系统不会保留已经被阻断的传输信息。

对于tcp数据包,首先查看fasp_tra_flags队列是否为空,如果为空则代表当前没有检测到敏感数据传输过程,此时不需要进行源、目的ip检测,这样可以避免不必要的系统开销。建立target_ip_tree用于存储传递敏感信息的源ip和目的ip,利用二叉查找树实现target_ip_tree(见图3)。二叉查找树是一种可以灵活的插入、删除数据的数据存储结构,采用折半查找的思想能够高效率的对数据进行搜索。

如果待检测数据包的源、目的ip在target_ip_tree中,并且此数据包为ssh协议数据包,则可以获得此敏感传输的tcp命令控制通道信息。然后构造rst数据包,其源ip为fasp协议传输的发送端ip,目的ip为接收端ip,源端口和目的端口从获取的tcp命令控制通道信息中获得。向接收端发送构造的rst数据包就可以实现对tcp命令控制通道的阻断。最后从target_ip_tree中删除已经阻断源、目的ip,并记录日志信息。至此,该敏感传输过程就成功地被阻断了。

具体实施方式二:本实施方式与具体实施方式一不同的是:fasp协议阻断方法还包括独立于udp数据传输通道阻断步骤和tcp数据传输通道阻断步骤的超时检测步骤,具体为:将处于标识存储结构中超过预设定时时间的传输标识从标识存储结构中删除。

其它步骤及参数与具体实施方式一相同。

具体实施方式三:本实施方式与具体实施方式一或二不同的是:标识存储结构为队列。

其它步骤及参数与具体实施方式一或二相同。

具体实施方式四:本实施方式与具体实施方式一至三之一不同的是:目的ip存储结构为二叉树。

其它步骤及参数与具体实施方式一至三之一相同。

具体实施方式五:本实施方式与具体实施方式一至四之一不同的是:步骤a2中,检测到数据包中存在敏感数据的方法为wm算法。

其它步骤及参数与具体实施方式一至四之一相同。

<实施例2及测试效果>

利用虚拟机搭建模拟环境如图4所示。其中pc-a和pc-c是163网段的内网用户,被限制不能直接访问互联网。网关机器gate-b拥有2个网卡,网卡1作为163网段的网关,网卡2用于连接互联网。通过nat机制,内网中的用户可以通过网关机器访问互联网,同时在gate-b上可以对内网用户的网络数据进行检测和阻断。

部署环境中各机器的具体信息见表3-2。

表3-2部署环境信息

具体阻断测试过程:

(1)测试选取的敏感信息集合如下:

{"semia3007","gca_000254515.2","chromosome","scaffold"}

(2)测试过程如下:

a、在pc-a上启动asperaconnect客户端,从ncbi服务器下载含有敏感信息的文件ani_report_bacteria.txt和不含有敏感信息的文件molqtl_ash2015_postrt.pptx。

b、在pc-c上启动asperaconnect客户端,从ncbi服务器下载含有敏感信息的文件ani_report_bacteria.txt。

c、在gate-b上加载fasp协议阻断内核模块,并查看日志文件。

(3)测试结果分别如图5和6所示,含有敏感信息的fasp协议连接被成功阻断,不包含敏感信息的连接正常进行。

(4)gate-b上输出的日志信息如图7。

(5)测试结果分析:图5和6表明含有敏感信息的文件传输过程被成功阻断;同时3-5中同时传输两个不同的文件,只有含有敏感信息的传输过程被阻断,正常文件传输未受到影响。图7表明成功检测到pc-a(192.168.163.101)和pc-c(192.168.163.102)利用fasp协议传输敏感信息的数据报文,以及捕获到这两次传输过程的tcp命令控制通道的信息。

具体实施方式六:本实施方式提供一种fasp协议阻断装置,包括udp数据传输通道阻断模块以及tcp数据传输通道阻断模块,udp数据传输通道阻断模块包括:

传输标识判断单元,用于判断数据包中的传输标识是否在预设的标识存储结构中;若是,则将所述数据包丢弃,若否,则向传输标识存储单元发出检测信号。标识存储结构可以为队列。

传输标识存储单元,用于当接收到检测信号后,获取所述数据包中的命令字,若所述命令字为0x19且检测到数据包中存在敏感数据,则将该数据包的传输标识加入到所述标识存储结构中,然后向源/目的ip存储单元发出存储信号。

源/目的ip存储单元,用于当接收到所述存储信号后,将数据包中的源ip和目的ip加入目标ip存储结构中,然后向数据包丢弃单元发出丢弃信号;目标ip存储结构可以为二叉树。

数据包丢弃单元,用于在接收到所述丢弃信号后,丢弃所述数据包。

tcp数据传输通道阻断模块包括:

rst包发送单元,用于当检测到所述标识存储结构为非空时,判断获取到的数据包中的源ip和目的ip值是否在目标ip存储结构中且数据包为ssh协议数据包,若是,则向源ip和目的ip地址发送用于强制关闭tcp连接的rst包;然后发出删除信号。

源/目的ip删除单元,用于当接收到所述删除信号后,在目标ip存储结构中删除掉源ip和目的ip。

fasp协议阻断装置还包括独立于udp数据传输通道阻断模块和tcp数据传输通道阻断模块的超时检测模块,具体为:将处于标识存储结构中超过预设定时时间的传输标识从标识存储结构中删除。

本实施方式为具体实施方式一至五中对应的方法所对应的程序模块,实现的功能完全相同,此处不再做详述。

具体实施方式七,本实施方式提供一种fasp协议分析系统,包括功能选择模块,所述功能选择模块用于根据用户的输入在fasp协议阻断系统以及fasp协议数据还原系统中选择一个执行,其中fasp协议阻断系统包括具体实施方式六中的fasp协议阻断装置。

本实施方式与前述的其他实施方式不同之处在于,除了能够实现fasp阻断,还能够实现fasp数据还原,即通过捕获fasp协议的数据包,将同一数据传输过程中数据包中的数据提取并重组还原,从而得到本次传输过程的完整数据。

在介绍fasp数据还原技术前,先对fasp协议的传输数据格式进行分析,传输请求数据格式如图9(a)所示。序号从1开始,一般递增加1,数据包长度一般为传输最大可用字节。连续发送的3个传输请求数据具有相同的未知信息。传输请求数据末尾有结束填充标识,长度与传输最大可用字节有关。

接收端在收到传输请求后,去除末尾的结束填充,将其余数据保持不变,重新发送给发送端。fasp协议传输响应数据格式如图9(b)所示。

通过分析传输数据报文,发现第2个字节为0x19为传输数据命令字,第5-8个字节为数据块编号(序号),大部分传输数据报文中第9-12个字节全为0x00。对同时满足命令字为0x19和9-12字节全为0x00的数据报文进行统计分析,发现其序号恰好为全部数据块编号,所以确认0x19是传输数据命令字,9-12字节全为0x00为初始传输标识。

分析初始传输数据报文的第3-4字节,发现在相邻传输数据报文中其值变化很小,结合对fasp协议的理论分析,推测其值代表时间戳信息。结合相邻传输数据报文被捕获的时间,发现相邻传输数据报文中3-4字节值得差值恰好与时间差(毫秒级)接近。对多次不同的传输过程进行分析,发现具有相同的规律,由此推断初始传输数据报文的3-4字节为时间戳,并且精确到毫秒级。

通过以上分析,最终提取出初始传输数据格式,如图9(c)所示,其中第一个字节是本次传输标识,与之前分析结论一致。

图9(d)中第5-6字节为重传请求包含的数据块数,判断原因为5-6字节的值等于后面出现的重传数据块编号个数。第7-10字节为重传请求序号,即重传请求的编号,判断原因为提取一次传输过程中所有命令字为0x12的数据报文中7-10字节内容,发现为连续加1数字序列。第11-12字节暂时无法判断含义,推断为关于时间的控制信息。重传请求数据报文的数据部分以6个字节为一个单元,前4个字节为重传序号,后2个字节为重传请求在接收端重传队列中的存储索引。重传请求数据以16个字节0x00作为结束标识。

通过图9(d)还可以发现重传数据和初始传输数据的区别在于9-12字节,初始传输数据的9-12字节全为0x00,而重传数据则在11-12字节存放重传请求中对应的重传请求存储索引。此外,重新传输数据的命令字不仅有0x19,还有0x1a。根据上述发现及多次不同传输过程的分析,提出重新传输数据格式,如图9(e)和图9(f)所示。

本实施方式的fasp协议数据还原系统包括:

传输请求判断模块,用于对于捕获到的基于fasp协议的数据包,判断其是否为fasp协议传输请求包,若是,则记录该数据包的传输标识,若否则向命令字判断模块发出第一信号;其中传输标识为数据包中的第一字节的数据。

命令字判断模块,用于当接收到第一信号后,判断数据包中的命令字是否为0x19并且传输标识已被记录,若是,则向初始传输标识模块发出第二信号。

初始传输标识判断模块,用于当接收到第二信号后,判断数据包是否同时满足第9至12字节的数据均为0且数据包中以第5字节至第8字节为序号的数据包已经被接收,若否,则将数据包中的数据内容写入文件;若是,则删除传输标识,得到写入了完整数据的文件。初始传输标识表示该数据包是第一次发送,而未发生重传。识别一个数据包中是否存在初始传输标识的方法是,如果数据包的命令字(即第二字节)为0x19,并且第9至第12字节全部为0,则表明存在初始传输标识,由于在命令字判断模块中已经对命令字进行了判断,因此当前模块中仅需要判断第9至第12字节是否为0即可。而第5至第8字节表示的是数据包的序号,如果已经接收过这个序号的数据包,则表示该数据包是最后一个,即文件传输完成。

fasp协议数据还原系统是程序模块,其功能实现的流程图如图8所示。

图8中对应的实施例的具体过程为:根据已经推断出的fasp协议数据传输格式可以判断是否为fasp协议的网络流量,如果检测到新的传输过程则记录此次传输标识。随后由winpcap捕获的网络流量中就包含这次传输的数据报文,提取命令字为0x19的传输数据报文中的数据内容并写入文件。fasp协议传输系统中,发送端对非最后一个数据块的其余数据块只会发送一个该数据块的初始传输数据报文,当这些数据块的初始传输数据报文都发送完毕后,发送端重复发送最后一个数据块的初始传输数据报文。所以如果检测到带有初始传输标识并且该序号已经被接收过,则该序号为文件最后一个数据块,代表着本次文件传输结束。

<实施例3及测试效果>

测试环境如表3-1所示,其中asperaconnect是aspera公司提供的一种嵌入浏览器的客户端软件,用户可以通过asperaconnect软件使用fasp协议和远程服务器进行文件的传输。

表3-1测试环境信息

测试过程为从本机向ncbi服务器上传文件,本机作为传输系统的发送端,ncbi服务器作为传输系统的接收端。测试时首先启动fasp协议数据提取系统,选择fasp协议网络流量会流经的网卡,然后通过命令行启动asperaconnect客户端向ncbi服务器明文传输文件(如图10所示),待传输完成后获得fasp协议数据提取系统的输出结果并进行分析。

fasp协议数据提取系统输出结果如图11所示。图11表明,识别到fasp传输请求数据包3个,与本实施方式中分析结果相符合;同时,检测到数据块编号1-38。fasp数据提取程序还原的文件,经过与原传输文件进行对比,发现成功得到完整数据(如图12所示)。测试结果表明本实施方式分析推断出的4种fasp协议的数据报文格式是正确的。

本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

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