一.介绍
冰块
现在大家已经公认了,世界上没有绝对的方法或绝对安全的系统来阻止黑客的入侵:
没有漏洞的软件对我们来说还是一个梦想。即使是很流行的程序或是操作系统一样会包含很都可以被入侵者利用的漏洞。
许多软件包的行为都是和其他操作系统的组件(函数库或是内核)相互作用的。
由于这个原因,所以入侵检测和如何处理入侵行为在计算机工业里一直在广泛的讨论和研究。
很多现有的入侵检测的技术都是基于一些对审计和日志文件的分析。主要思想是搜索整个系统的文件和参考列表来发现畸形的,不期望的系统配置的改变。(如,有一个新的用户的用户ID是0)。另外一种方法就是周期性的执行一个程序来做系统文件的属性和参考列表的比较。这些过程主要是来对付Trojan木马的。这样的程序是看起来对系统不是很危险,但是可以让入侵者得到控制整个系统所需的权限。
这样程序的好处是不用进入内核部分。如,他们不用进行对系统命令的修改。但是,他们也不能对入侵进行即时的防范,因为,大多数情况下,这些结果都是在入侵者攻击以后才生成的。
因为所有对系统的破坏性攻击都是通过一些敏感的系统调用来实现的。所以,即时的入侵检测通过监视每一个系统调用就可以保护你的系统不受攻击者破坏。
这里我们建立一个在内核级能够实现截获和监视特殊系统调用的函数。我们的方法需要最小的改变系统原来内部的结构。由于类Unix系统的这个代码都是公开的,我们就可以基于公开的内核代码来截获系统调用,并根据我们设定的规则来检验系统调用是否是恶意的,起到入侵检测和防范的功能。
这软件的主要设计目的如下:
在恶意的系统调用执完全行前检测到它,以起到阻止恶意的入侵攻击。
允许对系统调用参数的一个有效的检测。
在不改变系统已经存在的数据结构和体系的情况下,通过扩展内核的功能来实现一个增强的安全的操作系统。
感谢即时的入侵检测,因为原来的扩展操作系统可以让入侵者的恶意进程和合法的进程一起运行。有了这个系统,我们就可以对系统的所有进程进行分析,发现恶意的进程以及他们之间的关系。
作为一个实现我们技术的例子我们创建了一个在攻击完成前对缓冲区溢出攻击进行检测的原形。一个基于操作系统的入侵检测的实现能在检测缓冲区溢的时候的提供一些必要的功能选项。