邪恶八进制信息安全团队技术讨论组's Archiver

冰血封情 2005-5-2 22:53

[转载]NIDS 的局限性

  文章作者:Robert Graham

  网络入侵探测系统不是非常可靠,公认只能做主要安全系统的一个补充;
主系统如防火墙,加密和授权是非常可靠的,一些bug或者错误的设置可能会导致这些
系统出问题;但是它们最底层的原理都经验证是准确的。但NIDS 底层的原理就不是完全准确的;

  所有的入侵探测系统都会有这两个问题:为什么正常的工作会有许多的错误告警;
为什么仔细的hacker可以躲开IDS或者使IDS无效;当然,可以找出很多的例子来表明
NIDS是不准确的。

  但这并不表示入侵探测系统就是没用的。在当今的网络中,攻击如此普遍,以致人
们在第一次安装这样的系统时,通常都会大吃一惊(无论是在防火墙外还是防火墙内);

  一个好的IDS系统可以很好的提高一个站点的安全性;有一点必须提醒的就是IDS只是
一个补充;一个”证实为正确的“系统通常由于人为的错误会出故障;而”证实为不正确的“
系统却能很好的工作。


下面将讨论NIDS的一些局限性:

1.交换式的网络(天生的缺陷)

   交换式的网络(如:100 mbps,千兆位的以太交换机)对NIDS来说,将会造成戏剧
性的问题;如果要插入一个sensor来监视所有的数据包是绝不容易的;

  已有一些这个问题的解决方案,但不是所有的都令人满意;

  嵌入在交换机内的IDS:

   一些厂商(Cisco,ODS)内置了IDS在交换机里面。我只能说,这些IDS系统没有商用
   的NIDS系统那样好的检测范围;

监控端口

  许多交换机有一个监控端口可以连接网络分析器;NDIS也可以很容易的加到这个端
  口;一个明显的问题就是这个端口的速度比交换机的底板要慢很多,以致在高负荷
  的交换机上,NIDS就不能监测所有的数据。此外,这种端口多是为网络管理做sniffer
  用,所以就经常会被切换掉;

线缆分流(交换机之间或交换机到接点)

  监控台可以直接连在线缆上监控数据报,这可以是交换机之间的线缆,也可以是从交
  换机到主机的线缆。可以有不同的技术来实现:
  线内分流
  线内分流就是一种直接插入到通信流中,并拷贝一份相同数据的设备。一个典型的例
  子就是Shomiti Century Tap
  (见[url]http://www.shomiti.com/productsf/tapfamilyf.html[/url])
  它直接插入到100mbps全双工的线路中,可以允许一台配有2个网络适配器的计算机
  同时读取这2个通道的数据;
  
  吸血鬼分流

  在过去的一些日子里,吸血鬼分流是同轴电缆以太网的主要手段,
  也是连接末端接点到网络的一个行之有效的方法。

  自感应分流

  大多数的分流都可以用TDR(Time Domain Reflectometer:时域反射计)检测到;
  而自感应分流无需改变线缆,只要安放在线缆的外面,就可以监听线缆的发射的
  电磁波。一般,只有间谍才会使用的这种方法。

线缆分流的问题,就在于他们产生了大量的数据流,大多数的NIDS在未能处理这么
高负载之前,就已经瘫痪了。特别是在交换机间的情况,尤其突出。

  感谢Christopher Zarcone <[email]czarcone@acm.org[/email]>提供的以上的资料。

  基于主机的sensors

  从原理上来说,解决交换网络的资源限制的唯一方法就是分布式的基于主机的入侵
  探测。象BlackICE 和 CyberCop Monitor,就是一些个基于主机的Agent包含一个基于
  网络的监视本主机的网络的组件,其他的则进行传统的日志和审计功能;

2 资源局限性

   NIDS位于网络中心位置,他们一定要能坚持不断的分析,和储藏
   由可能成千上万的机器所产生的信息,仿效所有机器的连接
   发送数据;显然,它并不能完全做到,只有投机取巧了。

   下面列出一些典型资源问题.

  2.1网络负载流量

   当前的NIDS在满负荷的情况下,都很难保持正常功能;平均的情况下一个网站
   每帧的大小大约有180字节, 在100 mbps 的以太网上,能以50,000个
   数据报/秒的速率传输;但大多数的IDS产品都不能跟上这速度.
   绝大部分顾客的实际情况比这个速度相比要慢,但是这仍然是一个值得关心的问题.

   当你购买一个IDS产品时,可以问销售商:系统每秒能处理多少个数据报.很多销售商
   将设法告诉你每秒能处理多少位。但是真正性能的瓶颈是数据报的数目.实际上所有
   的IDS系统能在每数据报1500字节的情况下处理100 mbps 的流量,却很少有能在
   每数据报60字节的情况下处理100 mbps的流量的.

  2.2 TCP连接

   IDS 必须为许多TCP连接保持连接状态.这就要求大容量的内存.一些逃避技术将使
   问题进一步恶化,它们常常要求IDS甚至在客户/服务器已经关闭它之后,保持连接
   信息。

   当你购买一个IDS产品时,问销售商:系统能同时处理多少TCP连接.

  2.3 其他状态信息

   在IDS要保存在内存里的状态信息中,TCP只是最简单的例子;
   但是还有其它的信息包含IP碎片,TCP扫描信息和ARP表.

  2.4 长时间的状态

   一个经典问题就是"缓慢扫描",攻击者非常缓慢扫描系统.
   IDS是不可能长时间储藏这么多的信息,那样就不能和数据匹配了.

3 攻击NIDS

   攻击者可以用下列的方式攻击一个入侵探测系统.

  3.1 使sensor失效

   NIDS通常是作为"被动监视器"的COTS(Commerical-off-the-shelf)电脑.
   监视器是旁置于网络流的,不是在中心位置;这就意味着.
   如果他们不能跟上高速的网络流量,而他们又没有任何节流的手段.他们就必须开始丢
   数据包.这就正如用一个消防水龙带喝水一样.
   现在很少有NIDS能跟得上一个满负荷的100 mbps连接,
   (其中"满负荷"意味着平均一个数据报的大小是180字节,大约是50,000个
   数据报/秒).

   高的网络流量不仅仅是使sensor开始丢掉不能处理的数据报,而且可以使sensor
   完全瘫痪.例如,假设有一个能处理最大限度的 20,000帧/秒的Sensor.
   当网络负载是40,000帧/秒的时候,
   它真正的处理速度将降到10,000帧/秒或者5,000帧/秒甚至趋近于零。
   这是因为帧的接收与帧的分析是不同的过程处理的。
   在大多数的结构中,是由系统来抓包;即使是太繁忙不能分析也不例外,这样就
   花去了许多应该用于分析的时间。

   因此,一个攻击者可以通过使链路流量达到饱和的方式来攻击IDS探测器。如果攻击者来自局
   域网内,他/她就可以使用数据传输程序。

   远程攻击者可以执行smurf 或 fraggle 的攻击,同样可以打满连接。
   由于攻击者不可能有足够的速度,这种方式来攻击的比较困难。

  3.2 使事件存储失去用途

   端口扫描工具&#39;nmap&#39;含有一项称作"圈套"扫描的特征.它使用几百个假的IP地址
   再加上攻击者的真正IP地址来进行扫描.这将导致管理员不可能区分一个IP
   是真实的IP,或者只是伪造的IP中的一个.

   任何攻击能由按同样的方式组成.一次带有伪造地址的强硬攻击总是在内部某处
   藏着一次真正攻击.管理员要从这些噪音里发现攻击,将是非常的困难.

   处理有争议的数据的方法有两种;如果一个攻击者值得怀疑,数据就必须保留
   下来,留待下一次分析;其他的攻击也要写入到事件的存储空间里来.当数据库
   填满后,将不会再发现攻击,或者更旧的攻击记录将被删除.无论是那一种,
   都可能没有任何表明攻击者的证据存在.

  3.3 DoS(拒绝服务)

   NIDS是一个极其复杂的系统,与一个运行着多个服务的完整TCP/IP栈的复杂性
   是等同的。这就意味着 NIDS容易受到像SYN FLOOD 和smurf Attachs 这样的
   攻击的影响.

  此外,攻击者常常能购买到与被攻击者相同的IDS系统,然后,进行多方面的实验,
  来发现是IDS失效的数据报.然后在攻击的时候,攻击者首先使IDS失效,
  然后进行不被察觉的活动.

4 简单躲开IDS的方法

   这部分描绘欺骗最简单的IDS的简单方法.下一个部分将描绘进一步方法.

  4.1 分片

   分片就是将单个IP数据包拆散成多个更小数据包的技术.数据在到达应用
   程序之前,在接收端的TCP/IP栈中重新组合起来.绝大多数的IDS系统都
   没有重新组合IP数据报的能力.因此,就有一些为了避开IDS,而自动分片的
   简单工具(如fragroute);

   注:将TCP头中间的IP数据报分片过去一直用来逃避防火墙的端口过滤;

   一些工业级的NIDS能重新组合网络流量.另,一些防火墙能在把数据传给
   另一端之前,通过分片重组的方法使网络流正常化.

  4.2 避免用默认值的方法

   人们常常把防火墙作为简单的NIDS使用,通常假定目的端口与协议唯一对应.
   一个成功的安装了后门的hacker可以在非默认的端口上运作标准协议.例如,
   一个hacker可以向一个用户发送一个被Back Orifice 感染的程序,
   但是把端口改成了不等于默认值31337的一个其他值.绝大多数的IDS系统将
   不再能正确辨认出这个问题 (只有少数能).

  4.3 缓慢扫描

   由于流量的容量,NIDS要维持一个长期的流量日志非常的困难。因此对于
   "缓慢扫描" 如攻击者每小时只扫描一个端口,将很难发现;

  4.4 协调的,低带宽攻击

   有时黑客会从多个IP地址一起来运行"缓慢扫描".这个就使IDS系统很难将
   这些信息关联起来;

  4.5 地址哄骗/代理

    IDS系统的一个目的就是指出谁在攻击.由于许多原因,这个将变得非常困难.
    例如,&#39;Smurf&#39; attacks, 你将收到一个你从未发送的数据包的数以千计的回应.
    NIDS能察觉这些回应,但是不能发现是谁发送了这些伪造的数据包.伪造IP地址的
    技术用在TCP序列号预设中,因此NIDS就不能准确的知道攻击者是从什么地方来的.
    最后,绝大部分攻击者通过FTP或者网络代理服务器,&#39;发起&#39;他们的攻击,或者从
    他们已攻入的站点进行攻击。
   
    因此,要发现谁在攻击你的地点是非常困难的,即使配置在你的防火墙中IP地址
    过滤也没有用.

  4.6 改变模式的躲避方法

   很多简单NIDS是依靠模式匹配.攻击脚本有些众所周知的模式,那样简单编译一个
   已知攻击脚本的输出的数据库可以提供相当好探测。但是只要简单的修改脚本
   就可以很容易的逃脱IDS. 例如,当输入一个长密码的时候,一些POP3服务器都有
   一个缓冲区溢出的问题.有好一些针对这一漏洞的广受欢迎的攻击脚本。
   一个入侵探查系统能包含10种模式来匹配10个 最常用的脚本,而另一个入侵
   探查系统注意着口令字段,当输入了超过100字节的时候,就告警。
   第一种系统就可以容易通过修改攻击脚本来简单回避,在第二种系统就可以探测
   到任何对这个问题的攻击.

5 复杂逃避方法

  聪明的黑客可以穿过入侵探查系统攻击目标.Verm  Paxson
  在他的早期论文(有关他的名叫"Bro"的NIDS)中讨论过这一问题中的一些。
  最初的PostScript版本在
  [url]ftp://ftp.ee.lbl.gov/papers/bro-usenix98-revised.ps.Z.[/url]
  有关避开NIDS的最初的文章是Thomas h.Ptacek和Timothy 写的。
  最初的PostScript版本在:
  [url]http://www.aciri.org/vern/Ptacek-Newsham-Evasion-98.ps.[/url]同样的镜象文件在
  [url]http://www.robertgraham.com/mirror/Ptacek-Newsham-Evasion-98.html.[/url]
  Thomas H.Ptacek声称很多/绝大多数商业产品(1999年10月)在这一点上有严重的
  问题. 这一节的大部分就是对这二篇文章的总结.

  这些文章描述了NIDS系统用的网络模型与实际的不一样的抽象原理

  例如,闯入者可以发送一个TCP FYN的数据包,NIDS可以看到的,但是受害者主机绝不
  会看到.这将使NIDS认为连接已经关闭了,而实际上却不是的.如果TCP连接不发送
  "存活"信息, 在继续攻击之前,攻击者可以在这个"结束"后的几小时或几小时内一直
  等待.实际上,大多数服务会在消除一段时间内没有激活的连接,但是攻击者还是
  可以获得几分钟的等待。

  首先攻击者要发现一种能发送数据报到NIDS,而后置的路由器要丢掉这些数据报的
  方式。这些取决于路由器的设置,但是典型例子有小的TTL字段值,分片,源路由,
  以及其它IP选项。
  
  如果通过NIDS的连接很慢,Hacker就可以先在此连接填充一些高优先级的IP数据报,
  然后发送一个低优先级的TCP FIN.路由的排队机制通常会丢包。

  另一个方法就是考虑主机是否接受。例如,不同的TCP栈对于细微的无效输入有不同
  的动作;(就像&#39;nmap&#39;和&#39;queso&#39;过去经常取操作系统的指纹设计程序的一样).
  典型造成不同交通的方式拒绝或接受 有发送TCP选项,使IP分片或TCP分段超时,
  重叠碎片或段,发送错误的TCP标志位或序号。

  为了强调IDS系统中的Bug,Ptacek/Newsham的论文中集中在IP分片,和TCP分段上。
  例如,他们指出如果发送的重叠分片带有不同数据,一些系统宁愿要从第一碎片
  (WinNT,Solaris)开始要数据,然而其他的则是从最后碎片(Linux,BSD)开始保持
  数据。NIDS就没办法知道末端节点是否将接受这一数据,就可能猜错.

  他们对TCP/IP连接的分析非常的有深度,论述了TCP连接的"伪同步"方式,
  其实远比人们想象的要脆弱。还有,IDS不能正确模拟所有的TCP/IP栈的
  可能行为,以及确定末端节点将把哪些分组作为数据.TCP也有与IP分片
  相同的重叠问题.例如:入侵探测系统可能会接受第一个段,
  而忽略后面的段。但是大多数的主机接受最后的段;

  为了确认是否能躲开入侵探测系统,他们尝试着攻击各种各样的入侵探测系统。
  得到的结果却是令人沮丧的-- 用分片的方法,一个主要的IDS可以完全躲开。
  其他的都可以使用与末节点的数据"失去同步"的方法,完全甩掉;

6 评估工具

  下列的一些工具将有助于在这些问题上评估IDS系统:
  
  Anzen NIDSbench
  ([url]http://www.anzen.com/research/nidsbench/.[/url] )
   包含了一个强迫所有的数据流分片的"fragrouter"单元,它将演示一个hacker/cracker
   用同样的方法躲开NIDS将是多么的容易。它可以接收进来的数据流,然后按各种规则分片。
   分片的规则有:带有不同大小的重叠的IP 分片,同样也是不同大小的重叠的TCP分组,
   插入TCP数据报来使连接失同步,等等。

   此工具包还包含一个"tcpreplay"的程序,它可以导出以太网的负载,以验证NIDS保留的
   数据报。

  CASL
   NAI 的 CyberCop Scanner 内置了CASL。可以用来对上述的插入/逃避方面的内容进行
   确认性的测试。它允许对底层TCP/IP数据报的描述。
   在 [url]http://www.roses-labs.com/labs/labs.htm[/url] 有一些CASL的脚本。

页: [1]
© 1999-2008 EvilOctal Security Team