当前位置:Linux教程 - Linux - 在Linux可加载内核模块中探秘 (1)

在Linux可加载内核模块中探秘 (1)



         第一部分:基础知识
    第一章:简介
    作者:CoolBoy
    Linux作为服务器操作系统正逐渐被人们广泛应用,并且也逐渐变得有趣起来。攻击某个Linux系统的最好方法之一,便是利用内核代码。正因为Linux有一个被称作“可加载内核模块”的特点,所以我们就能够写一些能在内核中运行的代码,这些代码允许我们访问操作系统中的极为敏感的部分。关于可加载内核模块的HACKING,以前也有很多好文章介绍过。其中介绍到了许多新的构想,新的方法。98年许多讨论组也就此谈论过许多的有趣的事情。那么为什么我还要写这样一篇关于可加载内核模块(LKM)的文章呢?我的理由如下:

    前述文章有时候并未照顾到初学者,在某些方面未能给出详细的解释;而本文有相当大的一部分提供可加载内核模块(LKM)的基础知识,帮助初学者理解相关的概念。我碰见过许多人,他们可以利用系统缺陷和嗅探器(exploits/sniffer)来攻击系统,但是他们甚至不知道这些工具是如何工作的。我在本文里包含了许多附有注释的源代码,这是为了帮助初学者明白,Hacking并不是仅仅为了在网络上搞破坏。
    所有的出版文章均只着重于某一特殊领域,目前尚未有完整的文章专门为黑客介绍可加载内核模块(LKM)的。本文覆盖了关于可加载内核模块(LKM)各个方面(包括病毒)。
    这本书是从黑客和病毒的角度出发写的,但对帮助网络管理人员和内核开发人员也颇有参考价值。
    有些文章只向我们介绍了利用可加载内核模块(LKM)的主要优点及其使用方法,但总有些东东是我们没有听说过的。本文将介绍一些新的构想。
    本文将介绍一些预防和阻挡可加载内核模块(LKM)攻击的简单概念。
    本文也将介绍怎样攻破可加载内核模块(LKM)保护,例如采用“运行时间内核补丁”(Runtime Kernal Patches)的方法。
      请记住本文中提到的所有新的构想都是以原型程序提供的(仅仅做为演示),所以如果要将这些程序实际利用起来,还要将其作进一步的完善。

      写作本文的主要动机是为了给大家一个关于可加载内核模块(LKM)问题的完整介绍。在附录A里面,我将介绍现有的一些可加载内核模块(LKM),并且对各个可加载内核模块(LKM)的用法作一个简单的叙述(针对初学者)。

      本文整个都是以使用Linux 2.0.x的机器(x86)为基础写作的(除第5部分外),所有的程序和代码片段我都测试过。要将本文中提到的大部分代码运行起来,你的Linux系统必须支持可加载内核模块(LKM)特性。只有在第四部分我们才涉及到某些无须本地可加载内核模块(LKM)支持的源代码。

      本文中的大部分的新思路一样可以应用于2.2.x系统中(也许需要作些小改动);但是请想想,内核2.2.x是99年1月才发布的,而大部分Linux发行版本(Redhat,SuSE,Caldera, ...)仍然使用内核2.0.x。并且 一个好的系统管理员将会多等待几个月,以便那时的内核会更稳定些,所以目前并无采用2.2.x版本的必要。(注意:大部分系统不需要使用2.2.x内核,所以他们会继续使用2.0.x的内核)。

      本文有一个特别的部分是帮助系统管理员安全管理系统的。而你(黑客)也应该阅读这个部分,因为黑客应该比管理更了解系统。而且你还能从这个部分了解到一些更为新颖的思想,这将有助于你开发一些更“黑”的可加载内核模块(LKM)。

      马上开始吧!Let\s GO!

      最后请注意:本文仅用于教学目的,你阅读本文后的所做的任何非法行为是你自己的事情。与我无关。

    发布人:Crystal 来自:Linux专区