入侵检测系统无用论(转)

入侵检测系统无用论(转)[@more@]

  几乎所有当前市场上的网络入侵检测系统都是基于一种被动数据收集方式的协议分析,我们可以预见,这种方式在本质上是有缺陷的。

  

  毫无疑问,这样的入侵检测系统会监视整个网络环境中的数据流量,并且总是与一种预定义的可疑行为模式来进行对照,甚至所谓的入侵行为分析技术也只是简单地从单位时间状态事件技术上做了些组合工作,事实上离真正实用的复杂黑客入侵行为的剖析和理解还有很远的距离。

  

  对于这种检测技术的可靠性,我们可以通过自定义的三种可行性很强的攻击方式来验证??插入攻击、逃避攻击和拒绝服务攻击。我们可以看到,当一个入侵者实施了这样的入侵策略以后,所谓的入侵检测系统便妥协了。我们的结论是这种入侵检测系统不是放之四海而皆准的,除非它们从根本上被重新设计过。

  

  入侵检测系统的作用及其功能

  真正实用的入侵检测系统的存在价值就是能够察觉黑客的入侵行为并且进行记录和处理,当然,人们也会根据自己的需求提出需要强大的日志记录策略、黑客入侵诱导等等。

  

  不同的入侵检测系统存在不同的入侵分析特征。一个企图检测Web入侵的系统可能只会考虑那些常见的恶意HTTP协议请求;同样道理,一个监视动态路由协议的系统可能只会考虑网络是否存在RIP欺骗攻击等等。目前国内市场上的大部分入侵检测系统使用同一个入侵行为定义库,如著名的SNORT特征库,这说明我们在技术挖掘方面的投入还不够,事实上我国在基础研究设施的投入上也存在严重不足。

  

  入侵检测系统现在已经成为重要的安全组件,它有效地补充和完善了其他安全技术和手段,如近乎快过时的基于协议和端口的防火墙。入侵检测系统为管理人员提供相应的警告信息、报告可能发生的潜在攻击,从而抵挡了大部分“只是对系统设计好奇”的普通入侵者。

  

  世界上已经开发出了很多种入侵检测系统,我们可以用通用的入侵检测体系结构(CIDF:Common Intrusion Detection Framework)来定义常见的入侵检测系统的功能组件。这些功能组件通常包括事件产生器、分析引擎、存储机制、攻击事件对策。

  

  许多入侵检测系统在设计之时就仅仅被考虑作为警报器。好在多数商业化的入侵检测系统配置了可用的防御性反攻击模块,起码可以切断TCP连接或动态地更改互动防火墙过滤规则。这样就可以阻止黑客沿着同一路径继续他的攻击行为。一些入侵检测系统还配置了很好的攻击诱骗模块,可以为系统提供进一步的防护,也为进一步深入研究黑客行为提供了依据。

  

  IDS到底有那些不足

  IDS的基本原理

  对于比较普遍的两种入侵检测模式--基于网络的入侵检测和基于主机的入侵检测,我们可以这样考虑:基于主机的入侵检测系统对于特定主机给予了定制性的保护,对于发生在本地的、用户级的、特征性比较明显的入侵行为有防范作用。但是,这种模式对于发生在网络传输层的入侵通常是无可奈何的,想让应用级特征比较强的系统同时把系统级和网络底层技术实现得比较完善是不太现实的。虽然我们可以看到在伟大的Linux系统上实现了Lids,毕竟象Solaris,NT这样的系统,我们能够了解的只是皮毛。

  

  基于网络的入侵检测系统需要监视整个网络的流量,匹配可疑行为特征。它的技术实现通常必须从网络和系统的底层入手,而且它同时保护的是网络上的一批主机,无论它们使用的什么系统。基于网络的入侵检测系统显然不会关心某一台主机之上正在进行着什么操作,只要这些操作数据不会扩散到网络上来。因为网络入侵检测系统是以行为模式匹配为基础的,我们可以断定它有匹配失误的可能,有因为不能确定某种行为是入侵而将其放行的可能。那么当一个“聪明”的入侵者骗过了这种系统,顺利地进入一台主机,该系统的厄运开始了。

  

  被动的网络监视器通常利用网络的混杂模式工作,它们直接从网络媒介获得网络中数据包的拷贝,而不考虑这些包本来是不应该被它们接收的。当然,这种被动的网络底层协议分析总是“安静地”存在于网络的某个地方,它只是根据网络媒介提供的这种特征,在其他主机不知不觉的时候将网络数据拷贝一份。同时,需要考虑到,根据引擎端实现平台的不同,各平台实现的网络数据包捕获机制的不同,在混杂模式下丢包的程度是不同的。事实上,对于大多数还需要从内核读取数据的应用级包过滤系统,只能考虑以更快的方式把数据读取到用户空间,进而发送给其它进程。 这样处理的化,要求从技术上增加用户空间的缓冲区尺寸,如在BSD(BPF)的系统上,能够利用BIOCSBLEN ioctl调用来增加缓冲区尺寸。

  

  攻击IDS的原理

  入侵检测系统地最重要的特征莫过于其检测的“精确性”。因此IDS要对捕获到的数据包进行详细的分析,所以对IDS的攻击就是针对IDS在分析数据时的弱点和漏洞。

  

  网络IDS捕获到网络上传输的数据包并进行分析,以便知道一个对象对另一个对象做了什么。IDS总是通过网络上交换的数据包来对终端系统上发生的信息行为进行判断。假设一个带有错误UDP校验和的IP数据包,大多数操作系统会丢弃这样的数据。某些比较陈旧的系统也可能会接受。IDS需要了解每一个终端系统的具体情况,否则IDS按照自己的方式构造出来的逻辑在终端系统上的应用会有不同。某些操作系统有可能会接受一个明显存在问题的数据包,如允许一个有错误的校验和的IP包。当然,IDS如果不进行分辨,必然会丢掉这些本来终端系统会接受的数据。

  

  就算IDS系统知道网络都有些什么操作系统,它也没有办法通过查看一个包而知道是否一个终端系统会接受这个包。原因很简单,CPU耗尽、内存不足都可能导致系统发生丢包现象。

  

  IDS全部的信息来源就是它捕获到的数据包。但是,IDS应该多了解一些关于终端系统的网络行为,应该了解终端系统如何处理各种网络数据。但是,实际上,这是不可能的。

  

  在处理所谓的拒绝服务攻击时,存在两种常见的情况:某些IDS系统在自己处于停机状态时,可以保持网络正常的信息流通,这种属于“fail-open”型;另一种则是“fail-closed”型,即当IDS系统出现问题时,整个网络也随之瘫痪了。

  

  网络检测系统是被动的。它们不控制网络本身,也不会以任何方式维护网络的连接。如果一个IDS系统是fail-open的,入侵者通过各种手段使IDS资源不可用了,那时IDS就没有任何防范入侵的作用了。正是因为这样,IDS系统加强自身抗拒绝服务攻击的能力显得极为重要。

  

  当然,许多攻击方式讨论的都是针对基于嗅探模式的IDS系统。这些类型的攻击都企图阻止协议分析,阻止特征模式匹配,阻止IDS获得足够信息以得出结论。

  

  针对入侵检测系统弱点的攻击探讨

  有时IDS系统会接受终端系统丢弃了的数据包。因为IDS认为终端系统接受并且处理了这些数据,而事实上终端系统由于种种原因丢弃了这些数据包。一个入侵者就可以利用这一点,制造那种他所想要入侵的主机会丢弃而IDS系统将接受并作出判断的数据包,以使IDS与终端系统得到不同的结论。

  

  我们可以把这种攻击称为“插入式”攻击。道理很简单,假设一个入侵者发往终端系统的数据是attack,但是,他通过精心构造在数据流中加入了一个多余的t。对于终端系统而言,这个t是被丢掉不被处理的;而对于IDS系统而言,它得到的最终上下文关系是atttack,这个结论使IDS认为这次行为并没有对终端系统形成攻击而不作处理,事实上,终端系统已经接受了attack数据。

  

  现在让我们来分析一下这种方式的攻击如何阻止特征分析。特征分析通常的方式是根据固定模式判断某个特定的字串是否被存在于一个数据流中,例如,对待一个phf的HTTP攻击,IDS通常检查这个字串的存在与否,“GET /cgi-bin/phf?”, IDS系统判断这种情况很容易,只需要简单的子串搜索功能便可以做到,然而,但是,如果一个入侵者通过插入式攻击的思想在这次HTTP请求中增加了这样的内容,GET /cgi-bin/pleasedontdetectthisforme?,里面同样包含了phf,但是在IDS看来,味道已经不一样了。

  

  插入式攻击的的结果就是IDS系统与终端系统重组得到了不一样的内容。通常,插入式攻击在IDS没有终端系统处理数据那么严格的时候都存在。可能好的解决方法就是让IDS系统在处理网络中需要重组的数据的时候,作出严格的判断和处理,尽可能地与终端系统处理地效果一个样。可是,引来了另外一个问题,这便是另一种攻击方式,相对地叫做“逃避式“攻击模式。

  

  相对的,有些数据包是IDS不会接受的,而终端系统却会对这些数据作出处理。当然,IDS由于不接受某些包,而会导致与这些数据相关的上下文关系无法了解。

  

  问题的现象是因为IDS在对数据包进行审核处理的时候过于严格,使得往往某些数据在终端系统而言,是要进行接受重组处理的,而在IDS本身,仅仅是不作处理,导致许多攻击在这种严格的分析引擎的鼻子地下躲过。

  

  逃避式攻击和插入式攻击都有效地愚弄了模式匹配引擎系统。结果都是入侵者使得IDS与终端系统接受处理了不同的数据流,在逃避式攻击中,终端系统比IDS接受了更多的内容而遭受攻击。

  

  还是上面的phf的例子,入侵者发送了一个HTTP请求,使得原本的GET /cgi-bin/phf?在IDS处理的结论中变成了GET /gin/f,当然,这个结论对于大多数IDS系统来说,几乎没有任何意义。

  

  从技术上来看, 插入式和逃避式这两种对付检测系统的方式也不是这容易就被入侵者所利用,因为实现这种攻击要求入侵具备相当的知识面和实践能力。

  

  现在的许多网络协议是简单的并且容易分析的。比如一个普通的网络分析器就能够容易的判断一个UDP DNS请求的目的。

  

  其它的一些协议则复杂的多,在得出实际传输的内容之前,需要对许多单个的数据包进行考虑。这样的话,网络监视器必须总是监视内容的数据流,跟踪包含在

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8403220/viewspace-935327/,如需转载,请注明出处,否则将追究法律责任。

user_pic_default.png
请登录后发表评论 登录
全部评论
<%=items[i].createtime%>

<%=items[i].content%>

<%if(items[i].items.items.length) { %>
<%for(var j=0;j
<%=items[i].items.items[j].createtime%> 回复

<%=items[i].items.items[j].username%>   回复   <%=items[i].items.items[j].tousername%><%=items[i].items.items[j].content%>

<%}%> <%if(items[i].items.total > 5) { %>
还有<%=items[i].items.total-5%>条评论 ) data-count=1 data-flag=true>点击查看
<%}%>
<%}%> <%}%>

转载于:http://blog.itpub.net/8403220/viewspace-935327/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值