网络安全 频道

NetEye IPS的多层应用规则架构

大家早上好,我是来自东软的王勇,今天给大家做演讲的题目是“NetEye IPS的多层应用规则架构—创新框架、开放平台”,今天我的演讲主要分三部分。首先讲一下Web等关键应用带来的安全挑战,为了应对这个挑战我们提出了NetEye IPS的多层应用规划架构,如果还有时间的话我再稍微详细讲一下NetEye IPS的内部核心语言,也就是NEL开放平台。

点击放大此图片

  首先看一下这几年网络安全发展的变化以及面临的挑战,昨天屈先生也说到了的他考虑问题的时候是考虑过去20年、未来20年,我还是算是很年轻的,20年前还比较小,所以没有这样的资格去说,但10年前我还是可以说说的,那时候我还在大学,那时候还对网络安全不甚了解,看到了一本介绍黑客先驱的实际,给我印象很深的也有几位,那个年代网络安全的普及实际上主要是网络安全跟系统安全,罗伯特是第一个对脆弱性进行攻击,里特尼克实际上利用了UNIX的漏洞实现了第一次的远程攻击,这些都是基于操作系统跟网络的。06、07年的网络安全主题是什么呢?这里面有一个2006年的网络安全的工作报告,在这里里面可以清楚的看到以大陆为代表,有40000多台主机被植入木马程序,与去年相比增加一倍,同时约有1千多万个IP地址主机被攻击者利用蠕虫等手段植入僵尸程序。2005年大陆地区网页被篡改13653次,其中.gov网站被篡改网页2027次,2006年大陆地区网页被篡改24477次,政府网站被篡改3831次,同比增长一倍。各种P2P下载软件占用了大量网络带宽,像EmULE、BT、迅雷等,占用了大量宽带。电子邮件协议中也充斥着大量的蠕虫和垃圾邮电流量。这就可以看出内容安全、网络安全、计算机安全已成为了当今谈安全的主题。

  虽然昨天屈先生对微软、CISCO有一些微词,但我觉得这些厂商这些年还是不断的努力着的,做着他们基本的工作,在他们的系统中、产品中实际上漏洞已经越来越少了,相比软件BUG的数量跟普通的开发者来比算是比较少的,实际上我想并不是说替微软解说这件事情,而只是说操作系统在朝着越来越健壮的方向努力,尤其像微软这样的公司使用的大量动态、静态数据流的分析工具,也使系统级的漏洞越来越少。普通的攻击实际上很难再像里特尼克等等那样的攻击,为什么现在的安全形势还是这么严峻呢?我发现现在安全边缘已不再是应用系统了,而直接到了应用本身,应用系统的开发者的水平跟网络协议开发者的开发水平是有差距的,没有做过多安全的限制,在生产这些系统中就会包含着大量的威胁,普通的攻击者,即使是一些小本少年、初懂网络计算机的知识就可以对系统造成攻击,很容易就可以做到。甚至更进一步有的时候不需要对系统进行攻击,攻击者实际上对用户的数据进行攻击,比如说我发一个邮件,其中带着一段恶意的代码,用户如果不小心缺乏安全防范的意识,或者其中有一些BUG,在没有经过用户确认之后就会把用户的关键信息和机密文件直接窥探到,也就是数据的泄密,这是内容的范畴,我们来看一下实际上内容安全是安全的最后一道防线,安全的边缘已经移到了应用安全。

这几年的安全日益严峻,这说明了安全解决方案并没有把注意力放到解决内容层面,最常见的就是防火墙,实际上主要原则就是对控制列表进行决策,现在企业的系统中为了保证正常运行正常的应用都是开放的,像80端口等等都是开放的,如果攻击者直接利用这个断口进行攻击,防火墙是没有用的。另外大家喊的很热的就是IDS,虽然也是工作在网络层,但引入了一些攻击的识别技术,不需要管理员自己设定。但IDS也有一些问题,攻击者可以有意的让用户多看到一些包,这些包在被攻击的主机上可能是看不到的,IDS如果对这些错误并没有充分的理解,实际上他看到的东西跟对方主机看到的东西是不一样的。另外IDS发现攻击并且试图阻断攻击的时候往往攻击在这时候已经成功了。另外IDS是利用攻击签名来判断的,我是2002年到IDS攻击领域的,我们对比了几十种攻击的类型,实际上IDS复杂度用文法的语言来描述实际上是很高维的文法,有很多攻击本质的特征是无法做到的,实际上采取的是一种偷工减料的方式理解安全的,我觉得这才是IDS这几年一直被大家所不啻真正的原因。现在也有很多自动化的工具,即使使用的是自动化的工具再把发过来的包进行转换之后IDS实际也是很难识别的。

  为了解决这样一系列的问题,我们制造了NetEye IPS,并且在它的内部实现了一个多层应用规则架构,我们不敢说百分之百就把安全问题全部解决掉,但试图在这个方向作出一个直面攻击本质的尝试。刚才虽然说防火墙有很多问题,但是防火墙并不是完全无用的,我们推荐的部署方式实际上还是防火墙跟IPS联合的方式,可能会取得比较好的效果。防火墙对未开放的服务会做到很好的控制,并不占用过多的资源。协议应用直接针对应用的部分,只有合法的才会通过IDS。

  下面讲一下技术一点方面的东西,NetEye IPS的多层应用规则架构实现的思路。首先看到的还是网络数据包,协议分析是基于东软的流过滤的协议分析,关于这件事情在这里就不细谈了。协议只是针对于以协议命令为单位的,最终形成的结果就是一个协议事件,这个工作从IDS的角度说做了一个检测,实际上这还停留在分析的层面上。攻击检测显然不是只停留在这个层面就可以做到的。为了做到语法分析我们就引入了NEL(攻击规则的描述语言),NEL有很多特点,在这张图中我要介绍的特点主要是层次化的结构,NEL定义了这样一种新的范畴,实际这就是人工智能推理的引擎,使用NEL就可以定义多层的,为什么把协议异常检测放在最前面呢,检测规则实际上是根据各个层面RRC检测的,总是在有限的时间内对RRC进行分析,以致知道什么是正常的、什么是违规的,即使你不知道攻击的各种底细,但只是违反了RRC通过协议异常都可以把它检测出来,这就实现了检测异常的高性价比。第二层我们引用了漏洞检测规则,第三个签名规则只是具体某个漏洞被报告出来产生一个脚本,这个脚本中有一些特定的特征,针对这些特征进行检测。实际上签名规则的一个特点就是,检测的特征只是生产这个脚本作者的名字,跟攻击发生没有直接应有的关系,只是一个偶然的连接。像抢银行的大部分都是戴着墨镜,但你不能说他戴着墨镜进入银行就是要抢银行。而漏洞规则不是这样,漏洞被公开之后,这里有个安全攻防小组,对漏洞进行了本质的分析,它就知道一个攻击人员要使用这种漏洞必须满足的特征是什么,把这个东西抽象化了,而且用强有力的描述语言把它描述出来。

  第四个层面是用户自定义的规则,这是由管理员来制订的。主要是想充分挖掘一下用户应用系统中的环境信息,环境信息有的时候对攻击的检测是有很大帮助的。通过环境信息实际上员可以定义出主动防御的解决方案,会大大提高攻击检测的准确性。不管是协议异常漏洞检测规则、签名检测规则还是用户自定义规则,四个层面都有自己的规则,这个规则都是事先制订好的,这也是安全界经常遇到的问题,我们发现很多情况下你都无法在有限的条件下定义什么叫正常什么叫攻击,这种情况我们也经过了多年的探索、参考了国外先进的技术提出了一种启发式的检测规则,既不需要厂家也不需要管理员,使用的实际上是一个历史的信息判断刚才的流量是不是攻击,我们发现这种规则对很多攻击有非常好的检测效果。

  下面举几个例子来简单介绍一下这五个层次的检测规则。协议异常检测规则,比如根据RFC 2821,在一个正常的SMTP连接过程中,只有在客户端至少发送过一个“RCPT TO”请求命令之后,客户端发送“DATA”请求命令才是合法的。据此,NetEye IPS可以通过记录SMTP连接中客户端是否发送过“RCPT TO”请求命令的状态,阻挡住所有不符合SMPT协议标准交互过程的“DATA”请求命令,同时也将所有利用直接发送“DATA”请求命令进行的攻击阻拦下来。NetEye IPS还可以通过检查协议状态转换过程中的命令携带参数的异常来有效检测和抵御网络攻击,并可以设置详细的过滤开关。比如,对HTTP协议就可以通过开关控制对待定的协议元素做到过滤,比如请求行、首部、实体等。攻击者会想给你发一个DATA看看会怎么样呢,或者发一些垃圾邮件,就会跳过防火墙黑名单的检测。实际上NetEye IPS真正做到了基于协议、应用的状态间,可以把这些事件、应用记载下来,有的时候我们是使用简单的变量记载这些,有的时候是通过描述多个时间的发生,把这些保留在站中。NEL可以详细检查协议中各种各样的参数,对协议进行各种各样的过滤。

  协议异常检测规则,我们在开发实践中发现,超过1024的长度是非常常见的,当攻击者试图在URL中填充一个超长的shellcode或者NOP指令时,将会被这条协议异常检测规则发现并阻断。那么这条NEL规则规定了URL的最大长度为1024。

  基于漏洞检测规则是如何做到缓冲区溢出检测的,对HTTP协议来说,URL请求应该为可阅读的文本,我们发现这样一个规律,对于有这种特性的文本恰好被x86机器指令代码识别出具有shellcode特征的代码,则该请求很有可能包含缓冲区溢出代码,这样即使NetEye IPS无法判断攻击者针对什么漏洞进行的攻击,也可以发现、并阻止该攻击。我们可以做一个更高的判断,把这段代码拿出来看看里面到底是什么。为什么管这种检测方式叫“漏洞检测”呢,实际上这个函数并不是基于x86做的,以后还会对应其它的平台,实际上检测的是其中的一段指令,并不是试图看指令里面完整的语义,我们就是检测它是不是一段x86代码,这样我觉得有点小题大作,这样做的结果会使效率大大的降低,实际上我们没有必要看每一段URL是做某件事的。通过这样的权衡这个函数实际上是以技能比较高的来执行,同时也可以检测出其中是否带有其它代码,所以我们管它叫漏洞检测规则,事实证明这个规则效果非常好。

刚才已经介绍了NetEye IPS使用了NEL这种层次性的语言,实际上可以做到将很多事件进行关联,根据攻击的某个具体的特征定义的检测规则,这种规则又叫攻击规则,攻击规则未必能够表现漏洞的本质,因而可能存在漏报问题。如果一个攻击同时符合漏洞规则和攻击规则,NetEye IPS还可以将两者关联起来。这里的一个例子就是在间中发现是一段x86的代码,然后代进一步判断是否符合xe8、x07、x90等特征,如果该规则被检测到地则表明攻击者发起了一次特定的攻击。

  再看一下用户自定义规则,我曾经遇到过一个没有对网站进行任何的防护,只要一个普通的用户就可以在上面进行发布木马或安装木马,虽然这听起来比较低级可笑,但在国内确实这属于很普遍的。那么用户自定义规则,使用NEL定义允许外部访问的文件及路径列表,可以有效地阻止攻击者对于上传木马的访问。这利用了整个网站的环境信息,所以我们一直在强调环境信息是IPS它能够区别于IDS的一个非常重要的点。

  因为今天是电信的一个会议,我再略微讲一下启发式的规则,希望我们构建一种模式使大家都能找一种合理的模式,使得安全问题更进一步。昨天屈先生给我们讲了一个行为安全的问题,以计算机科学发展的水平来看,我觉得要完全的理解一个行为,以及行为的意义还是非常困难的,我做过很长时间人工智能方面的工作,实际上要了解意义要需要很长的时间。模式安全的含义是什么呢,实际启发式规则的理念也有人问什么是启发式规则,我们完全可以用之前、历史的信息来判断当前的流量是否安全。应用安全的复杂性使得我们有时候只能根据以往的用户使用模式,来判断当前用户使用模式是否为攻击,NEL强大的定制能力使得用户可以制定启发式规则,大大提高系统的安全性。用户可以与东软的工程师一起,针对自己的应用环境,开发出定制化的Web异常规则,增强系统的主动防御能力,更好地抵御各类SQL注入、URL攻击等等。启发式规则怎么用呢?经过一段时间的调研我发现一种最好的应用方式,单独的用户,尤其是中国大量的网站并不会因此而买一台IPS,IPS很贵的,我设想的一种模式就是像东软这样的厂商跟电信IDC和用户达成一个三位一体的形式,IPS进行建模,可能面对的是多个用户,但IPS并不需要知道网站各种的细节,所以本质上可以支持非常多的用户,复杂对相对来说是比较小的,我觉得种局面是很好的。

  再讲一下NEL开放式平台,我们希望它能成为应用安全领域的“JAVA”供大家使用,因为只有在使用中大家才会发现它有怎样的好处。NEL是NetEye IPS安全魔方中的的基础性平台。NEL具有很强的描述能力,通过引入事件的概念,并且还是一个过程语言,可以定义变量、结构、甚至还能定义谓词函数。NEL具备带来最大的开发模式上的变化,不像以前的一些程序,这些引擎分析和实践检测部分是捆在一起,每增加一种协议的支持都需要特定的东西。NEL就把这两件事分开,协议这部分带把是由协议分析人员实现的,这样也就会具有很高的效率。我希望基于NEL构造一个产业链NetEye IPS的多层应用规则架构—创新框架、开放平台,这是东软内部的一个开发小组,分成三层,NEL开发团队、NEL协议分析团队、攻击安全团队分别做三件事,技术合作伙伴也可以参与进来,NetEye IPS可以推广给更多的行业人员,NEL并不只适用于IPS,还可以适用于其它的部分。我的演讲就到这里,谢谢大家。

0
相关文章