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

摘 要: 针对目前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

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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭