漏洞及攻击分析在NIDS规则设计过程中具有极端重要性,它是规则设计的起点和基础,只有清楚地定义了攻击的特征集A,才有可能有针对性的设计出准确高效的NIDS检测规则。
完整性分析主要关注某个文件或对象是否被更改,包括文件和目录的内容及属性,它在发现被更改的、被特络伊化的应用程序方面特别有效。完整性分析利用强有力的加密机制,称为消息摘要函数(例如MD5),能识别极其微小的变化。其优点是不管模式匹配方法和统计分析方法能否发现入侵,只要是成功的攻击导致了文件或其他对象的任何改变,它都能够发现。缺点是一般以批处理方式实现,不用于实时响应。
入侵检测是一门综合性技术,既包括实时检测技术,也有事后分析技术。尽管用户希望通过部署IDS来增强网络安全,但不同的用户需求也不同,也由于攻击的天然不确定性,单一的IDS产品可能无法做到面面俱到。因此,IDS的未来发展必然是多元化的。只有通过不断改进和完善技术才能更好地协助网络进行安全防御。
虽然目前大多数商用的入侵检测系统都采用特征事件库匹配技术,但由于特征事件库精确表达存在的局限性,入侵检测正在发展的一个研究领域是创建一种多信息过滤语言,用来描述所有可能的误用判定条件,形成精确事件完整规范。启明星辰公司新一代入侵检测系统的核心数据库引进了多维事件库描述技术,将目标环境特征与入侵事件特征进行综合描述分析,大大提高了报警事件有效性。该系统还采用事件根原因分析技术(即基于漏洞机理等分析方法)检测未知攻击。根原因分析是用来识别漏洞或误用行为的根源的一种方法。使用根原因标志检测将能够检测到新型攻击或变种攻击,并利用远程验证扫描系统进行漏洞验证。例如,冲击波(MSBlaste)蠕虫爆发之前对RPCDcom溢出(MS03-26)进行远程监控;SQLSlammer蠕虫爆发前对SQL Server 2000 Resolution Service 远程溢出(MS02-039)的检测;Nimda蠕虫爆发之前对IIS Unicode(MS00-78)漏洞;MIME头文件漏洞(MS01-20)以及IIS CGI文件名错误解码漏洞(MS01-26)的检测等实例。
HIDS的应用,远比NIDS要复杂的多。由于HIDS不像NIDS有许多可以数据化的技术指标,而且又要在被监控的主机上安装探头(代理),使得应用对它都有一定的担忧。所以对于系统稳定性比较高的一些行业像银行、电信等对其应用,都非常谨慎。而对于国防、军工、机要保密等领域,对系统的安全、特别是信息安全要求比较高,而对系统的稳定性不是太敏感,而且更关注来自内部的攻击(一般这些领域的信息系统是不与公网相连的),所以对HIDS的应用比较容易接受,反而NIDS不是很看重。实际上,目前中国的HIDS市场也主要在这些领域。
目前,基于网络的入侵检测系统的数量仍然多于基于主机的入侵检测系统。基于主机的入侵检测系统通常带有基于网络的入侵检测系统组件,但反过来就少了。原因很简单:基于网络的入侵检测系统不需要对现有的系统和应用程序做更改,因而没有兼容性问题,而且一套系统能监测整个网段,部署容易。基于主机的入侵检测系统可以弥补基于网络入侵检测系统的不足,同时,自身的局限性又以网络入侵检测系统的优势弥补。两者结合,能够互相取长补短,更好地进行检测。
在攻防对抗条件下,对于不同类型和不同程度的攻击,攻击者想取得的效果并不相同,即攻击者对IDS的OODA环的预期影响程度、方式不同。按照攻击的效果,总体上可以将IDS面临的威胁分为四类。
IDS是一类在网络空间具有指挥控制特点的信息防御系统,围绕IDS的信息攻击与防御是网络攻防的焦点之一。可以说,任何一项IDS技术,若不能抵御针对IDS的信息攻击,那么将导致全面失效。IDS自防护体系的建立除了考虑作为一般信息系统的自防护外,还必须考虑在网络攻防对抗环境下的自防护问题。
在目前的NIDS下是采用sniffer形式抓包的,以模式匹配的方式检测和分析入侵,但是它不能处理和分析加密或伪装后的数据包,特别是在网络负载流量高的情况下,许多NIDS会出现丢包现象,所以NIDS仍然存在误报、漏报的可能。如果hacker将上面的一些方法巧妙的结合起来,仍可以逃避目前一些NIDS的监视。希望IDS的开发者尽早解决其问题。
由于目前的NIDS绝大部分是采用sniffer形式抓包,以模式匹配的方式检测和分析入侵,不能处理和分析加密或伪装后的数据包,特别是在网络负载流量高的情况下,许多NIDS会出现丢包现象,所以NIDS仍然存在误报、漏报的可能。黑客如果将上面的一些方法巧妙的结合起来,仍可以逃避目前一些NIDS的监视。
根据前面提到的网络威胁原理,离被防护信息点越近,保护的作用就会越有效。由于部署在被保护主机上,HIDS从空间满足了网络安全的先决条件; 同时,由于监听的是用户的整个访问行为,HIDS可以有效利用操作系统本身提供的功能,结合异常分析,准确报告攻击行为,在时间上保证了网络安全进程实现的过程。HIDS在网络安全防护时空上的优势必将使它成为未来网络安全体系的核心。
此外,NIDS自身的特点决定了能够与其它产品实现集成,更能体现全面保护。ManHunt提供了Smart Agent模块,能够收集整个企业的多源事件,有助于各公司扩展其安全性措施,并增强对他们现有安全性资产的威胁检查价值——消除了与部署传统IDS产品相关的扩展性和成本问题。
NIDS系统中的传感器协同工作能力较弱,同时系统处理加密的会话过程较困难,而对于HIDS则没有这一障碍。另一方面,由于HIDS系统在反应的时间上依赖于定期检测的时间间隔,反应较慢,而且其检测实时性也没有基于网络的IDS系统好。NIDS的优点是反应相当快,可以自动阻塞那些有怀疑的数据,调整相应的网络配置,用来响应那些检测到的攻击过程。不过,因为NIDS工作在实时模式,所有的数据都要经过它们,所以NIDS成为了网络数据流量的一个瓶颈,对网络的性能形成负面影响。
这个和上面的保护进程的想法不是一样的。当一个系统里运行一个进程,它会在/proc 文件系统里有一个用pid作为路径名的入口。所以,如果你用“ps Caxf”你就可以显示出当前运行的进程。你可以问如果保护这些进程。如果你要杀死一个进程的话,首先,你键入“ps”来得到进程的PID,然后,你键入“kill 〈pid〉”来杀死它。但是,如果我不让你看到进程,你怎么来杀死这个进程呢?因此,LIDS是用隐藏进程来保护它的。
就象你在上面代码上可以看到的,给secure_ino加到一个结点上是非常容易的。被保护的结点会在系统启动的时候初使化。初使化程序在/usr/src/Linux/fs/lids.c的init_vfs_security()里。
在CONFIG_LIDS_INIT_CHILDREN_LOCK的开启状态,LIDS能保护初使的运行程序。如,如果你在系统里运行inetd程序,你可以在隐藏内核前运行它,然后,你还可以杀死它。但是一些人如果telnet到你的机器,inetd就会创造子进程来为用户服务,这个子进程不会被LIDS保护,因为用户在任何时候退出和杀死程序。
PF_HIDDEN是否用户可以用显示进程的命令(如“ps Ca”)来显示和检查进程,如果一个进程被LIDS隐藏,当他执行的时候,进程就会得到一个PF_HIDDEN的属性。然后,当系统输出系统进程信息到用户的时候,它就会可以检查当前输出进程是否有PF_HIDDEN标志。如果发现了,它就不会输出这个进程的信息。
IDS主要起的还是监听记录的作用。用个比喻来形容:网络就好比一片黑暗,到处充满着危险,冥冥中只有一个出口;IDS就象一支手电筒,虽然手电筒不一定能照到正确的出口,但至少有总比没有要好一些。称职的网管,可以从IDS中得到一些关于网络使用者的来源和访问方式,进而依据自己的经验进行主观判断(注意,的确是主观判断。例如用户连续ping了服务器半个小时,到底是意图攻击,还是无意中的行为?这都依据网络管理员的主观判断和网络对安全性的要求来确定对应方式。)对IDS的选择,跟上面谈到的防火墙的选择类似,根据自己的实际要求和使用习惯,选择一个自己够用的,会使用的就足够了。
基于主机的IDS一般监视Windows NT上的系统、事件、安全日志以及UNIX环境中的syslog文件。一旦发现这些文件发生任何变化,IDS将比较新的日志记录与攻击签名以发现它们是否匹配。如果匹配的话,检测系统就向管理员发出入侵报警并且发出采取相应的行动。
攻击者最为常用的IP选项就是严格源路由(strict source routed)选项。一般情况下,如果自己的地址没有出现在IP分组的源路由表中,系统就会丢弃收到的IP分组。有些系统可以配置为自动丢弃包含严格源路由选项的IP分组。这就给IDS的处理带来了很大的困难。