IDS的弱点和局限
1.2.5.1 HTTP攻击变体
重复的目录分割符,‘/'变为‘//'。
当前目录,‘/cgi-bin/phf'变为‘/cgi-bin/./phf'。
上级目录,‘/cgi-bin/phf'变为‘/cgi-bin/xxx/../phf'。
1.2.5.2 Te.net攻击变体
使用退格键。
使用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所面临的很多问题。(完)