二、针对IDS的逃避技术
防火墙有以上的诸多局限性,同时它又处于网关的位置,不可能对进出攻击作太多判断,否则会严重影响网络性能。如果把防火墙比作大门警卫的话,入侵检测就是网络中不间断的摄像机,入侵检测通过旁路监听的方式不间断的收取网络数据,对网络的运行和性能无任何影响,同时判断其中是否含有攻击的企图,通过各种手段向管理员报警。不但可以发现从外部的攻击,也可以发现内部的恶意行为。所以说入侵检测是网络安全的第二道闸门,是防火墙的必要补充,构成完整的网络安全解决方案。然而,由于NIDS本身的局限性,黑帽社团正不断推出躲避或者越过网络入侵检测系统(Network Intrusion Detection System,NIDS)的新技术,胜利的天平正在向黑帽子倾斜。
1、字符串匹配的弱点
通过把字符串处理技术和字符替换技术结合到一起,我们可以实现复杂点的字符串伪装。对于WEB请求,我们不必使用命令解释器, 在我们的请求中使用16进制的URL即可,以下的请求可以被目标WEB服务器解释为/etc/passwd:
GET %65%74%63/%70%61%73%73%77%64
或者
GET %65%74%63/%70a%73%73%77d
为了捕获这一个字符串的所有变体,IDS可能需要1000个以上的特征码进行字符串匹配,这还没有考虑UNICODE啊!
2、会话拼接(session splicing,叫会话分割更合适一些)
就是把会话数据放到多个数据包中发出:
+-------------------------+
| packet number | content |
|---------------+---------|
| 1 | G |
|---------------+---------|
| 2 | E |
|---------------+---------|
| 3 | T |
|---------------+---------|
| 4 | 20 |
|---------------+---------|
| 5 | / |
|---------------+---------|
| 6 | H |
+---------------+---------+
通过这种方式,每次只投递几个字节的数据,就可能避开字符串匹配入侵检测系统的监视。
3、碎片攻击
所谓碎片覆盖就是发送碎片覆盖先前碎片中的数据。例如:
碎片1 GET x.idd
碎片2 a.?(缓冲区溢出数据)
第二个碎片的第一个字符覆盖第一个碎片最后一个字符,这两个碎片被重组之后就变成了GET x.ida?(缓冲区溢出数据)。
4、拒绝服务
还有一种比较野蛮的方法就是拒绝服务,消耗检测设备的处理能力,使真正的攻击逃过检测。塞满硬盘空间,使检测设备无法记录日志。使检测设备产生超出其处理能力的报警。使系统管理人员无法研究所有的报警。挂掉检测设备。对IDS来说,这类IDS无迹可寻,因此非常难以对付。