当前位置:首页 > 嵌入式 > 嵌入式教程

摘 要: 针对目前HTTP隐蔽通道带宽小和容易被检测的弱点,提出一种基于HTTP协议的跳频隐蔽通道(FHCC_HTTP)技术。介绍了多种基于HTTP协议的隐蔽通道构建方法,在此基础上提出了基于跳频原理的HTTP隐蔽通道技术的设计和实现。最后对文件隐秘性、文件传输时间进行了分析和仿真测试,结果表明采用FHCC_HTTP隐蔽通道的网络流量更贴近正常用户浏览网页时的网络流量,可有效地避开IDS的检测,隐秘性好。同时由于FHCC_HTTP切换多种隐蔽通道构建方法,文件传输时间和隐蔽通道带宽较RwwwShell有明显改善。
关键词: 跳频; 隐蔽通道; HTTP; 隐秘性

 隐蔽通道是信息隐藏的一个重要分支,它最初由Lampson提出,Lampson在“关于限制问题注释”论文中这样定义隐蔽通道:“如果一个通道既不是设计用于通信,也不是用于传递信息,则称该通道为隐蔽通道”。因为隐蔽通道利用了系统原本不用于数据传送的资源来传送数据,所以它能在系统安全机制的监控之下将秘密信息外泄。目前常见的网络隐蔽通道多构建在TCP/IP的应用层上,在该层可被用来构建隐蔽通道的协议有超文本传输协议HTTP(Hypertext Transfer Protocol)、简单邮件传输协议SMTP(Simple Mail Transfer Protocol)、域名解析系统DNS(Domain Name System)。由于基于HTTP的隐蔽通道不易被屏蔽且具有较高的带宽,故成为近年来信息隐藏研究的热点,有Reverse www Shell、Firepass、Cooking channels和Cctt等多种基于HTTP的隐蔽通道技术被提出。
RwwwShell 由THCs van Hauser 用Perl 开发,其特点是数据包具有HTTP的特点,且数据传送采用HTTP GET命令,防火墙会将这种数据看作是合法信息。其缺点是响应时间较长,隐蔽通道带宽小。Firepass可以穿透防火墙,原理是将信息隐藏到合法的HTTP POST 请求中,然而其缺点也是明显的:由于正常用户在浏览网页时,通常不会频繁地使用HTTP POST 请求,因此这种方法容易被入侵检测系统IDS(Intrusion Detection System)检测[1]。鉴于上述技术存在隐蔽通道带宽小和容易被检测的弱点,本文提出一种基于HTTP协议的跳频隐蔽通道FHCC_HTTP(Frequency Hopping Convert Channel based on HTTP)技术。该技术从多种基于HTTP协议隐蔽通道构建方法入手,进而研究了如何通过切换多种隐蔽通道构建方法,使网络通信看起来像是正常用户浏览网页,从而避开IDS的监测。
1 HTTP协议隐蔽通道构建方法
1.1 HTTP请求信息隐藏方法
 (1)GET 请求URI信息隐藏方法
 当用户在浏览网页时,HTTP GET请求是最常用到的命令,GET方法从服务器指定位置请求一个文件。它是文件检索的主要方式,服务器通过一定方式得到GET请求的应答结果,并且返回给客户端。在客户端使用GET命令发出请求后,服务器返回一个包括状态行、头和客户端请求的数据的应答[2]。
 对于GET方法来说,适合用来携带隐蔽通道数据的域有:URI域和script-URI域。可将信息隐藏在HTTP GET请求的URI域,URI的绝对路径必须能够被作为请求URI来传递,同时URI的网络地址必须在头域Host中进行传递。
 (2)GET 请求CGI信息隐藏方法
 CGI(Common Getaway Interface)协议中的script-URI 也是一个适合传送秘密信息的域。若欲传送信息“our covert channel start”,可以将信息隐藏在script-URI 中,传送出如下的“GET /test?our=covert&channel=start”。
 混合使用HTTP GET 请求URI与HTTP GET 请求CGI两种信息隐藏方法,可以使利用GET方法所请求的URI更贴近真正使用者浏览网页时的行为,就算IDS针对特定字段作检测,也不容易发生异常。
 (3)GET Referer URI信息隐藏方法
 在HTTP 协议中,Referer 字段指定用户端最后一个页面的URI地址。例如,如果用户访问页面A,然后点击从页面A到B的链接,页面B的HTTP请求会包括一个Referer字段,该字段会包含这样的信息“这个请求来自页面A”。因此可利用前面所述的URI信息隐藏方法,将秘密信息藏入Referer字段。
 (4)HTTP请求Cookie 信息隐藏方法
 根据RFC 2109所述“the name of the state information(“cookie”)is NAME,and its value is VALUE.(…) The VALUE is opaque to the user agent and may be anything the origin server chooses to send,(…)”,这表示在HTTP协议中,Cookie是可以由用户自行定义的,因此可将信息隐藏在Cookie中[3]。
 (5)POST方法
 从客户端向服务器端传送数据,在要求服务器和CGI作进一步处理时就会用到POST方法。该方法主要用于发送HTML文本中FORM的内容,让CGI处理。在POST方法中,可以用来携带隐蔽通道数据的域有:URI、消息头和请求消息体。HTTP POST请求信息隐藏方法的好处是当存放信息到消息体,基本上是没有长度限制的。然而在一般使用者浏览网页时,使用到HTTP POST 请求的机会相对较小,若是在隐蔽通道传递过程中,HTTP POST请求出现次数过于频繁,将被IDS发现。
1.2 HTTP响应信息隐藏方法
 (1)HTTP响应消息体信息隐藏方法
 HTTP响应消息体信息隐藏方法将信息隐藏在HTTP协议的响应消息体中。例如,若要传递“our covert channel start”,可以直接在响应消息体中加入“our covert channel start”的信息。
 (2)HTTP Set Cookie方法
 HTTP Set Cookie 信息隐藏方法将信息隐藏在服务器到客户端的响应表头中的Set Cookie 域。而且HTTP Set Cookie信息隐藏方法可以被允许频繁传送不同的Set Cookie值。如在浏览购物网站时,若频繁地更换购物车里的内容,将会使服务器一直传送不同的Set Cookie 值给客户端。因此频繁使用HTTP Set Cookie 信息隐藏方法,不会被IDS视为异常。
 (3)响应文件信息隐藏方法
当用户浏览网页时,通常会请求服务器回传某些文件,因此可以将信息隐藏在响应文件中进行传输。可以利用Lee 等人所提出的方法,将要传送的信息隐藏在JPEG文件中,再将文件回传给客户端。
2 FHCC_HTTP设计与实现
 FHCC技术采用了跳频通信的思想,所谓跳频,是指用伪随机码序列构成跳频指令来控制频率合成器,并在多个频率中进行选择的移频键控。跳频通信要求提供几百个,甚至上万个频率供随机选择,这使得跳频技术成为战术通信的首选抗干扰技术。FHCC技术将不同信息隐藏方法视为不同的频率,依据事先定义好的“跳频序列”交替切换五种请求隐藏方法和三种响应隐藏方法,使网络通信看起来像是正常用户浏览网页,从而避开IDS的监测。
2.1 FHCC_HTTP 的设计
 如图1所示,请求方法1为HTTP GET请求CGI信息隐藏方法,请求方法2 为HTTP GET请求URI信息隐藏方法,请求方法3 为HTTP GET Referer URI信息隐藏方法,请求方法4为请求Cookie信息隐藏方法,请求方法5为HTTP POST请求信息隐藏方法;响应方法1 为HTTP响应消息体信息隐藏方法,响应方法2为响应文件信息隐藏方法,响应方法3为HTTP Set Cookie 信息隐藏方法。

 双方首先通过安全通道得到完全一致的跳频序列,当第一次进行信息传递时,根据请求序列,第一个数字4为请求Cookie信息隐藏方法,表示FHCC_HTTP Client将采用HTTP POST请求信息隐藏方法传送信息给FHCC_HTTP Server;而根据响应序列,数字3为HTTP Set Cookie信息隐藏方法,表示FHCC_HTTP Server回传信息时将采用HTTP Set Cookie 信息隐藏方法,以此类推。
2.2 FHCC_HTTP 实现
 FHCC_HTTP基于C/S模式,用Perl语言编程实现,Perl 语言有很好的网络与字串处理能力,在实现时加入多种信息隐藏方法,并加入跳频序列实现。
 (1) 连接控制的实现
 在Client每次提出连接请求时,会让Client先送出一组Client与Server事先定义好的GET请求,如“GET/covert_channel_server.cgi?start”,当Server收到这组GET请求,才允许Client此次的连接。
 在FHCC_HTTP中,定义X-session字段和X-counter字段,包含在每次请求中,用于控制Client 与Server的连接。X-session 表示不同的会话,每次会话中不同的请求用递增的X-counter加以区分[4]。另外仅利用X-session 字段的存在与否来判断此次请求是否为Covert Channel请求并不能防范replay attack 之类的攻击,因此在实现时,将利用X-counter 值,来确认每次的请求,若是这次的X-counter值没有比上一个请求的X-counter 值加1,FHCC_HTTP将不会把这次请求视为Covert Channel连接请求。
 数据的同步和差错控制主要是通过数据包的编号sequence、数据包的个数sendcount和receivecount来实现的。Client通过发送CHECK-NUM-AND- ABSTRACT sendcount messageabstract,Server收到后与本地的receivecount和messageabstract进行比较,如果一致则返回CHECK-WRIGHT;如果丢包就返回CHECK-ERROR-COUNT N…,则要求重发相应的数据包;如果摘要不一致,就返回CHECK-ERROR- ABSTRACT要求全部重发。
 (2)跳频序列的实现
 依据网络特性的不同,可调整FHCC_HTTP的五种信息隐藏方法的比率,从而使信息隐藏方法比率最适合当下的网络环境。HTTP CC Client 与HTTP CC Server 里定义了多组跳频序列,如在HTTP CC Client 事先定义了五十组跳频序列,在HTTP CC Server 也定义了相同的五十组跳频序列,假设HTTP CC Client 选定了第七组跳频序列,则HTTP CC Client 会先传送一组事先定义好的GET请求:“GET/covert_channel_server.cgi?start7”,请求HTTP CC Server 开始建立此次隐蔽通道并且告知HTTP CC Server 这次隐蔽通道使用第七组跳频序列。
3 仿真实验及结果分析
3.1 隐秘性
 隐秘性是隐蔽通道的一个重要参数,目前检测隐蔽通道的最有效的方法是基于行为模式的检测方式。首先利用统计、概率或神经网络等方法建立正常用户的行为模型,将目前的网络流量与正常行为模型进行对比,从而发现可能的异常行为。因此只要使所建立的隐蔽通道的网络流量贴近正常用户的行为模式,将会有效地避开IDS的检测。
 以某互联网网页服务器为例,统计出正常用户使用网页的行为模式。如图2所示,通过统计2008年底到2009年初大约一千万条记录发现,大约90%以上的请求属于文件请求(也就是GET URI),且文件类型以jpg与gif类型为最多,因此需调高“跳频序列”中的HTTP GET请求URI信息隐藏方法和响应文件信息隐藏方法(将信息藏入jpg和gif类型的文件中)的使用频率,这样可使隐蔽通道的网络流量更贴近正常用户浏览网页时的网络流量。

3.2 文件传输时间
 测试三种传送模式 (不使用隐蔽通道、使用FHCC_TTP隐蔽通道和使用RwwwShell隐蔽通道)的文件传输时间。测试在100 MB的局域网环境下进行,分别传送10 KB、100 KB 以及1 MB 的文件,测试结果如图3所示。
 由图3可知,在100 MB的网络中,不使用隐蔽通道传送上述三类文件所需时间都小于1 s。接着利用FHCC_HTTP传送文件,跳频序列A指将每种信息隐藏方法比率都调整为25%,跳频序列B将跳频序列调整为HTTP GET 请求URI 信息隐藏方法比率的90%,HTTP GET请求CGI 信息隐藏方法与HTTP POST 请求信息隐藏方法各为5%。可发现采用跳频序列B数据传输时间增长,这是因为HTTP POST 请求信息隐藏方法的使用量减少,而利用HTTP POST 请求信息隐藏效率最高,因此每减少一次HTTP POST 请求信息隐藏方法,就必须以多次HTTP GET 请求URI 信息隐藏方法或HTTP GET 请求CGI信息隐藏方法来弥补,因此总请求次数大幅增加,造成传输时间增长。最后采用RwwwShell传送文件,因为RwwwShell的数据传送完全采用HTTP GET命令,因此其响应时间最长,隐蔽通道带宽最小。

 本文以HTTP下的隐蔽通道为研究对象,设计并实现了一种基于跳频的新的HTTP隐蔽通道技术。该技术以HTTP协议为载体,通过切换多种隐蔽通道构建方法,使网络通信看起来像是正常用户浏览网页,以达到穿透防火墙和躲避入侵检测的目的。
HTTP隐蔽通道已经对防火墙和IDS系统提出了严峻的挑战;因此怎样检测HTTP隐蔽通道成为以后工作的重点[5]。目前已经发现了一些方法可以检测HTTP隐蔽通道,但是怎样将新的方法做成软件并且融合到现有的防火墙技术中去,将是今后工作的重点。
参考文献
[1] TRABELSI Z. Traceroute based IP channel for sending hidden short messages. Porc.Advaces in information and Computer Security (IWSEC),Oct 2006:421-36.
[2] Wikipedia, Hypertext Transfer Protocol,http://en.wikipedia.org/wiki/HTTP.
[3] CASTRO S. Cooking channels. 2006,http://grayworld.net/pr_cook_cc.shtml.

[4] Exploitation of data streams authorized by a network access control system for arbitrary data transfers:tunneling and covert channels over the HTTP protocol-v1.0-Alex Dyatlov &Simon Castro. June 2003.URL:http://gray-world.net/projects/papers/Covert_paper.txt
[5] CASTRO S. Covert channel and tunneling over the HTTP protocol detection: GW implementation theoretical design. 2003,http://gray-world.net/projects/papers/html/cctde.html

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

随着我国集成电路国产化进程的加深、下游应用领域的蓬勃发展以及国内先进封测龙头企业工艺技术的不断进步,先进封测行业市场空间将进一步扩大。

关键字: 集成电路 技术研究

随着社会经济的不断发展进步,科技的不断飞升,在新时代的背景下网络通信已经成了人们最为常 用的科学技术产品之一,由于生活水平得到了提高人们在日常的追求上也发生着变化,而对于通信 的产品可以说是有着日新月异的变化,人们在网络...

关键字: 通信 协议 控制

据路透社等海外媒体报道,美国商务部官员Wilbur Ross在4月16日透露,因未履行和解协定中的部分协议,美国商务部将禁止美国企业向中兴通讯销售元器件,时间有可能长达7年。该消息公布之后,国内部分产业人士认为是假消息,...

关键字: 协议 元器件 中兴通讯

显然这是目前存在的现状,蓝牙Mesh、Zigbee等一些标准共存于物联网智能家居江湖,但又谁也取代不了谁。正如周巍所说:“没有任何一个标准能在一个应用层垄断,尽管小米阿里在主推蓝牙Mesh,华为在推Zigbee,但未来迟...

关键字: 物联网 协议 通讯

TCP 是基于连接的数据流的协议,先建立连接再进行通信,而且在通信过程中会检查数据是否发送成功。优点就是保证数据的完整性和准确性,缺点就是效率较低。

关键字: TCP 数据流 协议

最近某项目采用以太网通信,实践起来有些奇怪,好像设计成只能应答某类计算机的ICMP(ping)命令, 某类计算机指的是Windows特定系统,其他系统发送ping都不能正确识别。

关键字: 嵌入式Linux FPGA 协议

DFP 是什么? 稳控科技编写的一套数据转发规则, 取自“自由转发协议 FFP(Free Forward Protocol)” ,或者 DFP(DoubleF Protocol), DF 也可以理解为 Datas Fo...

关键字: 协议 转发数据 应用实例 中继 网关

针对近年来网关在4g,5g方面的应用的一些介绍。

关键字: 无线物联网 协议

在数据通信网中,按一种链路协议的技术要求连接两个或多个数据站的电信设施,称为数据链路,简称数据链。数据链路(data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路...

关键字: 数据链路 物理线路 协议

分组数据协议是移动通信用户在发送和接收分组数据时应用的协议,内容包括发送和接收数据双方用户的IP地址以及服务质量参数的规定值。

关键字: 分组数据 IP 协议
关闭
关闭