网络隐蔽通道技术研究与实现

2018-01-25 17:24高方华
科教导刊·电子版 2017年36期
关键词:网络通信

高方华

摘 要 网络中的隐蔽通道技术被广泛应用于网络攻击,已成为影响网络安全的重要来源之一。TCP/IP模型中的网络层、传输层、应用层,甚至物理层上的很多协议都可以用来构建网络隐蔽通道,加上网络隐蔽通道的隐蔽性,使得许多入侵检测系统很难检测到该通道的存在。本文在分析网络隐蔽通道特性及常见建立方法的基础上,提出了使用ICMP协议建立隐蔽通道的方法,并给出了具体的设计过程。

关键词 隐蔽通道 网络通信 ICMP协议

中图分类号:TP393.08 文献标识码:A

0引言

网络中的信息资源给人们的生活和工作带来了极大的便利,而其安全问题也越来越受到广泛的关注。在进行网络攻击时,由于网络监控系统的应用,建立一条新的链接用于数据窃取是极不现实的,因此大部分网络攻击者采用了隐蔽通道技术。在正常网络通信信道中建立可能的隐蔽通道,用于传递隐蔽信息,甚至携带病毒,利用其隐蔽性能够一定程度上绕过穿透防火墙,并躲避入侵检测系统的检测。

网络隐蔽通道对网络中的数据安全,甚至硬件都产生威胁。因此,我们必须从本質上分析网络隐蔽通道的特性及其构建原理,以减少甚至杜绝其带来的危害。

1网络隐蔽通道技术概述

1.1隐蔽通道的概念

相对于网络隐蔽通道而言,传统上把隐蔽通道定义限定在系统内部,前提是两个通信实体间必须要有共享资源,才能够建立隐蔽通道。随着网络与通信技术的发展,这种传统的定义呈现出狭隘的一面。为更好的描述网络隐蔽通道的概念,我们把整个网络看做是一个由通信设备和通信链路组成的计算机系统,网络中任何设备和数据信息都是这个系统的一部分资源。这样,就可以将隐蔽通道的概念扩展到网络中。为不失广泛性,任何未经允许或者通过非正常通信手段在网络中进行数据信息传递的通道都可被称为网络隐蔽通道。

网络隐蔽通道是一个牵扯到数据通信、网络安全及信息计算的复杂领域,其研究已成为网络安全领域中热点之一。在网络隐蔽通道中,数据通过信息隐藏或者改写的方式隐蔽在所传递的报文中,而报文的未用字段、填充字段以及报文收发的时间特性等都可被作为信息的隐蔽处。

1.2网络隐蔽通道构建的常见方法

网络隐蔽通道的构建主要是利用网络协议漏洞或者报文的时间特性来建立,其常见方法如下:

利用未用或保留字段建立隐蔽通道:由于网络检测系统一般不会对保留字段和未用字段进行检查,因此网络攻击者可将要传递的信息隐蔽在报文中未用的字段或者保留字段中,例如:IP报头的TOS字段和DF字段均可用于隐蔽信息的传输。

利用扩展和填充字段建立隐蔽通道:由于大部分网络协议都支持对报文的扩展,以满足网络通信中的特殊需求,而扩展方式却很少有明确的定义。因此,网络攻击者可以对某协议报文进行自行扩展,将信息作为填充内容隐蔽到填充字段中,从而建立网络隐蔽通道。

在协议规范允许下,对报文相关字段或者负载大小进行调制来隐蔽信息的传输,以此来建立网络隐蔽通道。

利用报文的收发时间特性,通过调整正常数据包的发送接收时间来传递隐蔽信息,从而建立网络隐蔽通道。

其他方式建立隐蔽通道:例如,利用网络冲突检测机制或无线局域网的Traceback机制将信息隐蔽其中,这也是建立网络隐蔽通道的方法。

2基于ICMP协议的网络隐蔽通道实现

2.1利用Ping命令建立网络隐蔽通道

ICMP协议是网络中用于检测网络运行状况的一种重要手段。ICMP协议通过发送查询请求、收发应答包的的形式来对网络报文进行响应。Ping命令常用于检测网络是否连通,通常利用ICMP协议来实现,其工作示意见图1。

HOS A(源主机)向HOST B(目标主机)发送ICMP_ECHO请求命令时,在ICMP数据报头的负载部分(数据选项域)中,通过添加一些数据来反映网络的当前状况,例如,网络延时、网关地址等。当HOST B收到ICMP_ECHO命令请求后,返回ICMP RCHO REPLY应答命令,而HOST A请求数据包中的负载数据被原封不动的返回。通常情况下,防火墙和网络检测系统都不会检查ping命令数据包中的负载部分内容,网络攻击者可以轻易的将要发送的数据信息隐蔽在其中,从而建立了一条隐蔽的通道。

2.2 ICMP隐蔽通道的实现

笔者在Windows系统下,采用C++环境实现基于ICMP协议的网络隐蔽通道的建立。文中要实现基于ICMP协议的网络隐蔽通道,首先要选择Raw Socket类型,并指明采用的是ICMP协议;其次,在构造ICMP发送或应答数据包前要进行准确计算校验和,以保证网络传输中数据的准确性。Imcp_hdr结构是本设计采用的数据结构,与建立网络隐蔽通道有着密切的关系,下面对该结构中的几个域分量做出说明:(1) Type域分量用于指明ICMP报文的类型,其域值决定了其余域分量中的数据格式。(2) Code域分量用于对type域分量做进一步的说明。(3) Checksum域分量表示校验和,在本文设计中,该域分量初始值为0,而这些初始值在网络数据传输前会被校验码取代。(4) Echo域分量用于表示ICMP数据包中ID域的内容。在建立网络隐蔽通道的过程中,收发双方事先对ID域的值进行约定,若一方主机接收到的ICMP数据包中ID域值不是事先约定值,则表明这个ICMP报文不是来自于构建的网络隐蔽通道。

根据上述定义和说明,构造ICMP报文的Imcp_hdr数据结构,并对数据包中的负载域进行数据填充。然后采用动态加密算法的对负载域中的数据进行加密,加密算法如下:

AnsiString rs; int i,l; unsigned char c,sc;

l=s.Length(); rs="";endprint

for(i=0;i

{ sc=char(0x1a+i%3); c=s.c_str()[i]; c=c^sc; rs=rs+char(c);}

return rs;

把经过动态加密算法加密后的隐蔽到ICMP数据报中的负载部分,以建立网络隐蔽通道,建立过程代码如下:

void Fill_ICMP_Data(char*pICMPData,int nDataSize) //填充隐蔽数据

{ ICMPHEADER*pICMPHdr;

Char*pDataPart; pICMPHdr=(ICMPHEADER*)pICMPData;

pICMPHdr->i_type=ICMP_ECHO;

pICMPHdr->i_code=0;

pICMPHdr->i_id=(USHORT)GetCurrentProcessId();

pICMPHdr->i_seq=0;

pDataPart=pICMPData+sizeof(ICMPHEADER);

char*s1=Edit5->Text.c_str();

memcpy(pDataPart,s1,nDataSize-sizeof(ICMPHEADER)); }

在经过构造ICMP报文数据结构、动态加密数据、在ICMP负载部分隐蔽数据等过程后,还需要进行初始化、建立连接、传输隐蔽数据、断开连接等过程,在此不再一一赘述。

2.3网络隐蔽通道传输实例分析

经过上述设计,建立了基于ICMP协议的网络隐蔽通道。运行本文程序,并使用网络嗅探器Tcpdump对构建的网络隐蔽通道中传输的数据包进行监测,抓取到的一个ICMP數据包的内容如图2所示:

对图2中的ICMP数据包进行分析可知:(1)“08”为ICMP报文的类型type;(2)“00”为ICMP报文的code域值;(3)“52 19”为ICMP数报文的Checksum域值;(4)“98 04”为ICMP报文的ID标识;(5)“09 00”为ICMP报文序列号;(6)“bf 99 9d 00”为ICMP报文的时间戳;(7)“79 74 71 6a 6e 68 7f 69 6f 79 72 79 74 78 79 2b”为ICMP报文的负载域填充数据内容。

在上述分析中,结果(7)为经过动态加密算法加密后的数据,即隐蔽通道传输的隐蔽数据。由3.2节给出的动态加密算法可知,隐蔽数据在加密前的原始字符串为“computerscience1”。由于笔者设计的基于ICMP协议的网络隐蔽通道,是在自己组建的虚拟网络中实现的,且未考虑防火墙的影响,因此,文中方法在实际网络部署环境下的实现与应用还需进一步探讨。

3结语

网络隐蔽通道已成为影响网络安全的主要来源之一,因此,我们要了解网络隐蔽通道技术的概念,并掌握常见的网络隐蔽通道建立方法。由于大部分网络检测系统认为基于ICMP协议的数据是良性数据流,不检测ICMP数据包中的数据域内容,因此网络攻击者很容易将生成的任意信息隐蔽到ICMP报文中的有效负载中。基于此,本文给出了基于ICMP协议的网络隐蔽通道实现过程,并对建立的网络隐蔽通道传输实例进行了分析。

猜你喜欢
网络通信
基于NoC架构的网络通信抗干扰方法研究
基于网络通信的智能照明系统设计
基于CAN总线的网络通信信道的建模与研究
移动计算机网络通信技术研究
远程网络通信中安全监测平台设计
计算机网络通信常见问题与技术发展研究
网络通信中信息隐藏技术的应用
基于网络通信的校园智能音箱设计
谈计算机网络通信常见问题及技术发展
汽车检测控制系统网络通信技术分析