科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道黑客经验:针对IDS的逃避技术与相关对策

黑客经验:针对IDS的逃避技术与相关对策

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

一些基于特征码的入侵检测设备几乎完全依赖于字符串匹配算法,而对于一个编写很差的特征码,攻击者可以轻松地破坏对其的字符串匹配。

作者:中国IT实验室 2007年9月2日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

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中插入了垃圾数据。

5.碎片和snort特征码

下面我们把上述攻击和某些snort特征码进行比较。对于.ida缓冲区溢出攻击,默认的snort特征码几乎无法捕获任何通过碎片发动的攻击(如果使用了frag2预处理模块,snort可以截获碎片超时攻击)。下面是针对.ida缓冲区溢出攻击的snort检测规则:

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 (msg:"WEB-IIS ISAPI

.ida attempt"; uricontent:".ida?"; nocase; dsize:>239; flags:A+;

reference:arachnids,552; classtype:web-application-attack;

reference:cve,CAN-2000-0071; sid:1243; rev:2;)

另外,snort还有一条检测小碎片的规则,一旦发现太小的碎片,就会触发这条规则:

alert ip $EXTERNAL_NET any -> $HOME_NET any (msg:"MISC Tiny

Fragments"; fragbits:M; dsize: <25; classtype:bad-unknown; sid:522)

但是,这样还是不能检测某些攻击。还是以ida缓冲区溢出为例,这个攻击实际上和请求的URI无关,因此攻击者可以在前面加入一些垃圾数据以避免触发碎片检测规则。

碎片1 GET reallylongstringtoevadedetect.i

碎片2 da?(缓冲区溢出数据)

这些技术并非只针对snort。Cisco Secure IDS也能够进行碎片重组,并且能够对上述碎片攻击进行报警。

实际上,碎片攻击要复杂的多,尤其是涉及到TTL和碎片覆盖。

检测碎片攻击也非常困难。使IDS的碎片超时时间至少为60秒,增加对异常碎片的报警,最重要的是系统管理人员要对碎片攻击的潜在威胁有清醒的认识。2002年四月,Dug Song发布了Fragroute,引发了不小的震动。很快,snort社团发布了能够对碎片攻击进行更好检测的snort1.8.6版。

6.拒绝服务

还有一种比较野蛮的方法就是拒绝服务。拒绝服务可以针对检测设备本身和管理设备。Stick、snot和其它一些测试工具能够是入侵检测设备产生大量的报警。使用这些工具,可以达成如下目标:

消耗检测设备的处理能力,是真正的攻击逃过检测。

塞满硬盘空间,使检测设备无法记录日志。

使检测设备产生超出其处理能力的报警。

使系统管理人员无法研究所有的报警。

挂掉检测设备。

对IDS来说,这类工具无迹可寻,因此非常难以对付。

结论

本文我们讨论了一些常用的IDS躲避技术及其对策。其中有些技术需要攻击者具有熟练的攻击技巧,而有写技术却无需太多的技巧。而fragroute之类的工具出现,大大降低了攻击者采用某些技术的难度,使防御的一方总是处于被动。希望这些东西对大家有点用。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章