整篇文章(除了第五部分)是基于 Linux 2.0.x的80x86机器的。我测试了所有的程序和代码段。为了能够正常使用这里提供的绝大部分代码,你的Linux系统必须有LKM支持。
简介
将Linux操作系统用于服务器在现在是越来越普遍了。因此,入侵Linux在今天也变得越来越有趣.目前最好的攻击Linux的技术就是修改内核代码。由于一种叫做可卸载内核(LoadableKernelModules(LKMs))的机制,我们有可能编写在内核级别运行的代码,而这种代码可以允许我们接触到操作系统中非常敏感的部分。
在过去有一些很好的关于LKM知识的文本或者文件,他们介绍一些新的想法,方法以及一名Hacker所梦寐以求的完整的LKMs.而且也有一些很有趣的公开的讨论(在新闻组,邮件列表)。
然而为什么我再重新写这些关于LKMs的东西呢?下面是我的一些理由:
在过去的教材中常常没有为那些初学者提供很好的解释。而这个教材中有很大一部分的基础章节。
这是为了帮助那些初学者理解概念的。我见过很多人使用系统的缺陷或者监听器然而却丝毫不了解他们是如何工作的。在这篇文章中我包含了很多带有注释的源代码,只是为了帮助那些认为入侵仅仅是一些工具游戏的初学者!
每一个发布的教材不过把话题集中在某个特别的地方。没有一个完整的指导给那些关注LKMs的Hacker。这篇文章会覆盖几乎所有的关于LKMs的资料(甚至是病毒方面的)。
这篇文章是从Hacker或者病毒的角度进行讨论的,但是系统管理员或者内核的开发者也可以参考并从中学到很多东西。
以前的文章介绍一些利用LKMs进行入侵的优点或者方法,但是总是还有一些东西是我们过去从来没有听说过的。这篇文章会介绍一些新的想法给大家。(不是所有的新的资料,只是一些对我们有帮助的)
这篇文章会介绍一些简单的防止LKM攻击的方法,同时也会介绍如何通过使用一些像运行时内核补丁(Runtime Kernel Patching)这样的方法来对付这些防御措施。
要记住这些新的想法仅仅是通过利用一些特殊的模块来实现的.要在现实中真正使用他们还需要对他们进行改进。这篇文章的主要目的是给大家在整个LKM上一个大方向上的指导。在附录A中,我会给大家一些实用的LKMs,并附上一些简短的注释(这是为那些新手的),以及如何使用他们。
整篇文章(除了第五部分)是基于 Linux 2.0.x的80x86机器的。我测试了所有的程序和代码段。为了能够正常使用这里提供的绝大部分代码,你的Linux系统必须有LKM支持。