TOP
|
[ 录入者:admin | 时间:2007-10-27 16:41:49
| 作者: | 来源:
| 浏览:938次 ] |
NIDS的弱点和局限 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不能进行TCP流重组,则可以通过TCP分段来绕过NIDS。 一些异常的TCP分段将迷惑一些NIDS。
1.2.6.4 TCP un-sync 在TCP中发送错误的序列号、发送重复的序列号、颠倒发送顺序等,有可能绕过NIDS。
1.2.6.5 OOB 攻击者发送OOB数据,如果被保护主机的应用程序可以处理OOB,由于NIDS不可能准确预测被保护主机收到OOB的时候缓冲区内正常数据的多少,于是可能绕过NIDS。 有些系统在处理OOB的时候,会丢弃开始的1字节数据(例如Linux下的Apache,但IIS不会),则通过在发送的多个TCP段中,包含带OOB选项的TCP段,则有可能导致NIDS流重组后的数据与受保护主机的应用程序不一致,从而绕过NIDS。
1.2.6.6 T/TCP 如果目标主机可以处理事物TCP(目前很少系统支持),攻击者可以发送事务TCP,NIDS可能不会与被保护主机上的应用程序进行同样的处理,从而可能绕过NIDS。
1.3 资源及处理能力局限
1.3.1 针对NIDS的DoS攻击。
1.3.1.1 大流量冲击 攻击者向被保护网络发送大量的数据,超过NIDS的处理能力有限,将会发生丢包的情况,从而可能导致入侵行为漏报。 NIDS的网络抓包能力与很多因素相关。例如在每个包1500字节的情况下,NIDS将超过100MB/s的处理能力,甚至达到超过500MB/s的处理能力,但如果每个包只有50字节,100MB/s的流量意味2000000包/s,这将超过目前绝大多数网卡及交换机的处理能力。
1.3.1.2 IP碎片攻击 攻击者向被保护网络发送大量的IP碎片(例如TARGA3攻击),超过NIDS能同时进行的IP碎片重组能力,从而导致通过IP分片技术进行的攻击漏报。
1.3.1.3 TCP Connect Flooding 攻击者创建或者模拟出大量的TCP连接(可以通过上面介绍的IP重叠分片方法),超过NIDS同时监控的TCP连接数的上限,从而导致多余的TCP连接不能被监控。
1.3.1.4 Alert Flooding 攻击者可以参照网络上公布的检测规则,在攻击的同时故意发送大量的将会引起NIDS报警的数据(例如stick攻击),将可能超过NIDS发送报警的速度,从而产生漏报,并且使网管收到大量的报警,难以分辨出真正的攻击。 如果发送100字节便可以产生1条报警,则通过拨号上网每秒可以产生50条报警,10M局域网内每秒可以产生10000条报警。
1.3.1.5 Log Flooding 攻击者发送大量的将会引起NIDS报警的数据,最终导致NIDS进行Log的空间被耗尽,从而删除先前的Log纪录。
1.3.2 内存及硬盘限制 如果NIDS希望提高能够同时处理的IP碎片重组及TCP连接监控能力,这将需要更多的内存做缓冲,如果NIDS的内存分配及管理不好的话,将使系统在某种特殊的情况下耗费大量的内存,如果开始使用虚拟内存,则将有可能发生内存抖动。 通常硬盘的速度远远比不上网络的速度,如果系统产生大量的报警纪录到硬盘,将耗费掉大量的系统处理能力,如果系统纪录原始网络数据,保存大量和高速的网络数据将需要昂贵的大容量RAID。
1.4 NIDS相关系统的脆弱性 NIDS本身应当具有相当高的安全性,一般用于监听的网卡都没有IP地址,并且其它网卡不会开放任何端口。但与NIDS相关的系统可能会受到攻击。
1.4.1 控制台主机的安全脆弱性 有些系统具有单独的控制台,如果攻击者能够控制控制台所在的主机,就可以对整个NIDS系统进行控制。
1.4.2 传感器与控制台通信的脆弱性 如果传感器与控制台间的通信可以被攻击者成功攻击,将影响系统正常使用。例如进行ARP欺骗或者SYN_Flooding。 如果传感器与控制台间的通信采用明文通信或者只是简单的加密,则可能受到IP欺骗攻击或者重放攻击。
1.4.3 与系统报警有关的其他设备及其通信的脆弱性 如果攻击者能够成功攻击与系统报警有关的其他设备,例如邮件服务器等,将影响报警消息的发送。
2 HIDS的弱点和局限
2.1 资源局限 由于HIDS安装被保护主机上,故所占用的资源不能太多,从而大大限制了所采用的检测方法及处理性能。
2.2 操作系统局限 不象NIDS,厂家可以自己定制一个足够安全的操作系统来保证NIDS自身的安全,HIDS的安全性受其所在主机的操作系统的安全性限制,如果所在系统被攻破,HIDS将很快被清除。如果HIDS为单机,则它基本上只能检测没有成功的攻击,如果HIDS为传感器/控制台结构,则将面临与NIDS同样的对相关系统的攻击。 有些HIDS会考虑增加操作系统自身的安全性(例如LIDS)。
2.3 系统日志限制 HIDS会通过监测系统日志来发现可疑的行为,但有些程序的系统日志并不足够详细,或者没有日志。有些入侵行为本身不会被具有系统日志的程序纪录下来。 如果系统没有安装第三方日志系统,则系统自身的日志系统很快会受到入侵者的攻击或修改,而入侵检测系统通常不支持第三方的日志系统。 如果HIDS没有实时检查系统日志,则利用自动化工具进行的攻击将完全可能在检测间隔中完成所有的攻击工程并清除在系统日志中留下的痕迹。
2.4 被修改过的系统核心能够骗过文件检查 如果入侵者修改系统核心,则可以骗过基于文件一致性检查的工具。这就像当初某些病毒,当它们认为受到检查或者跟踪的时候会将原来的文件或者数据提供给检查工具或者跟踪工具。
2.5 网络检测局限 有些HIDS可以检查网络状态,但这将面临NIDS所面临的很多问题。 |
|
|
|