NIDS通过从网络上得到数据包进行分析,从而检测和识别出系统中的未授权或异常现象。
1.1 网络局限
1.1.1 交换网络环境由于共享式HUB可以进行网络监听,将给网络安全带来极大的威胁,故而现在网络,尤其是高速网络基本上都采用交换机,从而给NIDS的网络监听带来麻烦。
1.1.1.1 监听端口现在较好的交换机都支持监听端口,故很多NIDS都连接到监听端口上。通常连接到交换机时都是全双工的,即在100MB的交换机上双向流量可能达到200MB,但监听端口的流量最多达到100MB,从而导致交换机丢包。为了节省交换机端口,很可能配置为一个交换机端口监听多个其它端口,在正常的流量下,监听端口能够全部监听,但在受到攻击的时候,网络流量可能加大,从而使被监听的端口流量总和超过监听端口的上限,引起交换机丢包。
一般的交换机在负载较大的时候,监听端口的速度赶不上其它端口的速度,从而导致交换机丢包。增加监听端口即意味做需要更多的交换机端口,这可能需要购买额外的交换机,甚至修改网络结构(例如原来在一台交换机上的一个VLAN现在需要分布到两台交换机上)。支持监听的交换机比不支持的交换机要贵许多,很多网络在设计时并没有考虑到网络监听的需求,购买的交换机并不支持网络监听,或者监听性能不好,从而在准备安装NIDS的时候需要更换交换机。
1.1.1.2 共享式HUB在需要监听的网线中连接一个共享式HUB,从而实现监听的功能。对于小公司而言,在公司与Internet之间放置一个NIDS,是一个相对廉价并且比较容易实现的方案。采用HUB,将导致主机的网络连接由全双工变为半双工,并且如果NIDS发送的数据通过此HUB的话,将增加冲突的可能。
1.1.1.3 线缆分流采用特殊的设备,直接从网线中拷贝一份相同的数据,从一根网线中将拷贝出两份(每个方向一份),连接到支持监听的交换机上,NIDS再连接到此交换机上。这种方案不会影响现有的网络系统,但需要增加交换机,价格不菲,并且面临与监听端口同样的问题。
1.1.2 网络拓扑局限对于一个较复杂的网络而言,通过精心的发包,可以导致NIDS与受保护的主机收到的包的内容或者顺序不一样,从而绕过NIDS的监测。
1.1.2.1 其它路由由于一些非技术的因素,可能存在其它的路由可以绕过NIDS到达受保护主机(例如某个被忽略的Modem,但Modem旁没有安装NIDS)。如果IP源路由选项允许的话,可以通过精心设计IP路由绕过NIDS.
1.1.2.2 TTL如果数据包到达NIDS与受保护的主机的 HOP数不一样。则可以通过精心设置TTL值来使某个数据包只能被NIDS或者只能被受保护主机收到,从而使NIDS的Sensor与受保护主机收到的数据包不一样,从而绕过NIDS的监测。
1.1.2.3 MTU如果NIDS的MTU与受保护主机的MTU不一致的话(由于受保护的主机各种各样,其MTU设置也不一样),则可以精心设置MTU处于两者之间,并设置此包不可分片,从而使NIDS的Sensor与受保护主机收到的数据包不一样,从而绕过NIDS的监测。
1.1.2.4 TOS有些网络设备会处理TOS选项,如果NIDS与受保护主机各自连接的网络设备处理不一样的话,通过精心设置TOS选项,将会导致NDIS的Sensor与受保护主机收到的数据包的顺序不一样,于是有可能导致NIDS重组后的数据包与被保护主机的数据包不一致,从而绕过NIDS的监测(尤其在UDP包中)。
1.2 检测方法局限NIDS常用的检测方法有特征检测、异常检测、状态检测、协议分析等。实际中的商用入侵检测系统大都同时采用几种检测方法。NIDS不能处理加密后的数据,如果数据传输中被加密,即使只是简单的替换,NIDS也难以处理,例如采用SSH、HTTPS、带密码的压缩文件等手段,都可以有效的防止NIDS的检测。NIDS难以检测重放攻击、中间人攻击、对网络监听也无能为力。目前的NIDS还难以有效的检测DDoS攻击。
1.2.1 系统实现局限由于受NIDS保护的主机极其运行的程序各种各样,甚至对同一个协议的实现也不尽相同,入侵者可能利用不同系统的不同实现的差异来进行系统信息收集(例如Nmap通过TCP/IP指纹来对操作系统的识别)或者进行选择攻击,由于NIDS不大可能通晓这些系统的不同实现,故而可能被入侵者绕过。
1.2.2 异常检测的局限异常检测通常采用统计方法来进行检测。异常检测需要大量的原始的审计纪录,一个纯粹的统计入侵检测系统会忽略那些不会或很少产生有会影响统计规律的审计纪录的入侵,即使它具有很明显的特征。统计方法可以被训练而适应入侵模式。当入侵者知道他的活动被监视时,他可以研究统计入侵检测系统的统计方法,并在该系统能够接受的范围内产生审计事件,逐步训练入侵检测系统,从而其相应的活动简档偏离正常范围,最终将入侵事件作为正常事件对待。
应用系统越来越复杂,许多主体活动很难以简单的统计模型来刻画,而复杂的统计模型在计算量上不能满足实时的检测要求。统计方法中的阈值难以有效确定,太小的值会产生大量的误报,太大的值会产生大量的漏报,例如系统中配置为200个/秒半开TCP连接为SYN_Flooding,则入侵者每秒建立199个半开连接将不会被视为攻击。
1.2.2.1 缓慢扫描异常检测常用于对端口扫描和DoS攻击的检测。NIDS存在一个流量日志的上限,如果扫描间隔超过这个上限,NIDS将忽略掉这个扫描。尽管NIDS可以将这个上限配置得很长,但此配置越长,对系统资源要求越多,受到针对NIDS的DoS攻击的可能性就越大。
1.2.3 特征检测的局限检测规则的更新总是落后于攻击手段的更新,目前而言,一个新的漏洞在互联网上公布,第二天就可能在网上找到用于攻击的方法和代码,但相应的检测规则平均还需要好几天才能总结出来。存在一个发现新入侵方法到用户升级规则库/知识库的时间差,对有心的入侵者,将有充足的时间进行入侵。很多公布的攻击并没有总结出相应的检测规则或者检测规则误报率很高。并且现在越来越多的黑客倾向于不公布他们发现的漏洞,从而很难总结出这些攻击的攻击特征。
目前新的规则的整理主要为志愿者或者厂家完成,由用户自行下载使用,用户自定义的规则实际上很少,在方便了用户的同时,也方便了入侵者:入侵者可以先检查所有的规则,然后采用不会被检测到的手段来进行入侵,大大降低被NIDS发现的概率。
目前总结出的规则主要针对网络上公布的黑客工具或者方法,但对于很多以源代码发布的黑客工具而言,很多入侵者可以对源代码进行简单的修改(例如黑客经常修改特洛伊木马的代码),产生攻击方法的变体,就可以绕过NIDS的检测。
1.2.4 协议局限对于应用层的协议,一般的NIDS只简单的处理了常用的如HTTP、FTP、SMTP等,,尚有大量的协议没有处理,也不大可能全部处理,直接针对一些特殊协议或者用户自定义协议的攻击,都能很好的绕过NIDS的检查。
1.2.5 入侵变体
1.2.5.1 HTTP攻击变体重复的目录分割符,‘/’变为‘//’。 当前目录,‘/cgi-bin/phf’变为‘/cgi-bin/./phf’。 上级目录,‘/cgi-bin/phf’变为‘/cgi-bin/xxx/……/phf’。 URL编码,‘/cgi-bin/’变为‘%2fcgi-bin/’。 使用TAB等其它分割符代替空格。NULL方法,‘GET %00/cgi-bin/phf’。 使用GET外的其它方法,例如POST.改变参数顺序,添加无用参数。
对于IIS,还有以下方法:DOS/Win下目录分割符,‘/winnt/system32/cmd.exe’变为‘/winnt\system32\cmd.exe’。大小写转换,例如cmd.exe变为CMD.EXE.IIS二次解码,例如cmd.exe变为%2563md.exe,%25解码后为‘%’,再解码%63为‘c’。UNICODE编码,例如cmd.exe变为%c0%63md.exe.由于UNICODE编码比较复杂,目前只有极少数的NIDS能够对其进行解码。
1.2.5.2 Telnet攻击变体使用退格键。使用Tab键进行命令补齐。采用Shell来执行攻击代码。采用宏。添加无用参数。事实上NIDS很难检测那些通过Telnet连接到服务器后进行的本地攻击。
1.2.6 TCP/IP协议局限由于TCP/IP设计当初并没有很好的考虑安全性,故现在的IPV4的安全性令人堪忧,除了上面的由于网络结构引起的问题外,还有下面的一些局限。
1.2.6.1 IP分片将数据包分片,有些NIDS不能对IP分片进行重组,或者超过了其处理能力,则可以绕过NIDS.一个IP数据报最多8192个分片,NIDS的一个性能参数即为能重组的最大的IP分片数。NIDS每接收到一个新的IP数据报的IP分片的时候,将启动一个分片重组过程,在重组完成或者超时后(一般为15秒超时)关闭此重组过程,NIDS的一个性能参数即为能同时重组的IP包数。
一个IP数据报的最大为64K,为准备接收一个IP数据报,NIDS将准备足够的内存来容纳即将到来的后续分片,NIDS的一个性能参数即为能进行重组的最大的IP数据报的长度。
结合上面的三个参数,即为NIDS在超时时间(例如15秒)内能同时准备进行最大值(例如64K)的IP数据报重组的数目。如果NIDS接收到的数据包超过上述的极限,NIDS不得不丢包,从而发生DoS攻击。
1.2.6.2 IP重叠分片在重组IP包分片的时候,如果碰到重叠分片的话,各个操作系统的处理方法是不一样的,例如有些系统会采用先收到的分片(Windows和Solaris),有些会采用后收到的分片(BSD和Linux),如果重叠分片的数据不一样的话,并且NIDS的处理方式与受保护主机不一样,则将导致NIDS重组后的数据包与被保护主机的数据包不一致,从而绕过NIDS的检测。
例如可以重叠TCP或UDP的目的端口,然后渗透过目前绝大多数防火墙,并可能绕过NIDS.还可以重叠TCP的标志位,使NIDS不能正确检测到TCP FIN包,从而使NIDS很快达到能够同时监控的TCP连接数的上限;使NIDS不能正确检测到TCP SYN包,从而使NIDS检测不到应有的TCP连接。
1.2.6.3 TCP分段如果NIDS不能进