首页> 中国专利> 基于SYN-ACK双服务器反弹模式的伪TCP隐蔽通信方法

基于SYN-ACK双服务器反弹模式的伪TCP隐蔽通信方法

摘要

本发明公开了一种基于SYN-ACK双服务器反弹模式的伪TCP隐蔽通信方法,所述隐秘信息的发送端与接收端间通过反弹服务器A或反弹服务器B进行通信;利用TCP建立连接的三次握手原理,通过伪造源IP地址,将隐蔽信息嵌入在TCP的序号域和确认号域中,通过反弹服务器A的反弹发送到目的端;同时隐蔽信息通过对序号和确认号的修改操作,并通过反弹服务器B向发送端反馈信息,实现在目的端的丢失检测和超时重传。

著录项

  • 公开/公告号CN103475706A

    专利类型发明专利

  • 公开/公告日2013-12-25

    原文格式PDF

  • 申请/专利权人 中国科学技术大学苏州研究院;

    申请/专利号CN201310406298.1

  • 申请日2013-09-09

  • 分类号H04L29/08;H04L29/06;H04L1/16;

  • 代理机构苏州创元专利商标事务所有限公司;

  • 代理人范晴

  • 地址 215123 江苏省苏州市工业园区独墅湖高教区仁爱路166号

  • 入库时间 2024-02-19 22:31:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-08-28

    未缴年费专利权终止 IPC(主分类):H04L29/08 授权公告日:20160629 终止日期:20170909 申请日:20130909

    专利权的终止

  • 2016-06-29

    授权

    授权

  • 2014-01-22

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20130909

    实质审查的生效

  • 2013-12-25

    公开

    公开

说明书

技术领域

本发明属于信息隐藏技术领域,具体涉及一种基于SYN-ACK双服务器 反弹模式的伪TCP可靠隐蔽通信方法。

背景技术

现代网络技术的飞速发展使得传输信息更加快捷方便,但是大量的信息 尤其是涉及到国家安全、商业机密和个人隐私信息的传输安全性越来越受到 关注,这些信息一旦外泄,将会带来严重后果。以往多采用加密技术来传输 这类信息,然而加密技术会引起攻击者的破解兴趣。并且随着计算机硬件的 发展,破解速度比以前要快得多。信息隐藏技术为该类问题提供了一个很好 的解决方法。信息隐藏是将需要保密传递的信息隐藏到一些载体信息中,实 现对秘密信息进行保护的一门技术。网络通信中巨大的信息流通量使得使用 网络通信数据作为载体进行秘密通信的冗余量大,同时也使攻击者很难有足 够的精力去检测网上所有的通信数据,因此利用网络通信数据来隐藏信息是 一个比较理想的方法。

作为计算机互联网络数据传输的核心协议簇,TCP/IP提供了诸如TCP (Transmission Control Protocol)、ICMP(Internet Control Message  Protocol)、IGMP(Internet Group Management Protocol)等协议报文。 TCP/IP协议的各种报文结构通常具有固定格式。这种固定格式在给网际互 连带来方便的同时,也不可避免地引入了冗余,这就给隐蔽通信创造了机会。 通常,在TCP/IP协议下实现隐蔽通信技术,主要是基于在协议报文的某些 特定字段域嵌入隐蔽数据。这些隐蔽数据的嵌入不影响正常的通信过程,当 协议报文从发送端以合法的身份抵达接收端时,数据也同时抵达,形成了一 条基于TCP/IP协议的存储型隐蔽信道。但大多数基于这种原理的嵌入只是 实现了隐蔽数据的传输过程,但并不保证数据的可靠传输,往往缺少对于数 据的丢失检测和超时重传的机制研究。

图1是标准的TCP协议报头格式。其中源端口、目的端口均为16位长。 标识出远端和本地的端口号。顺序号为32位长,表明了发送的数据报的顺 序。确认号为32位长,是希望收到的下一个数据报的序列号。TCP协议数 据报头头长为4位长,表明TCP头中包含多少个32位字。接下来的6位未 用。ACK为1表明确认号是合法的。如果ACK为0,那么数据报不包含确 认信息,确认字段被省略。PSH表示是带有PUSH标志的数据。接收方因 此请求数据报一到便可送往应用程序而不必等到缓冲区装满时才传送。RST 用于复位由于主机崩溃或其它原因而出现的错误的连接,还可以用于拒绝非 法的数据报或拒绝连接请求。SYN用于建立连接;FIN用于释放连接。窗口 大小为16位长,窗口大小字段表示在确认了字节之后还可以发送多少个字 节。校验和为16位长,是为了确保高可靠性而设置的,校验头部、数据和 伪TCP头部之和。可选项为0个或多个32位字,包括最大TCP载荷,窗 口比例、选择重发数据报等选项。最大TCP载荷为允许每台主机设定其能 够接受的最大的TCP载荷能力。在建立连接期间,双方均声明其最大载荷 能力,并选取其中较小的作为标准。如果一台主机未使用该选项,那么其载 荷能力缺省设置为536字节。窗口比例为允许发送方和接收方商定一个合适 的窗口比例因子。这一因子使滑动窗口最大能够达到232字节。TCP协议数 据报头选择重发数据报选项为允许接收方请求发送指定的一个或多个数据 报。

在TCP/IP协议簇中,TCP协议本身提供了一种可靠的数据流服务,采 用“带重传的肯定确认”技术来实现传输的可靠性。它采用面向连接的通信 协议,通过三次握手建立连接,通讯完成时要拆除连接。如果能够模拟或者 利用TCP的传输模式来进行隐蔽数据的传输,则可以初步实现可靠传输, 达到数据包丢失检测和超时重传的目的。

TCP的建立连接过程简称为三次握手(Three-way handshake)。图2 是三次握手的过程示意图。其连接建立过程主要是:第一次握手:建立连接 时,客户端发送SYN包(seq=x)到服务器,并进入SYN_SENT状态,等 待服务器确认;其中SYN为同步序列编号(Synchronize Sequence Numbers)。 第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=x+1),同时 自己也发送一个SYN包(seq=y),即SYN+ACK包(Acknowledgement), 此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的 SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户 端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开 始传送数据

Craig H.Rowland[“Covert Channels in the TCP/IP Suite”,First  Monday,PeerReviewed Journal on the Internet,July1997.2]提出了一 种利用TCP协议头部的字段来构造隐蔽信道进行通信的技术。其主要是利 用在TCP连接建立过程中:在第一次握手中利用伪造源IP地址来向服务器 请求连接,并将隐蔽信息嵌入到SYN中发给服务器;第二次握手时服务器 发回一个确认连接数据包,但此时由于伪造了源IP地址,确认包将发给目 的端,此时由ACK携带的隐蔽信息也一并达到了目的端;最后放弃第三次 握手。这种不停的和服务器进行三次握手中的前两步来进行隐蔽数据传输的 方式称为服务器反弹技术。这种方式虽然实现了隐蔽数据的传输,并且由于 握手的另一方是服务器而使得这种方式的隐蔽性较高,但也在不同程度上体 现出了局限性。特别是TCP提供了载体数据的可靠传输,但依赖于TCP的 这种反弹传输却不提供端到端的可靠传输,使得隐蔽信息在目的端的到达顺 序可能无法预测而导致重组发生异常,同时,对于嵌入隐蔽信息的分组的丢 失检测以及超时重传也无能为力。本发明因此而来。

发明内容

本发明的目的是提出一种基于SYN-ACK双服务器反弹模式的伪TCP 可靠隐蔽通信方法,解决现有的大多数基于TCP/IP协议隐蔽通信不可靠和 安全性不高的问题,同时实现目的端隐蔽信息的有序重组、丢失检测及超时 重传机制。

为了解决现有技术中的这些问题,本发明提供的技术方案是:

一种基于SYN-ACK双服务器反弹模式的伪TCP隐蔽通信方法,所述 隐秘信息的发送端与接收端间通过反弹服务器A或反弹服务器B进行通信; 其特征在于所述方法包括以下步骤:

(1)隐秘信息的传输步骤:隐秘信息的发送端发送TCP数据包给反弹 服务器A进行第一次握手,在TCP数据包的报头的序号域中嵌入隐蔽信息, 并嵌入隐秘信息的接收端的IP地址和端口,反弹服务器A根据嵌入的IP 地址和端口通过TCP数据包的确认号域将隐秘信息反弹发送到隐秘信息的 接收端进行第二次握手;

(2)隐秘信息传输的反馈步骤:隐秘信息的接收端在TCP数据包的报 头中嵌入隐秘信息的发送端的IP地址和端口,并将序号域修改为隐秘信息 传输的反馈信息,发送给反弹服务器B进行第一次握手,反弹服务器B根 据嵌入的IP地址和端口将反馈信息反弹发送到隐秘信息的发送端进行第二 次握手。

优选的,所述方法中还包括隐秘信息的接收端根据传输的隐秘信息进行 分组丢失检测;隐秘信息的发送端根据隐秘信息传输的反馈信息和分组丢失 检测结果进行超时重传

优选的,所述方法中反弹服务器B与反弹服务器A相同或者不同。

优选的,所述隐秘信息发送端嵌入的窗口大小为1~2n-1,n表示序号的 位数。

优选的,所述方法中隐秘信息发送端进行隐秘信息嵌入时,序号域字段 的低16位为隐蔽信息,高16位中最高2位为数据状态,中间13位为数据 的序号,最后1位为校验位;表示同步信息时,高16位中最高2位为数据 状态,中间13位为窗口大小,最后1位为校验位,低16位为一个特定的值, 如0X0000;表示结束连接信息时,高16位中最高2位为数据状态,中间13 位为0,最后1位为校验位,低16位为一个特定的值,如0X0FF0;按照如 下步骤进行:

1)隐秘信息发送端发送数据包至反弹服务器A,如果发送的是隐蔽数 据包时,同步计数器count加1;否则同步计数器不工作;

2)若同步计数器值达到窗口最大值,进入发送反馈过程,结束后隐秘 信息发送端发送数据包;若数据的序号达到最大值且还有数据需发送,下一 个数据的序号值置为初始值,返回隐秘信息发送端发送数据包;若序号未达 到最大值且还有数据需发送,返回隐秘信息发送端发送数据包;否则结束。

优选的,所述方法中当隐秘信息发送端接收来自接收端的反馈信息后, 进行分组丢失检测和超时重传过程时的窗口大小为1。

优选的,所述方法隐秘信息发送端进行超时重传的步骤包括:

1)发送重传确认信息数据报;

2)进行端口监听,同时重传计时器开始计时;有对应端口数据到来时 提取链路层数据,且重传计时器归零,进入步骤3);否则当重传计时器超 时后,重新发送当前数据报,继续监听;

3)对当前分组,检测其TCP域中Acknowledgment Number(Ack字 段,确认号域)的值,先将值减1,再进行如下判断:

i)若确认信息为上个分组已正确接收且无后续重传,则结束分组发送 反馈过程;

ii)若确认信息为上个分组已正确接收且还有分组需重传,通过当前需 要重传的序号将数据重新发送,返回步骤2);

iii)若确认信息为上个分组未正确接收需要再次重传,则将当前分组重 新发送,返回步骤2)。

优选的,所述方法隐秘信息接收端进行请求重传的步骤包括:

步骤1:进行端口监听,对接收到的分组,提取Ack值,并减1;利用 高16位的最低位对数据进行校验,校验成功表示数据正确接收,进入步骤 2;否则进入步骤6;

步骤2:若为请求启动检测重传数据包,则校验序号等于初始序号,进 入步骤3,若为重传的隐蔽信息数据包,则进入步骤4;

步骤3:对当前窗口下已接收到的全部数据分组,在序号记录文件中利 用校验序号开始按自然序升序比较,每次比较后校验序号加1后对窗口值取 模;当分组序号不等于校验序号时,表示序号等于校验序号的分组还未接收, 进入步骤5;当校验序号达到窗口最大值且仍等于分组序号时,表示分组未 丢失或已经全部接收完成,进入步骤5;

步骤4:处理接收到的隐蔽信息数据包,提取序号值写入序号记录文件, 提取数据部分存入数据文件;返回步骤3;

步骤5:检测是否还有需要重传的数据,有则发送上个分组正确接收, 仍需重传数据信息报并返回步骤1;若数据已接收完整,则发送分组正确接 收,无后续重传信息报,结束此过程;

步骤6:发送数据接收异常,请求重新发送数据包;请求信息嵌入在 Sequence Number中,格式为:高16位接收异常标志,低16位为重传需求 标志;发送后返回步骤1。

本发明涉及网络信息隐藏领域,特别涉及基于TCP/IP协议的隐蔽通信 领域,具体涉及一种采用伪造源IP地址的服务器反弹技术,在TCP报头的 SN和Ack域中嵌入隐蔽信息来构造TCP可靠通信的隐蔽通信方法。利用 TCP建立连接的三次握手原理,通过伪造源IP地址,将隐蔽信息嵌入在TCP 的序号域和确认号域中,通过反弹服务器A的反弹发送到目的端;同时隐 蔽信息通过对序号和确认号的修改操作,并通过反弹服务器B向发送端反馈 信息,实现在目的端的丢失检测和超时重传。所述方法包括以下步骤(这里 假设原始隐蔽信息已经进过加密处理成比特流文件,并且发送端和目的端已 经过前期的协商知道对方的IP地址及端口号。):

(1)发送端的隐蔽信息嵌入过程:

此过程需要用到TCP传输中的窗口控制,故需要规定窗口(window) 的大小。这里的窗口设定为从第一个载有隐蔽数据的数据包发送到开始进行 发送反馈过程时,发送的隐蔽数据包的数目。理论上window的值为1~2n-1, n表示序号的位数,本发明中n=13。window的值随网络状况而变化,其目 的用来较好的控制数据传输时间与同步反馈时间。当网络状况较好时,丢包 较少,此时大量的时间用来发送隐蔽数据,则window的值相应比较大;当 网络状况较差时,丢包比较严重,此时大量的时间可能用来进行丢失检测和 超时重传,则window的值相应取小一点的数值。

发送端信息嵌入基本过程:

步骤1:构造TCP第一次握手协议头信息。若需要传输隐蔽信息时, 将隐蔽信息嵌入到Sequence Number字段的低16位,将其他相关信息组成 嵌入到Sequence Number高16位中,并置SYN(同步序号标志位)为1; 若需要传输同步信息或结束连接信息时,32位值来表示相关信息。除隐蔽 数据外的其他相关信息为下列信息之一:

1)同步信息:数据格式为:高16位包括数据状态(高2位),窗口大 小(中间13位)与最低位校验,低16位为一个同步特定值字段;

2)数据传输:包括数据状态(高2位),数据的序号(中间13位),及 最低位校验位共16位;低16位为隐蔽信息;

3)结束连接:数据格式为:高16位包括数据状态(高2位),中间13 位0与最低位校验,低16位为一个结束特定值字段。共32位信息,表示发 送端已结束连接,数据发送完毕。

步骤2:在TCP报头中将源端口号修改为接收端的端口号;

步骤3:在IP报头IP地址域中将源地址修改为接收端的IP地址;

步骤4:发送数据包至反弹服务器A,当发送的是隐蔽数据包时同步计 数器count加1;

步骤5:若同步计数器值达到窗口最大值,进入发送反馈过程,结束后 返回步骤1;若序号达到最大值且还有数据(包括隐蔽信息或者结束信息) 需发送,下一个序号值置为初始值,返回步骤1;若序号未达到最大值且还 有数据需发送,返回步骤1;否则结束。

发送端还需接收来自接收端的反馈信息,进行分组丢失检测和超时重传 过程,本过程窗口大小为1,即每次发送的数据包要等待确认后再进行下一 个数据包的重传确认。其基本过程如下:

发送端分组发送反馈过程:

步骤1:发送重传确认信息数据报,重传确认信息格式如下:发送窗口 中的首个分组的序号,要求开始重传确认,及校验位组成32位序列号;

步骤2:进行端口监听,同时重传计时器开始计时。有对应端口数据到 来时提取链路层数据,且重传计时器归零,进入步骤3;否则当重传计时器 超时后,重新发送当前数据报,继续监听。

步骤3:对当前分组,检测其TCP域中Acknowledgment Number(Ack 字段,确认号域)的值,先将值减1,再进行如下判断:

1)若确认信息为上个分组已正确接收且无后续重传,则结束分组发送 反馈过程;

2)若确认信息为上个分组已正确接收且还有分组需重传,通过当前需 要重传的序号将数据重新发送,返回步骤2;

3)若确认信息为上个分组未正确接收需要再次重传,则将当前分组重 新发送,返回步骤2。

数据与序号的对应说明:

Acknowledgment Number字段(域)与Sequence Number字段(域) 按照TCP报头在握手中的改变过程按照TCP协议过程进行。传送的数据是 经过前期对原始数据加密处理后的二进制流,按2字节(16bits)为一组传 输分组进行分组,每个分组在窗口大小下从初始序号开始按自然序给以序号, 当序号达到窗口最大值后,序号从初始序号开始再次编号,依次类推,直到 分组被编号完毕。

超时计时机制的说明:

发送端的反馈机制需要一个重传计时器对当前发送的反馈分组从发送 到接收到相关反馈信息进行计时,当超时后要重新发送反馈分组。这里超时 的定义采取TCP协议的超时重传计时机制,即指数退避算法,超时计时器 的计时规则为1、3、6、12、24、48和多个64秒。具体做法是,当前分组 发送后开始计时,当经过1秒后未收到反馈信息,则再次发送分组信息;再 经过3秒后仍未收到反馈信息,则再次发送分组信息;当时间到达64秒后, 不再增加,以后这个分组的发送时间固定为64秒。当成功收到反馈信息后, 超时计时器重置为1秒。

接收端的隐蔽信息提取过程

信息接收基本过程:

步骤1:进行端口监听,有对应端口数据到来时提取链路层数据。

步骤2:对当前分组,检测其TCP域中Acknowledgment Number(Ack) 字段的值,若为隐蔽信息传输同步分组,则进入步骤3;若为隐蔽信息传输 数据分组,则进入步骤4;若为隐蔽信息传输结束分组,则进入步骤5;若 为发送端发送的丢失检测和超时重传数据包,则数据包交给丢失检测和超时 重传过程进行处理,并返回步骤1继续监听;否则丢弃分组,返回步骤1继 续监听。

步骤3:分组是隐蔽信息传输同步分组,则记录Ack号中的窗口值为 window,并构造同步反馈分组。步骤如下:

1)构造分组的ACK确认信息,将其嵌入到反馈分组的Sequence  Number域中,并将SYN置1;

2)在TCP报头中将源端口号修改为发送端的端口号,

3)在IP报头IP地址域中将源地址修改为发送端的IP地址;

4)发送数据包发至反弹服务器B。

步骤4:分组是隐蔽信息传输数据分组,则存储隐蔽信息及信息的序列 号等信息,步骤如下:

1)提取32位Ack值,并减1处理;

2)利用高16位的最低位对数据做校验处理,校验成功进入3),失败 则丢弃数据分组,进入4);

3)将序号按自然序记录在序号记录文件中,低16位数据记录在数据文 件中;

4)返回步骤1。

步骤5:分组是隐蔽信息传输结束分组,则构造结束反馈分组。步骤如 下:

1)构造分组的ACK结束确认信息,将其嵌入到反馈分组的Sequence  Number域中,并将SYN置1;

2)在TCP报头中将源端口号修改为发送端的端口号,

3)在IP报头IP地址域中将源地址修改为发送端的IP地址;

4)发送数据包发至反弹服务器B。

5)关闭连接,结束通信。

接收端的丢失检测和超时重传将执行以下过程:

接收端信息丢失检测及请求重传基本过程:

步骤1:进行端口监听,对接收到的分组,提取Ack值,并减1。利用 高16位的最低位对数据进行校验,校验成功表示数据正确接收,进入步骤 2;否则进入步骤6;

步骤2:若为请求启动检测重传数据包,则校验序号等于初始序号,进 入步骤3,若为重传的隐蔽信息数据包,则进入步骤4;

步骤3:对当前窗口下已接收到的全部数据分组,在序号记录文件中利 用校验序号开始按自然序升序比较,每次比较后校验序号加1后对窗口值取 模。当分组序号不等于校验序号时,表示序号等于校验序号的分组还未接收, 进入步骤5。当校验序号达到窗口最大值且仍等于分组序号时,表示分组未 丢失或已经全部接收完成,进入步骤5;

步骤4:处理接收到的隐蔽信息数据包,提取序号值写入序号记录文件, 提取数据部分存入数据文件。返回步骤3;

步骤5:检测是否还有需要重传的数据,有则发送上个分组正确接收, 仍需重传数据信息报并返回步骤1;若数据已接收完整,则发送分组正确接 收,无后续重传信息报,结束此过程;

步骤6:发送数据接收异常,请求重新发送数据包。请求信息嵌入在 Sequence Number中,格式为:高16位接收异常标志,低16位为重传需求 标志;发送后返回步骤1;

相对于现有技术中的方案,本发明的优点是:

本发明与已有技术相比,其显著优点是:(1)所使用的是基于服务器反 弹技术来实现隐秘信息的传输,由于同一时间对服务器的访问量很大,这极 大的增加了传输的隐蔽性;(2)为了在隐蔽传输中实现TCP的可靠传输和 超时重传机制,本发明设计了一套通信协议,协议标识通过序号和确认号字 段联合实现;(3)由于采用了双服务器反弹,从数据流通道看,其模拟了单 工的发送端到接收端的隐蔽传输,极大提高了传输速率,这与以往的实现可 靠及重传机制不同;(4)增加了专门的可靠性保证和超时重传反馈通道,不 占用数据通道的资源,两个通道可同时进行传输;(5)本发明所提方法基于 TCP/IP协议的传输层和网络层协议实现,具有较强的适应性;(6)每个通 道都是单向的数据流进行传输,且服务器的可选择性较多,从而提高了信息 发送的隐蔽性。

附图说明

下面结合附图及实施例对本发明作进一步描述:

图1为标准的TCP协议报头格式;

图2为TCP三次握手建立连接示意图;

图3为本发明双服务器反弹技术隐蔽信道的模型框图;

图4为利用TCP握手协议的双服务器反弹模式数据传输及反馈示意图;

图5为同步过程数据传输示意图;

图6为发送端隐蔽数据发送过程示意图;

图7为接收端数据提取过程示意图;

图8为发送端分组发送反馈过程;

图9接收端丢失检测及请求重传过程示意图

具体实施方式

以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是 用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以 根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的 条件。

实施例

为了充分公开本发明的内容,在介绍发明具体实施方法之前,首先介绍 本发明的工作环境。本发明采用的是双服务器的反弹技术来构建通信信道, 且利用的是客户端与服务器之间的TCP连接的建立阶段来传输数据,其应 用场景如图3所示。所述隐秘信息的发送端与接收端间通过反弹服务器A 或反弹服务器B进行通信;隐秘信息的发送端发送TCP数据包给反弹服务 器A进行第一次握手,在TCP数据包的报头的序号域中嵌入隐蔽信息,并 嵌入隐秘信息的接收端的IP地址和端口,反弹服务器A根据嵌入的IP地址 和端口通过TCP数据包的确认号域将隐秘信息反弹发送到隐秘信息的接收 端进行第二次握手;隐秘信息的接收端在TCP数据包的报头中嵌入隐秘信 息的发送端的IP地址和端口,并将序号域修改为隐秘信息传输的反馈信息, 发送给反弹服务器B进行第一次握手,反弹服务器B根据嵌入的IP地址和 端口将反馈信息反弹发送到隐秘信息的发送端进行第二次握手。图4为利用 TCP握手协议的双服务器反弹模式数据传输及反馈示意图。

本实例采取端到端的环境来进行隐蔽信息传输,即发送方和接收端分别 位于正常通信的两个客户端上,发送方通过构造第一次握手协议数据包并修 改相关字段再发送信息给服务器,接收方提取链路层数据,然后接收隐蔽信 息。整个通信过程包括前期的发送端与接收端的同步阶段,建立同步后数据 的发送与接收阶段,数据丢失检测和重传阶段以及断开连接4个阶段。

各阶段具体实施过程如下:

(1)发送端与接收端的同步阶段:

图5为同步过程数据传输示意图。在同步阶段,发送端将同步信息嵌入 到序号(SN)字段,发给服务器A,接收端收到来自服务器A的数据包后, 将确认号(Ack)字段的值减1后,得到服务器A发送的原始信息;接收端 将同步确认信息发给服务器B,发送端接收到来自服务器B的数据包后,检 查这个数据是否是自己发送的同步信息的确认信息,是则开始数据传输阶段。 若收到的信息是异常信息或者没收到信息,按指数退避算法进行重传,直到 接收到正常的来自服务器B的同步确认信息为止。

此外,为了实现本发明提出的可靠通信机制,本发明定义了一套本发明 通信过程中采用的通信协议,包括同步过程、数据传输、反馈阶段及结束阶 段的通信协议。同步过程、数据传输阶段和结束阶段的隐秘数据包通信协议 及其标识信息如表1所示:

表1  TCP数据包标识信息表

说明:1.数据方向一栏S指隐蔽信息的发送端,R指隐蔽信息的接收端;

2.说明栏中的字段位置与操作中,嵌入及提取均指的是发送端的操作, 接收端的操作与此相反;

3.表中不包含反弹服务器对SN字段的加1操作及接受方对Ack字段 的减1操作,均指原始信息。

SN字段和Synchronize Sequence Numbers字段相同,均指序号字段, 是发送方发向服务器时序号域中的值,另外Synchronize Sequence Numbers 特指的是发起同步时用到的值,确认连接后传递数据内容时SN也会有值, 但这时不再称为Synchronize Sequence Numbers;SYN和ACK这里值得是 标志位,为了使确认号字段和确认标志位区别开来,所有的确认号字段用 Ack来表示,而确认标志位则用原来的ACK表示。

(2)数据的发送与接收阶段:

数据发送与接收阶段,发送端负责发送数据,接收端接收数据,当发送 的数据包数目达到窗口最大值时,进行数据丢失检测和重传。隐蔽数据经过 前期加密处理后每2个字节(16bits)分组,并同时以窗口值取模编号。

发送端的发送隐蔽数据的过程示意图如图6所示,具体如下:

步骤1:构造TCP第一次握手协议头信息。若需要传输隐蔽信息时, 将数据分组及其序号按DATA类型构造数据包,并置SYN(TCP协议头部 标志位)为1;若需要传输同步信息或结束连接信息时,按INIT类型或 CLOSE类型构造数据包,同时置SYN为1;

步骤2:在TCP报头中将源端口号修改为接收端的端口号;

步骤3:在IP报头IP地址域中将源地址修改为接收端的IP地址;

步骤4:发送数据包至反弹服务器A,当发送的是载有隐蔽数据的数据 包时,同步计数器(初始为0)count加1;

步骤5:若同步计数器值达到窗口最大值,进入发送反馈过程,结束后 返回步骤1;若序号达到最大值且还有数据(包括隐蔽信息或者结束信息) 需发送,下一个序号值置为初始值,返回步骤1;若序号未达到最大值且还 有数据需发送,返回步骤1;否则结束。

接收端隐蔽数据提取过程如图7所示,具体如下:

步骤1:进行端口监听,有对应端口数据到来时提取链路层数据。

步骤2:对当前分组,检测其TCP域中Acknowledgment Number(Ack 字段,确认号域)的值,若为INIT类型分组(隐蔽信息传输同步分组),则 进入步骤3;若为DATA类型分组(隐蔽信息传输数据分组),则进入步骤4; 若为CLOSE类型(隐蔽信息传输结束分组),则进入步骤5;若为DATA_REP 类型分组(发送端发送的丢失检测和超时重传数据包),则数据包交给丢失 检测和超时重传过程进行处理,并返回步骤1继续监听;否则丢弃分组,返 回步骤1继续监听。

步骤3:分组是INIT分组,则记录Ack号中的窗口值为window,并构 造同步反馈分组。步骤如下:

1)按INIT_ACK类型构造字段,嵌入TCP协议头部的SN字段,并将 SYN置1;

2)在TCP报头中将源端口号修改为发送端的端口号,

3)在IP报头IP地址域中将源地址修改为发送端的IP地址;

4)发送数据包发至反弹服务器B。

步骤4:分组是DATA类型分组,则存储隐蔽信息及信息的序列号等信 息,步骤如下:

1)提取32位Ack值,并减1处理;

2)利用高16位的最低位对数据做校验处理,校验成功进入3),失败 则丢弃数据分组,进入4);

3)将序号按自然序记录在序号记录文件中,低16位数据记录在数据文 件中;

4)返回步骤1。

步骤5:分组是CLOSE类型分组,则构造结束反馈分组。步骤如下:

1)按CLOSE_ACK1类型构造字段,嵌入TCP协议头部的SN字段, 并将SYN置1;

2)在TCP报头中将源端口号修改为发送端的端口号,

3)在IP报头IP地址域中将源地址修改为发送端的IP地址;

4)发送数据包发至反弹服务器B。

(3)数据丢失检测和重传阶段:

当发送的数据达到窗口值时,进行丢失检测和重传,此时,发送端停止 发送隐蔽数据,但考虑到仍有已发送的数据包还未到达接收端,这个过程中 接收端仍然能够接收隐蔽数据,同时能处理丢失检测和重传。

发送端分组发送反馈过程的示意图如图8所示,具体如下:

步骤1:发送重传确认信息数据报,重传确认信息格式为DATA_REP 类型;

步骤2:进行端口监听,同时重传计时器开始计时。有对应端口数据到 来时提取链路层数据,且重传计时器归零,进入步骤3;否则当重传计时器 超时后,重新发送当前数据报,继续监听。

步骤3:对当前分组,检测其TCP域中Acknowledgment Number(Ack 字段,确认号域)的值,先将值减1,再进行如下判断:

1)若确认信息为DATA_REN类型,则上个分组已正确接收且无后续重 传,则结束分组发送反馈过程;

2)若确认信息为DATA_REY类型,则上个分组已正确接收且还有分组 需重传,通过当前需要重传的序号将数据重新发送,返回步骤2;

3)若确认信息为DATA_NREY类型,则上个分组未正确接收需要再次 重传,则将当前分组重新发送,返回步骤2。

接收端信息丢失检测及请求重传基本过程的示意图如图9所示,具体如 下:

步骤1:进行端口监听,对接收到的分组,提取Ack值,并减1。利用 高16位的最低位对数据进行校验,校验成功表示数据正确接收,进入步骤 2;否则进入步骤6;

步骤2:若为DATA_REP类型分组,则校验序号等于初始序号,进入 步骤3,若为DATA类型,则进入步骤4;

步骤3:对当前窗口下已接收到的全部数据分组,在序号记录文件中利 用校验序号开始按自然序升序比较,每次比较后校验序号加1对窗口值取模。 当分组序号不等于校验序号时,表示序号等于校验序号的分组还未接收,进 入步骤5。当校验序号达到窗口最大值且仍等于分组序号时,表示分组未丢 失或已经全部接收完成,进入步骤5;

步骤4:处理接收到的DATA类型数据包,提取序号值写入序号记录文 件,提取数据部分存入数据文件。返回步骤3;

步骤5:检测是否还有需要重传的数据,有则发送DATA_REY类型数 据报并返回步骤1;若数据已接收完整,则发送DATA_REN类型数据报, 结束此过程;

步骤6:发送数据接收异常,请求重新发送数据包,则发送DATA_NREY 类型数据报,发送后返回步骤1。

(4)断开连接阶段:

由于本发明模拟了TCP的可靠传输及超时重传,即原理上发送端与接 收端是处于实时连接的状态,故断开接连需要双方均能够断开,避免一方断 开而另一方无尽等待的情况。这里采用TCP的连接终止协议来实现断开连 接过程。

断开连接基本过程:

在断开连接阶段,发送端将CLOSE类型数据嵌入到序号(SN)字段, FIN位置1发给服务器A,接收端收到来自服务器A的数据包后,将确认号 (Ack)字段的值减1后得到服务器A发送的原始信息,并构造 CLOSE_ACK1类型数据报发给服务器B;发送结束后接收端进行等待,等 待时间为64S,等待期间若继续收到CLOSE类型信息,再继续构造 CLOSE_ACK类型数据报发给服务器B,64S后关闭整个通信过程。发送端 接收到来自服务器B的两个结束类型数据包后,关闭发送端通信过程。若发 送端收到的信息是异常信息或者没收到信息,按指数退避算法进行重传,直 到第一个64S后关闭通信过程。连接终止过程与同步过程步骤相同,只是同 步信息不同。

本发明现在Linux平台下按照Craig H.Rowland[1997]提出的方法实现 了单向的服务器反弹发送隐蔽信息的过程,在此基础上,在windows平台下 开发了整个双服务器的反弹技术来实现本发明。可见,本发明是独立于平台 进行设计的,因此适用于windows、Linux等操作系统。

本发明利用WinPcap网络开发包和NDIS技术来开发一个windows应 用程序。该程序分为发送端程序和接收端程序,发送程序采用单线程模式, 分为数据发送部分及反馈部分,包含数据的发送和接收;接收端程序采用双 线程模式,分为数据接收线程和反馈监听线程,两个线程同时执行,保证在 反馈阶段还能接收仍在处在网络上传输还未到达接收端的数据包,从而避免 因为数据包延迟到达而误认为丢失的情形。

根据本发明所提方案,本实施案例在windows7操作系统下搭建了实验 平台,通过选择当前Internet网络上知名的一些网站作为反弹服务器,构建 数据传输通道和数据反馈通道。利用WinPcap开发包来构造通信用的各种 类型数据报来实现本发明的技术方案。

在进行实验仿真时,需对伪造源地址IP地址的可行性进行进一步说明。 发送端将伪造接收端的地址作为发送地址来向服务器发送数据包,这样如果 本地路由器网或其他网络转发设备设定了相关过滤规则,当伪造地址为外部 地址时,就有可能无法通过路由器等相关设备;此外,设定了IP-MAC绑定 的转发设备也会拒绝转发此类数据包。为了防止此类情况的发生,本发明在 仿真时发送端与接收端都处于同一个网络地址中,即拥有相同的网络号,而 主机地址不同。

同时,仿真程序模拟了不同网络状况下本发明技术方案的可行性。在整 个通信过程中,将发送的数据包在发送端以一定的概率丢弃来模拟网络丢包 率,这个概率就定义为网络中的丢包率。丢包率的值设定为0、0.01、0.02,…, 0.1;丢包率为0时表示真实的网络环境。这个丢包率的设定模拟了大多数 的网络环境,可以很好的检验本发明的可行性。同时,在丢包率较小时,本 实验采用较大的窗口值,丢包率较大时,采用了稍小的窗口值来进行仿真。 表2显示了丢包率一定时,不同窗口下数据块的实验结果;表3显示了窗口 一定时,不同丢包率下数据块的实验结果。表2和表3中的传输速率是隐蔽 数据本身的传输速率,不包括标志信息;通信时间包括隐蔽数据传输时间及 丢失检测和超时重传的时间总和;传输时间比率是隐蔽数据传输时间占通信 时间的比例。

表2  丢包率一定时,不同窗口下数据块的实验结果

其中,丢包率=3%,数据大小=134382B。

表3  窗口一定时,不同丢包率下数据块的实验结果

其中,窗口=213,数据大小=134382B。

上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技 术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护 范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的 保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号