Httptunnel带来的安全问题
写到这里,我们可以想象一下,如果管理员完全信赖防火墙,那么在一个有这样隐患的的局域网中,会发生什么样的后果?
我们可以看到,多年以来,对防火墙的依赖也一直列在SANS的Top 10安全问题中。
既然如此,就很自然的会产生一个问题是:这种httptunnel行为能被发现吗?
首先我们想到的是使用入侵检测系统,在目前的网络安全设计中,防火墙加入侵检测系统是一种比较流行的安全联动配置,既然httptunnel绕过了防火墙,那么IDS系统呢?我们来测测看看。
在下面的测试中,我们将使用IDS系统是Snort,版本1.8.2。(请参阅参考资料)这可是大名鼎鼎的开放源代码的IDS系统,在它的说明中,被描述为一个轻量级的,可跨平台工作的入侵检测系统,在2001年12月英国的独立测试实验室NSS的评测中(请参阅参考资料),击败了包括商用IDS系统的所有对手,这些商用软件可是包括ISS,CISCO SECURE IDS,CA ETRUST,CYBERSAFE CENTRAX,NFR。有兴趣的读者还可以看这篇名为Open source mounts IDS challenge 的报道(请参阅参考资料)。
好,对Snort的大致介绍完毕,我们来看看结果吧,Snort对整个试验过程抓获的数据包产成了告警,如下:
[**] WEB-MISC whisker splice attack [**]
12/02-14:42:54.389175 client.yiming.com:51767-> server.yiming.com:80
TCP TTL:251 TOS:0x0 ID:3327 IpLen:20 DgmLen:42 DF
***AP*** Seq: 0x49CA0BA7 Ack: 0x5FD4DCE3 Win: 0x2238 TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
[**] WEB-MISC whisker splice attack [**]
12/02-14:43:03.195006 client.yiming.com:51767 -> server.yiming.com:80
TCP TTL:251 TOS:0x0 ID:3439 IpLen:20 DgmLen:41 DF
***AP*** Seq: 0x49CA0C20 Ack: 0x5FD4DCE3 Win: 0x2238 TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
[**] WEB-MISC whisker splice attack [**]
12/02-14:43:04.630268 client.yiming.com:51768-> server.yiming.com:80
TCP TTL:251 TOS:0x0 ID:3496 IpLen:20 DgmLen:41 DF
***AP*** Seq: 0x49CA0C4E Ack: 0x5FD4DCE3 Win: 0x2238 TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
我们看到snort对抓获的数据包产生了WEB-MISC whisker splice attack的告警,然而这种攻击并没有发生,同时snort对tunnel数据包没有察觉。这样snort就同时出现了IDS系统的两个问题,false positive,false negative。
这也很正常,因为这也是基于签名的IDS系统的通病,目前决大数IDS系统包括著名的商用软件ISS,NFR等都是基于签名的,也就是说系统维护着一套特定攻击数据包的数据模式签名。系统工作时,检查经过的数据包的内容,和自己数据库内数据模式签名对比,如果和某种攻击模式签名相同,那么就判断发生了某种攻击。
由此我们可以看出很明显的存在若干问题:如对签名的依赖不可避免的导致两个结果,false negative ,false positive。也就是说会产生漏报和误报,这一点很容易理解,当新出现一种攻击模式时,由于IDS系统内没有相应的数据签名,那么就不可能捕获相应的攻击数据包,false negative由此发生。同时,过于依赖签名模式也很容易误报,就象我们上面的例子。同时,对数据签名的依赖会在一定程度上降低系统性能-经过的数据包都需要和IDS系统的签名对照。(请参阅参考资料)
此外,基于签名的IDS系统本身有可能由于依据签名这一特性而被攻击,一个例子是stick ,这个程序的作者利用IDS系统进行签名匹配工作原理,发送大量带有攻击特征的数据包给IDS系统,使IDS系统本身处理能力超过极限,从而导致IDS系统无法响应。按照作者Coretez Giovanni的说法,运行2秒钟stick就能使著名的商用IDS系统ISS real secure崩溃。由上我们看到,对IDS系统的完全依赖同样是有风险的。(请参阅参考资料)
一些解决思路
看来依靠手头的IDS是无法察觉这种行为了,那么有其它办法吗?我们仔细分析一下事件过程中截获的httptunnel数据包再说吧。
仔细观察截获的httptunnel数据包,可以发现紧跟着三次握手完成后的第一个数据包包含着一个POST动作,是由htc(client端)发送到hts(server端)的。如下: 14:55:39.128908 client.yiming.com.51767 > server.yiming.com.80: S 3521931836:3521931836(0) win 8760 (DF)
0x0000 4500 002c d3cc 4000 fb06 53c9 xxxx xxxx E..,..@...S..f.#
0x0010 yyyy yyyy ca37 0050 d1ec 6a3c 0000 0000 .f.D.7.P..j<....
0x0020 6002 2238 1708 0000 0204 05b4 0000 `."8..........
14:55:39.128945 server.yiming.com.80 > client.yiming.com.51767: S 2946004964:2946004964(0) ack 3521931837 win 8760 (DF)
0x0000 4500 002c cb85 4000 ff06 5810 yyyy yyyy E..,..@...X..f.D
0x0010 xxxx xxxx 0050 ca37 af98 77e4 d1ec 6a3d .f.#.P.7..w...j=
0x0020 6012 2238 ef79 0000 0204 05b4 `."8.y......
14:55:39.131002 client.yiming.com.51767 > server.yiming.com.80: . ack 1 win 8760 (DF)
0x0000 4500 0028 d3cd 4000 fb06 53cc xxxx xxxx E..(..@...S..f.#
0x0010 yyyy yyyy ca37 0050 d1ec 6a3d af98 77e5 .f.D.7.P..j=..w.
0x0020 5010 2238 0737 0000 0000 0000 0000 P."8.7........
14:55:39.132841 server.yiming.com.80 > client.yiming.com.51767: . ack 44 win 8760 (DF)
0x0000 4500 0028 cb86 4000 ff06 5813 yyyy yyyy E..(..@...X..f.D
0x0010 xxxx xxxx 0050 ca37 af98 77e5 d1ec 6a68 .f.#.P.7..w...jh
0x0020 5010 2238 070c 0000 P."8....
14:55:39.132860 client.yiming.com.51767 > server.yiming.com.80: P 1:44(43) ack 1 win 8760 (DF)
0x0000 4500 0053 d3ce 4000 fb06 53a0 xxxx xxxx E..S..@...S..f.#
0x0010 yyyy yyyy ca37 0050 d1ec 6a3d af98 77e5 .f.D.7.P..j=..w.
0x0020 5018 2238 d23a 0000 504f 5354 202f 696e P."8.:..POST./in
0x0030 6465 782e 6874 6d6c 3f63 7261 703d 3130 dex.html?crap=10
0x0040 3037 3838 3034 3836 2048 5454 502f 312e 07880486.HTTP/1.
0x0050 310d 0a 1..
1..(未完待续)