基于端址敲门的隐蔽通信系统研究
2022-02-16许翰林段鹏飞石乐义
马 荣,卢 熠,许翰林,段鹏飞,石乐义
( 1. 中国石油大学(华东) 计算机科学与技术学院,山东 青岛 266580;2. 蚂蚁金服,浙江 杭州310000;3. 中国石油大学(华东) 海洋与空间信息学院,山东 青岛 266580;4. 宁夏长庆初级中学,宁夏 银川 750006)
隐蔽通信技术通过利用载体信息的冗余性将机密信息以伪装的方式隐藏在公共信道中进行传输,达到在网络环境中隐蔽通信和隐蔽标识的目的,为使用者提供有效且安全的信息传输服务。当前,无处不在的网络监视、流量审查等功能对用户的隐私构成越来越严重的威胁,网络安全防护形势日益严峻。
作为信息隐藏的研究分支[1],隐蔽信道的概念最初是由Lampson[2]在1973年提出,比传统的信息加密技术具有更强的隐蔽性,已成为网络安全领域的研究热点。端口敲门技术作为信息隐藏的一种具体实现,允许访问预先配置好“敲门序列”的防火墙服务,通过有序访问对方端口进行机密信息的传输,使得信息安全传输从对信息加密转向信息内容扩展,以信息扩展后生成的端口访问序列作为信息传输的载体来传递机密信息,更易于机密信息的隐藏。端口敲门技术仅对端口进行安全防护,使得攻击者不能利用端口发起攻击,但对于服务器的地址并没有进行相应防护。由于端口敲门技术对固定IP进行多次重复访问,极易引起攻击者注意,可能会暴露通信地址,引起信息泄露或者通信中断,研究如何对端口敲门技术进行改进以增强其抗攻击能力和隐蔽传输能力十分重要。
本研究提出基于端址敲门的隐蔽通信系统,该系统在单一端口敲门认证的基础上引入IP地址,采用地址与端口组合作为敲门序列的端址敲门方法实现隐蔽信息的传递。这样不仅能够隐藏服务器的真实地址,而且能够实现信息的隐蔽性传输。本研究首先详细分析扩展序列的生成并针对不同信息类型进行相应的信息传输服务,然后针对端口选择随机性的问题提出基于象限的端口选择策略和基于正弦函数的端口选择策略,最后通过实验分析得到满足不同信息传输要求的端口控制策略,以达到更好的传输效果。
1 相关工作
网络隐蔽通信中的隐蔽信道分为存储型隐蔽信道(storage covert channel,SCC)和时间型隐蔽信道(timing covert channel,TCC)两种类型。存储型隐蔽信道是指通过协议数据单元(protocol data units,PDU)传输隐藏信息,如数据分组、数据帧、数据段的未使用或保留的协议头字段[3-4]。Anagnostopoulos等[5]通过将信息嵌入到DNSKEY中来进行隐蔽通信。Mavani等[6]增加新的IPv6目的地址选项用于传递隐蔽信息。Zander等[7]提出一种将秘密消息映射到IP生存时间的新隐蔽方案,用Live Field取代IP数据包,证明了该方案的可行性及安全性。王永杰等[8]提出一种基于 DNS 协议的隐蔽通道技术,并对其基本方法及其实用化的数据编码、躲避检测、可靠通信和速率控制等关键技术进行了研究,分析结果表明该技术具有可靠性好、隐蔽性强、通信效率高等特点。谭庆丰等[9]设计实现了基于P2P网络的StegoP2P,让P2P网络中的节点合谋隐蔽握手,达到传递隐蔽信息的目的。存储型隐蔽信道在初期被利用到了极致,但是后期网络防火墙使用了流量正规化技术,强制改写了IP数据包的冗余位,一定程度上打击了这种隐蔽通信模式[10-12]。时间型隐蔽信道是指将秘密信息调制进网络数据包的发包间隔、发包速率、发包次序等特征中进行传递。早期Moskowitz等[13]提出一种简单的时间隐蔽信道(simple timing channel, STC),是一种无噪声隐蔽信道。Cabuk等[14]最早提出IP时间隐蔽信道,根据划分的若干个固定的时间窗口内是否有IP数据包到达进行解码。这种方法高度依赖网络情况,因此初期并未引起太多关注。李彦峰等[15]提出区块链网络隐蔽信道模型,用形式化方法建模并证明了抗干扰性和抗篡改性;然后构建基于业务操作时间间隔的区块链网络隐蔽信道的场景;最后提出包含抗检测性、顽健性和传输效率的区块链网络隐蔽信道评估向量,为基于区块链环境的新型网络隐蔽信道的实用化奠定了理论基础。王昌达等[16-17]考虑到虽然IP数据包传输时间间隔变化通信与基于数据包标识号传输顺序变化通信的IP时间隐通道具有较好的隐蔽性,但易受到网络延迟与时延抖动影响出现错序的问题,提出二维时间隐通道的构建方法,但是由于网络时间型隐蔽通信受网络数据流量、路由转发等状况的影响比较大,会造成隐蔽信道传输信息的错误,对此类型隐蔽通信的研究需要极其复杂严格的条件。
端口敲门(port knocking,PK)技术首先由Krzywinsk[18]提出。Shiraz等[19]针对移动云计算(mobile cloud computing,MCC)的安全问题提出一种动态长度端口敲门认证框架,该框架不仅提升了敲门认证的安全性,而且在时间和缓冲区管理方面优化了性能。实验结果表明,动态长度端口敲门身份验证技术可通过减少施加的负载将时间方面性能提高23%,将缓冲区管理性能提高28%。Major等[20]提出一种名为Crucible的新型端口断开解决方案,是一种安全的身份验证方法,具有很高的可用性和隐身性,可以使服务器和服务保持隐藏和受保护。Ali等[21]提出一种将源端口序列加入到敲门序列中的技术,能够有效应对重复攻击和端口监听。Mehran等[22]提出一种安全端口敲门隧道方法,能够应对DoS敲门序列攻击和NAT敲门序列攻击。由以上分析可知现阶段端口敲门技术大都应用于安全认证方面,未涉及隐蔽通信。
综上,存储型隐蔽信道是通过将数据包中的某些次要字段进行填充达到隐蔽通信的目的,可靠性好、隐蔽性强、通信效率高,但后期的流量正规化技术很大程度上限制了这种隐蔽通信方式的发展。时间型隐蔽信道是以时间为载体实现隐蔽通信,隐蔽性高,但传输效率较低,受网络和时延的影响极大,需要极为严苛的传输环境。因此,本研究提出一种基于端口的敲门技术,使用IP地址和端口作为端址敲门序列,在提高信息传输隐蔽性的同时保障系统的安全性和稳定性。相较于端口敲门技术,端址敲门中IP地址的加入使得端址敲门技术中扩展序列的复杂度更高,且随着配有IP地址的主机数量增加,序列复杂度显著提升。复杂的序列既可以防范攻击者,又可以达到很好的隐蔽传输效果。
2 基于端址敲门的隐蔽通信技术
基于端址敲门的隐蔽通信技术通过对端口加IP地址的复杂组合序列进行敲门,旨在建立一种高隐蔽、抗攻击的通信机制,在保护通信双方的基础上利用网络层和传输层协议的特点,构建自定义报头的数据包,并使用这些数据包组合序列作为载体隐藏机密信息,以达到隐蔽通信的目的。
2.1 基于端址敲门的隐蔽通信模型
为了使隐蔽信息能够分散且传输内容与所发送内容无关,实现高隐蔽通信,提出端址敲门技术,并将此技术应用于隐蔽通信。从信息隐蔽的角度出发,建立了基于端址敲门技术的隐蔽通信模型,如图1所示。该模型用一个二元组(Sender,Receiver)描述,Sender表示发送端,包括扩展序列生成模块和扩展序列发送模块;Receiver表示接收端,包括扩展序列接收模块,接收到的扩展序列用于对发送端身份的认证和秘密消息的传输。
图1 端址敲门隐蔽通信模型Fig. 1 Covert communication model of ports and addresses knocking
在基于端址敲门技术的隐蔽通信模型中,发送端首先生成信息扩展序列,然后将扩展序列发送给接收端;接收端对接收到的扩展序列进行检测,判断用户身份的合法性。如果合法则通过认证,然后进行机密信息的传输,否则拒绝服务。
在本研究的隐蔽通信系统中,首先通信双方要分别在各自的网络部署若干个IP地址,然后进行隐蔽通信。发送端将所要传输的隐蔽信息进行逐个编码,选取IP和端口组成套接字选项,通过一系列不同的套接字生成一串扩展序列,然后将其发送到接收端。接收端始终运行着监听程序,监听并记录来访数据包中的套接字信息,根据源IP地址范围过滤掉无用数据包,再以源端口为过滤规则进行身份验证(校验内容为源 IP地址、源端口、目的IP地址、目的端口),以免攻击者伪装合法IP发送恶意数据包。接收端进行身份验证是通信双方进行信息传输前必不可少的步骤之一,只有通过身份验证后才能进行机密信息的传输。一旦发送端身份得到确认,表明通信双方已经建立互信的信道,并进入信息传输模块。接收端接收到所有信息并将其存储起来,然后一并进行解码,还原出原始信息。
2.2 扩展序列的生成与认证模块
端址敲门序列是基于端址敲门技术的隐蔽通信系统的核心。其中,接收端网卡配置有IP地址池中的所有地址,无论数据包发往哪个IP地址,都可通过路由到达接收端网卡。因此接收端的端址敲门序列可以形式化描述为:
Server-Sequence={(IP1,C),(IP2,C),(IP3,C),…, (IPn,C)},其中IP∈(IP1,IP2,IP3,…, IPn)的IP地址池,C为常数,代表服务端口。
发送端端址敲门序列在文字模块下既作为源IP地址发送数据包,又用于编码文字字符。系统对所发送的字符串逐个取字符,并按规则转换为整数,再转换为二进制数,根据二进制数中“1”的位置选择IP,最终确定发送序列。例如发送端选取了IP1、IP3、IP5作为扩展编码(扩展序列只包含目的IP和目的端口号),然后通过提出的端口控制策略选择合适的端口,组成端址敲门序列{(IP1,port1),(IP3,port3),(IP5,port5)}。
接收端对于接收到的扩展序列首先要进行身份认证,确定是否为合法用户。接收端对序列进行解码获取相应的身份信息,当组合序列满足预设的条件时信息才能被解析出来,即接收方通过将分散的敲门包进行组合完成信息的还原,否则不予响应。身份认证是信息传输的一种特殊形式,信息传输将在下节中进行详细论述。由于传输过程中各个信息是分散的,攻击者难以通过序列中的单个敲门包获取有效信息,因此采用端址敲门的方式进行信息传递具有良好的隐蔽性及抗攻击性。
2.3 信息传输模块
信息传输模块是基于端址敲门技术的隐蔽通信系统中最为核心的部分,在身份信息验证成功后,接收端进入等待接收信息状态,发送端进入传输模块,进行机密信息的传输。针对垂直部门间的实际应用场景,提出下列两种传输模块,分别用于文字传输和文件传输。
1) 文字传输模块
文字信息隐蔽传输模块的发送和接收形式与即时通信软件类似,客户端输入信息并发送,接收端接收并呈现信息。发送端获取用户输入的文字信息,逐个字符进行转码,将单个字符转换成用若干IP地址组合的形式表示,配置套接字信息前需要选择所选用的序列确认方式,选择使用基于象限规则的方案或者基于正弦函数规则的方案,最后将IP地址和端口号配置到套接字中并发送给接收端。接收端根据同样的规则进行解码,还原出原始文字信息。
系统首先将用户编辑的文字(以英文为例)按字符分割,并将其按约定扩展为一串由不同的源/目的IP地址和源/目的端口套接字组成的序列。为达到隐蔽通信的目的,文字信息通过编码后进行转换发送。其中编码方案综合考虑了字符的日常使用频率和字符转码特性后,为方便字符编码,将字符集中的字符以整型数字作为标记代号,构建对照表如表1所示。详细转码生成IP_Sequence的步骤如算法1所示。
表1 字符与其扩展代码对照表Tab.1 Character and extended code comparison
算法1.IP_Sequence生成算法输入:编码字典chr_dic,消息message[],地址池IP_pool输出:地址序列IP_Sequence[]步骤:1:读取消息m[]2:while i>=0 do3: if m[i]←chr_dic[key] then value←dic.get(key)4: 将value转换为十位二进制数5: 对该二进制数从左到右依次编号为0-96: for j←0 to 9 do7: if j ←1 then 在IP_pool中选取j所对应的ip地址8: add ip[j] to IP_Sequence[]9: else j++10: end if11: end for12: else if m[] == ' ' then add ipEnd to IP_Sequence[]//添加ipEnd作为结束标志13: else i++14: end if15: end if16:end
接收端在接收到这些序列后,按照约定的协议解码恢复出原始信息。而文字本身并没有存放在套接字的缓存区中,在网络中传输的只是一系列缓存区为空的数据包,而且源/目的IP地址和源/目的端口都不同,使得网络中流量分散,让攻击者意识不到有特殊的机密信息传输,即使被截获,在不知道通信双方约定的扩展规则的情况下,机密信息仍然无法被破译,从而达到隐蔽通信的目的。
2) 文件传输模块
文件的隐蔽传输与文字有较大差异,由于不同类型的文件大小差别巨大,若像文字信息一样,在应用层进行二进制编码,会产生长度不可估计的二进制数,在后续转码传输过程中,难以保证其传输的完整性。因此,发送端采用将文件分片后再进行扩展隐蔽传输的方式传输文件。接收端将接收到的数据包以IP地址和源端口号为规则进行过滤,将符合套接字序列规则的数据包中的数据信息即子文件片存储在服务器本地。当接收并储存的子文件总数与客户端告知的文件总数相同时,结束本次文件接收任务。最后将所有子文件按照文件名重组,还原出原始文件内容。
由于多媒体文件的类型繁多,且包含的信息量巨大,因此采用分割后分片传输,将所需传输的文件按照固定的大小在本地进行分片处理并将每一片文件的子文件名存入一个数组,再导入IP地址编码方案,然后按顺序逐一读取子文件,存入套接字的发送缓存区,并从源IP地址池和目的IP地址池中随机选取IP地址,接着选择所用的端口序列确认方式。服务器端接收到分片传输来的文件后进行重组得到原始多媒体文件。文件传输模块工作流程如图2所示。
图2 文件传输流程图Fig. 2 Flow chart of file transfer
文件分片处理是文件传输模块至关重要的一步,也是唯一区别于文字信息的传输。系统中设定小片文件的大小为2 048字节,然后按照规定子文件的大小取文件中的内容存入新文件中,并按序号给文件命名,方便后续选择子文件进行发送。当所有文件分片结束后,统计子文件总个数,告知接收端,检查接收到的文件是否齐全。
2.4 基于端址敲门的隐蔽通信技术端口控制策略
主要包括基于象限的和基于正弦函数的端口控制策略。
1) 基于象限的端口控制策略
为了保证端口选取的随机性,源端口号范围限定在10 000~20 000,当前套接字使用的端口号所在范围决定了下一个套接字的端口号。为防止方案有规律可循,每重复8次后重新进行端口选择。象限端口策略相关形式化描述如下:
Port-Quadrant={Port I, Port II, Port III, Port IV},代表端口根据范围划分为4个象限。
Port={FirstPort, CurrentPort, NextPort},其中:FirstPort表示第一个套接字所用的端口号,CurrentPort表示当前套接字所用的端口号,NextPort表示下一个套接字所用的端口号。
基于象限的端口控制策略如下:
a) 随机生成FirstPort端口号,范围在10 000~20 000。
b) 若FirstPort端口号属于第一象限,则NextPort端口号为NextPort=30 000-FirstPort。若FirstPort端口号属于第二、三、四象限,则NextPort=FirstPort-2 500。
c) 配置下一个套接字信息时,使得CurrentPort=NextPort,接着判断CurrentPort的范围。若CurrentPort端口号属于第一象限,则NextPort端口号为NextPort=30 000-CurrentPort。若CurrentPort端口号属于第二、三、四象限,则NextPort=CurrentPort-2 500。
d) 以此类推,直到操作执行8次为止。重新选定FirstPort,继续循环,直至数据发送完毕。
由上可见,端口范围在象限中的变换规律是I→IV→III→II→I,且一个循环内每个象限之间的端口差值为2 500。该方法算法简单,系统开销较低,但是当数据量十分庞大时,即使每8次重新选定首端口号,源端口之间的规则仍容易被攻击者发现。为了应对大规模数据量的传输,进一步提出基于正弦函数策略的端口控制方案进行机密信息的传输。
2) 基于正弦函数的端口控制策略
本策略使用正弦函数作为序列验证的检验标准。构造正弦函数
(1)
周期为4π的无穷函数,推导可得:
(2)
(3)
(4)
(5)
发送端正弦函数的端口控制策略中,随机选择范围在2 500~14 999的整数,转换成符合正弦函数取值为“0”、“1”和“-1”的整数作为源端口号。当所传输的信息为端址敲门序列正常信息时,使用使函数结果为0的端口号4k和4k+2;当所传输信息为标志分隔的端址敲门序列时,使用能使函数结果为1的端口号4k+1;当信息传输完毕,需要传输结束端址敲门序列时,使用能使函数结果为-1的端口号4k+3。为保证源端口的可用范围在10 000~60 000,k的取值范围为2 500~14 999。服务器通过数据包提取出源端口号,代入正弦函数式(1),若所得结果为0、-1或1,则认为数据包合法并按规则把相关信息放入解码序列,否则认为是非法数据包并丢弃。另外,正弦函数控制策略下源端口号的选择范围更大,比象限规则中可使用的端口范围多2.5倍,因此正弦函数策略比象限策略具有更明显的优势。
3 实验与结果
设计实现基于端址敲门技术的隐蔽通信系统,并对其隐蔽性、抗攻击性等各项性能进行实验验证。测试时客户端和服务器都使用ThinkPad T420笔记本电脑,系统为Ubuntu14,内核版本为Core i5,内存为2 G,编程语言为Java。
3.1 隐蔽性能测试结果分析
为了验证系统在传输机密信息时具有隐蔽性,以文字信息为例,分别在普通数据包传输模式、基于正弦函数的扩展传输模式以及基于象限的扩展传输模式下测试网络流量截获的情况,如图3所示。
图3 传输模式的流量情况图Fig. 3 Flow chart of transmission mode
由图3可以看出,传统的端口敲门技术将大量的访问请求发送到单一IP地址的若干个端口上,流量目的地集中,攻击者容易察觉到数据通信并确定通信双方主机的地址。采用基于正弦函数以及基于象限的传输模式后,对于每一个数据包而言,都采用单一IP地址上的单一端口发送请求到服务器端的某一个IP地址上的一个端口。从流量图来看,网络中流量分散,符合正常网络环境,不易引起攻击者注意,能达到传递隐蔽信息的目的。文件传输与文字传输情况类似,不做过多赘述。
3.2 系统性能测试
系统性能主要涉及系统复杂度提高带来的时间损耗、IP池中每个IP地址的使用率以及系统占用端口的分布律对系统安全性的影响。
本部分对基于端址敲门技术的隐蔽通信系统的时间进行测试。由于端址敲门技术在通信过程中需要消耗主机的部分资源,故需要比较IP时间型隐蔽通信与本方法在时间消耗上的差异,其中IP时间型隐蔽信道设定时间间隔为10 ms,如表2所示。
表2 系统时间对比Tab. 2 System time performance comparison
从表2可以看出,与时间型隐蔽通信相比,本系统采用的方法在时间损耗方面具有较明显优势。
由于文件模块与文字模块的传输方式大体一致,而基于象限的扩展传输模式与基于正弦函数的传输模式亦基本相同,故仅对基于正弦函数的端口控制策略下发送不同大小文件时各个IP地址的使用率进行测试。发送大小为100 kB、1 MB、5 MB和10 MB的文件,得到IP地址的使用率分布如图4所示。普通传输模式下,客户端跟服务器端都使用固定IP和端口来进行数据的传输,因此IP地址和端口使用率都为100%。
由图4可见,由于客户端文件扩展方式的限制,若分片太小,会导致大文件片数过多,导致每个IP访问多达50多次,影响程序的运行,最终严重影响系统的使用。发送不同大小的文件所占用的源IP地址的使用率曲线接近,且分布较为均匀,使得攻击者不易发现流量集中的点。
图4 IP地址使用次数分布图Fig. 4 Distribution law of IP address usage
基于正弦函数和基于象限的两种传输模式的本质区别在于源端口控制策略,下面重点分析端口的使用次数分布和源端口的使用率,分别如图5~6所示。
由图5~6可得,两种策略的源端口使用分布率十分均衡。与基于正弦函数的扩展传输模式相比,基于象限的控制策略具有明显的缺点:①端口范围小,比正弦函数规则选取端口范围少40 000个;②象限规则的端口在8个连续数据包之间,容易发现端口之间的关系(相邻两端号相差2 500),而正弦规则采用随机选取端口的方式,无规律可循。
图5 基于正弦函数控制策略的源端口使用次数分布图Fig. 5 Distribution law of source port usage based on sine function strategy
图6 基于象限控制策略的源端口使用次数分布图Fig. 6 Distribution of source port usage based on quadrant strategy
3.3 抗攻击性测试
本测试的目的在于提供局域网内机密信息的隐蔽传输,因此攻击者是防范的重要目标。通过抗攻击性测试,判断系统的隐蔽传输被攻击者识破后,是否仍能够继续提供通信服务且机密信息不被攻击者截获。
1) 伪装攻击结果分析
攻击者试图通过用合法IP池中的IP地址构造数据包,伪装成合法的扩展信息数据包发往服务器,以扰乱服务器的正常接收,使服务器无法正确还原原始信息。实验测试了基于正弦函数的控制策略下发起伪装攻击,WireShark抓取的数据包结果如图7所示。
图7 伪装攻击下信息数据包抓取结果Fig. 7 Information packet capture result under masquerading attack
由图7可见,在正常端址敲门序列中夹杂着攻击者发送的恶意伪装数据包,但这些伪装数据包源端口不符合系统中的正弦函数规则,服务器端不受影响,依然可以还原出原始的文字信息。象限策略与正弦函数策略实验结果相同。
另外,根据式(6)和本测试实际环境可得,发送信息“hello world”时,客户端IP地址池中IP地址个数为12个,可用端口数为50 000个,服务端IP地址池个数为10个,可用端口数为1个,端址敲门序列长度为28。因此伪装攻击完全破译该信息的概率为:
(6)
说明本系统具有良好的抗伪装和抗破译性。
2) DoS攻击结果分析
使用Syn-Flood攻击作为DoS攻击,攻击速率为10 240包/s。由于系统服务器配有10个IP地址,每个IP地址都可以接收数据包,故测试时启动两个DoS攻击进程分别发送攻击包到服务器的两个IP地址上。DoS攻击参数如表3所示。
表3 DoS攻击参数Tab.3 DoS attack parameters
测试时发送字符长度为150 B的字符串,在基于正弦函数的扩展传输模式下,攻击者发起DoS攻击时,WireShark抓取数据包结果如图8所示。
图8 DoS攻击下文字信息数据包抓取结果Fig. 8 Result of text information packet capture under DoS attack
综上,尽管DoS攻击的数据包数量十分巨大,通过WireShark对IP地址的过滤功能,依旧能找到发送机密文字信息所用的数据包,恢复出传输的机密信息。但是当DoS攻击的持续时间增长或者单位时间内的攻击包增加时,系统资源将被耗尽,系统失去响应,直至主机死机自动重启。
4 结束语
针对现有的隐蔽通信方式,受端口敲门技术的启发,提出基于端址敲门的隐蔽通信系统,在端口敲门技术的基础上加入IP地址,构造一种IP加端口的复杂序列实现信息的高隐蔽性传输,提出基于正弦函数的扩展策略与基于象限的扩展策略端口确认规则。实验结果表明,该系统能够高效隐蔽的进行各种类型机密信息的传输,并具有很好的抗攻击效果,能够在一定程度上保护通信双方系统的安全,为随后的信息隐蔽通信提供了新的解决方案。下一步将考虑在信息扩展传输方面与网络跳变服务相结合,通过不断改变通信双方的端址信息,在保证系统隐蔽性的基础上进一步提高其抗DoS攻击能力,构建一种基于主动网络防御的隐蔽通信系统。