万卷书   首页 > 电脑书籍 > 黑客攻防战 >IDS逃避技术和对策
 
  攻击者还可以在此基础上再加以变化,几乎不费吹灰之力就可以加大入侵检测系统的防御难度。例如在telnet之类的交互会话中,攻击者企图读取/etc/passwd文件。通常,入侵检测系统中存在很多特征码一些误用操作和后门等,但是这些特征码一般只包含黑客工具名、文件名和程序名。在获得/etc/passwd文件的内容时,我们不直接输入cat/etc/passwd等命令行,而是通过一个命令解释器(例如:perl)来实现我们的目的:

  badguy@host$ perl -e
   ‘$foo=pack(“C11”,47,101,116,99,47,112,97,115,115,119,100);
   @bam=`/bin/cat/ $foo`; print”@bam\n”;'

  从这个命令中,入侵检测系统根本就不会重组出/etc/passwd这些字符。显然,防御这种攻击就很困难了,因为这要求入侵检测系统必须能够理解这种解释器如何收到的命令,这恐怕不太现实。当然,入侵检测系统也可以对使用解释器的可疑行为进行报警,但是它很难对攻击行为进行精确的监视。

  通过把字符串处理技术和字符替换技术结合到一起,我们可疑实现更复杂的字符串伪装。对于WEB请求,我们不必使用命令解释器,在我们的请求中使用16进制的URL即可,以下的请求可以被目标WEB服务器解释为/etc/passwd:

  GET %65%74%63/%70%61%73%73%77%64
   或者
   GET %65%74%63/%70a%73%73%77d

  为了捕获这一个字符串的所有变体,你可能需要1000个以上的特征码进行字符串匹配,这还没有考虑UNICODE。UNICODE提供了另一 种字符表达方式。有关UNICODE的IDS欺骗技术细节,本文将不多做讨论。如果想了解更多细节请参考SecurityFocus的IDS Evasion with Unicode。除此之外,RainForestPuppy在他的HTTP扫描工具Whisker中采用了另外一些IDS欺骗技术:

  -I 1 IDS-evasive mode 1 (URL编码)
   -I 2 IDS-evasive mode 2 (/./目录插入)
   -I 3 IDS-evasive mode 3 (过早结束URL)
   -I 4 IDS-evasive mode 4 (长URL)
   -I 5 IDS-evasive mode 5 (伪造参数)
   -I 6 IDS-evasive mode 6 (TAB分割) (not NT/IIS)
   -I 7 IDS-evasive mode 7 (大小写敏感)
   -I 8 IDS-evasive mode 8 (Windows分割符)
   -I 9 IDS-evasive mode 9 (会话拼接) (slow)
   -I 0 IDS-evasive mode 0 (NULL方法)

  如果想了解上面这些方法的技术细节,可以参考A Look At Whisker's Anti-IDS Tactics。需要特别说明的是,rfp把whisker采用的anti-ids技术 单独放到了libwhisker(使用perl编写的)库中,为其它的程序采用这些技术提供了很大的便利。另外,nessus和babelweb等扫描工具都有自己的应用层入侵检测躲避技术。

  现在,IDS开发人员对各种网络协议有了更深入的理解,并且入侵检测设备在对数据包的负载进行字符串匹配之前会进行必要的协议分析,因此现在的IDS已经能够很好地处理上述的欺骗技术了。但是多余的字符转换又提高了入侵检测系统的负载,有时是得不偿失。为了减小这个跗面影响,开发人员可以使入侵检测系统只在特定的端口进行字符转换。

上一页 下一页