| IDS逃避技术和对策 4.碎片攻击 碎片攻击和会话拼接(session splicing)有点类似。直到最近,很多入侵检测系统在进行字符串匹配之前不能准确地重组碎片。现在这种 情况有了改观,所有的入侵检测系统都能够进行某些重组。不过,还是有很多方法可以避开入侵检测系统的监视。碎片重组的问题是 在进行字符串匹配以前,入侵检测系统必须在内存中缓存所有的碎片,然后进行重组。而且,他还需要直到、碎片在目的主机会如何 重组。Thomas Ptacek and Timoth Newsham于1998年写的Insertion,Evasion and Denial of Service: Eluding Network Intrusion Detection描述了许多基于 网络的碎片躲避和其它类型的躲避技术。碎片攻击包括:碎片覆盖、碎片重写、碎片超时和针对网络拓扑的碎片技术(例如使用小的 TTL)等。下面,我们将详细讨论。 4.1.碎片覆盖 所谓碎片覆盖就是发送碎片覆盖先前碎片中的数据。例如: 碎片1 GET x.idd 碎片2 a.?(缓冲区溢出数据) 第二个碎片的第一个字符覆盖第一个碎片最后一个字符,这两个碎片被重组之后就变成了GET x.ida?(缓冲区溢出数据)。实际情况远 非这么简单,更详细的细节请参考烂文IDS欺骗之Fragroute篇(上)。 4.2.碎片数据覆盖 这种方法和上面的碎片覆盖有些类似,只不过是覆盖全部的碎片数据,例如: 碎片1 GET x.id 碎片2 一些随机的字符 碎片3 a.?(缓冲区溢出数据) 这些碎片在经过目标系统的重组之后,碎片3将完全覆盖碎片2,重组之后的数据变成GET x.ida?(缓冲区溢出数据)。如果入侵检测系 统的重组方式和目标系统不同,就无法重组出“GET x.ida?(缓冲区溢出数据)”,因此就检测不出这个攻击。 4.3.碎片超时 这种攻击依赖于入侵检测系统在丢弃碎片之前会保存多少时间。大多数系统会在60秒之后将丢弃不完整的碎片流(从收到第一个碎片开 始计时)。如果入侵检测系统保存碎片的时间小于60秒,就会漏掉某些攻击。例如: 碎片1(设置了MF位) GET foo.id 碎片2(59秒之后发出) a?(缓冲区溢出数据) 如果IDS保存起始碎片的时间不到60秒,就会漏过攻击。幸运的是,如果配置没有错误,现在的网络入侵检测系统能够检测此类攻 击。 这种技术结合其它的网络技术(例如:TTL值)将更有威胁。如果入侵检测系统和被监视的系统不在同一个网段,攻击者就可以在TTL 上做手脚。有的单位由于经费的限制,不能在自己的每个子网都部署IDS节点,只在网络的出入口部署一套IDS,监视所有的网络流 量。这种情况下,如果被攻击的主机在其它的子网,攻击数据包到目标系统的跳数就大于到IDS的跳数。攻击者可以伪造碎片的TTL, 使某些碎片刚好能够到达,而无法到达目标系统,例如: 碎片序号 负载 TTL(假设攻击者到目标的跳数是5,到IDS的跳数是3) 1 GET foo.id 5 2 evasion.html 3 3 a?(缓冲区溢出数据) 5 从这些碎片中,IDS重组的数据是“GET foo.idevasion.html a?(缓冲区溢出数据)”或者“GET foo.idevasion.html”(如果IDS的超时 时间小于60秒)。通过这种方式,攻击者成功地在IDS中插入了垃圾数据。 |








