随着IDS(入侵检测系统)在网络环境中的使用越来越普遍,黑客在攻击一个装有IDS的网络时,首先考虑到的是对付IDS,一般采用的反IDS技术主要是 "攻"(攻击IDS)或者"避"(绕过IDS的监视)。本文根据网上的IDS资料和笔者的实际研究,主要介绍一下当前主要的反NIDS(网络入侵检测系统)技术。
一.攻:包括直接攻击和间接攻击
1. 直接攻击:直接对NIDS进行攻击。因为NIDS是安装在一定的操作系统之上,而且本身也是一个复杂的TCP/IP操作系统,这意味着NIDS本身可能受到smurf、 synflood或jolt2等攻击。如果安装IDS的操作系统本身存在漏洞或 IDS自身防御力差,此类攻击很有可能造成IDS的探测器丢包、失效或不能正常工作。但是随着IDS技术的发展,一些NIDS采用了双网卡的技术,一个网卡绑定IP,用来与console(控制台)通信,另外一个网卡无IP,用来收集网络数据包,其中连在网络中的是无IP的网卡,因为没有IP,所以不能直接攻击,而且新的IDS一般采用了协议分析的技术,提高了IDS捕捉和处理数据包的性能,所以直接攻击NIDS这种方法已经行不通了。
2. 间接攻击:一般的NIDS都有入侵响应的功能,如记录日志,发送告警信息给console、发送警告邮件,防火墙互动等,我们可以利用IDS的响应进行间接攻击,使入侵日志迅速增加,塞满硬盘;发送大量的警告信息,使管理员无法发现真正的攻击者,并占用大量的cpu资源;发送大量的告警邮件,占满告警信箱或硬盘,并占用接收警告邮件服务器的系统资源;发送虚假的警告信息,使防火墙错误配置,造成一些正常的IP无法访问等!
目前,攻击NIDS最有效的办法是利用Coretez Giovanni写的Stick程序,Stick使用了很巧妙的办法,它可以在2秒内模拟450次攻击,快速的告警信息的产生会让IDS反应不过来、产生失去反应甚至死机现象。由于Stick发出多个有攻击特征(按照snort的规则组包)的数据包,所以IDS匹配了这些数据包的信息时,就会频繁发出警告,造成管理者无法分辨哪些警告是针对真正的攻击发出的,从而使IDS失去作用。当有攻击表现的信息包数量超过IDS的处理能力的话,IDS会陷入拒绝服务状态。Stick对许多IDS有影响,ISS公司的产品也不例外,该公司的产品中曾有"RealSecure Network Sensor 5.0"的Windows NT/2000版受到了影响,后来ISS发布了补丁,好像已经解决了这个问题。但其它一些公司的IDS,如snort,因为Stick发送的是按 snort规则组成的包,所以用Stick攻击装有snort的网络时,会产生大量的日志记录。
二.避:伪装自己,绕过IDS的检测,主要是针对IDS模式匹配所采用的方法来逃避IDS的监视。
1.针对HTTP请求:
* URL编码:将URL进行编码,可以避开一些采用规则匹配的NIDS。
# 二进制编码:HTTP协议允许在URL中使用任意ASCII字符,把二进制字符表示成形如"%xx" 的十六进制码,有的IDS并不会去解码。
如"cgi-bin"可以表示成"%63%67%69%2d%62%69%6e",有些IDS的规则匹配不出,但web服务器可以正确处理。不过现在大多数IDS已经是在匹配规则之前解码,目前这个手段已经不适用了,一般的IDS都可以检测到!
# %u编码,是用来代表Unicode/wide特征字符,但微软IIS web服务器支持这种非标准的web请求编码方式由于%u编码不是标准的编码,IDS系统不能解码%u,所以可以绕过IDS的检测。
例如:使用下列的编码方式就可以绕过一些NIDS对".ida"的攻击的检测。
GET /abc.id%u0061 HTTP/1.0
不过,snort1.8可以检测到这种编码后的攻击,但有一些公司的IDS没注意到这个问题。
解决办法就是在规则匹配前对URL内容的%u编码进行解码后匹配。
# unicode编码,主要针对IIS,将URL中的一些特定的字符或字符串(主要是针对一些IDS匹配的规则内容)用unicode编码表示,
例如:使用下列的编码方式就可以绕过一些NIDS对".ida"的攻击的检测。
GET /abc.id%c1%01 HTTP/1.0
共3页: 上一页 1 [2] [3] 下一页
|