基于数据包时间间隔的隐蔽通道实现及检测方法研究*

2018-01-19 05:31姬国珍谭全福
通信技术 2018年1期
关键词:接收端门限数据包

姬国珍,谭全福

(中国电子科技集团公司第三十研究所,四川 成都 610041)

0 引 言

网络在给人们带来方便的同时,也备受攻击者的青睐。网络通信面临各类攻击,攻击者利用公开的网络协议和数据隐蔽传输恶意通信数据(恶意代码﹑病毒﹑木马等),极大地增加了通信的隐蔽性。同时,攻击者可以绕过杀毒软件﹑IPS等网络防护系统,对网络信息的安全性和秘密性构成了严重威胁。

网络隐蔽通信的基本方式是以网络数据流为载体,采用隐写术[1]来构建隐蔽信道。隐蔽信道(Covert Channel)是指采用特殊编译码使不合法的信息流(通常为秘密信息)逃避常规安全控制机制的检测,在普通系统中形成一个秘密的传输通道传给未授权者。网络隐蔽通信中的隐蔽信道可分为两种模式,即存储型隐蔽信道(Storage Covert Channel)和时分型隐蔽信道(Timing Covert Channel)。存储型隐蔽信道是指将秘密信息嵌入网络数据包的某些未用位或者载荷中,随着网络包一起发送出去;时分型隐蔽信道是指将秘密信息调制进网络数据包的发包间隔﹑发包速率﹑发包次序等特征中进行传递。在时分型隐蔽信道模型中,存在一种利用时间间隔传递信息的隐蔽通道构建方法。在网络中存在各种不同数据,这些不同类型的数据通过全球标准的TCP/IP协议或者一些专有协议来完成相互间通信。在网络的大量流量中存在大量数据包,这些数据包的时间间隔不尽相同。利用这一特性可以构建隐蔽通道。因此,本文通过分析基于时间间隔的隐蔽通道原理,实现了一种利用时间间隔传递信息的隐蔽通道构建方法。

1 隐蔽通道构建原理及方法

1.1 构建原理

由于受网络设备性能﹑网络时延以及带宽等各方面影响,数据包之间存在一定的时间间隔。通过对来自源主机和目的主机的数据包进行抓包统计分析,可以看到这些数据包的时间间隔在一个范围内。假定这些数据包的最长时间间隔[2]为I,那么网络数据包时间间隔集合为[0,I ]。将这个区间划分为不同长度的子区间,如[0,I1],[0,I2]…[0,In],这样数据包时间间隔就被划分为n个区间,n一般取值为2或4。当n=2时,前后两个数据包之间的时间间隔可以携带1 bit的隐藏信息,非0即1;当n=4时,前后两个数据包的时间间隔可以携带2 bit的隐藏信息,即00﹑01﹑10﹑11。当数据包的时间间隔落在这n个区间中的某一个时,就可以通过n来表征前后两个数据包的时间间隔。

1.2 构建方法

对网络中源主机到目的主机某个特定协议的数据包进行统计分析,通过网络抓包软件对该协议的数据包传输时延进行统计分析。假设前后数据包时间间隔最大值为I,将最大时间间隔I进行N(N=2n,n=1,2)等份,n的大小决定了一个时间间隔可编码数据的大小。当N为2时,一个时间间隔可以携带1 bit信息;当N为4时,一个时间间隔可以携带2 bit信息。这样,一个ASCII字符就可以通过(8/n)+1个数据包的时间间隔来承载。在发送端根据一个字符编码值设置数据包的时间间隔(如数字1的ASCII码为00110001,采用2位编码方式,数字1就可以通过发送5个连续的数据包传送来实现隐蔽信息的承载)。在接收端根据接收到的数据包之间的时间间隔进行相应的二进制信息还原,四个连续的时间间隔对应一个字符,对接收的所有数据包进行编码,就可以还原发端的所有内容。

2 设计与实现

选取基于时间间隔的隐蔽通道,首先选取常见的ICMP。该协议是常见的通道检测协议,无需建立三次握手,一般网络不会过滤该数据报文。

基于时间间隔的隐蔽通道构建需要以下三个步骤。

(1)构建数据包:利用Winpcap驱动接口程序构建ping Request数据包。该数据包需要与操作系统系统原有ping请求数据包有所区别。

(2)定时发送数据包:发送端按照一定时间间隔(时间间隔根据当前待传送数据的二进制编码来判断)定时发包。

(3)接收检测数据包:接收端对数据包进行接收检测,并对时间间隔进行编码,还原隐蔽数据。

为了简单,将最大时间间隔分为2个区间。对于是否满足时间间隔门限值,分别对应为二进制数值的1和0。这样传输m个字符就需要8m+1个数据包发包实现。下面就隐蔽通道构建过程中的这三个部分进行详细描述。

2.1 构建数据包

利用Winpcap接口发送数据包为原始数据包,包括以太网头部﹑IP头部﹑ICMP头部以及填充字段等三部分。原始数据包的封装结构如图1所示。

图1 ICMP协议原始数据包结构

其中,以太网头部14个字节包含6个字节的源MAC地址﹑6字节的目的MAC地址以及2字节的协议类型标识。IP头部需要填充源IP地址和目的IP地址,而其余字节可以根据一般ping数据包的相关内容填充。

构建数据包采用最常用的ping Reqeust数据包,需要对构建的数据包某些字节做一些改动,以便区分网络中的原有数据包。ICMP协议[3]的数据包格式如图2所示。

图2 ICMP回显请求与应答数据包

回显请求数据包构建方法如下:类型填充为0,代码字段为0x00表示回显请求,校验和字段需要根据ICMP协议头部和选项数据重新计算校验和。标识符ID用当前的进程号填充。序号初始值为0,后续数据包序号自增1。回显请求数据包选项数据用a到w之间的数据填充。

由于选项数据部分内容可以任意填充,目的主机收到该数据包后将类型字段改为0,并在响应报文中填写标识域和序列号域,选项域原封不动返回给请求端。因此,可以将选项字段的其中一个字节用来标识发送端的初始包和后续数据包。实现的方法是将初始数据包选项数据的第四个字节填充为0x00,后续其他数据包的选项字段的第四个字节填充为0x71。选项数据的其他字节填充为Windows系统下ping程序的填充数据,以起到隐蔽的作用。

2.2 定时发送数据包

下面讨论如何将构建好的数据包定时发送出去。延时发送数据包的关键在于时间间隔的确定。减少时间间隔会增加数据包接收检测的难度,同时也会增加接收检测的误码率;增加时间间隔则会降低传输信息的效率。因此,需要对数据包发包延时进行测试,以确定时间间隔门限。通过局域网内的两台Windows 7系统测试,确定20 ms是一个相对较好的时间间隔门限。

发送数据包的具体时间间隔是根据待发送的二进制码流决定。首先,需要将待发送的隐蔽信息转换为对应的二进制码流,假如每次发送1位,发送N个字符需要8N+1个数据包。第一个数据包为起始数据包,随后的每个数据包延时特定时间后发包。发送端的程序执行流程如图3所示。

延时器用来控制发送数据包的时间间隔,在整个系统中处于核心地址,影响着整个时间信道的数据传输速率和稳定性。简单的Sleep()函数的精度约在30 ms,使用它来做延时器效益太低,不满足时间隐蔽信道的要求。在精度要求较高的情况下,VC可以采用多媒体定时器函数DWORD timeGetTime(void),定时精度为毫秒级,返回从系统启动经过的毫秒数。利用该多媒体定时器可以很精确读出系统的当前时间,并且能够在非常精确的时间间隔内完成一个事件﹑函数或者过程的调用。本程序使用多媒体定时器函数timeGetTime(void),由于使用该函数是通过查询的方式进行定时控制的,所以应该建立定时循环控制定时事件。具体方法是:记录上一个发包时刻t2=timeGetTime();之后不断查询目前时刻t1=timeGetTime(),直到t1与t2之差为需要的时间间隔再发包,从而完成一次时间间隔内数据包的发送。

图3 发送端程序流程

2.3 接收检测数据包

接收端通过一个线程函数完成数据包的接收和处理。接收端程序处理流程如图4所示。

图4 接收端程序流程

接收端程序首先需要对接收到的数据包的协议字段进行判断,分析是否为自己发送的ping请求数据包。如果数据包不满足要求,则不作处理继续收包;满足条件,则继续判断是否为初始数据包,记录初始数据包的收包时刻t0,随后每次收包修改前一个数据包的收包时刻t1,并获取当前收包时刻t2。计算前后数据包发包时间间隔,将该时间间隔与时间间隔门限TI按照一定算法计算后判决输出编码信息0或1。对输出的编码信息进行存储,每8位编码数据对应输出一个字符。

由于数据包经过不同局域网和路由器后引起的网络时延不同,因此实际收包时间间隔与时间间隔门限TI存在较大误差。时间间隔判决是接收端程序要处理的难点,时间间隔门限可以通过多次测量取平均值获取。

对于局域网和经过路由器后引起的网络时延,需要通过网络发包测试。通过分别在局域网和经过路由器的网络内发送多个数据包测试网络延时,构建时间门限模型和网络延时补偿值δ(0<δ<TI)。当实际收包时间间隔在[TI-δ,TI+δ]范围内,则编码输出0或1。通过实际发包统计测试分析,将δ值放大,可以减少误码率,但会降低通信效率。因此,需要综合考虑确定δ值的范围。

3 试验结果及分析

图5是基于以上原理和方法利用MFC开发的软件。打开软件选择相应的网卡,即可获取本网卡对应的IP地址和MAC地址,输入远端IP地址,即可获取远端主机的MAC地址。设置时间间隔门限20 ms和待发送的文本数据点击发送,即可实现数据包的构建。程序实现中,当bit为0时,设置时延为时间间隔门限0.5TI;当bit为1时,设置时延为时间间隔门限1.5TI。发送端设置如图5所示。

图5 发送端软件设置

发端数据的网络抓包如图6所示。可以看到,数据包时间间隔有2 ms﹑15 ms﹑31 ms,在接收端按照判决条件(0≤Δt≤TI时输出0,TI<Δt<2TI时输出1)输出0或1,那么图6所示数据包之间的时间间隔2 ms﹑15 ms﹑31 ms﹑31 ms﹑15 ms﹑15 ms﹑15 ms﹑31 ms分别代表了0﹑0﹑1﹑1﹑0﹑0﹑0﹑1。接收端按照此方式进行编码,就可以还原传输信息的二进制比特流。

接收端数据接收和操作信息如图7所示。可以看到接收端只需要设置时间间隔门限20 ms并点击设置确认即可。为了提高传输的隐蔽性,可对传输数据包的时间间隔进行编码。编码信息在软件右侧的操作日志中显示。可以看到,编码信息的前8 bit分别为00110001,即十六进制0x31,对应的字符为‘1’。接口窗口内显示的是二进制码流编码后的文本信息。所有数据均可以无误传输,满足利用数据包属性时间间隔实现信息隐蔽传输的目的。

图6 数据发送后网络抓包

图7 接收端接收数据结果

4 检测方法及面临的问题

可以通过对网络通信数据流量进行大量抓包并统计分析,分别对不同的网络协议进行统计,分析各个网络数据包之间的特征属性与通常情况下的网络数据包之间的差异。网络数据包的延时特性由当时网络的状态决定,可以通过利用Matlab分析各种网络数据的延时特性。如果延时特性具有明显的特征,则需要进一步分析这些延时特征是否存在某种规律。如果存在的某种规律能被解码为具体的信息,则可能存在隐蔽通道。但是,由于网络数据流量非常大,想在海量数据中分析其中部分协议存在隐蔽通道,并判断是否传输隐蔽信息,则需要大量的分析工作。

5 结 语

本文分析了常见的两类隐蔽信道构建原理,实现了基于时间间隔的隐蔽通道,最后针对隐蔽通道检测,分析了检测方法和面临的瓶颈。下一步应该重点加强针对时间间隔隐蔽通道检测技术研究。

[1] 黄永峰,李松斌.网络隐蔽通信及其检测技术[M].北京:清华大学出版社,2016.

HUANG Yong-feng,LI Song-bin.Network Hiding Information and Detection Technology[M].Beijing:Tsinghua University Press,2016.

[2] 翟江涛.网络通信的信息隐藏技术研究[D].南京:南京理工大学,2008.

ZHAI Jiang-tao.A Study of Information Hiding Technology of Network Communication[D].Master Thesis of Nanjing University of Science and Technology,2008.

[3] 卢大航.基于网络协议的隐蔽通道研究与实现[J].计算机工程与应用,2003,39(02):183-186.

LU Da-hang.Research and Implementation of Covert Channel based on Network Protocol[J].Cumputer Engineering and Application,2003,39(02):183-186.

猜你喜欢
接收端门限数据包
二维隐蔽时间信道构建的研究*
基于扰动观察法的光通信接收端优化策略
基于规则的HEV逻辑门限控制策略
基于多接收线圈的无线电能传输系统优化研究
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
随机失效门限下指数退化轨道模型的分析与应用
VoLTE感知智能优化
手机无线充电收发设计
基于Neyman-Pearson准则的自适应门限干扰抑制算法*
C#串口高效可靠的接收方案设计