美章网 资料文库 TCP协议的网络隐蔽通道研究范文

TCP协议的网络隐蔽通道研究范文

本站小编为你精心准备了TCP协议的网络隐蔽通道研究参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

TCP协议的网络隐蔽通道研究

《计算机工程与科学杂志》2014年第六期

1网络隐蔽通道的基本原理

早期对隐蔽通道的定义只局限于操作系统内部,研究的重点也是针对操作系统的安全。随着网络技术的快速发展,隐蔽通道已经被应用到网络技术中。由于网络协议在设计时存在漏洞,如网络协议的首部存在冗余字段,而网络设备对这些字段的限制比较宽松,由此可以通过精心的构造,利用这些字段实现隐蔽通信,就形成了网络隐蔽通道[5]。因此,广义地讲,网络隐蔽通道是指各种利用非正常的通信手段在网络中传递信息的通道。图1为隐蔽通道模型。

2建立网络隐蔽通道的方法

建立隐蔽通道的方法一般就是利用网络传输协议设计中存在的一些不严密的地方来隐藏信息,以躲过网络安全防护系统和防火墙系统,达到传输非法信息的目的[6]。由于防火墙或入侵检测系统往往只注重对数据部分的检测,而忽略了对首部息的检测,因此就可以从以下途径来建立隐蔽通道:一是利用tcp/IP协议的首部中的一些很少使用或不使用的域来隐藏信息;二是可以利用数据传输时数据包头中的一些必须强制填充的域(如IP数据包头中的源地址、目的地址和TCP数据包头中的源端口域、目的端口域、序列号域等)来隐藏信息;此外,还可以利用第三方合法主机中转建立隐蔽通道,利用Ping命令隐藏信息建立隐蔽通道等方法。

3基于TCP协议首部的隐蔽通道

3.1TCP协议首部隐蔽通道设计思想基于TCP协议模型网络隐蔽通道的设计思想主要是利用该模型中的协议来进行的,而双方的通信方式则是“合法的”,通信前双方约定好用以隐藏或解析隐蔽信息的规则,然后发送端依据该规则对要发送的隐蔽信息进行编码、伪装、发送,接收端收到经过编码的信息后,便会依据发送端产生的规则来解析隐蔽信息。TCP协议首部就是用于隐蔽信息的首选目标。图2为TCP协议首部的结构,主要包括源端口和目标端口字段、确认序列号、首部长度、标志位、窗口、检验和及紧急指针等字段。在TCP协议首部的这些字段中,很多字段在通常情况下根本不用或很少使用,可以用来隐藏信息。本文选择序列号字段和确认序列号字段作为隐蔽通道的载体,主要有两方面的原因:一是它们的长度达到32bit,可以隐藏更多信息,同时数据位很多,往往难以检测;二是它们的值在数据传输过程中的变化具有规律性,接收端还原数据比较容易。假设要在网络中的客户端A和服务端B之间构建隐蔽通道,还需要借助第三方受信的Web服务器C。利用TCP序列号来实现数据隐蔽传输的方法是:首先客户端A构造自己的SYN数据包,向受信的Web服务器C发出建立连接的请求,而服务端B也捕获到该SYN包,就伪造Web服务器C向客户端A发送返回的SYN+ACK数据包,并在TCP序列号字段中携带加密的隐秘信息;客户端A从服务端B伪造的Web服务器返回数据包中捕获隐秘信息或指令解析并执行,从而实现了将信息从客户端A到服务端B之间的隐蔽传输。由于在整个数据通信过程中并没有形成任何一个完整的TCP三次握手,并且返回的SYN+ACK包可看作对每个SYN包的响应,因此可以达到规避防火墙,实现隐藏信息的目的。

3.2隐蔽通道的构建利用TCP协议首部构建隐蔽传输通道,主要就是要在发送端生成包数据包时将隐秘信息嵌入,然后在接收端捕获含有隐秘信息的数据,并将其解码出来。由于在数据传输过程中使用了第三方受信的Web服务器,隐秘信息是隐藏在向Web服务器发送请求的数据包中,又通过接收方伪造Web服务器向发送方返回应答数据包,同时也将隐秘信息隐藏在返回的应答数据包中。在隐秘信息传输过程中没有形成完整的三次握手,因此不会给正常通信造成影响,也不会引起防火墙的反应。而将隐秘信息嵌入TCP数据包首部的序列号字段和确认序列号字段,这两个字段长度均为32bit,因而可以隐藏更多信息,同时数据位多,更加难以检测。

3.2.1数据包的生成和发送生成网络数据包的方法有基于原始套接字的方法、基于WinPcap的方法和基于Libnet的方法等[7]。本文采用基于WinPcap的方法,具体包括两个部分:(1)在客户端生成获取网关MAC地址的ARP请求数据包,目的是为了获取本机、服务端以及网关的MAC地址。由于局域网中ARP数据包大量存在,且机器中的动态ARP表需要不断更新,正常的ARP数据包不会引起防火墙等设备的怀疑,因此只需要生成正常的ARP请求数据包即可。使用Winsock库提供的SendARP()函数能十分方便地生成ARP请求数据包,获取与IP地址对应的物理地址。(2)生成手工制作的TCP数据包,各字段符合TCP协议的定义,发起对受信的Web服务器的建立连接请求,在服务端则伪造Web服务器,返回嵌入了隐秘信息的SYN+ACK数据包到客户端。

3.2.2数据包的捕获客户端捕获数据包后,需要对其进行分解,对每层协议进行解析,然后读取所传送的数据内容,最后再对数据进行解码和处理。捕获数据包的方法也有多种,对应发送端,也采用了基于WinPcap的方法。其步骤为:首先使用pcap_findalldevs()获得主机的网络设备列表,然后使用pcap_open_live()打开网络设备,使用函数pcap_compile()编译过滤规则和使用函数pcap_setfilter()设置过滤规则。之后使用pcap_loop()和pcap_next_ex()捕获数据包。捕获到数据包后就可以对其进行分解和解析,将TCP首部中含有隐秘信息的序列号或确认序列号的内容取出,经解密后就得到隐秘信息。

4基于TCP首部的隐蔽通道系统的实现

实现基于TCP首部的隐蔽通道就是采用第3节中所述的思想和方法,在发送端伪造TCP协议发送包含有隐秘信息数据包,在接收端对接收的数据包中的隐蔽信息进行相应处理。

4.1系统的总体构架系统的功能原理如图3所示。通过数据包生成技术,客户端将隐藏信息加密后嵌入TCP协议首部的序列号字段或确认号字段,对可信的第三方Web服务器发起连接请求。服务端则伪造Web服务器向客户端返回SYN+ACK数据包。通过数据包捕获技术,服务端从客户端发往Web服务器的请求数据包中捕获隐秘信息并还原。客户端则从服务端伪造Web服务器的返回数据包中捕获隐秘信息或指令解析并执行。

4.2系统功能及实现

系统功能模块系统可分为数据包生成模块、数据包捕获模块、管理与控制模块和指令解析模块,如图4所示。其中,数据包的生成和捕获模块利用多线程技术实现,执行时不会造成MFC界面假死。管理与控制模块负责处理网络设备的获取与控制。指令解析模块对传递的信息进行显示和执行指令。秘密信息经加密后嵌入数据包发往公开信道,接收端在公开信道捕获数据包并对其进行解密。

5实验结果及分析

经过实验,通信功能方面,双方互发的消息都能正确接收。控制功能方面,能够通过在客户端发送命令来实现对服务端的控制。经测试,该系统在WindowsXPSP2和Windows7操作系统中运行良好。实验结果见表1和表2。实验结果表明,该系统不仅可以实现信息传输和远程控制的功能,而且能够成功躲避各种安全防护系统的防范。

6结束语

网络隐蔽通道的存在违背了系统安全策略,给网络信息安全带来了极大的隐患。从攻击者角度出发去检验网络安全防护系统的性能,是消除安全隐患的一条良好途径。通过对网络隐蔽通道及相关技术进行研究,提出了基于TCP首部中的序列号和确认号字段设置网络隐蔽通道的方法,通过与第三方受信的Web服务器进行通信,伪造Web服务器的响应来构建隐蔽通道。设计并实现了原型系统。经过实验测试,系统能够成功绕过多种杀毒软件和防火墙,传输隐蔽信息和实现远程控制。这将对提高网络安全防护系统的性能提供很好的决策依据。

作者:张令通罗森林单位:云南大理学院工程学院北京理工大学信息安全与对抗技术实验室