第54卷 第1期2021年1月通信技术
carteloCommunications Technology Vol.54 No.1Jan. 2021
·158·
文献引用格式:赵序琦,孙亮,王轶骏,等. 基于IPv6协议的隐蔽信道构建方法研究[J].通信技术,2021,
54(01):158-163.
son of a bitchZHAO Xuqi, SUN Liang, WANG Yijun, et al. Covert Channel Contruction Method bad on IPv6
Protocol [J].Communications Technology,2021,54(01):158-163.
doi:10.3969/j.issn.1002-0802.2021.01.025
基于IPv6协议的隐蔽信道构建方法研究*
赵序琦1,孙 亮2,王轶骏1,薛 质1
(1.上海交通大学,上海 200240;2.江苏省南通市公安局,江苏 南通 226001)
摘 要:随着IPv6网络的部署与应用日益广泛,它所蕴涵的安全问题也值得引起重视。隐蔽信道是一种利用合法协议进行隐蔽数据传输的通信信道,IPv6协议也可以成为隐蔽信道的载体。在研究了最新协议标准下的IPv6隐蔽信道的构建方法,并在实际环境中测试了各种构建方式的可用性后,提出了一种构建IPv6隐蔽信道的具体实现方案,该方案能够有效利用IPv6协议中的扩展头部选项和字段来进行隐蔽的数据传输。
关键词:IPv6协议;扩展头部;隐蔽信道;网络通信
中图分类号:TP393 文献标识码:A 文章编号:1002-0802(2021)-01-0158-06
Covert Channel Contruction Method bad on IPv6 Protocol
ZHAO Xuqi 1, SUN Liang 2, WANG Yijun 1, XUE Zhi 1
(1. Shanghai Jiaotong University, Shanghai 200240, China; 2. Public Security Bureau of Nantong City, Nantong Jiangsu 226001, China)
耐火石Abstract: With the increasingly widespread deployment and application of IPv6 networks, the curity issues it implies are also worthy of attention. Covert channel is a communication channel that us legal protocols for covert data transmission. IPv6 protocol can also become a carrier of cov
ert channels. Bad on exploring the construction methods of IPv6 covert channels under the latest protocol standards and testing the availability of various construction methods in the actual environment, a specific implementation scheme for constructing IPv6 covert channels is propod, which can effectively u the IPv6 protocol extension header options and fields for covert data transmission.
Keywords: IPv6 protocol; extension header; covert channel; network communication
0 引 言
ncrIPv6协议作为取代IPv4协议的新一代网络通信协议,其主要作用是解决IPv4地址资源枯竭的问题。在目前IPv4地址资源日趋耗尽的情况下,拥有更大地址空间范围的IPv6协议势必会逐渐取代IPv4协议,成为主流的网络层通信协议。在这种背景下,IPv6环境下的安全问题也对网络安全提出了新的挑战。
隐蔽信道是一种违背系统安全策略的以秘密的形式传送信息的通信通道,它一般利用网络通信的合法数据报文作为载体,对要传输的数据进行编码、嵌入等操作,进行隐秘数据的传输。隐蔽信道会被
* 收稿日期:2020-09-10;修回日期:2020-12-10 Received date:2020-09-10;Revid date:2020-12-10基金项目:国家重点研发计划项目(No. 2019QY0703)
Foundation Item: National Key R&D Program of China (No. 2019QY0703)
图1 IPv6协议头部结构
fsr
根据RFC文档对于字段的功能、取值与相关操作的定义,在IPv6协议头部中,可以被用来构建隐蔽信道的字段有:statement
通信流类别(Traffic Class):该字段长度为8比特,它在通信中被用来实现流量控制相关的功能,其中前6位定义了DSCP(Differentiated Services Codepoint),最后两位定义了ECN(Explicit Congestion Notification)。该字段的值主要在传输过程中被中继节点所使用,可以被替换用来存储数据,不过需要注意的是,该字段在传输过程中可能被中继节点修改,收到报文时该字段数据相比发出时可能已被修改,所以传输效果可能不稳定。
流标签(Flow label):该字段长度为20比特,它在传输中被用来区分不同的传输流。该字段的值一般由发送端设置,字段的值的分布应该是随机均匀的,并且在设置为非零值时在传输过程中一般不允许被中继节点改变,所以可以被替换为隐蔽数据进行传输。
tyra banks载荷长度(Payload Length):该字段长度为16比特,它的值为在IPv6协议头部后负载部分数据报文的长度,包括扩展报头与上层协议数据。可以将此字段设置为大于其正常值,并在数据报文最后添加要传输的隐蔽数据,以此来构建隐蔽信道。此种隐蔽信道的传输速率不固定,由设置的超出正
·159·
佛山翻译
图2 逐跳选项与目标选项格式
选项类型字段的前三位比特具有单独定义,其中前两位比特说明了如果IPv6节点不识别该选项时应采取的措施,若前两位比特设置为00,则表示措施为跳过该选项并继续处理后续数据。后五位比特则用来标识不同选项,而目前未被占用的选项数值的比特范围为10010~11101,所以可以利用此特
图3 类型0路由头部结构
但是类型0路由头部由于会被攻击者利用发起拒绝服务攻击,所以在RFC 5095中规定被弃用,文档规定对于该类型的路由头部处理方式与未知类型路由头部一样,即若段剩余字段不为0,则数据包被丢弃,若段剩余字段为0,则跳过并继续处理下一头部。所以理论上来讲,对于路由类型为0的头部来说,上述的第二种隐蔽信道构建方式仍然可用。
2.2.3 分段头部中的隐蔽信道
分段头部用于对过长的IPv6数据包进行分段传输,以满足传输链路的最大传输单元(Maximum Transmission Unit,MTU)要求,与IPv4协议不同的是,分片的操作都是由发送报文的源节点完成的。
分段头部的结构定义如图4所示,其中分段偏移长度为13比特,表示当前数据报文中的数据在
·160·
图4 分段头部的结构定义
标准规定当一个分段内包含完整的数据,即分段偏移的值与标志M的值均为0时,该数据报文被接受并被当作一个已经重组完成的报文处理,后续具有相同的分段标识的数据包则被另外重新处理。所以利用此特性,可以构造只有一个分段的分段报文,并利用其中共10比特的保留字段以及32比特的分段标识来传输数据,构建隐蔽信道。
2.3 隐蔽信道的可用性测试
上文所述的隐蔽信道的构建方式基本上是根据标准文档中的描述进行分析提出的,但是在实际环境中上述方式是否能够按照预期方式传递信息还未可知,隐蔽信道的可用性还有待测试。本文针对隐蔽信道的可用性在以下两个方面进行测试:是否影响上层协议正常工作、数据报文是否可达目标。
按照各种隐蔽信道的构建方式,利用Python的Scapy库来构造并发送数据包。对于是否影响上层协议正常工作的测试,在本地的LAN环境下进行测试,选择两台主机分别作为发送机器与接收机器,通过交换机直接连接,在发送机器中设置上层协议载荷为UDP协议,在接收机器中则监听对应的UDP端口,
在接收到隐蔽数据的同时查看应用是否能够收到UDP数据。本文分别选择Ubuntu 20.04和Windows 10 Build 1909作为接收机器的系统版本进行了测试。对于报文是否可达目标的测试,主要是为了测试中继路由节点对于隐蔽传输数据包是否会采取丢弃处理,本文分别采用位于两个国家的虚拟主机进行测试,主机通过IPv6网络直接连接,中间会经过多个中继路由节点,通过在接收机器上对网卡报文进行嗅探监听,观察发送机器所发送的报文是否到达。
上文提出了基于IPv6协议构建隐蔽信道的几种方式,其中基于IPv6协议固定头部的隐蔽信道
图5 基于IPv6协议的隐蔽信道架构
图6 隐蔽信道传输协议
标志字节的可能取值为0~2,其中0表示该报文为数据传输报文,需要继续解析数据选项读取传输数据并转发。而取值为1、2时,不会携带数据,标志字节值为1表示新建连接,在客户端新建连接时发送,此时隐蔽信道程序会新建TCP连接并缓存Socket;标志字节为2表示关闭该方向TCP连接,在服务或客户端关闭连接时发送,双向连接都被关闭后,缓存的Socket将被清除。
数据选项的选项长度字段值不固定,根据数据长度确定,此处定义为x,但是由于选项长度字段只有1字节,因此x小于或等于255,更长的数据需要进行分包。
此外,由于标准规定IPv6扩展头部的长度需要为8字节的整数倍,因此在最后还要按需添加Pad1或PadN选项来满足长度偏移需求。隐蔽信道数据包的IPv6上层负载协议可以根据实际情况设置,本文设置为ICMPv6 Echo Reply类型报文。3.3 隐蔽信道测试
利用Python的Scapy库编码实现隐蔽信道,实验环境如图7所示,对隐蔽信道的实际测试在两台机器之间进行,两台机器的操作系统分别为
20.04和Windows 10 Build 1909,两台机器通过macau
网络直接连接。
其中,Ubuntu机器内安装有入侵检
Snort(版本2.9.16.1),使用的检测规则为对应版本注册规则。
泰坦尼克号的主题曲
使用netcat程序利用在两台机器之间架设的IPv6隐蔽信道对一个大小为5MB的文件进行传输测试。传输完成用时81s,隐蔽信道的传输速率为63kb/s。观察Snort程序的日志,也并未产生相关的报警,说明隐蔽信道具有良好的隐蔽性。
·162·