隐蔽通道:给定一个强制安全策略模型M和它在一个操作系统中的解释I(M),I(M)中两个主体I(Si)和I(Sj)之间的任何潜在通信都是隐蔽的,当且仅当模型M中的相应主体Si和Sj之间的任何通信在M中都是非法的。(系统中不受安全策略控制的,违反安全策略的信息泄露路径) 隐蔽通道主要有两种类型:存储通道和定时通道。如果一个进程直接或间接地写一个存储单元,另一个进程直接或间接地读该存储单元,则称这种通道为隐蔽存储通道。如果一个进程通过调节它对系统资源的使用,影响另外一个进程观察到的真实响应时间,实现一个进程向另一个进程传递信息,则称这种通道为隐蔽定时通道。
RwwwShell 由THCs van Hauser 用Perl 开发,其特点是数据包具有HTTP的特点,且数据传送采用HTTP GET命令,防火墙会将这种数据看作是合法信息。其缺点是响应时间较长,隐蔽通道带宽小。Firepass可以穿透防火墙,原理是将信息隐藏到合法的HTTP POST 请求中,然而其缺点也是明显的:由于正常用户在浏览网页时,通常不会频繁地使用HTTP POST 请求,当越来越多的公司将其核心业务向互联网转移的时候,网络安全作为一个无法回避的问题摆在人们面前。公司一般采用防火墙作为安全的第一道防线。而随着攻击者技能的日趋成熟,攻击工具与手法的日趋复杂多样,单纯的防火墙策略已经无法满足对安全高度敏感的部门的需要,网络的防卫必须采用一种纵深的、多样的手段。与此同时,目前的网络环境也变得越来越复杂,各式各样的复杂的设备,需要不断升级、补漏的系统使得网络管理员的工作不断加重,不经意的疏忽便有可能造成重大的安全隐患。在这种情况下,入侵检测系统IDS(Intrusion Detection System)就成了构建网络安全体系中不可或缺的组成部分。IDS是英文"Intrusion Detection Systems"的缩写,中文意思是"入侵检测系统".专业上讲就是依照一定的安全策略,通过软、硬件,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。
1 HTTP协议隐蔽通道构建方法
1.1 HTTP请求信息隐藏方法
(1)GET 请求URI信息隐藏方法
当用户在浏览网页时,HTTP GET请求是最常用到的命令,GET方法从服务器指定位置请求一个文件。它是文件检索的主要方式,服务器通过一定方式得到GET请求的应答结果,并且返回给客户端。在客户端使用GET命令发出请求后,服务器返回一个包括状态行、头和客户端请求的数据的应答。
HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,比如HTML文件和图像。(我们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在 http和其他几种网络协议多个中间层,比如代理,网关,或者隧道(tunnels)。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。
对于GET方法来说,适合用来携带隐蔽通道数据的域有:URI域和script-URI域。可将信息隐藏在HTTP GET请求的URI域,URI的绝对路径必须能够被作为请求URI来传递,同时URI的网络地址必须在头域Host中进行传递。
(2)GET 请求CGI信息隐藏方法
Common Gateway Interface,简称CGI.在物理上是一段程序,运行在服务器上,提供同客户端 HTML页面的接口。这样说大概还不好理解。那么我们看一个实际例子: 现在的个人主页上大部分都有一个留言本。留言本的工作是这样的:先由用户在客户端输入一些信息,如名字之类的东西。接着用户按一下"留言"(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的cgi程序中,于是cgi程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后cgi程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览器里将看到"留言结束"的字样。整个过程结束。
混合使用HTTP GET 请求URI与HTTP GET 请求CGI两种信息隐藏方法,可以使利用GET方法所请求的URI更贴近真正使用者浏览网页时的行为,就算IDS针对特定字段作检测,也不容易发生异常。
(3)GET Referer URI信息隐藏方法
在HTTP 协议中,Referer 字段指定用户端最后一个页面的URI地址。例如,如果用户访问页面A,然后点击从页面A到B的链接,页面B的HTTP请求会包括一个Referer字段,该字段会包含这样的信息"这个请求来自页面A".
(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请求信息隐藏方法的好处是当存放信息到消息体,基本上是没有长度限制的。
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 值给客户端。
(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信息隐藏方法。
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 值,来确认每次的请求。
数据的同步和差错控制主要是通过数据包的编号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 隐秘性
隐秘性是隐蔽通道的一个重要参数,目前检测隐蔽通道的最有效的方法是基于行为模式的检测方式。首先利用统计、概率或神经网络等方法建立正常用户的行为模型,将目前的网络流量与正常行为模型进行对比,从而发现可能的异常行为。
以某互联网网页服务器为例,统计出正常用户使用网页的行为模式。如图2所示,通过统计2008年底到2009年初大约一千万条记录发现,大约90%以上的请求属于文件请求(也就是GET URI),且文件类型以jpg与gif类型为最多,因此需调高"跳频序列"中的HTTP GET请求URI信息隐藏方法和响应文件信息隐藏方法的使用频率。
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信息隐藏方法来弥补,因此总请求次数大幅增加,造成传输时间增长。
本文以HTTP下的隐蔽通道为研究对象,设计并实现了一种基于跳频的新的HTTP隐蔽通道技术。该技术以HTTP协议为载体,通过切换多种隐蔽通道构建方法,使网络通信看起来像是正常用户浏览网页,以达到穿透防火墙和躲避入侵检测的目的。
HTTP隐蔽通道已经对防火墙和IDS系统提出了严峻的挑战;因此怎样检测HTTP隐蔽通道成为以后工作的重点目前已经发现了一些方法可以检测HTTP隐蔽通道,但是怎样将新的方法做成软件并且融合到现有的防火墙技术中去,将是今后工作的重点。
全部0条评论
快来发表一下你的评论吧 !